* VLAN test cases in 2.6.38.7
@ 2011-05-24 18:49 Ben Greear
2011-05-24 19:08 ` Ben Greear
0 siblings, 1 reply; 7+ messages in thread
From: Ben Greear @ 2011-05-24 18:49 UTC (permalink / raw)
To: netdev
I wrote a simple bridge that uses packet sockets to read/write
from network devices. I'll upload this code somewhere when
I get it a bit more presentable.
Machine info:
Linux lf0300-demo 2.6.38.7+ #14 SMP Mon May 23 10:31:45 PDT 2011 i686 i686 i386 GNU/Linux
Interface A: eth1
driver: igb
version: 3.0.19
firmware-version: 1.2-1
bus-info: 0000:01:00.0
Interface B: eth3:
driver: igb
version: 3.0.19
firmware-version: 1.2-1
bus-info: 0000:01:00.1
If no vlans are on eth1 and eth3, then it bridges fine, with vlan
headers inline. But, if you add a VLAN to eth1, it stops working,
probably because pkt tag is then un-stripped. I was generating on
vlan 7, and created vlan 9, btw.
I'll see if I can figure out how to use aux-data next...
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: VLAN test cases in 2.6.38.7
2011-05-24 18:49 VLAN test cases in 2.6.38.7 Ben Greear
@ 2011-05-24 19:08 ` Ben Greear
2011-05-24 22:52 ` Ben Greear
0 siblings, 1 reply; 7+ messages in thread
From: Ben Greear @ 2011-05-24 19:08 UTC (permalink / raw)
To: netdev
On 05/24/2011 11:49 AM, Ben Greear wrote:
>
> I wrote a simple bridge that uses packet sockets to read/write
> from network devices. I'll upload this code somewhere when
> I get it a bit more presentable.
>
> Machine info:
>
> Linux lf0300-demo 2.6.38.7+ #14 SMP Mon May 23 10:31:45 PDT 2011 i686
> i686 i386 GNU/Linux
>
> Interface A: eth1
> driver: igb
> version: 3.0.19
> firmware-version: 1.2-1
> bus-info: 0000:01:00.0
>
> Interface B: eth3:
> driver: igb
> version: 3.0.19
> firmware-version: 1.2-1
> bus-info: 0000:01:00.1
>
>
> If no vlans are on eth1 and eth3, then it bridges fine, with vlan
> headers inline. But, if you add a VLAN to eth1, it stops working,
> probably because pkt tag is then un-stripped. I was generating on
> vlan 7, and created vlan 9, btw.
>
> I'll see if I can figure out how to use aux-data next...
Why does the aux-data mask out the CFI bit? Shouldn't
we just pass the 16-bit VLAN tag un-modified to user-space?
Thanks,
Ben
>
> Thanks,
> Ben
>
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: VLAN test cases in 2.6.38.7
2011-05-24 19:08 ` Ben Greear
@ 2011-05-24 22:52 ` Ben Greear
2011-05-25 0:34 ` Ben Greear
2011-05-25 2:47 ` David Miller
0 siblings, 2 replies; 7+ messages in thread
From: Ben Greear @ 2011-05-24 22:52 UTC (permalink / raw)
To: netdev
On 05/24/2011 12:08 PM, Ben Greear wrote:
> On 05/24/2011 11:49 AM, Ben Greear wrote:
>>
>> I wrote a simple bridge that uses packet sockets to read/write
>> from network devices. I'll upload this code somewhere when
>> I get it a bit more presentable.
>>
>> Machine info:
>>
>> Linux lf0300-demo 2.6.38.7+ #14 SMP Mon May 23 10:31:45 PDT 2011 i686
>> i686 i386 GNU/Linux
>>
>> Interface A: eth1
>> driver: igb
>> version: 3.0.19
>> firmware-version: 1.2-1
>> bus-info: 0000:01:00.0
>>
>> Interface B: eth3:
>> driver: igb
>> version: 3.0.19
>> firmware-version: 1.2-1
>> bus-info: 0000:01:00.1
>>
>>
>> If no vlans are on eth1 and eth3, then it bridges fine, with vlan
>> headers inline. But, if you add a VLAN to eth1, it stops working,
>> probably because pkt tag is then un-stripped. I was generating on
>> vlan 7, and created vlan 9, btw.
>>
>> I'll see if I can figure out how to use aux-data next...
>
> Why does the aux-data mask out the CFI bit? Shouldn't
> we just pass the 16-bit VLAN tag un-modified to user-space?
Either my ubridge code is broken, or 2.6.38.7+ doesn't send tp_vlan_tci
properly. All I ever see is zero for that field.
Test case is:
set up VLAN traffic generator on VLAN 7 on separate machine.
udp traffic, 56kbps, 1024 byte udp payload.
Set up ubridge on test machine:
ifconfig eth1 promisc
ifconfig eth3 promisc
# Make NIC go into stripping mode.
ip link add link eth1 up name eth1.9 type vlan id 9
./do_test.pl eth1 eth3
Expect that at least tci is != 0.
The ubridge code is here:
http://www.candelatech.com/~greearb/misc/ubridge.tar.gz
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: VLAN test cases in 2.6.38.7
2011-05-24 22:52 ` Ben Greear
@ 2011-05-25 0:34 ` Ben Greear
2011-05-25 2:47 ` David Miller
1 sibling, 0 replies; 7+ messages in thread
From: Ben Greear @ 2011-05-25 0:34 UTC (permalink / raw)
To: netdev
On 05/24/2011 03:52 PM, Ben Greear wrote:
> On 05/24/2011 12:08 PM, Ben Greear wrote:
>> On 05/24/2011 11:49 AM, Ben Greear wrote:
>>>
>>> I wrote a simple bridge that uses packet sockets to read/write
>>> from network devices. I'll upload this code somewhere when
>>> I get it a bit more presentable.
>>>
>>> Machine info:
>>>
>>> Linux lf0300-demo 2.6.38.7+ #14 SMP Mon May 23 10:31:45 PDT 2011 i686
>>> i686 i386 GNU/Linux
>>>
>>> Interface A: eth1
>>> driver: igb
>>> version: 3.0.19
>>> firmware-version: 1.2-1
>>> bus-info: 0000:01:00.0
>>>
>>> Interface B: eth3:
>>> driver: igb
>>> version: 3.0.19
>>> firmware-version: 1.2-1
>>> bus-info: 0000:01:00.1
>>>
>>>
>>> If no vlans are on eth1 and eth3, then it bridges fine, with vlan
>>> headers inline. But, if you add a VLAN to eth1, it stops working,
>>> probably because pkt tag is then un-stripped. I was generating on
>>> vlan 7, and created vlan 9, btw.
>>>
>>> I'll see if I can figure out how to use aux-data next...
>>
>> Why does the aux-data mask out the CFI bit? Shouldn't
>> we just pass the 16-bit VLAN tag un-modified to user-space?
>
> Either my ubridge code is broken, or 2.6.38.7+ doesn't send tp_vlan_tci
> properly. All I ever see is zero for that field.
>
> Test case is:
>
> set up VLAN traffic generator on VLAN 7 on separate machine.
> udp traffic, 56kbps, 1024 byte udp payload.
>
> Set up ubridge on test machine:
> ifconfig eth1 promisc
> ifconfig eth3 promisc
> # Make NIC go into stripping mode.
> ip link add link eth1 up name eth1.9 type vlan id 9
> ./do_test.pl eth1 eth3
>
>
> Expect that at least tci is != 0.
>
> The ubridge code is here:
> http://www.candelatech.com/~greearb/misc/ubridge.tar.gz
Ok, was my bug. That test case passes now...will upload
the fixed code tomorrow.
Ben
>
> Thanks,
> Ben
>
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: VLAN test cases in 2.6.38.7
2011-05-24 22:52 ` Ben Greear
2011-05-25 0:34 ` Ben Greear
@ 2011-05-25 2:47 ` David Miller
2011-05-25 3:33 ` Ben Greear
1 sibling, 1 reply; 7+ messages in thread
From: David Miller @ 2011-05-25 2:47 UTC (permalink / raw)
To: greearb; +Cc: netdev
From: Ben Greear <greearb@candelatech.com>
Date: Tue, 24 May 2011 15:52:52 -0700
> Either my ubridge code is broken, or 2.6.38.7+ doesn't send
> tp_vlan_tci
> properly. All I ever see is zero for that field.
You need to put the af_packet socket into TPACKET_V2 format.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: VLAN test cases in 2.6.38.7
2011-05-25 2:47 ` David Miller
@ 2011-05-25 3:33 ` Ben Greear
2011-05-25 18:49 ` Ben Greear
0 siblings, 1 reply; 7+ messages in thread
From: Ben Greear @ 2011-05-25 3:33 UTC (permalink / raw)
To: David Miller; +Cc: netdev
On 05/24/2011 07:47 PM, David Miller wrote:
> From: Ben Greear<greearb@candelatech.com>
> Date: Tue, 24 May 2011 15:52:52 -0700
>
>> Either my ubridge code is broken, or 2.6.38.7+ doesn't send
>> tp_vlan_tci
>> properly. All I ever see is zero for that field.
>
> You need to put the af_packet socket into TPACKET_V2 format.
Actually, that doesn't seem needed. I just needed to give more
space to the cmsg buffer to account for the cmsg struct overhead.
(And I had a bunch of other bugs, but that was the only one
that directly affected the tci field.)
I think that TPACKET_V2 stuff might be only for reading
memmapped messages or something like that?
It looks like for any flexible user-space code, we are just going
to have to use recvmesg instead of recvfrom, and add the extra checks
for cmesg data. I'll post code when I get it working better so
the next person to try this might have an easier time :P
I think we will need to add the has-vlan-tci flag to the cmesg
data, and probably also remove that masking of the CFI bit.
I've no idea about socket filters, but maybe someone else can
deal with that :)
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: VLAN test cases in 2.6.38.7
2011-05-25 3:33 ` Ben Greear
@ 2011-05-25 18:49 ` Ben Greear
0 siblings, 0 replies; 7+ messages in thread
From: Ben Greear @ 2011-05-25 18:49 UTC (permalink / raw)
To: David Miller; +Cc: netdev
On 05/24/2011 08:33 PM, Ben Greear wrote:
> On 05/24/2011 07:47 PM, David Miller wrote:
>> From: Ben Greear<greearb@candelatech.com>
>> Date: Tue, 24 May 2011 15:52:52 -0700
>>
>>> Either my ubridge code is broken, or 2.6.38.7+ doesn't send
>>> tp_vlan_tci
>>> properly. All I ever see is zero for that field.
>>
>> You need to put the af_packet socket into TPACKET_V2 format.
>
> Actually, that doesn't seem needed. I just needed to give more
> space to the cmsg buffer to account for the cmsg struct overhead.
> (And I had a bunch of other bugs, but that was the only one
> that directly affected the tci field.)
>
> I think that TPACKET_V2 stuff might be only for reading
> memmapped messages or something like that?
>
> It looks like for any flexible user-space code, we are just going
> to have to use recvmesg instead of recvfrom, and add the extra checks
> for cmesg data. I'll post code when I get it working better so
> the next person to try this might have an easier time :P
Updated code is here:
http://www.candelatech.com/~greearb/misc/ubridge.tar.gz
Some testing results:
kernel 2.6.38.7, plus back-port of:
network: Allow af_packet to transmit +4 bytes for VLAN packets.
MTU: 1500
NIC: igb (3.0.19)
Test-cases:
0: Ensure receipt of tags when bridging ether devices
with an un-used VLAN on one device. Uses recvmsg (aux-data)
1: Ensure receipt of tags when bridging ether devices
with an un-used VLAN on one device. Uses recvfrom (no aux-data)
2: Ensure receipt of tags when bridging ether devices
without any VLANs configured. Uses recvmsg (aux-data)
3: Ensure receipt of tags when bridging ether devices
without any VLANs configured. Uses recvfrom (no aux-data)
4: Ensure receipt of tags when bridging ether devices
with bridged VLAN on one device. Uses recvmsg (aux-data)
5: Ensure receipt of tags when bridging ether devices
with bridged VLAN on one device. Uses recvfrom (no aux-data)
Generator (LANforge):
MTU 1500
udp connection on eth with 1024 byte pdu, 56kbps
udp connection on eth with 4000 byte pdu, 56kbps
udp connection on vlan 7 with 1024 byte pdu, 56kbps
udp connection on vlan 7 with 4000 byte pdu, 56kbps
test-case 0: Passes
test-case 1: Fails on VLANs (expected, recvfrom doesn't get aux-data to re-build VLAN hdr)
test-case 2: Passes
test-case 3: Passes
test-case 4: Passes
test-case 5: Fails on VLANs (expected, recvfrom doesn't get aux-data to re-build VLAN hdr)
Thanks,
Ben
>
> I think we will need to add the has-vlan-tci flag to the cmesg
> data, and probably also remove that masking of the CFI bit.
>
> I've no idea about socket filters, but maybe someone else can
> deal with that :)
>
> Thanks,
> Ben
>
>
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-05-25 18:49 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-24 18:49 VLAN test cases in 2.6.38.7 Ben Greear
2011-05-24 19:08 ` Ben Greear
2011-05-24 22:52 ` Ben Greear
2011-05-25 0:34 ` Ben Greear
2011-05-25 2:47 ` David Miller
2011-05-25 3:33 ` Ben Greear
2011-05-25 18:49 ` Ben Greear
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).