小包转发效率低下,这既不是SYN问题,也与QUEUE无关,根源在于:

1、 操作系统对大量随机中断(interrpt)的性能低下:PC体系架构的系统中,网卡接收数据(RECV)基于中断机制(IRQ)。以前窄带时代带宽小,每秒产生IRQ次数少,占用CPU处理资源也就少。在宽带环境下,当每秒IRQ数量达到10K以上时,CPU就忙不赢了。

2、操作系统从kernel到user-space的内存复制(copy)效率低下。

为解决IRQ处理瓶颈,现代操作系统改变了网卡的IRQ处理机制,提高了网络处理效率:

提高网络性能的几种技术

1、FreeBSD下的device polling

关闭网卡的中断方式,使用轮循方式收发报文,可以大大提高小包(如syn flood,udp flood)下的路由性能和路由器的稳定性,提升率可以超过100M线速。

2、Linux2.6下的NAPI(New API)

关闭网卡的中断方式,使用轮循方式收发报文,可以大大提高小包(如syn flood,udp flood)下的路由性能和路由器的稳定性,提升率可以超过100M线速,但远低于FreeBSD下的decice_polling。

3、Linux下的Timer_based网卡驱动程序(Tuplit网卡)

关闭网卡的中断方式,使用基于网卡上定时器进行定时查询方式收发报文,可以大大提高小包(如syn flood,udp flood)下的路由性能和路由器的稳定性,提升率可以超过100M线速,但远低于FreeBSD下的decice_polling。

4、Linux下的NAPI和Circular Buffer技术(DMA—user_space技术)

关闭网卡的中断方式,使用轮循方式收发报文,可以大大提高小包(如syn flood,udp flood)下的路由性能和路由器的稳定性,提升率可以超过1000M线速,略高于FreeBSD下的decice_polling。

使用Circular Buffer技术的NAPI由libpcap_MMAP网络库文件包实现,它将网卡上的数据包通过DMA方式直接copy到user-space而无须绕道kernel,大大提高效率。可惜的是,目前linux还未正式采用此技术,也未得到完备测试。

目前做得最好的、最稳定成熟的应该算FreeBSD4.10以后的版本。据测试,未启用device polling前64byte小包的转发速率只能达到20Mbps带宽(CPU100%),启用后则可达到600Mbps(cpu5%);对于大包则可达990Mbps(cpu5%)。

本人经长期测试、使用,证明使用FreeBSD device polling+OpenBSD的IPF的SYN保护,可保证在大量SYN攻击(400K包/秒)下CPU只2%,且系统正常工作。

以下为参考资料:

1、Circular Buffer

http://www.ntop.org/

2、使用Circular Buffer和NAPI的网卡驱动(e1000):

http://sourceforge.net/projects/e1000/

3、DAG

http://dag.cs.waikato.ac.nz/

4、Device Polling Support for FreeBSD

http://info.iet.unipi.it/~luigi/polling/

