From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pb0-f50.google.com (mail-pb0-f50.google.com [209.85.160.50]) by dpdk.org (Postfix) with ESMTP id 6EC882F4 for ; Thu, 23 Jan 2014 22:42:44 +0100 (CET) Received: by mail-pb0-f50.google.com with SMTP id rq2so2371336pbb.23 for ; Thu, 23 Jan 2014 13:44:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=vU3C2zIGxC3ftl+mV0z17zy88jFuoKaF9UL3BwemBjY=; b=EiHXijx7G6dywjHY6j3DKIG1Ho6DzgvgI9MkRzqxQ77BD1VE+vz1hKVxIynclSIopo ACPDJ35F8Qdpzq/dNjIzmNqzvw9x3D19quGCkSyDqsv1zziXFFFPIECWjSLb8LgZyGvs A848xAQZxWOnKVb4oPRQwaRE9ACYAZ4fcKtTmzJ+U0d5h10sCXrNaqIgxf+sOP7Kl7yL AiIaeJCI9AjWX3o1w1L8Xm8fPyn7M42rTLVgaCBNOOVaLqZq0aBZrjGqdVoOIEbWHI0o qMeJ8OGfMXYM0+t9D+hJNC5Qf43ti7TySJPVEK0/p0IT3yUZhTEr4MjSKIjo60uTG8UV kEBA== X-Gm-Message-State: ALoCoQknY3J8LydbkBLcS2eYhCeQm8VXak6Nu+4/3KbYrkywYJvBYBXTqcdHZaPMc6AJ0yCYMu6O X-Received: by 10.67.23.135 with SMTP id ia7mr10247843pad.5.1390513440823; Thu, 23 Jan 2014 13:44:00 -0800 (PST) Received: from nehalam.linuxnetplumber.net (static-50-53-83-51.bvtn.or.frontiernet.net. [50.53.83.51]) by mx.google.com with ESMTPSA id qf7sm66242342pac.14.2014.01.23.13.43.59 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 23 Jan 2014 13:43:59 -0800 (PST) Date: Thu, 23 Jan 2014 13:43:56 -0800 From: Stephen Hemminger To: James Yu Message-ID: <20140123134356.522e822a@nehalam.linuxnetplumber.net> In-Reply-To: References: X-Mailer: Claws Mail 3.8.1 (GTK+ 2.24.10; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] Passing VLAN traffic via l2fwd X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jan 2014 21:42:45 -0000 On Thu, 23 Jan 2014 11:27:14 -0800 James Yu wrote: > 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@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 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@cent64x64-137189 ~]# ip link show eth2 > >> 96: eth2: 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@cent64x64-137189 ~]# ip link show eth3 > >> 98: eth3: 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 > >> > >> > >> > >>
>> function='0x0'/> > >> > >>
>> function='0x0'/> > >> > >> > >> > >> > >>
>> function='0x1'/> > >> > >>
>> function='0x0'/> > >> > >> > >> [root@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@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. > >> > > > > The VLAN offload bit in the mbuf is different for TX and RX. Probably would work with something like this: diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c index 05ef330..70dbf85 100644 --- a/examples/l2fwd/main.c +++ b/examples/l2fwd/main.c @@ -289,6 +289,9 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid) /* src addr */ ether_addr_copy(&l2fwd_ports_eth_addr[dst_port], ð->s_addr); + if (m->ol_flags & PKT_RX_VLAN_PKT) + m->ol_flags |= PKT_TX_VLAN_PKT; + l2fwd_send_packet(m, (uint8_t) dst_port); }