netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 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).