From: "Liu, Yong" <yong.liu@intel.com>
To: "Xu, HuilongX" <huilongx.xu@intel.com>, "dts@dpdk.org" <dts@dpdk.org>
Cc: "Tu, LijuanX A" <lijuanx.a.tu@intel.com>
Subject: Re: [dts] [PATCH V1 1/4] add kni test plan
Date: Wed, 2 Sep 2015 06:07:27 +0000 [thread overview]
Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E10EE0785@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <1441163321-29448-1-git-send-email-huilongx.xu@intel.com>
Thanks huilong. Some comments in the plan.
> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Huilong Xu
> Sent: Wednesday, September 02, 2015 11:09 AM
> To: dts@dpdk.org
> Cc: Tu, LijuanX A
> Subject: [dts] [PATCH V1 1/4] add kni test plan
>
> From: "huilongx,xu" <huilongx.xu@intel.com>
>
> Signed-off-by: huilongx,xu <huilongx.xu@intel.com>
> ---
> test_plans/kni_test_plan.rst | 608
> +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 608 insertions(+)
> create mode 100644 test_plans/kni_test_plan.rst
>
> diff --git a/test_plans/kni_test_plan.rst b/test_plans/kni_test_plan.rst
> new file mode 100644
> index 0000000..94a0b76
> --- /dev/null
> +++ b/test_plans/kni_test_plan.rst
> @@ -0,0 +1,608 @@
> +.. Copyright (c) <2010,2011>, Intel Corporation
Copyright to 2015:)
> + All rights reserved.
> +
> + Redistribution and use in source and binary forms, with or without
> + modification, are permitted provided that the following conditions
> + are met:
> +
> + - Redistributions of source code must retain the above copyright
> + notice, this list of conditions and the following disclaimer.
> +
> + - Redistributions in binary form must reproduce the above copyright
> + notice, this list of conditions and the following disclaimer in
> + the documentation and/or other materials provided with the
> + distribution.
> +
> + - Neither the name of Intel Corporation nor the names of its
> + contributors may be used to endorse or promote products derived
> + from this software without specific prior written permission.
> +
> + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
> + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
> + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
> + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
> + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
> + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
> + OF THE POSSIBILITY OF SUCH DAMAGE.
> +
> +====================
> +Kernel NIC Interface
> +====================
> +
> +Description
> +-----------
> +
> +This document provides the plan for testing the Kernel NIC Interface
> +application with support of rte_kni kernel module.
> +Kernel NIC Interface is a DPDK alternative solution to the existing linux
> +tun-tap interface for the exception path. Kernel NIC Interface allows the
> +standard Linux net tools(ethtool/ifconfig/tcpdump) to facilitate managing
> the
> +DPDK port. At the same time, it add an interface with the kernel net
> stack.
> +The test supports Multi-Thread KNI.
> +
> +The ``rte_kni`` kernel module can be installed by a ``lo_mode`` parameter.
> +
> +loopback disabled::
> +
> + insmod rte_kni.ko
> + insmod rte_kni.ko "lo_mode=lo_mode_none"
> + insmod rte_kni.ko "lo_mode=unsupported string"
> +
> +loopback mode=lo_mode_ring enabled::
> +
> + insmod rte_kni.ko "lo_mode=lo_mode_ring"
> +
> +loopback mode=lo_mode_ring_skb enabled::
> +
> + insmod rte_kni.ko "lo_mode=lo_mode_ring_skb"
> +
Can you give us more information about the parameters? It can help us known what's the difference of lo_mode_ring and lo_mode_ring_sk.
> +The ``rte_kni`` kernel module can also be installed by a ``kthread_mode``
> +parameter. This parameter is ``single`` by default.
> +
> +kthread single::
> +
> + insmod rte_kni.ko
> + insmod rte_kni.ko "kthread_mode=single"
> +
> +kthread multiple::
> +
> + insmod rte_kni.ko
> + insmod rte_kni.ko "kthread_mode=multiple"
> +
Need more description of kthread_mode parameter.
> +
> +The ``kni`` application is run with EAL parameters and parameters for the
> +application itself. For details about the EAL parameters, see the
> relevant
> +DPDK **Getting Started Guide**. This application supports two parameters
> for
> +itself.
> +
> + - ``--config="(port id, rx lcore, tx lcore, kthread lcore, kthread
> lcore, ...)"``:
> + Port and cores selection. Kernel threads are ignored if
> ``kthread_mode``
> + is not ``multiple``.
> +
> +ports cores::
> +
> + e.g.:
> +
> + --config="(0,1,2),(1,3,4)" No kernel thread
> specified.
> + --config="(0,1,2,21),(1,3,4,23)" One kernel thread in use.
> + --config="(0,1,2,21,22),(1,3,4,23,25) Two kernel threads in use.
> +
> + - ``-P``: Promiscuous mode. This is off by default.
> +
> +Prerequisites
> +=============
> +
> +Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and
> enable vt-d in bios.
> +When used vfio , used "modprobe vfio" and "modprobe vfio-pci" insmod
> vfiod driver, then used
> +"./tools/dpdk_nic_bind.py --bind=vfio-pci device_bus_id" to bind vfio
> driver to test driver.
> +
> +
> +The DUT has at least 2 DPDK supported IXGBE NIC ports.
> +
I think two NICs supported by DPDK are enough. Not only IXGBE NIC.
> +The DUT has to be able to install rte_kni kernel module and launch kni
> +application with a default configuration (This configuration may change
> form a
> +system to another)::
> +
> + rmmod rte_kni
> + rmmod igb_uio
> + insmod ./x86_64-default-linuxapp-gcc/kmod/igb_uio.ko
> + insmod ./x86_64-default-linuxapp-gcc/kmod/rte_kni.ko
> + ./examples/kni/build/app/kni -c 0xa0001e -n 4 -- -P -p 0x3 --
> config="(0,1,2,21),(1,3,4,23)" &
> +
What's meaning of lcore 21, please use "S0/C1/T1" to clarify that.
> +
> +Test Case: ifconfig testing
> +===========================
> +
> +Launch the KNI application. Assume that ``port 2 and 3`` are used to this
> +application. Cores 1 and 2 are used to read from NIC, cores 2 and 4 are
> used
> +to write to NIC, threads 21 and 23 are used by the kernel.
> +
> +As the kernel module is installed using ``"kthread_mode=single"`` the
> core
> +affinity is set using ``taskset``::
> +
> + ./build/app/kni -c 0xa0001e -n 4 -- -P -p 0xc --
> config="(2,1,2,21),(3,3,4,23)"
> +
This command use port2 and port3, thus mean this case need at least four ports?
If so, please change test prerequisites.
> +
> +Verify whether the interface has been added::
> +
> + ifconfig -a
> +
> +
> +If the application is launched successfully, it will add two interfaces
> in
> +kernel net stack named ``vEth2_0``, ``vEth3_0``.
> +
> +Interface name start with ``vEth`` followed by the port number and an
> +additional incremental number depending on the number of kernel threads::
> +
> + vEth2_0: flags=4098<BROADCAST,MULTICAST> mtu 1500
> + ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
> + RX packets 14 bytes 2098 (2.0 KiB)
> + RX errors 0 dropped 10 overruns 0 frame 0
> + TX packets 0 bytes 0 (0.0 B)
> + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
> +
> + vEth3_0: flags=4098<BROADCAST,MULTICAST> mtu 1500
> + ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
> + RX packets 13 bytes 1756 (1.7 KiB)
> + RX errors 0 dropped 10 overruns 0 frame 0
> + TX packets 0 bytes 0 (0.0 B)
> + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
> +
> +
> +
> +Verify whether ifconfig can set Kernel NIC Interface up::
> +
> + ifconfig vEth2_0 up
> +
> +Now ``vEth2_0`` is up and has IPv6 address::
> +
> + vEth2_0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
> + inet6 fe80::92e2:baff:fe37:92f8 prefixlen 64 scopeid
> 0x20<link>
> + ether 90:e2:ba:37:92:f8 txqueuelen 1000 (Ethernet)
> + RX packets 30 bytes 4611 (4.5 KiB)
> + RX errors 0 dropped 21 overruns 0 frame 0
> + TX packets 6 bytes 468 (468.0 B)
> + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
> +
> +
> +Verify whether ifconfig can add an ipv6 address::
> +
> + ifconfig vEth2_0 add fe80::1
> +
> +``vEth2_0`` has added ipv6 address::
> +
> + 29: vEth2_0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
> + inet6 fe80::1/128 scope link
> + valid_lft forever preferred_lft forever
> + inet6 fe80::92e2:baff:fe37:92f8/64 scope link
> + valid_lft forever preferred_lft forever
> +
> +
> +Delete the IPv6 address::
> +
> + ifconfig vEth2_0 del fe80::1
> +
> +The port deletes it::
> +
> + 29: vEth2_0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
> + inet6 fe80::92e2:baff:fe37:92f8/64 scope link
> + valid_lft forever preferred_lft forever
> +
> +Set MTU parameter::
> +
> + ifconfig vEth2_0 mtu 1300
> +
> +``vEth2_0`` changes the mtu parameter::
> +
> + 29: vEth2_0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1300 qdisc
> pfifo_fast state UNKNOWN mode DEFAULT qlen 1000
> + link/ether 90:e2:ba:37:92:f8 brd ff:ff:ff:ff:ff:ff
> +
> +Verify whether ifconfig can set ip address::
> +
> + ifconfig vEth2_0 192.168.2.1 netmask 255.255.255.192
> + ip -family inet address show dev vEth2_0
> +
> +``vEth2_0`` has IP address and netmask now::
> +
> + 29: vEth2_0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1300 qdisc
> pfifo_fast state UNKNOWN qlen 1000
> + inet 192.168.2.1/26 brd 192.168.2.63 scope global vEth2_0
> +
> +Verify whether ifconfig can set ``vEth2_0`` down::
> +
> + ifconfig vEth2_0 down
> + ifconfig vEth2_0
> +
> +``vEth2_0`` is down and no ipv6 address::
> +
> + vEth2_0: flags=4098<BROADCAST,MULTICAST> mtu 1300
> + inet 192.168.2.1 netmask 255.255.255.192 broadcast
> 192.168.2.63
> + ether 90:e2:ba:37:92:f8 txqueuelen 1000 (Ethernet)
> + RX packets 70 bytes 12373 (12.0 KiB)
> + RX errors 0 dropped 43 overruns 0 frame 0
> + TX packets 25 bytes 4132 (4.0 KiB)
> + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
> +
> +
> +Repeat all the steps for interface ``vEth3_0``
> +
> +Test Case: Ping and Ping6 testing
> +=================================
> +
> +If the application is launched successfully, it will add two interfaces
> in
> +kernel net stack named ``vEth2_0``, ``vEth3_0``.
> +
> +Assume the link status of ``vEth2_0`` is up and set ip address is
> ``192.168.2.1``
> +and ``vEth3_0`` is up and set ip address is ``192.168.3.1``. Verify the
> +command ping::
> +
> + ping -w 1 -I vEth2_0 192.168.2.1
> +
> +it can receive all packets and no packet loss::
> +
> + PING 192.168.2.1 (192.168.2.1) from 192.168.2.1 vEth2_0: 56(84) bytes
> of data.
> + 64 bytes from 192.168.2.1: icmp_req=1 ttl=64 time=0.040 ms
> +
> + --- 192.168.2.1 ping statistics ---
> + 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> + rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
> +
> +Assume ``port A`` on tester is linked with ``port 2`` on DUT. Verify the
> +command ping from tester::
> +
> + ping -w 1 -I "port A" 192.168.2.1
> +
> +it can receive all packets and no packet loss.
> +
> +Verify a wrong address::
> +
> + ping -w 1 -I vEth2_0 192.168.0.123
> +
> +no packets is received::
> +
> + PING 192.168.0.123 (192.168.0.123) from 192.168.0.1 vEth2_0: 56(84)
> bytes of data.
> +
> + --- 192.168.0.123 ping statistics ---
> + 1 packets transmitted, 0 received, 100% packet loss, time 0ms
> +
> +Verify the command ping6::
> +
> + ping6 -w 1 -I vEth2_0 "Eth2_0's ipv6 address"
> +
> +it can receive all packets and no packet loss::
> +
> + PING fe80::92e2:baff:fe08:d6f0(fe80::92e2:baff:fe08:d6f0) from
> fe80::92e2:baff:fe08:d6f0 vEth2_0: 56 data bytes
> + 64 bytes from fe80::92e2:baff:fe08:d6f0: icmp_seq=1 ttl=64 time=0.070
> ms
> +
> + --- fe80::92e2:baff:fe08:d6f0 ping statistics ---
> + 1 packets transmitted, 1 received, 0% packet loss, time 0ms
> + rtt min/avg/max/mdev = 0.070/0.070/0.070/0.000 ms
> +
> +Verify the command ping6 from tester::
> +
> + ping6 -w 1 -I "port A" "Eth2_0's ipv6 address"
> +
> +it can receive all packets and no packet loss.
> +
> +Verify a wrong ipv6 address::
> +
> + ping6 -w 1 -I vEth2_0 "random ipv6 address"
> +
> +no packets is received::
> +
> + PING fe80::92e2:baff:fe08:d6f1(fe80::92e2:baff:fe08:d6f1) from
> fe80::92e2:baff:fe08:d6f0 vEth2_0: 56 data bytes
> +
> + --- fe80::92e2:baff:fe08:d6f1 ping statistics ---
> + 1 packets transmitted, 0 received, 100% packet loss, time 0ms
> +
> +Repeat all the steps for interface ``vEth3_0``
> +
> +Test Case: Tcpdump testing
> +==========================
> +
> +Assume ``port A and B`` on packet generator connects to NIC ``port 2 and
> 3``.
> +Trigger the packet generator of bursting packets from ``port A and B`,
> then
> +check if tcpdump can capture all packets. The packets should include
> +``tcp`` packets, ``udp`` packets, ``icmp`` packets, ``ip`` packets,
> +``ether+vlan tag+ip`` packets, ``ether`` packets.
> +
> +Verify whether tcpdump can capture packets::
> +
> + tcpdump -i vEth2_0
> + tcpdump -i vEth3_0
> +
> +
> +Test Case: Ethtool testing
> +==========================
> +
> +In this time, KNI can only support ethtool commands which is to get
> information.
> +So all belowing commands are to show information commands.
> +
> +Verify whether ethtool can show Kernel NIC Interface's standard
> information::
> +
> + ethtool vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's driver
> information::
> +
> + ethtool -i vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's statistics::
> +
> + ethtool -S vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's pause parameters::
> +
> + ethtool -a vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's offload
> parameters::
> +
> + ethtool -k vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's RX/TX ring
> parameters::
> +
> + ethtool -g vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's Coalesce
> parameters.
> +It is not currently supported::
> +
> + ethtool -c vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's MAC registers::
> +
> + ethtool -d vEth2_0
> +
> +Verify whether ethtool can show Kernel NIC Interface's EEPROM dump::
> +
> + ethtool -e vEth2_0
> +
> +Repeat all the steps for interface ``vEth3_0``
> +
> +Test Case: Packets statistics testing
> +=====================================
> +
> +Install the kernel module with loopback parameter
> ``lo_mode=lo_mode_ring_skb``
> +and launch the KNI application.
> +
> +Assume that ``port 2 and 3`` are used by this application::
> +
> + rmmod kni
> + insmod ./kmod/rte_kni.ko "lo_mode=lo_mode_ring_skb"
> + ./build/app/kni -c 0xff -n 3 -- -p 0xf -i 0xf -o 0xf0
> +
> +Assume ``port A and B`` on tester connects to NIC ``port 2 and 3``.
> +
> +Get the RX packets count and TX packets count::
> +
> + ifconfig vEth2_0
> +
> +Send 5 packets from tester. And check whether both RX and TX packets of
> +``vEth2_0`` have increased 5.
> +
> +Repeat for interface ``vEth3_0``
> +
> +Test Case: Stress testing
> +=========================
> +
> +Insert the rte_kni kernel module 50 times while changing the parameters.
> +Iterate through lo_mode and kthread_mode values sequentially, include
> wrong
> +values. After each insertion check whether kni application can be
> launched
> +successfully.
> +
> +Insert the kernel module 50 times while changing randomly the parameters.
> +Iterate through lo_mode and kthread_mode values randomly, include wrong
> +values. After each insertion check whether kni application can be
> launched
> +successfully::
> +
> + rmmod rte_kni
> + insmod ./kmod/rte_kni.ko <Changing Parameters>
> + ./build/app/kni -c 0xa0001e -n 4 -- -P -p 0xc --
> config="(2,1,2,21),(3,3,4,23)"
> +
> +
> +Using ``dmesg`` to check whether kernel module is loaded with the
> specified
> +parameters. Some permutations, those with wrong values, must fail to
> +success. For permutations with valid parameter values, verify the
> application can be
> +successfully launched and then close the application using CTRL+C.
> +
> +Test Case: loopback mode performance testing
> +============================================
> +
> +Compare performance results for loopback mode using:
> +
> + - lo_mode: lo_mode_fifo and lo_mode_fifo_skb.
> + - kthread_mode: single and multiple.
> + - Number of ports: 1 and 2.
> + - Number of virtual interfaces per port: 1 and 2
> + - Frame sizes: 64 and 256.
> + - Cores combinations:
> +
> + - Different cores for Rx, Tx and Kernel.
> + - Shared core between Rx and Kernel.
> + - Shared cores between Rx and Tx.
> + - Shared cores between Rx, Tx and Kernel.
> + - Multiple cores for Kernel, implies multiple virtual interfaces
> per port.
> +
> +::
> +
> + insmod ./x86_64-default-linuxapp-gcc/kmod/igb_uio.ko
> + insmod ./x86_64-default-linuxapp-gcc/kmod/rte_kni.ko <lo_mode and
> kthread_mode parameters>
> + ./examples/kni/build/app/kni -c <Core mask> -n 4 -- -P -p <Port mask>
> --config="<Ports/Cores configuration>" &
> +
> +
> +At this point, the throughput is measured and recorded for the different
> +frame sizes. After this, the application is closed using CTRL+C.
> +
> +The measurements are presented in a table format.
> +
> ++------------------+--------------+-------+-----------------+--------+---
> -----+
> +| lo_mode | kthread_mode | Ports | Config | 64 |
> 256 |
> ++==================+==============+=======+=================+========+===
> =====+
> +| | | | | |
> |
> ++------------------+--------------+-------+-----------------+--------+---
> -----+
> +
> +
> +Test Case: bridge mode performance testing
> +==========================================
> +
> +Compare performance results for bridge mode using:
> +
> + - kthread_mode: single and multiple.
> + - Number of ports: 2
> + - Number of ports: 1 and 2.
> + - Number of flows per port: 1 and 2
> + - Number of virtual interfaces per port: 1 and 2
> + - Frame size: 64.
> + - Cores combinations:
> +
> + - Different cores for Rx, Tx and Kernel.
> + - Shared core between Rx and Kernel.
> + - Shared cores between Rx and Tx.
> + - Shared cores between Rx, Tx and Kernel.
> + - Multiple cores for Kernel, implies multiple virtual interfaces
> per port.
> +
> +The application is launched and the bridge is setup using the commands
> below::
> +
> + insmod ./x86_64-default-linuxapp-gcc/kmod/rte_kni.ko <kthread_mode
> parameter>
> + ./build/app/kni -c <Core mask> -n 4 -- -P -p <Port mask> --
> config="<Ports/Cores configuration>" &
> +
> + ifconfig vEth2_0 up
> + ifconfig vEth3_0 up
> + brctl addbr "br_kni"
> + brctl addif br_kni vEth2_0
> + brctl addif br_kni vEth3_0
> + ifconfig br_kni up
> +
> +
> +At this point, the throughput is measured and recorded. After this, the
> +application is closed using CTRL+C and the bridge deleted::
> +
> + ifconfig br_kni down
> + brctl delbr br_kni
> +
> +
> +The measurements are presented in a table format.
> +
> ++--------------+-------+-----------------------------+-------+
> +| kthread_mode | Flows | Config | 64 |
> ++==============+=======+=============================+=======+
> +| | | | |
> ++--------------+-------+-----------------------------+-------+
> +
Please extend the table with detail configurations with Rx/Tx/Kernel core settings.
>From this table, we have no idea that what core combination the case is profiling.
> +Test Case: bridge mode without KNI performance testing
> +======================================================
> +
> +Compare performance results for bridge mode using only Kernel bridge, no
> DPDK
> +support. Use:
> +
> + - Number of ports: 2
> + - Number of flows per port: 1 and 2
> + - Frame size: 64.
> +
> +Set up the interfaces and the bridge::
> +
> + rmmod rte_kni
> + ifconfig vEth2_0 up
> + ifconfig vEth3_0 up
> + brctl addbr "br1"
> + brctl addif br1 vEth2_0
> + brctl addif br1 vEth3_0
> + ifconfig br1 up
> +
> +
Some questions here, if rmmod kni module and kill kni process, how does the virtual interface like vEth2_0 receive packets?
> +At this point, the throughput is measured and recorded. After this, the
> +application is closed using CTRL+C and the bridge deleted::
> +
> + ifconfig br1 down
> + brctl delbr br1
> +
> +
> +The measurements are presented in a table format.
> +
> ++-------+-------+
> +| Flows | 64 |
> ++=======+=======+
> +| 1 | |
> ++-------+-------+
> +| 2 | |
> ++-------+-------+
> +
Same comment in performance table.
> +Test Case: routing mode performance testing
> +===========================================
> +
> +Compare performance results for routing mode using:
> +
> + - kthread_mode: single and multiple.
> + - Number of ports: 2
> + - Number of ports: 1 and 2.
> + - Number of virtual interfaces per port: 1 and 2
> + - Frame size: 64 and 256.
> + - Cores combinations:
> +
> + - Different cores for Rx, Tx and Kernel.
> + - Shared core between Rx and Kernel.
> + - Shared cores between Rx and Tx.
> + - Shared cores between Rx, Tx and Kernel.
> + - Multiple cores for Kernel, implies multiple virtual interfaces
> per port.
> +
> +The application is launched and the bridge is setup using the commands
> below::
> +
> + echo 1 > /proc/sys/net/ipv4/ip_forward
> +
> + insmod ./x86_64-default-linuxapp-gcc/kmod/rte_kni.ko <kthread_mode
> parameter>
> + ./build/app/kni -c <Core mask> -n 4 -- -P -p <Port mask> --
> config="<Ports/Cores configuration>" &
> +
> + ifconfig vEth2_0 192.170.2.1
> + ifconfig vEth2_0 192.170.3.1
> + route add -net 192.170.2.0 netmask 255.255.255.0 gw 192.170.2.1
> + route add -net 192.170.3.0 netmask 255.255.255.0 gw 192.170.3.1
> + arp -s 192.170.2.2 vEth2_0
> + arp -s 192.170.3.2 vEth3_0
> +
> +At this point, the throughput is measured and recorded. After this, the
> +application is closed using CTRL+C.
> +
> +The measurements are presented in a table format.
> +
> ++--------------+-------+-----------------------------+-------+-------+
> +| kthread_mode | Ports | Config | 64 | 256 |
> ++==============+=======+=============================+=======+=======+
> +| | | | | |
> ++--------------+-------+-----------------------------+-------+-------+
> +
Same comment in performance table.
> +
> +Test Case: routing mode without KNI performance testing
> +=======================================================
> +
> +Compare performance results for routing mode using only Kernel, no DPDK
> +support. Use:
> +
> + - Number of ports: 2
> + - Frame size: 64 and 256
> +
> +Set up the interfaces and the bridge::
> +
> +
> + echo 1 > /proc/sys/net/ipv4/ip_forward
> + rmmod rte_kni
> + ifconfig vEth2_0 192.170.2.1
> + ifconfig vEth2_0 192.170.3.1
> + route add -net 192.170.2.0 netmask 255.255.255.0 gw 192.170.2.1
> + route add -net 192.170.3.0 netmask 255.255.255.0 gw 192.170.3.1
> + arp -s 192.170.2.2 vEth2_0
> + arp -s 192.170.3.2 vEth3_0
> +
> +At this point, the throughput is measured and recorded. After this, the
> +application is closed using CTRL+C.
> +
> +The measurements are presented in a table format.
> +
> ++-------+-------+-------+
> +| Ports | 64 | 256 |
> ++=======+=======+=======+
> +| 1 | | |
> ++-------+-------+-------+
> +| 2 | | |
> ++-------+-------+-------+
> --
Same comment in performance table.
> 1.9.3
prev parent reply other threads:[~2015-09-02 6:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-02 3:08 Huilong Xu
2015-09-02 3:08 ` [dts] [PATCH V1 2/4] add kni test case Huilong Xu
2015-09-02 3:08 ` [dts] [PATCH V1 3/4] kni not support on freebsd os, skip test on freebsd Huilong Xu
2015-09-02 3:08 ` [dts] [PATCH V1 4/4] add kni test suite on niantic and fvl NIC test Huilong Xu
2015-09-02 6:07 ` Liu, Yong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86228AFD5BCD8E4EBFD2B90117B5E81E10EE0785@SHSMSX103.ccr.corp.intel.com \
--to=yong.liu@intel.com \
--cc=dts@dpdk.org \
--cc=huilongx.xu@intel.com \
--cc=lijuanx.a.tu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).