正常情况下, ODP 在对eth口收发包时, 要先在脚本中对eth口进行绑定:
vfio-devbind.sh -b vfio-pci 0002:02:00.0
0002:02:00.0 表示eth0 的bdf 号.
有一个问题, 这样 *** 作后, eth0在linux的ifconfig就不能显示了, 就不能配置IP 用于socket了.
如何能ODP 使用了也还可以用于socket 呢?
用以下配置虚拟一个设备出来:
echo 1 > /sys/class/net/eth0/device/sriov_numvfs
ODP 绑定的时候用:(如果不绑定, 这个会在ifconfig -a中显示出来, 作为普通的eth口使用)
vfio-devbind.sh -b vfio-pci 0002:02:00.1
这样可以实现.
注意:
ODP 在初始化eth port的时候, 不能打开混杂模式, 不然ODP, 和 socket都不能正常使用.
说明一下, 为什么要关闭混杂模式:
之前设置的原因, 主要是ODP 的demo 代码中就有这一行.没有去掉. 能用的情况下, 就忽略了.
后边发生了问题, 看源码发现sriov VF中设置了混杂模式后, 是对底层硬件npc 资源进行了设置, 这个npc 资源对于PF, VF 都在用, 这样就导致 了eth0 的VF 配置了混杂模式后, 把PF 应该要收的包也收了. 这样原因就找到了.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)