手上有个AX2的mikrotik路由器,最近没事测速,发现带宽居然跑不满,怎么跑都只能跑到400多兆。
切换到X86的CHR软路由,轻松跑到1000M,为啥呢?
我尝试帮我的AX2规则清空,可以帮网速跑到1000M,但是我总不能买个mikrotik路由器0规则吧
看到网速资料
https://www.chiphell.com/thread-2641339-1-1.html
配置硬件加速规则:/ip firewall filter add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes/ip firewall filter add action=accept chain=forward connection-state=established,related
原因分析
当您的MikroTik带宽速度跑不满,而在配置了特定的 fasttrack-connection 防火墙规则后就能跑满,这主要是因为该规则极大地优化了数据包的处理路径,减轻了路由器CPU的负担。
以下是这条规则能够提升速度的详细原因分解:
/ip firewall filter add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes
1. 标准防火墙处理流程 (未配置此规则时)
在没有这条FastTrack规则的情况下,每一个通过路由器的数据包(尤其是在forward链中,即在不同网络接口间转发的数据包)都需要经过CPU的处理。CPU会逐一检查防火墙过滤规则(Filter Rules)、Mangle规则、NAT规则以及队列(Queues)等。对于高速网络连接,例如千兆宽带,数据包的数量非常庞大,这会导致:
- CPU占用率过高:CPU需要消耗大量资源来处理每一个数据包,当带宽较高时,CPU可能达到100%的占用率,成为网络性能的瓶颈。
- 处理延迟增加:每个数据包经过多层规则的检查,增加了转发的延迟,从而影响了整体网络速度。
2. FastTrack规则如何优化处理流程
您添加的这条规则通过两个关键机制来解决上述问题:fasttrack-connection 和 hw-offload。
action=fasttrack-connection
- 作用:此动作会标记符合条件的连接,让这些连接中的后续数据包绕过大部分防火墙处理步骤,走上一条“快速通道” (Fast Path)。
connection-state=established,related:这个条件至关重要。它指定了这条规则只对已经建立的(established)和相关的(related)连接生效。- 工作流程:当一个新的连接(例如,您开始下载文件)发起时,第一个数据包的状态是
new,它不会被这条规则匹配。因此,它会正常通过所有防火墙规则,完成连接跟踪(Connection Tracking)的建立。 - 一旦连接建立成功,后续的所有数据包状态都变为
established。这时,它们就会被您的FastTrack规则匹配。 - 被标记为FastTrack的连接,其数据包将不再需要经过防火墙Filter、Mangle等其他规则的CPU密集型检查,而是被直接转发。
- 工作流程:当一个新的连接(例如,您开始下载文件)发起时,第一个数据包的状态是
- 效果:这极大地降低了CPU在处理已信任连接时的工作量,将CPU资源释放出来处理新的连接或其他任务。
hw-offload=yes (硬件卸载)
- 作用:这是进一步的加速。
hw-offload=yes参数指示路由器,在可能的情况下,将已标记为FastTrack的连接的处理任务从CPU转移到专门的交换芯片或路由芯片上。 - 硬件处理 vs. CPU处理:硬件芯片是为高速数据包转发而设计的,其处理速度远超通用CPU。 当连接被硬件卸载后,数据包的转发几乎能达到设备的线速(wire-speed),CPU基本不参与转发工作。
- 效果:这是实现千兆甚至更高带宽跑满的关键。即使FastTrack减轻了CPU的负担,但在极高速度下,单靠CPU软件层面的“快速通道”仍可能成为瓶颈。硬件卸载则彻底绕开了这个瓶颈。
总结
简单来说,您遇到的问题是CPU处理能力不足以应对高带宽下所有数据包的防火墙检测开销。
通过添加这条规则,您实际上是告诉路由器:
“对于任何已经建立并且是可信任的连接,请不要再浪费CPU资源去反复检查它们了。直接给它们打上‘快速通行’的标记 (fasttrack-connection),并且如果硬件支持的话,把这些流量的转发工作完全交给硬件去处理 (hw-offload=yes)。”
这样一来,绝大多数的数据流量(如下载、视频流等)都被硬件直接处理,几乎不消耗CPU资源,从而释放了性能瓶颈,让您的带宽能够完全发挥出来。