[dpdk-dev] Fwd: SR-IOV dpdk testpmd bonding does not work

Hekai Wang hewang at redhat.com
Sat Mar 3 13:05:11 CET 2018


Thanks , I forget do "set portlist " cmd.

But there is another problem is

1. enable testpmd bond active-backup mode , do send packet test , packet
backtrack ,from some port out and then this port back.
2. down the active physical link , then testpmd show receive LSC event
,show port info all , find one port down .
3. send packet to the backup port that used by testpmd bond from another
side ,It does not work.

Thanks.


2018-03-03 2:02 GMT+08:00 Ferruh Yigit <ferruh.yigit at intel.com>:

> On 2/28/2018 6:30 AM, Hekai Wang wrote:
> > ---------- Forwarded message ----------
> > From: Hekai Wang <hewang at redhat.com>
> > Date: 2018-02-28 14:28 GMT+08:00
> > Subject: SR-IOV dpdk testpmd bonding does not work
> > To: test-report at dpdk.org
> >
> >
> > Hi
> >
> > I have a problem with dpdk testpmd bonding,I think may be a bug
> >
> > Test env
> >
> > under test machine and traffic sender machine connect directly
> >
> > each machine have two ports
> >
> > [xxx]# dpdk-devbind -s
> >
> > Network devices using DPDK-compatible driver
> > ============================================
> > 0000:05:10.0 '82599 Ethernet Controller Virtual Function' drv=vfio-pci
> > unused=ixgbevf
> > 0000:05:10.1 '82599 Ethernet Controller Virtual Function' drv=vfio-pci
> > unused=ixgbevf
> >
> > Network devices using kernel driver
> > ===================================
> > 0000:01:00.0 'NetXtreme BCM5720 Gigabit Ethernet PCIe' if=em1 drv=tg3
> > unused=vfio-pci *Active*
> > 0000:01:00.1 'NetXtreme BCM5720 Gigabit Ethernet PCIe' if=em2 drv=tg3
> > unused=vfio-pci
> > 0000:02:00.0 'NetXtreme BCM5720 Gigabit Ethernet PCIe' if=em3 drv=tg3
> > unused=vfio-pci
> > 0000:02:00.1 'NetXtreme BCM5720 Gigabit Ethernet PCIe' if=em4 drv=tg3
> > unused=vfio-pci
> > 0000:05:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=p7p1
> > drv=ixgbe unused=vfio-pci
> > 0000:05:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=p7p2
> > drv=ixgbe unused=vfio-pci
> >
> > Other network devices
> > =====================
> > <none>
> >
> > Crypto devices using DPDK-compatible driver
> > ===========================================
> > <none>
> >
> > Crypto devices using kernel driver
> > ==================================
> > <none>
> >
> > Other crypto devices
> > ====================
> > <none>
> > [root at dell-per730-18 ~]# ethtool -i p7p1
> > driver: ixgbe
> > version: 4.4.0-k-rh7.4
> > firmware-version: 0x61ae0001
> > expansion-rom-version:
> > bus-info: 0000:05:00.0
> > supports-statistics: yes
> > supports-test: yes
> > supports-eeprom-access: yes
> > supports-register-dump: yes
> > supports-priv-flags: no
> > [root at dell-per730-18 ~]# ethtool -i p7p2
> > driver: ixgbe
> > version: 4.4.0-k-rh7.4
> > firmware-version: 0x61ae0001
> > expansion-rom-version:
> > bus-info: 0000:05:00.1
> > supports-statistics: yes
> > supports-test: yes
> > supports-eeprom-access: yes
> > supports-register-dump: yes
> > supports-priv-flags: no
> >
> > **************************
> > ip li info
> > 6: p7p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
> mode
> > DEFAULT qlen 1000
> >     link/ether 90:e2:ba:29:bf:14 brd ff:ff:ff:ff:ff:ff
> >     vf 0 MAC 2e:c7:ba:0c:73:f8, spoof checking off, link-state auto,
> trust
> > on, query_rss off
> > 7: p7p2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq
> state
> > UP mode DEFAULT qlen 1000
> >     link/ether 90:e2:ba:29:bf:15 brd ff:ff:ff:ff:ff:ff
> >     vf 0 MAC c6:24:28:7a:c8:ec, spoof checking off, link-state auto,
> trust
> > on, query_rss off
> >
> > So , current p7p1 and p7p2 with one vf with each port.
> >
> > 1. bond each vf to vfio-pci driver
> > [xxx]# dpdk-devbind -s
> >
> > Network devices using DPDK-compatible driver
> > ============================================
> > 0000:05:10.0 '82599 Ethernet Controller Virtual Function' drv=vfio-pci
> > unused=ixgbevf
> > 0000:05:10.1 '82599 Ethernet Controller Virtual Function' drv=vfio-pci
> > unused=ixgbevf
> > 2. create a VM
> >
> > #need qemu-img create a image first
> >
> > bin/bash -c "sudo -E taskset -c 4,6,30 /usr/libexec/qemu-kvm -m 4096
> -smp 3
> > -cpu host,migratable=off -drive if=ide,file=rhel1Q.qcow2 -boot c
> > --enable-kvm -monitor unix:/tmp/vm0monitor,server,nowait -object
> > memory-backend-file,id=mem,size=4096M,mem-path=/dev/hugepages,share=on
> > -numa node,memdev=mem -mem-prealloc -nographic -vnc :0 -name Client0
> > -snapshot -net none -no-reboot -device vfio-pci,host=0000:05:10.0 -device
> > vfio-pci,host=0000:05:10.1"
> >
> > Guest(VM) Command
> >
> > iptables -t filter -P INPUT ACCEPT
> > iptables -t filter -P FORWARD ACCEPT
> > iptables -t filter -P OUTPUT ACCEPT
> > iptables -t mangle -P PREROUTING ACCEPT
> > iptables -t mangle -P INPUT ACCEPT
> > iptables -t mangle -P FORWARD ACCEPT
> > iptables -t mangle -P OUTPUT ACCEPT
> > iptables -t mangle -P POSTROUTING ACCEPT
> > iptables -t nat -P PREROUTING ACCEPT
> > iptables -t nat -P INPUT ACCEPT
> > iptables -t nat -P OUTPUT ACCEPT
> > iptables -t nat -P POSTROUTING ACCEPT
> > iptables -t filter -F
> > iptables -t filter -X
> > iptables -t mangle -F
> > iptables -t mangle -X
> > iptables -t nat -F
> > iptables -t nat -X
> > ip6tables -t filter -P INPUT ACCEPT
> > ip6tables -t filter -P FORWARD ACCEPT
> > ip6tables -t filter -P OUTPUT ACCEPT
> > ip6tables -t mangle -P PREROUTING ACCEPT
> > ip6tables -t mangle -P INPUT ACCEPT
> > ip6tables -t mangle -P FORWARD ACCEPT
> > ip6tables -t mangle -P OUTPUT ACCEPT
> > ip6tables -t mangle -P POSTROUTING ACCEPT
> > ip6tables -t nat -P PREROUTING ACCEPT
> > ip6tables -t nat -P INPUT ACCEPT
> > ip6tables -t nat -P OUTPUT ACCEPT
> > ip6tables -t nat -P POSTROUTING ACCEPT
> > ip6tables -t filter -F
> > ip6tables -t filter -X
> > ip6tables -t mangle -F
> > ip6tables -t mangle -X
> > ip6tables -t nat -F
> > ip6tables -t nat -X
> > sysctl vm.nr_hugepages=1
> > mkdir -p /dev/hugepages
> > mount -t hugetlbfs hugetlbfs /dev/hugepages
> > cat /proc/meminfo
> >
> > # at this time , download dpdk and compile and install it , I use
> dpdk17.11
> >
> > ip link show
> > ip ad show
> > cat /proc/cmdline
> > dpdk-devbind --status
> > ifdown eth0
> > ifdown eth1
> > dpdk-bind --status
> > dpdk-devbind -u 00:03.0 00:04.0
> > modprobe -r vfio
> > modprobe -r vfio_iommu_type1
> > modprobe vfio enable_unsafe_noiommu_mode=Y
> > modprobe vfio-pci
> > dpdk-devbind -b vfio-pci 00:03.0 00:04.0
> > dpdk-devbind --status
> > testpmd -l 0,1,2 -n 4 --socket-mem 512 -- --burst=64 -i --txqflags=0xf00
> > --disable-hw-vlan --nb-cores=2, --txq=1 --rxq=1 --rxd=512 --txd=512
> > --port-topology=chained
> > set fwd macswap
> > create bonded device 1 0
> > set bonding mode 1 2
> > set bonding mon_period 2 100
> > add bonding slave 0 2
> > add bonding slave 1 2
> > set bonding primary 0 2
> > port start 2
> > set fwd macswap
> > start
> > show port info all
> > testpmd> show port info all
> >
> > ********************* Infos for port 0  *********************
> > MAC address: 2E:C7:BA:0C:73:F8
> > Driver name: net_ixgbe_vf
> > Connect to socket: 0
> > memory allocation on the socket: 0
> > Link status: up
> > Link speed: 10000 Mbps
> > Link duplex: full-duplex
> > MTU: 1500
> > Promiscuous mode: disabled
> > Allmulticast mode: disabled
> > Maximum number of MAC addresses: 128
> > Maximum number of MAC addresses of hash filtering: 4096
> > VLAN offload:
> >   strip off
> >   filter off
> >   qinq(extend) off
> > No flow type is supported.
> > Max possible RX queues: 4
> > Max possible number of RXDs per queue: 4096
> > Min possible number of RXDs per queue: 32
> > RXDs number alignment: 8
> > Max possible TX queues: 4
> > Max possible number of TXDs per queue: 4096
> > Min possible number of TXDs per queue: 32
> > TXDs number alignment: 8
> >
> > ********************* Infos for port 1  *********************
> > MAC address: C6:24:28:7A:C8:EC
> > Driver name: net_ixgbe_vf
> > Connect to socket: 0
> > memory allocation on the socket: 0
> > Link status: up
> > Link speed: 10000 Mbps
> > Link duplex: full-duplex
> > MTU: 1500
> > Promiscuous mode: disabled
> > Allmulticast mode: disabled
> > Maximum number of MAC addresses: 128
> > Maximum number of MAC addresses of hash filtering: 4096
> > VLAN offload:
> >   strip off
> >   filter off
> >   qinq(extend) off
> > No flow type is supported.
> > Max possible RX queues: 4
> > Max possible number of RXDs per queue: 4096
> > Min possible number of RXDs per queue: 32
> > RXDs number alignment: 8
> > Max possible TX queues: 4
> > Max possible number of TXDs per queue: 4096
> > Min possible number of TXDs per queue: 32
> > TXDs number alignment: 8
> >
> > ********************* Infos for port 2  *********************
> > MAC address: 2E:C7:BA:0C:73:F8
> > Driver name: net_bonding
> > Connect to socket: 0
> > memory allocation on the socket: 0
> > Link status: up
> > Link speed: 10000 Mbps
> > Link duplex: full-duplex
> > MTU: 1500
> > Promiscuous mode: enabled
> > Allmulticast mode: disabled
> > Maximum number of MAC addresses: 1
> > Maximum number of MAC addresses of hash filtering: 0
> > VLAN offload:
> >   strip off
> >   filter off
> >   qinq(extend) off
> > No flow type is supported.
> > Max possible RX queues: 4
> > Max possible number of RXDs per queue: 65535
> > Min possible number of RXDs per queue: 0
> > RXDs number alignment: 1
> > Max possible TX queues: 4
> > Max possible number of TXDs per queue: 65535
> > Min possible number of TXDs per queue: 0
> > TXDs number alignment: 1
> >
> >
> > ***************************************************************
> > another side send traffic
> >
> > 18: p7p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq portid
> > 6805ca37da40 state UP mode DEFAULT qlen 1000
> >     link/ether 68:05:ca:37:da:40 brd ff:ff:ff:ff:ff:ff
> > 19: p7p2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq portid
> > 6805ca37da41 state UP mode DEFAULT qlen 1000
> >     link/ether 68:05:ca:37:da:41 brd ff:ff:ff:ff:ff:ff
> >
> > [root at dell-per730-21 ~]# scapy
> > INFO: Can't import python gnuplot wrapper . Won't be able to plot.
> > INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
> > INFO: Can't import python Crypto lib. Won't be able to decrypt WEP.
> > INFO: Can't import python Crypto lib. Disabled certificate manipulation
> > tools
> > Welcome to Scapy (2.2.0)
> >>>> kaizi = Ether()
> >>>> kaizi.dst="2E:C7:BA:0C:73:F8"
> >>>> kaizi.src="68:05:ca:37:da:40"
> >>>> kaizi.show()
> > ###[ Ethernet ]###
> >   dst= 2E:C7:BA:0C:73:F8
> >   src= 68:05:ca:37:da:40
> >   type= 0x0
> >>>> sendp(kaizi,loop=100,inter=1,iface="p7p1")
> > ..................................^C
> > Sent 34 packets.
> >
> > at this point use tcpdump catch the packets find that only have send
> > packest and no response package ......
> > [root at dell-per730-21 ~]# tcpdump -nei p7p1
> > tcpdump: verbose output suppressed, use -v or -vv for full protocol
> decode
> > listening on p7p1, link-type EN10MB (Ethernet), capture size 262144 bytes
> > 01:19:31.535176 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:32.536383 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:33.537510 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:34.538711 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:35.539893 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:36.541095 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:37.542220 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:38.543569 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:39.544805 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:40.546020 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:41.547158 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:42.548367 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:43.549577 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:44.550787 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:45.551921 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:46.553129 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:47.554335 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:48.555541 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:49.556674 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:50.557878 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:51.559082 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:52.560312 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:53.561446 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> > 01:19:54.562657 68:05:ca:37:da:40 > 2e:c7:ba:0c:73:f8, 802.3, length 0:
> > [|llc]
> >
> > at the same time ,use tcpdump capture the packets with another port p7p2
> > ,find that the response packets at this port , so strange ...
> > because the under test machine vm's testpmd bond mode is active backup
> mode
> > .I do not think this port should receive packets .but it is true.
> > [root at dell-per730-21 ~]# tcpdump -nei p7p2
> > tcpdump: verbose output suppressed, use -v or -vv for full protocol
> decode
> > listening on p7p2, link-type EN10MB (Ethernet), capture size 262144 bytes
> > 01:19:50.557897 2e:c7:ba:0c:73:f8 > 68:05:ca:37:da:40, 802.3, length 0:
> > LLC, dsap Null (0x00) Individual, ssap Null (0x00) Command, ctrl 0x0000:
> > Information, send seq 0, rcv seq 0, Flags [Command], length 46
> >     0x0000:  0000 0000 0000 0000 0000 0000 0000 0000  ................
> >     0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................
> >     0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
> > 01:19:51.559097 2e:c7:ba:0c:73:f8 > 68:05:ca:37:da:40, 802.3, length 0:
> > LLC, dsap Null (0x00) Individual, ssap Null (0x00) Command, ctrl 0x0000:
> > Information, send seq 0, rcv seq 0, Flags [Command], length 46
> >     0x0000:  0000 0000 0000 0000 0000 0000 0000 0000  ................
> >     0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................
> >     0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
> > 01:19:52.560329 2e:c7:ba:0c:73:f8 > 68:05:ca:37:da:40, 802.3, length 0:
> > LLC, dsap Null (0x00) Individual, ssap Null (0x00) Command, ctrl 0x0000:
> > Information, send seq 0, rcv seq 0, Flags [Command], length 46
> >     0x0000:  0000 0000 0000 0000 0000 0000 0000 0000  ................
> >     0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................
> >     0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
> >
> > at the same time , we watch the under test machine use testpmd command
> > ************************************************************
> > ************************************************************
> > ****************************************************************
> > ************************************************************
> > ************************************************************
> > ****************************************************************
> > testpmd> show port stats all
> >
> >   ######################## NIC statistics for port 0
> > ########################
> >   RX-packets: 34         RX-missed: 0          RX-bytes:  2040
> >   RX-errors: 0
> >   RX-nombuf:  0
> >   TX-packets: 0          TX-errors: 0          TX-bytes:  0
> >
> >   Throughput (since last show)
> >   Rx-pps:            0
> >   Tx-pps:            0
> >   ############################################################
> > ################
> >
> >   ######################## NIC statistics for port 1
> > ########################
> >   RX-packets: 0          RX-missed: 0          RX-bytes:  0
> >   RX-errors: 0
> >   RX-nombuf:  0
> >   TX-packets: 34         TX-errors: 0          TX-bytes:  2040
> >
> >   Throughput (since last show)
> >   Rx-pps:            0
> >   Tx-pps:            0
> >   ############################################################
> > ################
> >
> >   ######################## NIC statistics for port 2
> > ########################
> >   RX-packets: 34         RX-missed: 0          RX-bytes:  2040
> >   RX-errors: 0
> >   RX-nombuf:  0
> >   TX-packets: 34         TX-errors: 0          TX-bytes:  2040
> >
> >   Throughput (since last show)
> >   Rx-pps:            0
> >   Tx-pps:            0
> >   ############################################################
> > ################
> >
> > follow the stat result , I find that port 0 only receive packets and
> port 1
> > only send packets. but current the bond mode is below (active-backup
> mode )
> >
> > testpmd> show bonding config 2
> >     Bonding mode: 1
> >     Slaves (2): [0 1]
> >     Active Slaves (2): [0 1]
> >     Primary: [0]
> >
> > I do not know why the result is this .could some one can help me .
> Thanks.
>
> Can you please do following in testpmd:
> testpmd> show config fwd
>
> Perhaps forwarding config still can be set to forward between port 0 and 1?
>
> >
> >
> >
> >
> >
> > 2E:C7:BA:0C:73:F8
> >
>
>


More information about the dev mailing list