硬件卸载介绍

**第三层硬件卸载**( L3HW也称为 IP 交换或硬件路由)允许将某些路由器功能卸载到交换芯片上。 这样路由数据包可以达到线速,这对 CPU 来说是不可能的。

交换配置

要启用第 3 层硬件卸载,请为交换机设置 l3-hw-offloading=yes

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

交换机端口配置

可以为每个物理交换机端口配置第 3 层硬件卸载。 例如:

/interface/ethernet/switch/port set sfp-sfpplus1 l3-hw-offloading=yes

请注意,交换机和端口的 l3hw 设置不同:

  • 为交换机设置 l3-hw-offloading``=no 完全禁用卸载 - 所有数据包都将由 CPU 路由。

  • 但是,为交换机端口设置 l3-hw-offloading``=no 只会禁用来自/到该特定端口的硬件路由。 此外,端口仍然可以参与 Fastrack 连接卸载。

要启用完整的硬件路由,请在所有交换机端口上启用 l3hw:

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

要让所有数据包首先通过 CPU,并仅卸载 Fasttrack 连接,请在所有端口上禁用 l3hw,但在交换机芯片本身上保持启用:

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

**仅当源端口和目标端口都具有 l3-hw-offloading=yes 时,数据包才会被硬件路由。**如果其中至少一个具有 l3-hw-offloading=no,则数据包将通过 CPU/防火墙,同时仅卸载 Fasttrack 连接。

下一个示例在除上游端口 (sfp-sfpplus16) 之外的所有端口上启用硬件路由。 进出 sfp-sfpplus16 的数据包将进入 CPU,因此需要进行防火墙/NAT 处理。

/interface/ethernet/switch set 0 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

现有连接可能不受“l3-hw-offloading”设置更改的影响。

L3HW 设置

L3HW 设置菜单已在 RouterOS 版本 7.6 中引入。

Sub-menu: /interface ethernet switch l3hw-settings

属性 说明
fasttrack-hw (yes | no; Default: yes (if supported)) 启用或禁用 FastTrack HW 卸载。 除非需要 HW TCAM 内存保留,否则保持启用状态,例如,用于动态交换机 ACL 规则创建。 并非所有交换机芯片都支持 FastTrack HW 卸载(请参阅hw-supports-fasttrack)。
ipv6-hw (yes | no; Default: no) 启用或禁用 IPv6 硬件卸载。 由于 IPv6 路由占用大量硬件内存,因此仅当 IPv6 流量速度足够快并从硬件路由中受益时才启用它。
icmp-reply-on-error (yes | no; Default: yes) 由于硬件无法发送 ICMP 消息,因此必须将数据包重定向到 CPU 以在出现错误(例如,“超时”、“需要分片”等)时发送 ICMP 回复。 启用 icmp-reply-on-error 有助于网络诊断,但可能会为 DDoS 攻击打开潜在漏洞。 如果出现错误,禁用 icmp-reply-on-error 会在硬件级别静默丢弃数据包。

只读属性

属性 说明
hw-supports-fasttrack (yes | no) 指示硬件(交换芯片)是否支持 FastTrack HW Offloading。

接口列表

无法直接使用接口列表来控制 l3-hw-offloading,因为接口列表可能包含虚拟接口(例如 VLAN),而 l3-hw-offloading 设置必须仅应用于物理交换机端口。 例如,如果有两个 VLAN 接口(vlan20 和 vlan30)运行在同一个交换机端口(trunk 端口)上,则不可能在 vlan20 上启用硬件路由,而在 vlan30 上保持禁用。

但是,接口列表可以用作端口选择器。 以下示例演示如何在 LAN 端口(属于“LAN”接口列表的端口)上启用硬件路由并在 WAN 端口上禁用它:

:foreach i in=[/interface/list/member/find where list=LAN] do={
    /interface/ethernet/switch/port set [/interface/list/member/get $i interface] l3-hw-offloading=yes
}

:foreach i in=[/interface/list/member/find where list=WAN] do={
    /interface/ethernet/switch/port set [/interface/list/member/get $i interface] l3-hw-offloading=no
}

请注意,由于硬件路由控制中不直接使用接口列表,修改接口列表也不会自动反映到 l3hw 更改中。 例如,将交换机端口添加到“LAN”接口列表不会自动在其上启用“l3-hw-offloading”。 用户必须重新运行上述脚本才能应用更改。

