CRS3xx系列产品的用户一定要看

从RouterOS v7.1beta4开始l3hw=yes和l3hw=fw两个模式进行了合并,允许单独指定接口的路由硬件转发,并兼容部分Firewall/NAT配置,将l3hw 属性被重命名为l3-hw-offloading。从RouterOS v7.1 beta6 开始CRS3xx系列几乎全部支持支持Layer3 hardware offloading。

/interface/ethernet/switch set switch1 l3-hw-offloading=yes

/interface/ethernet/switch/port set [find] l3-hw-offloading=yes

现在L3-HW能分别配置到每个物理交换接口,当启用l3-hw-offloading设置更改配置,不影响正在使用的会话连接。如果禁用l3-hw- offloading仍然会有路由条目在硬件内存中保留,因此建议修改l3-hw- offloading配置后重启设备。

v7.1 beta4调整内容如下:

L3-HW设置同时存在于/interface/ethernet/switch和/interface/ethernet/switch/port下,但它们有所不同, 在switch下设置 l3-hw- offloading=no ,将完全禁用硬件转发,所有数据包将通过CPU处理。但在port下设置 l3-hw- offloading=no,将禁用该指定接口的三层路由转发,而fasttrack将继续下发到硬件处理 。但需要注意,数据包在路由转发下发到硬件时,要求源和目标端口同时设置

l3-hw-offloading=yes,如果仅一侧启用,数据将会通过CPU处理,仅Fasttrack的连接会被下发到硬件。

默认情况下,所有路由条目都启用了HW硬件加速。为了进一步调整需要硬件处理的流量,每条路由都有一个选项suppress-hw-offload(压制hw-offload)来禁用/启用,是否进行硬件转发。

例如,当我们知道某条路由涉及服务器网络的流量非常大,我们可以只启用到该特定静态路由硬件加速:

/ip/route set [find where static && dst-address!="192.168.3.0/24"] suppress-hw-offload=yes

仅目标静态路由192.168.3.0/24启用硬件加速(注意规则是dst-address!=”192.168.3.0/24″,有“!” 代表非),其他路由开启压制,可以在下面看到AsH前缀,表明该路由条目选择HW-offloading的硬件加速(H-flag并非表示该路由实际上已经在HW-offloading,而是表示该路由可被选择为HW-offloading)

[admin@MikroTik] > /ip route/print where static

Flags: A - ACTIVE; s - STATIC, y - COPY; H - HW-OFFLOADED
Columns: DST-ADDRESS, GATEWAY, DISTANCE
#    DST-ADDRESS          GATEWAY       D

0 As  0.0.0.0/0         172.16.2.1        1
1 As  10.0.0.0/8        10.155.121.254    1
2 AsH 192.168.3.0/24    172.16.2.1        1

如果只启用fasttrack功能,请在port上禁用l3-hw-offloading功能,而在switch上启用全局l3-hw-offloading功能。

/interface/ethernet/switch set switch1 l3-hw-offloading=yes

/interface/ethernet/switch/port set [find] l3-hw-offloading=no

另一个例子是,当sfp-sfpplus16下创建的VLAN作为外网WAN端口时,需要开启NAT转换,但其他端口作为内网开启L3-HW加速,进出sfp-sfpplus16的数据包会进入CPU处理,即被防火墙/NAT处理。

/interface/ethernet/switch set switch1 l3-hw-offloading=yes
/interface/ethernet/switch/port set [find] l3-hw-offloading=yes
/interface/ethernet/switch/port set sfp-sfpplus16 l3-hw-offloading=no

需要注意CRS3xx系列交换机的L3-HW在v7.1 beta6后开始被完全支持,但需要区分Marvell DX8000和DX3000/2000系列芯片,它们之间的功能有所区别。

DX8000系列芯片

下列设备基于 Marvell 98DX8xxx 或 98DX3257 交换芯片

型号 版本 路由条目 下一跳 ECMP Fasttrack 1,2 NAT
CRS317-1G-16S+ 7.1beta1 150 – 240K 8K 4K 4500 / 3750 3 8K 4
CRS309-1G-8S+ 7.1beta2 50 – 80K 8K 4K 4500 / 3750 8K
CRS312-4C+8XG 7.1beta2 50 – 80K 8K 4K 2250 / 1500 8K
CRS326-24S+2Q+ 7.1beta2 50 – 80K 8K 4K 2250 / 1500 8K
CRS354-48G-4S+2Q+ 7.1beta4 50 – 80K 8K 4K 2250 / 1500 8K

备注说明:

  • *1 当达到Fasttrack或NAT的HW会话限制时,超出的会话连接将回落到CPU,MikroTik的智能连接算法确保了流量最大的连接被卸载到硬件处理
  • *2 Fasttrack连接与ACL规则共用HW内存。根据复杂度的不同,一条ACL规则可能会占用3-6条Fasttrack连接的内存。
  • *3 (MPLS 和Bridge Port Extender同时被禁用) / (MPLS和Bridge Port Extender两者都启用)。MPLS与Fasttrack连接共用HW内存。此外,启用MPLS需要分配整个内存区域,否则可以存储多达750个Fasttrack连接。这同样适用于Bridge Port Extender(桥接端口扩展器)。然而,MPLS和Bridge Port Extended可能使用相同的内存区域,所以同时启用它们不会使Fasttrack连接的限制加倍。
  • *4 如果Fasttrack启用,NAT条目无法被全部使用因为受限于Fasttrack连接数量。

