2017年10月11日 星期三

DPDK

Data Plane Development Kit (DPDK)
Intel所推出的處理封包的open source平台,在User space寫應用程式去處理每個封包
速度比原本的Linux networking stack還快,原本的基本上每個封包都要被複製兩次
因為是bypass kernel network stack機制,輸入ifconfig是看不到此網路介面

以下就是這兩種方式的比較


Environment Abstraction Layer (EAL
• Intel® DPDK loading and launching
• Support for multi-process and multi-thread execution types
• Core affinity/assignment procedures
• System memory allocation/de-allocation
• Atomic/lock operations
• Time reference
• PCI bus access
• Trace and debug functions
• CPU feature identification
• Interrupt handling
• Alarm operations

➠ Processor affinity
separate cores
Poll Mode Driver (PMD)
no interrupts overhead
➠ Userspace I/O (UIO)
no copying from kernel
➠ Huge pages
no swap, TLB
➠ Lockless synchronization
avoid waiting

Run-Time Environment (RTE)

# tar -Jxvf dpdk-17.05.2.tar.xz
# cd dpdk-stable-17.05.2/
# make
/home/bh0322/workspace/dpdk-stable-17.05.2/drivers/net/pcap/rte_eth_pcap.c:39:18: fatal error: pcap.h: No such file or directory

 #include <pcap.h>

# apt-get install libpcap-dev

Some sample applications can be tested after building them.
# make -C examples RTE_SDK=$(pwd) RTE_TARGET=build O=$(pwd)/build/examples

./build/examples/l3fwd/build/app/l3fwd -l 1,2 -n 4 -- -p 0x3 --config="(0,0,1),(1,0,2)" --parse-ptype



.
├── app          //rte.app.mk
├── build
├── buildtools
├── config
├── devtools
├── doc
├── drivers
├── examples  //rte.extapp.mk
├── lib
├── mk
├── pkg
├── test
├── usertools
└── x86_64-native-linuxapp-gcc

examples/
├── bond
├── cmdline
├── distributor
├── ethtool
├── exception_path
├── helloworld
├── ip_fragmentation
├── ip_pipeline
├── ip_reassembly
├── ipsec-secgw
├── ipv4_multicast
├── kni
├── l2fwd
├── l2fwd-cat
├── l2fwd-crypto
├── l2fwd-jobstats
├── l2fwd-keepalive
├── l3fwd
├── l3fwd-acl
├── l3fwd-power
├── l3fwd-vf
├── link_status_interrupt
├── load_balancer
├── multi_process
├── netmap_compat
├── packet_ordering
├── performance-thread
├── ptpclient
├── qos_meter
├── qos_sched
├── quota_watermark
├── rxtx_callbacks
├── server_node_efd
├── skeleton
├── tep_termination
├── timer
├── vhost
├── vhost_xen
├── vmdq
├── vmdq_dcb


參考資料
http://dpdk.org/doc/guides-17.05/prog_guide/kernel_nic_interface.html#figure-kernel-nic-intf
http://www.cnblogs.com/yhp-smarthome/p/7102557.html
https://ifun01.com/ZEE4F54.html
https://dpdksummit.com/Archive/pdf/2017India/DPDK-India2017-RamiaJain-ArchitectureRoadmap.pdf
http://fast.dpdk.org/doc/pdf-guides/howto-17.08.pdf
http://www.jianshu.com/p/bc2bde0e4442
https://www.slideshare.net/MichelleHolley1/dpdk-multi-architecture-high-performance-packet-processing-72911726
DPDK
Quick start
Understanding DPDK
DPDK交流社区

沒有留言:

張貼留言