MTU

硬件支持多达 8 个 MTU 配置文件,这意味着用户可以为接口设置多达 8 个不同的 MTU 值:默认 1500 + 七个自定义值。

建议在更改接口上的 MTU/L2MTU 值时禁用``l3-hw-offloading``。

MTU 修改示例

/interface/ethernet/switch set 0 l3-hw-offloading=no
/interface set sfp-sfpplus1 mtu=9000 l2mtu=9022
/interface set sfp-sfpplus2 mtu=9000 l2mtu=9022
/interface set sfp-sfpplus3 mtu=10000 l2mtu=10022
/interface/ethernet/switch set 0 l3-hw-offloading=yes

二层依赖

第 3 层硬件处理位于第 2 层硬件处理之上。 因此,L3HW 卸载需要在底层接口上进行 L2HW 卸载。 后者默认启用,但也有一些例外。 例如,CRS3xx 设备仅支持一个硬件网桥。 如果有多个网桥,其他的由CPU处理,不受L3HW约束。

另一个例子是 ACL 规则。 如果规则将流量重定向到 CPU 进行软件处理,则不会触发硬件路由 (L3HW):

用于禁用特定端口上的硬件处理的 ACL 规则

/interface/ethernet/switch/rule/add switch=switch1 ports=ether1 redirect-to-cpu=yes

建议在 L2 配置期间关闭 L3HW 卸载。

为确保第3层在软件和硬件方面与第2层同步,建议在配置第2层功能时禁用 L3HW。 适用于以下配置:

  • 添加/删除/启用/禁用网桥;

  • 向网桥添加/删除交换机端口;

  • 绑定交换机端口/移除绑定;

  • 更改 VLAN 设置;

  • 更改交换机端口上的 MTU/L2MTU;

  • 更改以太网 (MAC) 地址。

简而言之,在 /interface/bridge/ /interface/vlan/ 下进行更改时禁用``l3-hw-offloading``:

Layer 2 Configuration Template

/interface/ethernet/switch set 0 l3-hw-offloading=no

/interface/bridge
# put bridge configuration changes here

/interface/vlan
# define/change VLAN interfaces

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

MAC telnet 和 RoMON

98DX8xxx98DX4xxx98DX325x 交换机芯片上启用 L3HW 卸载时,MAC telnet 和 RoMON 存在限制。 来自这些协议的数据包将被丢弃并且不会到达 CPU,因此对设备的访问将失败。

如果需要 MAC telnet 或 RoMON 与 L3HW 结合使用,则可以创建某些 ACL 规则以强制这些数据包进入 CPU。

例如,如果需要在 sfp-sfpplus1 和 sfp-sfpplus2 上进行 MAC telnet 访问,则需要添加此 ACL 规则。 可以使用 ports 设置选择更多接口。

/interface ethernet switch rule
add dst-port=20561 ports=sfp-sfpplus1,sfp-sfpplus2 protocol=udp redirect-to-cpu=yes switch=switch1

例如,如果需要对 sfp-sfpplus2 进行 RoMON 访问,则需要添加此 ACL 规则。

/interface ethernet switch rule
add mac-protocol=0x88BF ports=sfp-sfpplus2 redirect-to-cpu=yes switch=switch1

VLAN间路由

由于L3HW依赖于L2HW,而L2HW是做VLAN处理的,所以Inter-VLAN_hardware_routing需要底层有硬件桥接。 即使特定 VLAN 只有一个标记端口成员,后者也必须是网桥成员。 不要直接在交换机端口上分配 VLAN 接口! 否则,L3HW 卸载失败,流量将由 CPU 处理:

~/interface/vlan add interface=ether2 name=vlan20 vlan-id=20~

而是将 VLAN 接口分配给网桥。 这样,VLAN 配置被卸载到硬件,并且在启用 L3HW 的情况下,流量受 VLAN 间硬件路由的影响。

VLAN配置示例

