小包转发效率低下,这既不是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. 提示-bash: telnet: command not found的解决方法
  2. python课程设计报告总结-上海python课程设计报告目的
  3. python 递归乘法
  4. java中定时任务和线程池_java基于线程池和反射机制实现定时任务完整实例
  5. vim树形目录NERDTree
  6. 单机/伪分布式Hadoop2.4.1安装文档
  7. oracle ebs 基于host(主机文件)并发程序的开发,Oracle EBS 基于Host(主机文件)并发程序的开发...
  8. 【转】SQL 语句执行顺序
  9. rabbitmq添加user及vhost
  10. scenario和group执行的区别
  11. 力扣剑指Offer替换空格
  12. 留学生活揭秘:进门易出门难 高淘汰率让人崩溃
  13. 液晶LCD1602驱动代码
  14. MySql 配置 方法
  15. [web攻防] weblogic 漏洞复现 CVE-2017-10271CVE-2018-2628CVE-2018-2894
  16. codeforces 186D Mushroom Scientists 不等式
  17. Spring Boot Web应用集成Keycloak进阶之细粒度权限控制
  18. 2022CSP-S复赛游寄
  19. 河南财经政法大学CSDN俱乐部招新圆满结束
  20. 【Java】SSM框架简介

热门文章

  1. 人工智能的应用计算机视觉,人工智能-计算机视觉应用
  2. C++友元函数 普通函数声明为友元函数
  3. python字典的操作
  4. HM升压IC芯片代理商
  5. iOS UI篇——Button连按处理防止按钮连续点击
  6. nowcoder笔记
  7. 开放共生,解密国内最大的开源联盟链生态圈
  8. 使用一个ContentProvider操作多张表
  9. 主要用于科学计算机的是什么,早期计算机主要用于什么
  10. 计算机考试考试顺序,科目三考试顺序是先到先考吗