Originally posted by Yuanhan Liu yuanhan.liu at linux.intel.com on the dpdk-stable mailing list
Hi all, Please join me in announcing the first DPDK stable release: http://fast.dpdk.org/rel/dpdk-16.07.1.tar.xz It includes most bug fixing patches before v16.11-rc1. Few are missed in this release window and will be carried in the next stable release. Thanks. --yliu --- app/test-pmd/cmdline.c | 2 +- app/test-pmd/testpmd.c | 10 +- app/test/test_cryptodev.c | 14 +-- buildtools/pmdinfogen/pmdinfogen.c | 2 +- doc/guides/rel_notes/release_16_07.rst | 50 +++++++++ drivers/crypto/kasumi/rte_kasumi_pmd.c | 8 +- drivers/crypto/null/null_crypto_pmd_ops.c | 2 +- drivers/crypto/qat/qat_adf/icp_qat_fw.h | 2 +- drivers/crypto/snow3g/rte_snow3g_pmd.c | 8 +- drivers/net/e1000/igb_rxtx.c | 2 +- drivers/net/enic/base/vnic_dev.c | 36 ++++--- drivers/net/enic/enic_rxtx.c | 5 +- drivers/net/fm10k/fm10k_ethdev.c | 5 + drivers/net/i40e/base/i40e_common.c | 2 +- drivers/net/i40e/i40e_ethdev.c | 37 ++++--- drivers/net/i40e/i40e_rxtx.c | 15 ++- drivers/net/i40e/i40e_rxtx_vec.c | 16 ++- drivers/net/ixgbe/base/ixgbe_common.c | 113 ++++++++++++--------- drivers/net/ixgbe/base/ixgbe_common.h | 1 + drivers/net/ixgbe/base/ixgbe_vf.c | 13 +-- drivers/net/ixgbe/base/ixgbe_x550.c | 57 +++-------- drivers/net/ixgbe/base/ixgbe_x550.h | 2 - drivers/net/ixgbe/ixgbe_ethdev.c | 12 ++- drivers/net/ixgbe/ixgbe_rxtx_vec_common.h | 16 ++- drivers/net/mlx4/mlx4.c | 8 +- drivers/net/mlx5/mlx5.c | 8 +- drivers/net/mlx5/mlx5.h | 8 +- drivers/net/mlx5/mlx5_ethdev.c | 4 +- drivers/net/mlx5/mlx5_fdir.c | 8 +- drivers/net/mlx5/mlx5_mac.c | 8 +- drivers/net/mlx5/mlx5_mr.c | 8 +- drivers/net/mlx5/mlx5_prm.h | 4 +- drivers/net/mlx5/mlx5_rss.c | 8 +- drivers/net/mlx5/mlx5_rxmode.c | 8 +- drivers/net/mlx5/mlx5_rxq.c | 8 +- drivers/net/mlx5/mlx5_rxtx.c | 8 +- drivers/net/mlx5/mlx5_rxtx.h | 8 +- drivers/net/mlx5/mlx5_stats.c | 4 +- drivers/net/mlx5/mlx5_trigger.c | 4 +- drivers/net/mlx5/mlx5_txq.c | 8 +- drivers/net/mlx5/mlx5_vlan.c | 4 +- drivers/net/nfp/nfp_net.c | 4 +- drivers/net/pcap/rte_eth_pcap.c | 4 +- drivers/net/virtio/virtio_ethdev.c | 8 +- drivers/net/virtio/virtio_user/virtio_user_dev.c | 112 ++++++++++++-------- drivers/net/virtio/virtio_user_ethdev.c | 42 +++++--- examples/ip_pipeline/config/diagram-generator.py | 2 +- .../ip_pipeline/config/pipeline-to-core-mapping.py | 2 +- examples/ip_pipeline/cpu_core_map.c | 8 ++ lib/librte_eal/bsdapp/contigmem/contigmem.c | 8 +- lib/librte_eal/common/eal_common_pci.c | 1 + lib/librte_eal/common/include/rte_version.h | 2 +- lib/librte_eal/linuxapp/eal/eal_memory.c | 13 +-- lib/librte_hash/rte_cuckoo_hash.c | 12 ++- lib/librte_mbuf/rte_mbuf.c | 8 +- lib/librte_mempool/rte_mempool.c | 2 +- lib/librte_sched/rte_sched.c | 18 ++-- lib/librte_table/rte_table_version.map | 3 + lib/librte_timer/rte_timer.c | 2 +- pkg/dpdk.spec | 2 +- tools/dpdk-devbind.py | 11 +- tools/dpdk-pmdinfo.py | 2 +- 62 files changed, 495 insertions(+), 317 deletions(-) Alejandro Lucero (1): net/nfp: fix copying MAC address Aleksey Katargin (1): table: fix symbol exports Alex Zelezniak (1): net/ixgbe: fix VF reset to apply to correct VF Ali Volkan Atli (1): net/e1000: fix returned number of available Rx descriptors Arek Kusztal (1): app/test: fix verification of digest for GCM Beilei Xing (2): net/i40e: fix dropping packets with ethertype 0x88A8 net/i40e: fix parsing QinQ packets type Bruce Richardson (1): net/mlx: fix debug build with gcc 6.1 Christian Ehrhardt (1): examples/ip_pipeline: fix Python interpreter Deepak Kumar Jain (2): crypto/null: fix key size increment value crypto/qat: fix FreeBSD build Dror Birkman (1): net/pcap: fix memory leak in jumbo frames Ferruh Yigit (2): app/testpmd: fix help of MTU set commmand pmdinfogen: fix clang build Gary Mussar (1): tools: fix virtio interface name when binding Gowrishankar Muthukrishnan (1): examples/ip_pipeline: fix lcore mapping for ppc64 Hiroyuki Mikita (1): sched: fix releasing enqueued packets James Poole (1): app/testpmd: fix timeout in Rx queue flushing Jianfeng Tan (3): net/virtio_user: fix first queue pair without multiqueue net/virtio_user: fix wrong sequence of messages net/virtio_user: fix error management during init Jim Harris (1): contigmem: zero all pages during mmap John Daley (1): net/enic: fix bad L4 checksum flag on ICMP packets Karmarkar Suyash (1): timer: fix lag delay Maciej Czekaj (1): mem: fix crash on hugepage mapping error Nelson Escobar (1): net/enic: fix freeing memory for descriptor ring Olivier Matz (4): app/testpmd: fix crash when mempool allocation fails tools: fix json output of pmdinfo mbuf: fix error handling on pool creation mem: fix build with -O1 Pablo de Lara (3): hash: fix ring size hash: fix false zero signature key hit lookup crypto: fix build with icc Qi Zhang (1): net/i40e/base: fix UDP packet header Rich Lane (1): net/i40e: fix null pointer dereferences when using VMDq+RSS Weiliang Luo (1): mempool: fix corruption due to invalid handler Xiao Wang (5): net/fm10k: fix MAC address removal from switch net/ixgbe/base: fix pointer check net/ixgbe/base: fix check for NACK net/ixgbe/base: fix possible corruption of shadow RAM net/ixgbe/base: fix skipping PHY config Yangchao Zhou (1): pci: fix memory leak when detaching device Yuanhan Liu (1): version: 16.07.1 Yury Kylulin (2): net/ixgbe: fix mbuf leak during Rx queue release net/i40e: fix mbuf leak during Rx queue release Zhiyong Yang (1): net/virtio: fix xstats name
Originally posted by zimeiw zimeiw at 163.com on the dpdk-dev mailing list
hi, The tcp/ip stack is developed based on dpdk. tcp/ip stack and APP deployment. |-------| |-------| |-------| | APP | | APP | | APP | | | | | | | | | | | | | |-------| |-------| |-------| | | | -------------------------------------------------- netdpsock | | | fd fd fd | | | -------------------------------------------------- netdp | | | |-------| |-------| |-------| | TCP | | TCP | | TCP | | | | | | | | | | | | | | | | | | | |---------------------------------------| | IP/ARP/ICMP | |---------------------------------------| | | | | | | |LCORE0 | |LCORE1 | |LCORE2 | |-------| |-------| |-------| | | | ---------------RSS--------------- | |---------------------------------------| | NIC | |---------------------------------------| NIC distribute packets to different lcore based on RSS, so same TCP flow are handled in the same lcore. Each lcore has own TCP stack. so no share data between lcores, free lock. IP/ARP/ICMP are shared between lcores. APP process runs as a tcp server, only listens on one lcore and accept tcp connections from the lcore, so the APP process number shall large than the lcore number. The APP processes are deployed on each lcore automaticly and averagely. APP process runs as a tcp client, app process can communicate with each lcore. The tcp connection can be located in specified lcore automaticly. APP process can bind the same port if enable reuseport, APP process could accept tcp connection by round robin. If NIC don't support multi queue or RSS, shall enhance opendp_main.c, reserve one lcore to receive and send packets from NIC, and distribute packets to lcores of netdp tcp stack by software RSS. 2. netdpsock are compatible with BSD socket, so it is easy to porting app to run in netdp stack. nginx is already porting to run in netdp, a few code are changed. link: https://github.com/opendp/dpdk-nginx redis is also porting. link: https://github.com/opendp/dpdk-redis 3. Performance. one lcore, one http server, ab testing Concurrency Level: 500 Time taken for tests: 0.642 seconds Complete requests: 30000 Failed requests: 0 Total transferred: 4530000 bytes HTML transferred: 1890000 bytes Requests per second: 46695.59 [#/sec] (mean) Time per request: 10.708 [ms] (mean) Time per request: 0.021 [ms] (mean, across all concurrent requests) Transfer rate: 6885.78 [Kbytes/sec] received one lcore, one nginx server, ab testing Concurrency Level: 500 Time taken for tests: 0.965 seconds Complete requests: 30000 Failed requests: 0 Total transferred: 25320000 bytes HTML transferred: 18360000 bytes Requests per second: 31092.43 [#/sec] (mean) Time per request: 16.081 [ms] (mean) Time per request: 0.032 [ms] (mean, across all concurrent requests) Transfer rate: 25626.97 [Kbytes/sec] received one lcore, one redis server, redis-bench testing root at h163:~/dpdk-redis# ./src/redis-benchmark -h 2.2.2.2 -p 6379 -n 100000 -c 50 -q PING_INLINE: 86655.11 requests per second PING_BULK: 90497.73 requests per second SET: 84317.03 requests per second GET: 85106.38 requests per second INCR: 86580.09 requests per second LPUSH: 83263.95 requests per second LPOP: 83612.04 requests per second SADD: 85034.02 requests per second SPOP: 86430.43 requests per second LPUSH (needed to benchmark LRANGE): 84245.99 requests per second LRANGE_100 (first 100 elements): 46948.36 requests per second LRANGE_300 (first 300 elements): 19615.54 requests per second LRANGE_500 (first 450 elements): 11584.80 requests per second LRANGE_600 (first 600 elements): 10324.18 requests per second MSET (10 keys): 66401.06 requests per second Still didn't test multicore tcp performance because lack test tools and env. For detail test result, please refer to https://github.com/opendp/dpdk-odp -- Best Regards, zimeiw