关于CRS3xx和CCR2116、CCR2216 L3/Fasttrack-HW-Offloading使用理解
在RouterOS v7.6对L3/Fasttrack-HW-Offloading又一次做了调整,有一个单独的L3 Hw Settings选项(下图设备为CRS326-24G-2S+,不支持Fasttrack HW-Offloading):
L3-Hw-Offloading设置仍然在switch交换芯片配置
根据官方的L3-HW-Offloading和FastTrack资料,CRS3xx(部分型号)和CCR2116、CCR2216都提供了L3-HW-Offloading和Fasttrack HW Offloading加速,那些型号支持Fasttrack HW Offloading加速可以查看官方资料,我翻译并归纳如下:
Stateless Hardware Firewall(无状态硬件防火墙)
对于HW-Offloading加速,可以通过switch rules的 ACL执行无状态(stateless)防火墙,当开启了L3 HW-Offloading,/ip firewall connection中将无法看到会话状态,即无状态(stateless)防火墙。连接跟踪和有状态(state full)防火墙只能由CPU处理,所以当开启L3-HW-Offloading加速路由后,在/ip firewall connection中是无法看到这些会话的。
下面的例子阻止硬件加速,从ether1访问MySQL服务器设置为拒绝,并指定从ether2和ether3访MySQL重定向到CPU,交给Firewall Filter处理数据包:
/interface ethernet switch rule add switch=switch1 dst-address=10.0.1.2/32 dst-port=3306 ports=ether1 new-dst-ports="" add switch=switch1 dst-address=10.0.1.2/32 dst-port=3306 ports=ether2,ether3 redirect-to-cpu=yes
Switch Rules (ACL) vs Fasttrack HW Offloading
一些防火墙过滤规则可以使用通过Switch rules的ACL与CPU的Firewall Filter+ Fasttrack HW Offloading来实现,这两个选项都提供接近线速转发的性能,所以问题是选择哪一个?
并非所有设备都支持Fasttrack HW Offloading,甚至没有HW Offloading。通常Firewall Filter只使用CPU进行所谓的软路由处理,相对于硬件处理要慢得多。其次,即使你的设备支持Fasttrack HW Offloading,但最好的选择是Switch rules(ACL)。
Switch rules与Fastrack连接共享硬件内存。但是,每个Fasttrack连接都需要分配硬件资源,而一条ACL规则可以匹配多个连接。例如,如果你有一个连接通过接口sfp-sfpplus1, VLAN id为10的客户网络,你不希望它访问你的内部网络10.0.0.0/8,只需创建一个Switch rule的ACL规则:
/interface/ethernet/switch/rule add switch=switch1 ports=sfp-sfpplus1 vlan-id=10 dst-address=10.0.0.0/8 new-dst-ports=""
匹配的报文将在硬件层面直接被丢弃,远比报文到达CPU进行防火墙过滤要好得多!
但需要注意Switch ACL规则不能匹配所有内容。例如,不能过滤连接状态:established(已建立的连接),丢弃其他状态连接。当需要对连接的状态进行ACL控制时,就需要将数据重定向给CPU,这时Fasttrack HW Offloading起作用的地方就体现出来了,Fasttrack HW Offloading的工作方式是先将数据报文重定向包到CPU给防火墙(当然你可能不会使用Fasttrack HW Offloading,完全由CPU处理),通过Filter进行防火墙规则过滤,然后再交给Fasttrack HW Offloading加速会话的连接。
个人理解:Fasttrack HW Offloading似乎通过CPU做了一次中转来连接L3-hw-offloading和Fasttrack HW Offloading两个硬件加速模块。
Fasttrack HW Offloading需要注意:
由于Fasttrack HW Offloading对于CPU而言几乎是0消耗,并提供了接近线速的性能,用户倾向于使用这样的解决方案。然而,HW Fasttrack能提供的连接数量是非常有限的,超出的流量会留给了CPU处理。如果考虑尝试尽可能多地利用硬件的Fastrack加速,需要使用Firewall Filter来微调需加速的Fasttrack连接,例如指定那种协议的指定端口被加速。下面是只对TCP/80,443端口做Fasttrack加速
/ip firewall filter add action=fasttrack-connection chain=forward connection-state=established,related dst-port=80,443 hw-offload=yes protocol=tcp
基于v7.6的测试:
此次测试视频内容仅供参考,具体配置可以参考:CRS326-24S+2Q+RM FastTrack HW-Offload配置测试
当前7.6发现的问题:同样带宽环境下测试,使用pppoe方式拨号作为wan,CPU占用96%,但出现突然无法联网的情况(应该是pppoe兼容存在问题),基于VLAN的固定IP无异常。
总结:
从L3/Fasttrack-HW-Offloading的设置可以看出,RouterOS提供的仍然是非常灵活的处理方式,能用好这个功能首先要理解其基本的原理,否则很难驾驭。可以说CRS3系列和CCR2116/2216把三层交换机、路由器和防火墙集于一身,开关L2/L3/Fasttrack硬件加速,如何让CPU从二层/三层/四层数据转发中解脱,完全由管理员自行决定。
华为的S5700和S6700三层交换机而言,你无需关心配置二层的VLAN转发是否经过CPU,配置三层IP地址和路由后,是否被硬件加速影响CPU性能(当然华为会告诉你该型号的二层MAC地址和ARP容量,以及支持多少条路由条目),对于管理员无需操心细节问题。似乎RouterOS给了一个不友好的配置方式,把这些硬件加速交给管理员来控制,但又感觉自己可以操作的配置又多了!