linux测试包转发率,提高ROS小包转发速率 - RouterOS - 自由的生活_软路由论坛 - Powered by Discuz!...相关推荐

  1. 交换机背板带宽、交换容量、包转发率和线速转发的含义

    1.背板带宽 背板带宽,是指交换机接口处理器或接口卡,和数据总线间所能吞吐的最大数据量.背板带宽标志了交换机总的数据交换能力.背板带宽是模块化交换机上的概念,固定端口交换机不存在这个概念,固定端口交换 ...

  2. linux 软路由_软路由和硬路由的区别分析

    路由器--作为大型网络场所必须的产品,许多企业IT网络管理者在选择路由器时左右抉择,不知选择哪种更合适. 相对于硬路由来说呢,软路由的技术要求相对更高.不过其实只要你动脑去研究,就会发现软路由不过如此 ...

  3. tcpdump抓两个网卡的包_软路由 tcpdump抓包详解: 网口详解、抓包详解、多网卡同时抓包...

    软路由详解: 我的软路由有四张千兆网卡.其中Eth3是WAN口,Eth012是三个LAN口,Eth0接网线连接一台PC,Eth1连接一台无线路由器,Eth2未使用. 进入软路由系统中用ifconfig ...

  4. firmware linux 解包_官改固件解包打包 - 斐讯无线路由器以及其它斐迅网络设备 - 恩山无线论坛 - Powered by Discuz!...

    本帖最后由 eaglepeng 于 2020-3-11 15:23 编辑 前段时间想重新修改下官改固件logo,找到了一份Linux下简单的解包打包工具,后来在逛帖子看到另一个工具.现总结如下,需要的 ...

  5. 天龙架设linux环境配置,《果子资源》-天龙八部-手工纯端架设教程 - T-天龙八部 - Powered by Discuz!...

    宝塔纯端架设天龙八部3D教程 1.我这边使用CENOTS7 系统(6系统没时间测试) 2.安装宝塔 3.进入宝塔 安装MySQL5.5(我这边测试MYSQL 5.7 会创建不了角色) PHP 和NGI ...

  6. 关于RDP协议的分析(一) - Linux论坛 - 计世网论坛 - Powered by Discuz!

    导读: 关于RDP协议的分析(一) 关于RDP协议的分析和研究                                         -------------- leadgenius 写这 ...

  7. 微信数据包解析 php,微信交互数据包分析 - 新手入门及其它(软件) - 恩山无线论坛 - Powered by Discuz!...

    本帖最后由 derry 于 2019-3-7 23:30 编辑 微信启动后,主要建立以下连接: 1.      建立tcp长链接 端口号:80.443.8080中的一个(微信重启后会切换端口). 2. ...

  8. 路由器的硬件测试软件,刚做的简易网线测试工具 - 无线路由器硬件改造以及故障维修 - 恩山无线论坛 - Powered by Discuz!...

    材料: 旧手机锂电池一块 旧主板拆的USB+网口一体座一个 0.56寸共阴数码管一只 360欧碳膜电阻一只 水晶头两个 8芯网线一段 1.jpg (63.71 KB, 下载次数: 0) 2019-4- ...

  9. 常用零件形状 matlab,汽车零部件的形状优化|Simulink 快速原型、实时仿真和测试|MATLAB技术论坛 - Powered by Discuz!...

    CAESES为复杂汽车零部件探索和优化设计提供综合软件解决方案.结合专业知识和CFD软件工具,CAESES不仅能大幅提升汽车零部件及产品的性能,还能大大节省时间和成本. CAESES是传统CAD和仿真 ...

最新文章

  1. treeview 保持选中状态
  2. 零基础参加Java培训班合适吗
  3. linux / scp 详解
  4. xxl-job dotnet core executor执行器开源
  5. 【离散数学】基础理论归纳
  6. 要害怕做事的s9t9
  7. 利用数组实现栈java,用java编写出来:用数组实现一个栈
  8. es6 遍历 Symbol 属性名
  9. 520特辑丨码神VS爱神:盘点程序员的四大男友力,你偏爱哪一种?
  10. lamp mysql登录_LAMP 3.2 mysql登陆
  11. Lingo多版本下载地址和安装教程
  12. 大一计算机知识总结,大学计算机基础超详细知识点(高手总结)免费
  13. FLASH寿命问题说明
  14. 基于labview的虚拟简单信号发生器
  15. 搜索引擎-应用篇(地理位置查询)
  16. 开源项目——小Q聊天机器人V1.1
  17. 饼图大小调整_PPT制作简约饼图,学会这一个就够了!
  18. 图书馆服务器虚拟化实施方案,服务器虚拟化与图书馆实施策略.pdf
  19. mysql 用户名 长度_一个 MySQL 用户名长度的坑
  20. 我换Minecraft启动器啦!

热门文章

  1. 渗透测试-渗透测试常见的总结
  2. 测试如何沟通和如何顺利通过试用期
  3. 使用PDF24Tools工具怎么将Word文档转化成PDF文件?
  4. 【C++】STL中deque底层剖析
  5. nginx 1.14 php,安装php7.2+nginx1.14.2常见报错解决方法_2018_lcf
  6. CRS-0184诊断与启动CRS(原创)
  7. display显示方式
  8. puma560的运动学及matlab实现(正解+逆解)
  9. 《PostgreSQL 开发指南》第 21 篇 窗口函数
  10. 自一位员工离职后的感想和我对企业、公司的几点看法