DX3000/2000系列

下面的设备列表为 Marvell 98DX224S、98DX226S和98DX3236 交换芯片,这些芯片不支持Fasttrack 和NAT 连接下发,而 98DX3257 除外,其功能与DX8000相同,所以有别于DX3000系列。

这类交换芯片使用不同的方法下发IPv4路由,而不是DX8000系列芯片使用的IP rangs, DX3000/2000使用的IP prefixs

型号 版本 IPv4路由前缀1 下一跳 ECMP per prefix2
CRS305-1G-4S+ 7.1beta6 13312 4K 8
CRS318-1Fi-15Fr-2S 7.1beta6 13312 4K 8
CRS318-16P-2S+ 7.1beta6 13312 4K 8
CRS326-24G-2S+ 7.1beta6 13312 4K 8
CRS328-24P-4S+ 7.1beta6 13312 4K 8
CRS328-4C-20S-4S+ 7.1beta6 13312 4K 8
  • *1 可用于加速的路由总量非常有限,更高的子网掩码会被优先做硬件转发(如:/32,/30,/ 29 等高位子网,最后才是0.0.0/0,如果超出限制数量0.0.0.0/0的默认路由会被放到CPU处理,对于其他任何前缀不适合HW表将由CPU处理。
  • *2 如果到相同目的路由,存在多路径,即ECMP路由,超过限制数量(8条),则只加速第一组8条EMCP路由,多出的会由CPU处理。

CRS3xx的三层路由配置可以参考:RouterOSv7.1 Beta6 L3 HW三层路由转发配置

此次对L3-hardware-offloading的大改,可用看出v7版本的功能配置调整还在继续,没有完全稳定下来,大家可用尝鲜,但实际使用建议还是需要继续等待。不过从这次的L3-hardware-offloading调整,应该是对用户实际情况的反馈做了大的修改,我的分析如下:

1、开始MikroTik应该是只想让CRS3xx系列支持普通的三层路由转发,同时兼顾部分nat加速的功能,但市面上三层交换机几乎都是将三层路由下发给交换芯片转发,没有考虑过nat问题,因为这个是nat路由器要做的事情,MikroTik三层路由和nat会话下发到了交换芯片(只能做两种全局选择l3hw=yes和l3hw=fw),两种功能虽然做了区分,整体的配置导致了很多复杂的应用问题,比如如何区分三层路由和nat会话加速,这两种应用在实际使用中存在冲突,我测试的时候l3hw=yes是没有问题的,但l3hw=fw存在问题无法工作。

2、7.1beta4后的调整更加细分,除全局的设置L3-hardware-offloading=yes外,还细化到每个交换机端口的L3-hardware-offloading,而且还能控制路由条目的L3-hardware-offloading属性,这样做增加了配置复杂性,但我觉得灵活度更好,这就是RouterOS的一贯风格,“灵活性”。控制交换机端口从上面的配置介绍就可以看出,如果是一个端口配置的VLAN作为外网的wan端口关闭L3-hardware-offloading,但全局的L3-hardware-offloading=yes,代表这个端口的nat会话可以被fasttrack和nat智能算法加速。

3、我说的更深点,就是L3-hardware-offloading有两个控制层面,一个控制层面就是全局和端口的L3-hardware-offloading=yes,这个就是三层VLAN路由下发给交换芯片,也就是只做三层交换机的功能,不涉nat。第二个层面是如果有nat路由,就把三层VLAN的对外端口的L3-hardware-offloading取消,进入CPU处理,CPU再一次判断,涉及到的nat会话是否能支持交换芯片的nat加速。

4、静态路由条目数量的限制,在大量静态路由配置的情况下,超出了加速数量,可以让管理员来调整这些路由,设置那些路由可以加速,那些路由不加速,早期的华为s5700交换机低端型号限制了128条静态路由,可能是软件限制,也可能是芯片性能问题。而MikroTik官方告诉了当前芯片能处理路由器条目的数量,管理员根据这个数量自己在RouterOS调整路由加速规则,还是那句话“灵活”。

5、Dx3000和Dx2000大部分是不支持nat加速的,但三层路由是ok的,这个是芯片功能问题,限制了nat会话加速,之前我写信给官方,他们说无法保证Dx3000和Dx2000的芯片能实现L3-HW,不过现在是全部支持三层转发了!

6、从一开始RouterOS是一台路由器,交换机本来就是附属的,但基于Linux系统的RouterOS是可以实现交换机功能,现在基于Marvell的交换芯片,对于RouterOS来说是增加一个功能而已,但功能增加,还要和之前的路由配置兼容,这意味着有更加复杂的应用开发,其实就是nat会话加速问题,如果单纯的只做三层路由的硬件加速,就简单多了,可能就一条l3hw=yes就完了,CRS3xx系列就定位一个三层交换机就ok了,但MikroTik还是选择了更复杂的nat会话加速,那就是CRS3xx系列是一台将二层、三层交换机和nat路由器合体,并且能同时实现硬件加速,如此综合性的高性价比交换路由产品,估计市面上没有吧,但这样带来了极其烧脑的配置,功能多意味着配置越复杂!

CRS3xx系列出来2年了,Cloud Router Switch这个产品名称在v7.1beta4版本给转正了,不过我觉得v7正式版本的路还很长!

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下