vlan with modified MAC fails to communicate
Pablo Ribalta Lorenzo
rlp at semihalf.com
Fri Mar 29 14:05:19 UTC 2013
On 03/29/2013 01:57 PM, Barney Cordoba wrote:
>
> --- On Fri, 3/29/13, Pablo Ribalta Lorenzo <rlp at semihalf.com> wrote:
>
>> From: Pablo Ribalta Lorenzo <rlp at semihalf.com>
>> Subject: vlan with modified MAC fails to communicate
>> To: freebsd-net at freebsd.org
>> Date: Friday, March 29, 2013, 7:53 AM
>> Hi there!
>>
>> Lately I've been investigating an issue that I would like to
>> share, as I feel I may have to attack it from a different
>> end.
>>
>> I have an ethernet interface from where I create a vlan.
>> Once I set up the ip address in the vlan I can ping
>> correctly on both
>> sides. The issue arrives when I try to change the MAC
>> address of the vlan, as from then on it fails to communicate
>> unless:
>>
>> - I restore vlan's MAC address to its previous value
>> - I enable promisc mode.
>>
>> It's also worth to mention that my current setup is FreeBSD
>> 8.3 and the NIC driver I'm using is not fully mature.
>>
>> I was wondering if this behavior is due to some limitations
>> in the NCI driver I'm using or if in fact it's the correct
>> way to
>> proceed, as it was possible to reproduce this same issue in
>> FreeBSD 8.3 and FreeBSD CURRENT versions, even using more
>> mature
>> NIC drivers as 'em' and 're'.
>>
>> Could somebody please shed some light in this? Thank you.
>>
> Without looking at the code, it's likely that you should be changing
> the MAC address BEFORE you set up the VLAN. The mac is probably being
> mapped into some table that being used to track the vlans.
>
> BC
Thanks for your answer Barney,
I'm going to extend a little bit the explanation of the issue as it may be too brief.
First of all, ifconfig shows me this (mge being the NIC):
mge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE>
ether 00:01:01:58:31:30
inet 192.168.126.9 netmask 0xffffff00 broadcast 192.168.126.255
media: Ethernet autoselect (1000baseT <full-duplex,master>)
status: active
vlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:01:01:58:31:30
media: Ethernet autoselect (1000baseT <full-duplex,master>)
status: active
vlan: 100 parent interface: mge1
Once I set up the ip for vlan1, I'm able to ping outside:
#ifconfig vlan1 inet 172.18.0.254
#ping 172.18.0.1
PING 172.18.0.1 (172.18.0.1): 56 data bytes
64 bytes from 172.18.0.1: icmp_seq=0 ttl=64 time=2.511 ms
^C
--- 172.18.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
I change MAC address for vlan1 :
#ifconfig vlan1 ether 00:0d:01:58:51:30
mge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE>
ether 00:01:01:58:31:30
inet 192.168.126.9 netmask 0xffffff00 broadcast 192.168.126.255
media: Ethernet autoselect (1000baseT <full-duplex,master>)
status: active
vlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:0d:01:58:51:30
inet 172.18.0.254 netmask 0xffff0000 broadcast 172.18.255.255
media: Ethernet autoselect (1000baseT <full-duplex,master>)
status: active
vlan: 100 parent interface: mge1
And here is where the problems start, as I'm not able to contact with vlan1 from the outside unless:
- Restore the MAC address to be 00:01:01:58:31:30 again
- Set up promisc mode
As I said, since I was able to see this issue in other platforms and with more mature drivers than my 'mge',
I don't know if this is the expected behavior, or my NIC driver is missing something to be able to deal
with this situation.
However thanks for your hint, I feel I need a little bit of perspective in this issue.
--
Pozdrawiam,
Pablo Ribalta Lorenzo
More information about the freebsd-net
mailing list