linux 系统下常见驱动收包方式对比

1、硬中断收包方式

硬中断的收包方式是依靠中断来通知cpu收取数据包的。这种中断方式的好处是响应及时,如果数据量较小,且数据包不太频繁的时候,不会占用太多的CPU时间。效率比较高。中断方式的缺点是数据量大时,会产生过多中断,而每个中断在处理收包时都要消耗不少的cpu时间。从而导致效率低下。所以这种方式不适合用在处理大流量的网络设备上。

2NAPI收包方式

NAPI是linux新的网卡数据处理的API。它是中断技术与轮询方式技术的融合。它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后轮询的方法来收取数据。当有大量数据包到来时只触发一次中断,在中断服务函数中关闭中断。然后cpu一直轮询的收包直到将所有的数据包收完为止再打开中断。但是这种方式也有一定的缺点,第一,不能及时处理数据包,随着数据包到达速度的增加,会消耗大量的内存,第二,对于大数据包低速率的情况,接收中断就会急剧增加,直到最后每个数据包都需要一次 轮询 的方法来进行处理,最后的结果就是每个中断都需要一次 轮询 的方法,最后造成效率的急剧下降,以至于系统的效率就会大大降低。所以这种方式比较适用于高速率的短长度数据包的处理

3、DPDK收包方式

DPDK收包方式采用的是完全轮询的收包方式。它抛弃了基于中断的异步信号发送机制,避免了中断性能上带来的瓶颈。并且在驱动轮询收包过程中实现了数据包零拷贝。这对收包的速度也带来了一定的提升。随着多核技术的发展,在DPDK的轮寻驱动中针对每一个收包队列都会绑定一个cpu核,此cpu核不会参与调度,专门用来进行收包。这种技术消除了由于cpu核的频繁调度切换带来的开销。这样在极大提高了收包效率的过程中又不损耗整体系统的性能。所以这种方式越来越多的运用到许多网络设备中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋yyds

分享是一种美德,感谢金主打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值