[dpdk-dev] Passing VLAN traffic via l2fwd

James Yu ypyu2011 at gmail.com
Thu Jan 23 20:27:14 CET 2014


Hi Daniel,

Untagged traffic could be looped back. I am doing a one-directional loop
back. In the Frame tabe of the StreamBlock editor, I did the following
stream1:
     destination address: MAC address of the receiving port of the guest
VM. (obtained from the debug print out when l2fwd is started, or ifconfig
before l2fwd is started)
stream2:
     destination address: MAC address of the sending port of the guest VM
(obtained from the debug print out when l2fwd is started, or ifconfig
before l2fwd is started)


The only thing I add is to tag both the SR-IOV VF ports on the host with
the same tag using ip command and add that tag number as the VID to the
Spirent streams. After that that traffic can reach l2fwd which reported
forwarded the packets on the periodic printout. However the packets did not
reach the Spirent.

Also it is exercising rte_ixgbevf_pmd codes as indicated during starting
l2fwd.

EAL: Master core 0 is ready (tid=b77ab7d0)

EAL: Core 1 is ready (tid=adffeb70)

EAL: probe driver: 8086:100e rte_em_pmd

EAL: probe driver: 8086:100e rte_em_pmd

*EAL: probe driver: 8086:10ed rte_ixgbevf_pmd*
I wonder do I have to change any codes in the DPDK library or call certain
routines to setup the VLAN in the DPDK stack during starting the l2fwd ?


Were you able to send VLAN traffic from your iXia and looped back to your
iXia ?


Thanks

James




On Thu, Jan 23, 2014 at 12:45 AM, Daniel Kaminsky <
daniel.kaminsky at infinitelocality.com> wrote:

> Hi James,
>
> Did you try a non-tagged traffic? I suspect this is the limitation of the
> l2fwd or the requirements of Spirent. From my experience with Ixia, the L2
> forward device must implement the ARP protocol (at least a subset of it).
>
> Also, notice that the l2fwd example sets the destination MAC address to
> "02:00:00:00:00:xx" which the Spirent might doesn't like.
>
> Daniel
>
>
> On Thu, Jan 23, 2014 at 7:08 AM, James Yu <ypyu2011 at gmail.com> wrote:
>
>> I could not pass tagged traffic through the l2fwd program running inside a
>> CentOS VM. The l2fwd program reported sending out all the packets received
>> from one port to the other port. But the outside Spirent tester could not
>> receive a packet at all. I am wondering maybe the tagged packets are
>> dropped somewhere in the rte_em_pmd or in the DPDK library. Anyone knows
>> how to pass/send VLAN traffic through the DPDK ?
>>
>> With tagged SR-IOV ports, Spirent and guest VM CentOS could ping each
>> other
>> without using DPDK. Once I used DPDK 1.3.1r2, I encountered issues with
>> sending out tagged packets out of DPDK to the host.
>>
>> I have done the following:
>>
>> On RHEL6.1 host
>> 1. setup the VLAN using "ip link set eth2 vf 0 vlan 3" for port 1 and "ip
>> link set eth3 vf 0 vlan 3" for port 2
>> [root at cent64x64-137189 ~]# ip link show eth2
>> 96: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
>> qlen
>> 1000
>>     link/ether 90:e2:ba:2e:af:f0 brd ff:ff:ff:ff:ff:ff
>>     vf 0 MAC 52:54:00:f9:9a:90, vlan 3
>> [root at cent64x64-137189 ~]# ip link show eth3
>> 98: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
>> qlen
>> 1000
>>     link/ether 90:e2:ba:2e:af:f1 brd ff:ff:ff:ff:ff:ff
>>     vf 0 MAC 52:54:00:30:37:98, vlan 3
>>
>> 2. virsh configure SR-IOV hostdev
>>     <interface type='hostdev' managed='yes'>
>>       <mac address='52:54:00:f9:9a:90'/>
>>       <source>
>>         <address type='pci' domain='0x0000' bus='0x1a' slot='0x10'
>> function='0x0'/>
>>       </source>
>>       <address type='pci' domain='0x0000' bus='0x00' slot='0x08'
>> function='0x0'/>
>>     </interface>
>>     <interface type='hostdev' managed='yes'>
>>       <mac address='52:54:00:30:37:98'/>
>>       <source>
>>         <address type='pci' domain='0x0000' bus='0x1a' slot='0x10'
>> function='0x1'/>
>>       </source>
>>       <address type='pci' domain='0x0000' bus='0x00' slot='0x09'
>> function='0x0'/>
>>     </interface>
>>
>> [root at cent64x64-137189 ~]# lspci |grep Eth
>> 1a:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+
>> Network Connection (rev 01)
>> 1a:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+
>> Network Connection (rev 01)
>> 1a:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller
>> Virtual Function (rev 01)
>> 1a:10.1 Ethernet controller: Intel Corporation 82599 Ethernet Controller
>> Virtual Function (rev 01)
>>
>>
>> On guest VM
>> 1. check all the ports are started up and check their corresponding port
>> type. Use the two SR-IOV ports with device type as ixgbevf  for l2fwd
>> [root at VirtualADX ~]# lspci |grep Eth
>> 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet
>> Controller (rev 03)
>> 00:07.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet
>> Controller (rev 03)
>> 00:08.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller
>> Virtual Function (rev 01)
>> 00:09.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller
>> Virtual Function (rev 01)
>> 00:0a.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet
>> Controller (rev 03)
>>
>> 2. run this command:
>>            /root/l2fwd -c 3 -n 1 -b 000:00:03.0  -b 000:00:07.0 -b
>> 000:00:0a.0 -- -q 1 -p 3
>>
>>     Although the l2fwd forwards all received tagged packets, the Spirent
>> tester did not receive any packet at all.
>>
>
>


More information about the dev mailing list