DPDK系列之一:DPDK 17.08.1在CentoS 7.2.1511的安装

23 篇文章 1 订阅
16 篇文章 64 订阅

一、前言

DPDK(Intel Data Plane Development Kit)是Intel提供的数据平面开发工具集,专注于网络应用中数据包的高性能处理。DPDK应用程序运行在用户空间,利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。DPDK其实也是网络开发框架和开发库、高效数据结构、众多Linux系统优化方法的合集。


转载自https://blog.csdn.net/cloudvtech

二、DPDK的核心思想

2.1 用户态网络驱动

使用Linux的UIO技术,PMD批量收发数据,避免终端爆炸;线程绑定CPU core,避免调度开销;避免内核态和用户态的数据拷贝;用户态程序的稳定性更好

2.2 高效内存使用

使用大页减少TLB cache miss,高效的m_buf管理,使得多种网络处理更高效

2.3 环形队列

提供无锁队列,提高信息交互效率

2.4 向量化指令

提升内存读取效率,分摊指令开销

转载自https://blog.csdn.net/cloudvtech

三、DPDK 17.08.1在CentOS 7.2.1511的安装

3.1 系统设置

1. OS: http://vault.centos.org/7.2.1511/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso
2. H/W:
1 NUMA node with 4 CPU cores
4 GB memory
3 NICs
40 GB disk

3.2 依赖安装

yum makecache
yum install -y gcc gcc-c++  kernel-devel kernel-headers kernel.x86_64 net-tools
yum install -y numactl-devel.x86_64 numactl-libs.x86_64
yum install -y libpcap.x86_64 libpcap-devel.x86_64
yum install -y pciutils


3.3 设置大页内存

echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mkdir /mnt/huge
chmod 777 /mnt/huge
in /etc/fstab
huge /mnt/huge hugetlbfs defaults 0 0

cat /proc/meminfo | grep Huge



3.4 安装DPDK

wget http://fast.dpdk.org/rel/dpdk-17.08.1.tar.xz
xz -d dpdk-17.08.1.tar.xz 
tar -xvf dpdk-17.08.1.tar 
cd dpdk-stable-17.08.1/

3.4.1 patch


3.4.2 编译

export RTE_SDK=/root/dpdk-stable-17.08.1
export RTE_TARGET=x86_64-native-linuxapp-gcc
make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config
make
cd $RTE_SDK
make install T=x86_64-native-linuxapp-gcc

3.5 安装kernel module

modprobe uio_pci_generic
modprobe uio
modprobe vfio-pci
insmod build/kmod/igb_uio.ko 

3.6 查看驱动bind状态


3.7 bind NIC

现有的NIC如下:


ifconfig eno33554960 down 
ifconfig eno50332184 down

./usertools/dpdk-devbind.py --bind=igb_uio  02:02.0 
./usertools/dpdk-devbind.py --bind=igb_uio  02:03.0

查看bind之后状态:


./usertools/dpdk-devbind.py --status-dev net 

转载自https://blog.csdn.net/cloudvtech

四、基于DPDK的简单测试

4.1 编译运行hellowrold程序

make -C examples RTE_SDK=$(pwd) RTE_TARGET=build O=$(pwd)/build/examples
./build/examples/helloworld/build/helloworld


4.2 PMD测试

export RTE_TARGET=build/
[26] Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)

4.3 testpmd参数测试

build/app/testpmd -l 3,0,2 --socket-mem 1024  --log-level=8 -- -i

testpmd> set nbcore 2
Number of forwarding cores set to 2

testpmd> show config fwd 
io packet forwarding - ports=2 - cores=2 - streams=2 - NUMA support enabled, MP over anonymous pages disabled
Logical Core 2 (socket 0) forwards packets on 1 streams:
  RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
Logical Core 3 (socket 0) forwards packets on 1 streams:
  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

testpmd> show config cores 
List of forwarding lcores:  2  3

testpmd> start
io packet forwarding - ports=2 - cores=2 - streams=2 - NUMA support enabled, MP over anonymous pages disabled
Logical Core 1 (socket 0) forwards packets on 1 streams:
  RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
Logical Core 2 (socket 0) forwards packets on 1 streams:
  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00

  io packet forwarding - CRC stripping enabled - packets/burst=32
  nb forwarding cores=2 - nb forwarding ports=2
  RX queues=1 - RX desc=128 - RX free threshold=0
  RX threshold registers: pthresh=0 hthresh=0 wthresh=0
  TX queues=1 - TX desc=512 - TX free threshold=0
  TX threshold registers: pthresh=0 hthresh=0 wthresh=0
  TX RS bit threshold=0 - TXQ flags=0x0

testpmd> show port stats all

  ######################## NIC statistics for port 0  ########################
  RX-packets: 1649080    RX-missed: 0          RX-bytes:  122036704
  RX-errors: 0
  RX-nombuf:  0         
  TX-packets: 258545     TX-errors: 0          TX-bytes:  17993146

  Throughput (since last show)
  Rx-pps:        97242
  Tx-pps:        35178
  ############################################################################

  ######################## NIC statistics for port 1  ########################
  RX-packets: 267012     RX-missed: 0          RX-bytes:  19670724
  RX-errors: 0
  RX-nombuf:  0         
  TX-packets: 1661125    TX-errors: 0          TX-bytes:  116279790

  Throughput (since last show)
  Rx-pps:        37156
  Tx-pps:        95331
  ############################################################################





转载自https://blog.csdn.net/cloudvtech














  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值