Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Mar 2008 12:49:34 +0100
From:      Giulio Ferro <auryn@zirakzigil.org>
To:        freebsd-net@freebsd.org
Subject:   VLAN trunking and fragmentation
Message-ID:  <47D7C34E.8060805@zirakzigil.org>

next in thread | raw e-mail | index | archive | help
I need to configure ports to work with multiple vlan on my redundant 
freebsd router/firewall.
In order to setup my test environment I have 2 freebsd boxes 7.0 STABLE 
amd64 both with
gigabit realtek (re0). According to what the man says, these cards 
should support vlan in hardware.

These PCs are connected to a dell 48 port managed layer-3 switch on port 
1 and 2.

On the dell CLI I configure the vlans:

---------------------------
enable
configure

vlan database
vlan 10
exit

interface vlan 10
name testvlan
exit

interface ethernet 1/g1
switchport mode trunk
switchport trunk allowed vlan add 10
exit

interface ethernet 1/g2
switchport mode trunk
switchport trunk allowed vlan add 10
exit
---------------------------


On both PC I have configured a vlan interface like this:

from /etc/rc.conf
---------------------------
ifconfig_re0="inet 192.168.60.1 netmask 255.255.255.0"
cloned_interfaces="vlan0"
ifconfig_vlan0="inet 192.168.100.1 netmask 255.255.255.0 vlan 10 vlandev 
re0"
---------------------------

same on the other PC, but with physical address = 192.168.60.2 and 
virtual address 192.168.100.2


When I now try to ping from one machine to the other there is no problem:

---------------------------
# ping -c 1 192.168.100.2
PING 192.168.100.2 (192.168.100.2): 56 data bytes
64 bytes from 192.168.100.2: icmp_seq=0 ttl=64 time=0.108 ms

--- 192.168.100.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.108/0.108/0.108/0.000 ms
---------------------------

The problems start when I send a packet which is bigger than 1472 bytes:

---------------------------
ping -c 1 -s 1473 192.168.100.2
---------------------------


The packet is fragmented as it should, but there seems to be some 
problem with the checksum computation.
---------------------------
# on PC 192.168.100.1

tcpdump -i re0 -n -vvv not stp
13:33:37.789615 IP (tos 0x0, ttl 64, id 809, offset 0, flags [+], proto 
ICMP (1), length 1500, bad cksum 0 (->8a4)!) 192.168.100.1 > 
192.168.100.2: ICMP echo request, id 31748, seq 0, length 1480
13:33:37.789622 IP (tos 0x0, ttl 64, id 809, offset 1480, flags [none], 
proto ICMP (1), length 21, bad cksum 0 (->2db2)!) 192.168.100.1 > 
192.168.100.2: icmp


#on PC 192.168.100.2
tcpdump -i re0 -n -vvv not stp
13:32:49.038581 IP (tos 0x0, ttl 64, id 809, offset 1480, flags [none], 
proto ICMP (1), length 21) 192.168.100.1 > 192.168.100.2: icmp

---------------------------

I'm told that this same configuration works under linux. It seems to me 
this could be a bug of the vlan stack under freebsd...

Thanks in advance for any workaround / quick patch to solve this issue.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47D7C34E.8060805>