/interface/ethernet/switch set 0 l3-hw-offloading=no
/interface/bridge/port add bridge=bridge interface=ether2
/interface/bridge/vlan add bridge=bridge tagged=bridge,ether2 vlan-ids=20
/interface/vlan add interface=bridge name=vlan20 vlan-id=20
/ip/address add address=192.0.2.1/24 interface=vlan20
/interface/bridge set bridge vlan-filtering=yes
/interface/ethernet/switch set 0 l3-hw-offloading=yes

对于 VLAN 间路由,网桥接口必须是每个可路由的“/interface/bridge/vlan/”条目的标记成员。

L3HW MAC 地址范围限制(仅限 DX2000/DX3000 系列)

Marvell Prestera DX2000 和 DX3000 交换芯片有一个硬件限制,即只允许为每个接口配置 MAC 地址的最后一个(最不重要的)八位字节。 其他五个(最重要的)八位字节是全局配置的,因此对于所有接口(交换机端口、网桥、VLAN)必须相等。 换句话说,MAC 地址必须采用 XX:XX:XX:XX:XX:?? 格式,其中:

  • XX:XX:XX:XX:XX 部分对所有接口都是通用的。

  • ?? 是可变部分。

此要求仅适用于第 3 层(路由) ,第 2 层(桥接)不使用交换机的以太网地址。 此外,它不适用于网桥端口,因为它们使用网桥的 MAC 地址。

公共的五个八位字节的要求适用于:

  • 启用硬件路由的独立交换机端口(不是网桥成员)(l3-hw-offloading = yes)。

  • 网桥本身。

  • VLAN 接口(默认使用网桥的 MAC 地址)。

路由配置

抑制硬件卸载

默认情况下,所有路由都参与成为硬件候选路由。 为了进一步微调要卸载的流量,每个路由都有一个选项可以禁用/启用 suppress-hw-offload

例如,如果知道大部分流量流向服务器所在的网络,可以只启用卸载到该特定目的地:

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

现在只有到 192.168.3.0/24 的路由有 H-flag,表明它将是唯一有资格被选中进行 HW 卸载的路由:

