AF_PACKET Poll Mode Driver
https://doc.dpdk.org/guides/nics/af_packet.html
使用这个PMD可以从Linux af_packet socket读写packets。网卡还是由Kernel控制,但是基于DPDK的app,可以用这种方式work。由于网卡由Kernel控制,app的性能不是最好的。
感觉这个可以在DPDK app的开发阶段使用,在不支持DPDK的NIC上进行开发。
KNI
https://doc.dpdk.org/guides/prog_guide/kernel_nic_interface.html
https://doc.dpdk.org/guides/sample_app_ug/kernel_nic_interface.html
使用KNI可以从DPDK app向kernel stack收发包。物理网卡由DPDK控制,通过KNI在Kernel里创建虚拟net device。传统的工具可以运行在虚拟网卡上,例如ifconfig, tcpdump等。
所以可以给每一个以太网口都配置一个KNI虚拟口,然后DPDK的app可以决定哪些traffic自己处理,哪些traffic送到KNI上给kernel处理。 例如dhcp包,这样已有的dhcpd就可以work了。