[dpdk-users] using rte_flow via tespmd with Intel X552

Zhao1, Wei wei.zhao1 at intel.com
Mon Apr 17 05:05:27 CEST 2017


Hi

From: Lu, Wenzhuo
Sent: Monday, April 17, 2017 10:57 AM
To: Tetsuro Nakamura <xyz1.8tn at gmail.com>; users at dpdk.org
Cc: Adrien Mazarguil <adrien.mazarguil at 6wind.com>; Zhao1, Wei <wei.zhao1 at intel.com>
Subject: RE: [dpdk-users] using rte_flow via tespmd with Intel X552

Hi Nakamura,

From: Tetsuro Nakamura [mailto:xyz1.8tn at gmail.com]
Sent: Monday, April 17, 2017 10:36 AM
To: users at dpdk.org<mailto:users at dpdk.org>
Cc: Adrien Mazarguil; Zhao1, Wei; Lu, Wenzhuo
Subject: Re: [dpdk-users] using rte_flow via tespmd with Intel X552

Dear Adrien and Wenzhuo,

Thank you very much for your kind reply.
I tried flow_director_filter API directly using testpmd with the same environment.
So let me add more information.

- Using pktgen-3.0.13, I prepared 2 flows whose dst-Macs are  0c:c4:7a:cf:66:11 and 0c:c4:7a:cf:66:12 respectively.
```
Pktgen> set 0 seqCnt 2 
Pktgen> seq 0 0 0c:c4:7a:cf:66:11 0c:c4:7a:cf:66:01 192.168.1.1 192.168.0.1/24<http://192.168.0.1/24> 1234 5678 ipv4 udp 1 64
Pktgen> seq 0 0 0c:c4:7a:cf:66:12 0c:c4:7a:cf:66:02 192.168.1.1 192.168.0.1/24<http://192.168.0.1/24> 1234 5678 ipv4 udp 1 64
Pktgen> start 0
```

- Then I started testpmd with options of "--rxq=2 --txq=2" and "--pkt-filter-mode=perfect-mac-vlan".
- No error had occurred when configuring flow_director_filter.
- When started, all packets were received in Pktgen.
```
$sudo ./dpdk-17.04/x86_64-native-linuxapp-gcc/app/testpmd -l 0-4 -n 4 -- -i --portmask=0x3 --nb-cores=4 --rxq=2 --txq=2 --pkt-filter-mode=perfect-mac-vlan

testpmd> flow_director_filter 0 mode MAC-VLAN add mac 0c:c4:7a:cf:66:11 vlan 1 flexbytes (0x80,0x00) fwd queue 0 fd_id 1
testpmd> flow_director_filter 0 mode MAC-VLAN add mac 0c:c4:7a:cf:66:12 vlan 1 flexbytes (0x80,0x00) fwd queue 1 fd_id 2
testpmd> start
```

- When queue 0 was stopped, no packet was received in Pktgen.
```
testpmd> stop
testpmd> port 0 rxq 0 stop
testpmd> start
```

- When queue 1 was stopped, all packets were received in Pktgen.
```
testpmd> stop
testpmd> port 0 rxq 0 start
testpmd> port 0 rxq 1 stop
testpmd> start
```

- which (I guess) mean the flow is not supported as you said.
- The mac argument in flow_director_filter is dst-Mac, right?
[Wenzhuo] Yes. It’s dst-mac. It’s the benefit of generic flow API. Using generic API  users do know what fields the input are. But the original one, users have to check the comments and docs ☺

2017-04-17 9:55 GMT+09:00 Lu, Wenzhuo <wenzhuo.lu at intel.com<mailto:wenzhuo.lu at intel.com>>:
Hi,

> -----Original Message-----
> From: Adrien Mazarguil [mailto:adrien.mazarguil at 6wind.com<mailto:adrien.mazarguil at 6wind.com>]
> Sent: Friday, April 14, 2017 5:22 PM
> To: Tetsuro Nakamura
> Cc: users at dpdk.org<mailto:users at dpdk.org>; Lu, Wenzhuo
> Subject: Re: [dpdk-users] using rte_flow via tespmd with Intel X552
>
> Hi Tetsuro,
>
> On Thu, Apr 13, 2017 at 10:18:28AM +0900, Tetsuro Nakamura wrote:
> > Hi All,
> >
> > I'm now trying to use simple L2 function with "Generic Flow API (rte_flow)"
> > using testpmd in dpdk-17.02,
> > but it doesn't work with the error below.
> >
> > -----------
> > $sudo ./dpdk-17.02/x86_64-native-linuxapp-gcc/app/testpmd -l 0-3 -n 4
> > -- -i
> > --portmask=0x3 --nb-cores=2
> >
> > testpmd> flow validate 0 ingress pattern eth / eth dst is
> > testpmd> a0:36:9f:78:30:26
> > / end actions drop / end
> > Caught error type 9 (specific pattern item): cause: 0x7ffd225adc88,
> > Not supported by L2 tunnel filter
> > testpmd> flow validate 0 ingress pattern eth / eth dst is
> > testpmd> a0:36:9f:78:30:26
> > / end actions queue index 0 / end
> > Caught error type 9 (specific pattern item): cause: 0x7ffd225adc88,
> > Not supported by L2 tunnel filter
> > -----------
> >
> > I tried several other flows and got the same error.
> > I'm using Intel X552 NIC. The firmware-version is 0x800003e7.
> >
> > -----------
> > $ sudo ethtool -i rename6
> > driver: ixgbe
> > version: 5.0.4
> > firmware-version: 0x800003e7
> > expansion-rom-version:
> > bus-info: 0000:03:00.0
> > supports-statistics: yes
> > supports-test: yes
> > supports-eeprom-access: yes
> > supports-register-dump: yes
> > supports-priv-flags: no
> > -----------
> >
> > My question is,
> > am I missing some additional settings to do ?
> > Should I use another firmware version ?
> > # DPDK 17.02 official release note says the tested firmware version
> > was 0x800001cf.
> > # My version, 0x800003e7 is newer, isn't it?
> >
> > I don't think the NIC does't support such simple L2 functions.
> > But if it doesn't, are there any documents that tell us which NIC
> > supports which flow rules in rte_flow?
> > Could you tell me what flows I can try with Intel X552 NIC?
> >
> > Thank you and best regards,
> >
> > Tetsuro Nakamura, NTT
>
> I'm not familiar with ixgbe but this issue reminds me of this thread [1],
> particularly the following comment:
>
>  "the rte_flow_error returned was not very useful for it does return the
> error of the last tried filter-type (L2 tunnel in ixgbe), and not the error  of the
> filter-type that my setup should use (flow director)"
>
> CC'ing Wenzhuo, I think this issue is present in 17.02, has it been fixed since?
>
> [1] http://dpdk.org/ml/archives/dev/2017-March/059928.html
+Wei
About the previous discussion, Wei has sent the patch to remove the tpid in ixgbe. But no improvement of error message yet as I know.

I think this flow is not supported. Generic flow API is flexible enough, but not every flow can be supported. The flow is supported or not has nothing to do with if it's simple. It's limited to HW capability. Wei, do you have some doc to shared or even has uploaded to the community? Thanks.

>
> --
> Adrien Mazarguil
> 6WIND





We have a document about command format when creating flow,  but has not been publicly upload to community.

I will add a new chapter for this in doc\guides\nics\ixgbe.rst later, which is about command format when creating flow.

A specific patch will be send to community later.



More information about the users mailing list