参考:https://github.com/openvswitch/ovs/blob/v2.6.1/INSTALL.DPDK.md
dpdk-16.07
openvswitch-2.6.1
安装配置参考上面链接
重点关注参数:
other_config:pmd-cpu-mask=60 60是配置pmd的个数和与核的关系(这里的意思是核5和核6各跑一个pmd线程),绑定的核最好是隔离出来的核,pmd数量不是越多越好,我测试时,2个pmd效果比较好,具体原因在哪不清楚,没有深入理解dpdk
pktgen+dpdk
开两个pmd时,我用pktgen发400万pps,ovs不会丢包
开四个pmd时,我用pktgen发400万pps,ovs会丢10%左右丢包
在配置pmd 掩码pmd-cpu-mask或是dpdk -c参数时,掩码的意思是按位使能对应的核,比如我设置10,二进制就是00010000,对应的是4号核(一个pmd),核的编号是0开始的。配置f0,二进制是11110000,对应的是4.5.6.7核(4个pmd)
查看ovs port统计
ovs-ofctl dump-ports br0
查看dpdk port 统计
ovs-vsctl list interface dpdk0
查看包处理周期
./utilities/ovs-appctl dpif-netdev/pmd-stats-show
不管是建立虚拟机还是namespace,发现能ping通但不能ssh,执行ethtool -K eth1 tx off ,eth1对应响应网卡,分析方法是用tcpdump抓包,分析校验和,一般这种情况都是校验和不对。