[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

H-flag并不表示该route实际上是HW offloaded,它只是表示route可以被选为HW offloaded。

路由过滤器

对于 OSFP 和 BGP 等动态路由协议,可以使用 路由过滤器 来抑制 HW 卸载。 例如,要抑制所有 OSFP 实例路由上的 HW 卸载,请使用 suppress-hw-offload yes 属性:

/routing/ospf/instance
set [find name=instance1] in-filter-chain=ospf-input
/routing/filter/rule
add chain="ospf-input" rule="set suppress-hw-offload yes; accept"

卸载 Fasttrack 连接

防火墙过滤规则具有 Fasttrack 的 hw-offload 选项,允许微调连接卸载。 由于 Fasttrack 连接的硬件内存非常有限,我们可以选择要卸载的连接类型,因此受益于接近线速的流量。 下一个示例仅卸载 TCP 连接,而 UDP 数据包通过 CPU 路由并且不占用 HW 内存:

/ip/firewall/filter
add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes protocol=tcp
add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=no
add action=accept chain=forward connection-state=established,related

无状态硬件防火墙

虽然连接跟踪和状态防火墙只能由 CPU 执行,但硬件可以通过 交换规则 (ACL) 执行无状态防火墙。 下一个示例阻止(在硬件级别)从 ether1 访问 MySQL 服务器,并重定向到来自 ether2 和 ether3 的 CPU/防火墙数据包:

/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

交换规则 (ACL) 与 Fasttrack 硬件卸载

一些防火墙规则可以通过 交换规则 (ACL) 和 CPU 防火墙过滤器 + Fasttrack HW 卸载。 这两个选项都提供接近线速的性能。 问题是使用哪一个?

首先,并非所有设备都支持 Fasttrack HW 卸载。 在没有硬件卸载的情况下,Firewall Filter 仅使用软件路由,这比对应的硬件路由要慢得多。 其次,即使 Fasttrack HW Offloading 是一个选项,经验法则是:

如果可以,就始终使用交换规则 (ACL)。

交換规则与 Fastrack 连接共享硬件内存。 但是,硬件资源是为每个 Fasttrack 连接分配的,而单个 ACL 规则可以匹配多个连接。 例如,如果你有一个连接到 sfp-sfpplus1 VLAN 10 的访客 WiFi 网络并且不希望它访问你的内部网络,只需创建一个 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 进行防火墙过滤要好得多。

当然,ACL 规则并不能匹配所有。 例如,ACL 规则无法过滤连接状态:接受已建立、丢弃其他。 这就是 Fasttrack HW Offloading 发挥作用的地方——默认情况下将数据包重定向到 CPU 以进行防火墙过滤,然后卸载已建立的 Fasttrack 连接。 但是,为整个交换机端口禁用 l3-hw-offloading 并不是唯一的选择。

使用 **redirect-to-cpu=yes** 定义 ACL 规则,而不是设置交换机端口的 l3-hw-offloading=no 以减少进入 CPU 的流量。

配置示例

上游端口在防火墙/NAT 后面的 VLAN 间路由

此示例演示了如何从接近线速的 VLAN 间路由中获益,同时保持防火墙和 NAT 在上游端口上运行。 此外,到上游端口的 Fasttrack 连接也被卸载到硬件,将流量速度提高到接近线速。 VLAN 间流量完全由硬件路由,不进入 CPU/防火墙,因此不占用 Fasttrack 连接的硬件内存。

使用具有以下设置的 CRS317-1G-16S+ 模型:

  • sfp1-sfp4 - 桥接端口,VLAN ID 20,未标记

  • sfp5-sfp8 - 桥接端口,VLAN ID 30,未标记

  • sfp16 - 上游端口

  • ether1 - 管理端口

易于访问的设置端口列表:

端口列表

/interface list
add name=LAN
add name=WAN
add name=MGMT

/interface list member
add interface=sfp-sfpplus1 list=LAN
add interface=sfp-sfpplus2 list=LAN
add interface=sfp-sfpplus3 list=LAN
add interface=sfp-sfpplus4 list=LAN
add interface=sfp-sfpplus5 list=LAN
add interface=sfp-sfpplus6 list=LAN
add interface=sfp-sfpplus7 list=LAN
add interface=sfp-sfpplus8 list=LAN
add interface=sfp-sfpplus16 list=WAN
add interface=ether1 list=MGMT

网桥设置

/interface bridge
add name=bridge vlan-filtering=yes

/interface bridge port
add bridge=bridge interface=sfp-sfpplus1 pvid=20
add bridge=bridge interface=sfp-sfpplus2 pvid=20
add bridge=bridge interface=sfp-sfpplus3 pvid=20
add bridge=bridge interface=sfp-sfpplus4 pvid=20
add bridge=bridge interface=sfp-sfpplus5 pvid=30
add bridge=bridge interface=sfp-sfpplus6 pvid=30
add bridge=bridge interface=sfp-sfpplus7 pvid=30
add bridge=bridge interface=sfp-sfpplus8 pvid=30

/interface bridge vlan
add bridge=bridge tagged=bridge untagged=sfp-sfpplus1,sfp-sfpplus2,sfp-sfpplus3,sfp-sfpplus4 vlan-ids=20
add bridge=bridge tagged=bridge untagged=sfp-sfpplus5,sfp-sfpplus6,sfp-sfpplus7,sfp-sfpplus8 vlan-ids=30

路由需要专用的 VLAN 接口。 对于标准的 L2 VLAN 桥接(没有 VLAN 间路由),可以省略下一步。

用于路由的 VLAN 接口设置

/ip address
add address=192.168.88.1/24 interface=ether1
add address=10.0.0.17/24 interface=sfp-sfpplus16

/ip route
add gateway=10.0.0.1

/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes
add action=accept chain=forward connection-state=established,related

/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN

配置管理和上游端口、基本防火墙、NAT,并启用 Fasttrack 连接的硬件卸载:

防火墙设置

/ip address
add address=192.168.88.1/24 interface=ether1
add address=10.0.0.17/24 interface=sfp-sfpplus16

/ip route
add gateway=10.0.0.1

/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes
add action=accept chain=forward connection-state=established,related

/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN

此时,所有路由仍然由CPU执行。 在交换芯片上启用硬件路由:

启用第 3 层硬件卸载

# Enable full hardware routing on LAN ports
:foreach i in=[/interface/list/member/find where list=LAN] do={
    /interface/ethernet/switch/port set [/interface/list/member/get $i interface] l3-hw-offloading=yes
}

# Disable full hardware routing on WAN or Management ports
:foreach i in=[/interface/list/member/find where list=WAN or list=MGMT] do={
    /interface/ethernet/switch/port set [/interface/list/member/get $i interface] l3-hw-offloading=no
}

# Activate Layer 3 Hardware Offloading on the switch chip
/interface/ethernet/switch/set 0 l3-hw-offloading=yes

结果:

  • 在同一 VLAN 内(例如 sfp1-sfp4),流量由第 2 层*(L2HW)* 上的硬件转发。

  • VLAN 间流量(例如 sfp1-sfp5)由第 3 层 (L3HW) 上的硬件路由。

  • 来自/到 WAN 端口的流量首先由 CPU/防火墙处理。 然后 Fasttrack 连接被卸载到硬件 (硬件加速 L4 状态防火墙)。_NAT适用于CPU 和 HW 处理的数据包。

  • 到管理端口的流量受防火墙保护。

典型的错误配置

以下是配置第 3 层硬件卸载的典型用户错误。

交换机端口上的 VLAN 接口

/interface vlan add name=vlan10 vlan-id=10 interface=sfp-sfpplus1

由于第 2 层依赖性,必须在网桥上设置 VLAN 接口。 否则,L3HW 将无法工作。 正确的配置是:

/interface bridge port add bridge=bridge1 interface=sfp-sfpplus1 pvid=10
/interface bridge vlan add bridge=bridge1 tagged=bridge1,sfp-sfpplus1 vlan-ids=10
/interface vlan add name=vlan10 vlan-id=10 interface=bridge1

不将网桥接口添加到/in/br/vlan

对于 VLAN 间路由,桥接接口本身需要添加到给定 VLAN 的标记成员中。 在下一个示例中,VLAN 间路由在 VLAN 10 和 11 之间工作,但数据包不会路由到 VLAN 20。

/interface bridge vlan
add bridge=bridge1 vlan-ids=10 tagged=bridge1,sfp-sfpplus1
add bridge=bridge1 vlan-ids=11 tagged=bridge1 untagged=sfp-sfpplus2,sfp-sfpplus3
add bridge=bridge1 vlan-ids=20 tagged=sfp-sfpplus1 untagged=sfp-sfpplus4,sfp-sfpplus5

上面的例子并不总是出错。 有时,你可能希望设备在某些或全部 VLAN 中充当简单的 L2 交换机。 只要确定你是故意这样设置,而不是因为错误。

创建多个网桥

这些设备仅支持一个硬件桥。 如果创建了多个网桥,则只有一个网桥获得硬件卸载。 对于 L2,这意味着其他网桥是软件转发,在 L3HW 的情况下,多个网桥可能会导致未定义的行为。

与其创建多个网桥,不如创建一个并使用 VLAN 过滤隔离 L2 网络。

使用不属于交换机的端口

有些设备有两个交换芯片或直接连接到 CPU 的管理端口。 例如,CRS312-4C+8XG 有一个 ether9 端口连接到单独的交换芯片。 尝试将此端口添加到网桥或将其包含在 L3HW 设置中会导致意外结果。 记得留下管理端口进行管理!

[admin@crs312] /interface/ethernet/switch> print
Columns: NAME, TYPE, L3-HW-OFFLOADING
# NAME     TYPE              L3-HW-OFFLOADING
0 switch1  Marvell-98DX8212  yes
1 switch2  Atheros-8227      no

[admin@crs312] /interface/ethernet/switch> port print
Columns: NAME, SWITCH, L3-HW-OFFLOADING, STORM-RATE
 # NAME         SWITCH   L3-HW-OFFLOADING  STORM-RATE
 0 ether9       switch2
 1 ether1       switch1  yes                      100
 2 ether2       switch1  yes                      100
 3 ether3       switch1  yes                      100
 4 ether4       switch1  yes                      100
 5 ether5       switch1  yes                      100
 6 ether6       switch1  yes                      100
 7 ether7       switch1  yes                      100
 8 ether8       switch1  yes                      100
 9 combo1       switch1  yes                      100
10 combo2       switch1  yes                      100
11 combo3       switch1  yes                      100
12 combo4       switch1  yes                      100
13 switch1-cpu  switch1                           100
14 switch2-cpu  switch2

过度依赖 Fasttrack HW 卸载

由于 Fasttrack HW Offloading 以零配置开销提供接近线速的性能,因此用户倾向于将其用作默认解决方案。 但是,HW Fasttrack 连接的数量非常有限,将其他流量留给 CPU。 尝试尽可能使用硬件路由,通过交换机 ACL 规则将 CPU 流量减少到最低,然后使用防火墙过滤规则微调要卸载的 Fasttrack 连接。

L3HW 功能支持

  • HW - 支持该功能并将其卸载到硬件。

  • CPU - 该功能受支持但由软件 (CPU) 执行

  • N/A - 该功能不可与 L3HW 一起使用。 必须完全禁用第 3 层硬件卸载(开关 l3-hw-offloading=no)才能使此功能正常工作。

  • FW - 对于给定的 交换机端口,该功能需要 l3-hw-offloading``=no。 在 switch 级别,l3-hw-offloading=yes

特性 支持 注释 发布
IPv4 Unicast Routing HW 7.1
IPv6 Unicast Routing HW /interface/ethernet/switch/l3hw-settings/set ipv6-hw=yes
7.6
IPv4 Multicast Routing CPU
IPv6 Multicast Routing CPU
ECMP HW Multipath outing 7.1
Blackholes HW /ip/route add dst-address=10.0.99.0/24 blackhole 7.1
gateway= CPU/HW /ip/route add dst-address=10.0.0.0/24 gateway=ether1
这仅适用于直接连接的网络。 由于 HW 不知道如何发送 ARP 请求,CPU 发送 ARP 请求并等待回复以在连接的第一个接收到的与 DST IP 地址匹配的数据包上找出 DST MAC 地址。
DST MAC 确定后,添加HW 条目,所有进一步的数据包将由交换芯片处理。
7.1
BRIDGE HW 硬件卸载网桥 接口的 IP 路由。 7.1
VLAN HW 使用 vlan-filtering 在硬件卸载桥接口上创建的 VLAN 接口之间的路由。 7.1
Bonding HW /interface/bonding 7.1
IPv4 Firewall FW 用户必须选择硬件加速路由或防火墙。
防火墙规则由 CPU 处理。 Fasttrack 连接被卸载到 HW。
7.1
IPv4 NAT FW 应用于卸载的 Fasttrack 连接的 NAT 规则也由 HW 处理。 7.1
MLAG N/A
VRF N/A 只有 main 路由表被卸载。
VRRP N/A
VXLAN CPU
MTU HW 硬件最多支持 8 个 MTU 配置文件。 7.1
QinQ and tag-stacking CPU 堆叠 VLAN 接口将失去 HW 卸载,而直接在桥接口上创建的其他 VLAN 仍然可以使用 HW 卸载。

只有下表中列出的设备支持 L3 硬件卸载。

L3HW 设备支持

只有下表中列出的设备支持 L3 硬件卸载。

CRS3xx:交换机 DX3000 和 DX2000 系列

以下设备基于 Marvell 98DX224S、98DX226S98DX3236 交换芯片型号。 这些设备不支持 Fasttrack 或 NAT 连接卸载。

98DX325598DX3257 型号是例外,它们具有 DX8000 而非 DX3000 系列的功能集。

型号 交换芯片 发布版本 IPv4 Route Prefixes1 IPv6 Route Prefixes2 Nexthops ECMP paths per prefix3
CRS305-1G-4S+ 98DX3236 7.1 13312 3328 4K 8
CRS310-1G-5S-4S+ 98DX226S 7.1 13312 3328 4K 8
CRS318-1Fi-15Fr-2S 98DX224S 7.1 13312 3328 4K 8
CRS318-16P-2S+ 98DX226S 7.1 13312 3328 4K 8
CRS326-24G-2S+ 98DX3236 7.1 13312 3328 4K 8
CRS328-24P-4S+ 98DX3236 7.1 13312 3328 4K 8
CRS328-4C-20S-4S+ 98DX3236 7.1 13312 3328 4K 8

1 _由于可以卸载的路由总量有限,具有较高网络掩码的前缀优先由硬件转发(例如 /32、/30、/29 等),任何 其他不适合 HW 表的前缀将由 CPU 处理。 直接连接的主机被卸载为 /32 (IPv4) 或 /128 (IPv6) 路由前缀。 主机数量也受 IP 设置 / IPv6 设置 限制。

2 IPv4 和 IPv6 路由表共享相同的硬件内存。

3 如果路由的路径多于硬件 ECMP 限制 (X),则只有前 X 条路径被卸载。

CRS3xx、CRS5xx:交换机 DX8000 和 DX4000 系列

以下设备基于 Marvell 98DX8xxx、98DX4xxx 交换芯片或 98DX325x 型号。

Fasttrack 连接 2,3,4

型号 交换芯片 发布版本 IPv4 Routes 1 IPv4 Hosts 7 IPv6 Routes8 IPv6 Hosts7 Nexthops Fasttrack 连接2,3,4 NAT entries 2,5
CRS317-1G-16S+ 98DX8216 7.1 120K - 240K 64K 30K - 40K 32K 8K 4.5K 4K
CRS309-1G-8S+ 98DX8208 7.1 16K - 36K 16K 4K - 6K 8K 8K 4.5K 3.9K
CRS312-4C+8XG 98DX8212 7.1 16K - 36K 16K 4K - 6K 8K 8K 2.25K 2.25K
CRS326-24S+2Q+ 98DX8332 7.1 16K - 36K 16K 4K - 6K 8K 8K 2.25K 2.25K
CRS354-48G-4S+2Q+, CRS354-48P-4S+2Q+ 98DX3257 6 7.1 16K - 36K 16K 4K - 6K 8K 8K 2.25K 2.25K
CRS504-4XQ 98DX4310 7.1 60K - 120K 64K 15K - 20K 32K 8K 4.5K 4K
CRS518-16XS-2XQ 98DX8525 7.3 60K - 120K 64K 15K - 20K 32K 8K 4.5K 4K

1 取决于路由表的复杂性。 整个字节 IP 前缀(/8、/16、/24 等)比其他前缀(例如 /22)占用更少的硬件空间。 从 **RouterOS v7.3* 开始,当路由 HW 表变满时,只有具有较长子网前缀的路由(/30、/29、/28 等)会被卸载,而 CPU 会处理较短的前缀。 在 RouterOS v7.2 及之前的版本中,Routing HW 内存溢出导致了未定义的行为。 用户可以通过路由过滤器(对于动态路由)或抑制静态路由的硬件卸载来微调要卸载的路由。 IPv4 和 IPv6 路由表共享相同的硬件内存。*

2 当达到 Fasttrack 或 NAT 条目的 HW 限制时,其他连接将回退到 CPU。 MikroTik 的智能连接卸载算法确保流量最大的连接被卸载到硬件。

3 Fasttrack 连接与 ACL 规则共享相同的硬件内存。 根据复杂程度,一条ACL规则可能会占用3-6个Fasttrack连接的内存。

4 MPLS 与 Fasttrack 连接共享硬件内存。 此外,启用 MPLS 需要分配整个内存区域,否则可以存储多达 768 (0.75K) 个 Fasttrack 连接。 这同样适用于桥接端口扩展器。 但是,MPLS 和 BPE 可能使用相同的内存区域,因此同时启用它们不会使 Fasttrack 连接的限制加倍。

5 如果 Fasttrack 连接需要网络地址转换,则会创建硬件 NAT 条目。 硬件同时支持SRCNAT和DSTNAT.

6 交换芯片具有 DX8000 系列的功能集。

7 _DX4000/DX8000交换芯片将直连主机、IPv4/32、IPv6/128路由条目存储在FDB表中,而不是路由表中。 HW 内存在常规 FDB L2 条目 (MAC)、IPv4 和 IPv6 地址之间共享。 主机数量也受 IP 设置 / IPv6 设置 限制。

8 IPv4 和 IPv6 路由表共享相同的硬件内存。

CCR2000

型号 交换芯片 发布版本 IPv4 Routes IPv4 Hosts IPv6 Routes IPv6 Hosts Nexthops Fasttrack连接 NAT entries
CCR2116-12G-4S+ 98DX3255 1 7.1 16K - 36K 16K 4K - 6K 8K 8K 2.25K 2.25K
CCR2216-1G-12XS-2XQ 98DX8525 7.1 60K - 120K 64K 15K - 20K 32K 8k 4.5K 4K

1 交换芯片具有DX8000系列的特性集。