SR-IOV技术优化DPDK架构下Local port性能

来源:互联网 发布:微信网站怎么制作 知乎 编辑:程序博客网 时间:2024/05/22 04:17

     转载请注明出处: http://blog.csdn.net/hliyuxin/article/details/53945201

     DPDK程序中,网卡被DPDK igb_uio驱动接管,如果需要与linux系统数据交互,现在主要有KNI和TAP两种方式,两种方法都是创建虚拟设备用于收发报文。现在DPDK sample主要推荐kni方式, OVS-DPDK中bridge的local port使用的TAP虚拟网卡。如果系统数据平面都是通过DPDK转发,与linux只有少量控制报文交互,KNI和TAP基本能满足性能需要,单核3G左右的大包转发性能。

    SR-IOV是一种虚拟化硬件加速方案,如下图,方案的初衷是为了虚拟机之间共享网络资源。具有SR-IOV功能的网卡,可以为一个物理端口(PF)新虚拟出多个虚拟端口(VF), 每个虚拟功能端口都能直接分配给一个虚拟机。SR-IOV能够让网络传输绕过软件模拟层,通过硬件L2 bridge按mac 地址分流,直接分配给虚拟机。



         SR-IOV方案的初衷是给虚拟机使用虚拟功能端口(VF),我们可以将一个VF分配给Linux系统,即DPDK PF + linux VF方案。linux系统直接使用VF收发网络包。

相关配置

 1.GRUB配置:

 添加 iommu=pt参数

 grub2-mkconfig -o /boot/grub2/grub.cfg

2. 需要升级到 ixgbevf-3.1.2 驱动

3. 网卡配置脚本:

 #!/bin/bash

           modprobe uio

insmod $DPDK_BUILD/kmod/igb_uio.ko

mkdir -p /mnt/huge

mount -t hugetlbfs nodev /mnt/huge

BIND_TOOL="dpdk-devbind.py"

ifdown eth0

$DPDK_DIR/tools/$BIND_TOOL --bind=igb_uio eth0

echo 1 > /sys/bus/pci/devices/0000:01:00.0/max_vfs

测试性能结果

  1.   iperf 测试 ,  linux VF 可以达到中大包万兆转发

    [root@xxxx huanghuai]# iperf -c 192.168.103.233 -i 1
    ------------------------------------------------------------
    Client connecting to 192.168.103.233, TCP port 5001
    TCP window size: 19.3 KByte (default)
    ------------------------------------------------------------
    [ 3] local 192.168.103.3 port 16703 connected with 192.168.103.233 port 5001
    [ ID] Interval Transfer Bandwidth
    [ 3] 0.0- 1.0 sec 1.10 GBytes 9.42 Gbits/sec
    [ 3] 1.0- 2.0 sec 1.10 GBytes 9.41 Gbits/sec
    [ 3] 2.0- 3.0 sec 1.10 GBytes 9.41 Gbits/sec
    [ 3] 3.0- 4.0 sec 1.10 GBytes 9.41 Gbits/sec
    [ 3] 4.0- 5.0 sec 1.10 GBytes 9.42 Gbits/sec
    [ 3] 5.0- 6.0 sec 1.10 GBytes 9.41 Gbits/sec
    [ 3] 6.0- 7.0 sec 1.10 GBytes 9.42 Gbits/sec
    [ 3] 7.0- 8.0 sec 1.10 GBytes 9.41 Gbits/sec
    [ 3] 8.0- 9.0 sec 1.10 GBytes 9.41 Gbits/sec
    [ 3] 9.0-10.0 sec 1.10 GBytes 9.42 Gbits/sec
    [ 3] 0.0-10.0 sec 11.0 GBytes 9.41 Gbits/sec

     2.   pktgen 64bytes小包,DPDK  PF可以达到万兆线速性能(1400 pps)

testpmd> show port stats 0

######################## NIC statistics for port 0 ########################
RX-packets: 201756895 RX-missed: 18 RX-bytes: 12105449760
RX-errors: 0
RX-nombuf: 0
TX-packets: 0 TX-errors: 0 TX-bytes: 0

Throughput (since last show)
Rx-pps: 14157055
Tx-pps: 0
############################################################################


       在实际将SR-IOV应用到DPDK开发的系统中时,还要注意一些rx tx queue的相关设置,需要开发者对DPDK中的ixbge_pf.c等部分代码有一定理解。


0 0
原创粉丝点击