DPDK KNI模型

KNI(Kernel Interface)机制是为了让数据包重入内核协议栈,通过创建虚拟设备用于收发报文以达到利用内核本身已实现协议的目的。



其实dpdk例子中提供了两种方法与linux kernel协议栈交互: TAPKNI; 两种方法都是创建虚拟设备用于收发报文;

  1. TAP/TUN设备的创建:方法比较简单.但是这个方法的效率较低,数据需要从用户空间复制到内核空间,最后生成skb的时候可能还需要复制一次。
  2. 而KNI的方式:

    • RX方向: PMD分配mbuf, 收包线程收到后把mbuf放入rx_q FIFO, kni线程从rx_q取出mbuf然后转换为skb调用netif_rx把报文发送到协议栈中; 最后rx_q中取出来的mbuf放入free_q, 由用户空间的收包线程释放;(如下图所示

    • TX方向: 从协议栈发到kni设备上的报文,kni的发包函数kni_net_txalloc_q中取可用的mbuf, skb转换为mbuf, 并把mbuf放入tx_q, 用户空间的tx线程从tx_q取出mbuf并调用PMD驱动的发包函数发送报文;(如下图所示)



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值