在DPDK使用环境中,物理网卡收到的包都绕开内核,直接到达DPDK应用中。但是,有些时候,用户希望把某些包(如控制报文)放到内核网络协议栈进行处理,这个路径在DPDK中被称作exception path。
现有方案
现有的exception path方案主要有三个:
1. KNI,作为目前DPDK用户使用的主要方案,其通过内核模块构造了一个虚拟网络接口,并且通过FIFO队列和用户态的DPDK应用交换数据包。该方案的缺点是KNI内核模块无法upstream,维护代价较大。详情请参见:
http://dpdk.org/doc/guides/prog_guide/kernel_nic_interface.html。
2. Tun/tap或者pcap PMD,这种方式的主要问题是这些端口的PMD需要调用syscall进入到内核态来收发包,这样的切换会导致DPDK应用性能大幅下降。
关于tun/tap PMD,详情请参见:
http://dpdk.org/doc/guides/nics/tap.html;
关于pcap PMD,详情请参见:
http://dpdk.org/doc/guides/nics/pcap_ring.html。
<