1. 07 Jan, 2013
SAKURA Internet Research Center
Senior Researcher / Naoto MATSUMOTO
2. DPDK TESTING Overview
1) Intel ® DPDK source codes for linux were released at End of 2012.
http://www.intel.com/p/en_US/embedded/hwsw/technology/packet-processing
Running Intel® DPDK Applications in a Linux Environment
To run an Intel® DPDK application, some customization must be done on the target
machine. Running an Intel® DPDK application requires some kernel configuration
customization (done at build time) and some dynamic kernel tweaks (modules, procfs):
Required:
• glibc >= 2.7 (for features related to cpuset) ..etc
Intel® 10Gbps Dual-port Network Adapter
Linux DPDK Layer3 Router is Evolutionary Network Technology.
Source: SAKURA Internet Research Center. 11/2012: Project THORN
3. Build/Execute Sample Application
1) Install Intel® DPDK
# mkdir /hugepages
# vi /etc/fstab
hugetlbfs /hugepages hugetlbfs rw,mode=0777 0 0
# mount /hugepages
# cd /opt; unzip INTELDPDK.L.1.2.3_3.zip ; cd DPDK
# make install T=x86_64-default-linuxapp-gcc
# modprobe uio
# insmod /opt/dpdktest/DPDK/x86_64-default-linuxapp-gcc/kmod/igb_uio.ko
2) Configure Intel® DPDK L3 Forwarding Sample Application
# cd examples/l3fwd
# diff main.c.orig main.c
284a285,286
> {IPv4(10,0,0,11), 24, 1},
> {IPv4(10,0,0,22), 24, 0},
478c480
< *((uint64_t *)tmp) = 0x000000c00900 + (dst_port << 24);
---
> *((uint64_t *)tmp) = 0x9d0223bae290 ; /* MAC Addr 90:E2:BA:23:02:9D */
# RTE_SDK=/opt/DPDK make /* Source: Intel DPDK Step by Step instructions by Hisaki Ohara*/
Source: SAKURA Internet Research Center. 11/2012: Project THORN
4. Build Packet Generator /w NETMAP
1) Creat Bootable USB memory for Packet Generator/Receiver
Download Bin image from http://info.iet.unipi.it/~luigi/netmap/
Burn to USB Memory using Win32 Disk Imager
Source: SAKURA Internet Research Center. 11/2012: Project THORN
5. DPDK Layer 3 Fwd Benchmark
[Layer 3 Fowarder with Intel® DPDK]
Intel® Core™ i7-3960X CPU @ 3.30GHz
Intel 82599EB 10GbE-NIC /PCI Epxress 3.0
Linux 2.6.32-220.23.1.el6.x86_64
# ./build/l3fwd -c 0x3 -n 2 -- -p 0x3 --config="(0,0,0),(1,0,1)"
:
done: Port 0 Link Up - speed 10000 Mbps - full-duplex
done: Port 1 Link Up - speed 10000 Mbps - full-duplex
L3FWD: entering main loop on lcore 1 VXLAN Network
L3FWD: -- lcoreid=1 portid=1 rxqueueid=0
:
[Traffic Generator] MTU64Byte Short Pkt. [Packet Receiver]
Intel® Core™ i7-3930K CPU @ 3.20GHz AMD E-350 1.76MHz / DDR3 8GB
Intel 82599EB 10GbE-NIC/PCI Express 2.0 Intel XXXXX 10GbE-NIC/PCI Express 2.0
10.0.0.11 / 00:0C:BD:00:E8:1B 10.0.0.22 / 90:E2:BA:23:02:9D
# pkt-gen –i ix1 –f tx –l 64 -d 10.0.0.22 # pkt-gen –i ix1 –f rx
main [1042] map size is 207712 Kb main [1071] map size is 207712 Kb
main [1064] mmapping 207712 Kbytes main [1093] mmapping 207712 Kbytes
main [1119] Ready... main [1146] Wait 2 secs for phy reset
sender_body [607] start main [1148] Ready...
sender_body [644] drop copy main [1257] 1206448 pps
main [1231] 14115785 pps main [1257] 13602560 pps
main [1231] 14118009 pps main [1257] 13573141 pps
: [14.1Mpps] : [13.5Mpps]
Source: SAKURA Internet Research Center. 11/2012: Project THORN