Linux接收包的性能

OS层面:在早期的linux(2.4以前),还是采用早期的“纯中断“处理机制,中断的开销太大而且还要经过几次内存搬运;后来采用了在NAPI机制以后(第一个中断发生后接连polling一段时间),有所好转,但仍然距离理想差很远,特别是小包(但报告显示512B的包最成问题,pcap在linux 2.6丢包率在100Mbps线速可以到97%+);
  pcap层面:他的问题主要出在buff的搬移拷贝,从网卡到用户层,需要经过很多kernel的数据结构和queues,访问其中的一些会有很多lock和拷贝;采用了mmap(http://public.lanl.gov/cpw/)来映射和管理buff之后,性能有了明显的改善,但数据显示改善仍然有限,丢包仍然大幅度多于正确接受的包(特别是小包和512B的包);
   ntop(www.ntop.org)project里面介绍了一种简化从adapter到userspace渠道的lib, PF_RING;这个lib不但利用mmap,而且将数据通道简化到只有一个ring buffer,driver把device来的数据写入ring buffer,用户程序通过mmap直接可以访问这个ring buffer。但这个设计只允许用户“读”网络数据,一旦这个device被按照PF_RING方式打开,这个device就变成“只读“,不能发送,只可以作为sniffer..据说这样改良之后,大包小包性能明显改善,64B丢包<30%,1500丢包更是小于10%,唯有512B还是50%左右丢包,但也比原来好了几倍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值