基于 ECMP 流的转发
本主题将简要概述在 Junos OS SRX 系列防火墙和 vSRX 虚拟防火墙实例上转发和反向流量的等价多路径 (ECMP)。全面了解在 Junos OS、SRX 系列防火墙和 vSRX 虚拟防火墙实例上实施的 ECMP。
了解基于 ECMP 流的转发
等价多路径 (ECMP) 是一种网络路由策略,允许同一会话或流的流量(即具有相同源和目标的流量)通过等价的多条路径进行传输。这种机制允许您通过充分利用指向同一目标的链路上其他未使用的带宽来平衡流量负载并增加带宽。
转发数据包时,路由技术必须决定要使用的下一跳路径。在做出确定时,设备会考虑用于识别流量的数据包标头字段。使用 ECMP 时,将根据路由度量计算和散列算法识别成本相等的下一跳路径。也就是说,成本相等的路由具有相同的优先级和度量值,以及相同的网络成本。ECMP 进程标识一组路由器,每个路由器都是朝向目标的合法等价下一跃点。已识别的路由称为 ECMP 集。由于 ECMP 仅寻址下一跃点目标,因此可与大多数路由协议配合使用。
当路由表包含同一目标的多个成本相等的下一跳地址时,将形成等价多路径 (ECMP) 集。(等价路径具有相同的优先级和指标值。如果为活动路由设置了 ECMP,Junos OS 将使用散列算法在 ECMP 集中选择要安装在转发表中的下一跃点地址 之一 。
您可以配置 Junos OS,以便在转转发表中安装 ECMP 集中的多个下一跃点条目。在瞻博网络设备上,可以执行按流的负载平衡,以将流量分布到路由设备之间的多条路径上。在瞻博网络安全设备上,系统会检查源和目标 IP 地址及协议,以确定各个流量的流量。同一流的数据包在同一接口上转发;当对 ECMP 集进行添加或更改时,接口不会更改。这对于源 NAT 等功能非常重要,在源 NAT 中,仅在 IDP、ALG 和基于路由的 VPN 隧道的会话建立的第一条路径期间执行转换。如果数据包到达 ECMP 集中的给定接口,安全设备将确保反向流量通过同一接口转发。
安全设备上基于 ECMP 流的转发适用于 IPv4 和 IPv6 单播流量。所有 SRX 系列防火墙和 vSRX 虚拟防火墙实例均支持基于 ECMP 流的 IPv6 单播流量转发。不支持组播流。使用 功能资源管理器 确认对特定功能的平台和版本支持。
在瞻博网络安全设备上,可安装在转发表中的 ECMP 集中下一跃点地址的最大数量为 16。如果 ECMP 集中的下一跃点地址超过 16 个,则仅使用前 16 个地址。
在 机箱群集 部署中, 本地 接口与数据包到达的接口位于同一节点上的接口, 远程 接口是位于其他机箱群集节点上的接口。如果 ECMP 路由在机箱群集中同时具有本地接口和远程接口,则下一跃点会优先使用本地接口。
如果下一跃点地址不再是 ECMP 集的一部分,或者由于路由更改而将其从路由表中移除,则使用下一跃点的流量将重新路由,且会话不受影响。如果配置更改移除了下一跃点地址,或者管理员关闭了下一跃点接口而不将其删除,也会发生流的重新路由。如果下一跃点地址因接口被删除或会话被有意清除而从路由表中移除,则会话将被终止,而不重新路由。
我们建议 ECMP 集中的接口位于同一安全区域中。如果流量被重新路由,并且重新路由的流量使用与原始路由位于不同安全区域中的接口,则会话将被终止。
要在瞻博网络安全设备上配置基于流的 ECMP 转发,请先定义负载均衡路由策略,方法是在 [edit policy-options] 层次结构级别将一个或多个policy-statement配置语句与操作 load-balance per-flow一起包含在 中。然后,将路由策略应用于从路由表导出到转发表的路由。为此,请在 [] 层次结构级别包括 forwarding-table export 和edit routing-options configuration 语句。
Junos OS SRX 系列防火墙和 vSRX 虚拟防火墙实例的 ECMP 实施
您可以为 SRX 系列防火墙和 vSRX 虚拟防火墙实例配置 ECMP,以实施按流的负载平衡,从而在路由设备之间的多条路径上分配流量。等价路径具有相同的优先级和度量值。这些设备检查源 IP 地址、目标 IP 地址以及协议,以确定各个流量的流量。安全策略允许的源 IP 地址、目标 IP 地址和协议号相同的流量将被转发到同一下一跃点。这些设备上的 Junos OS 在其散列逻辑中使用流信息。
对于 Junos OS SRX 系列防火墙和 vSRX 虚拟防火墙实例,当路由表包含相同目标的多个下一跃点地址且成本相等时,将形成 ECMP 集。ECMP 允许将 ECMP 集中的多个下一跃点条目安装在转发表中。同一流的数据包在同一接口上转发;当对 ECMP 集进行添加或更改时,接口不会更改。
如果为活动路由设置了 ECMP,Junos OS 将使用散列算法在 ECMP 集中选择要安装在转发表中的下一跃点地址 之一 。
用于反向流量的 ECMP
从 Junos OS 17.3 版开始,如果为反向流量启用 ECMP 支持,则 SRX 系列防火墙将使用散列算法来确定用于流中反向流量的接口。此过程类似于非对称路由,其中数据包在一条路径中从源遍历目标,返回源时采用不同的路径。
如果不启用此功能,SRX 系列防火墙将在 ECMP 中选择一个路由,设置为传入接口,用于反向流量,这是默认行为。
您可以使用 [edit security flow] 层次结构中的 configuration 语句来allow-reverse-ecmp配置基于流的 ECMP 转发,以便在 ECMP 集中选择用于反向流量传输的路由时使用散列算法。也就是说,如果启用此功能,SRX 系列防火墙将使用散列算法在 ECMP 集中为反向流量选择路由,而不是选择传入接口的路由。
由于基于 ECMP 流的策略是基于区域的,因此 ECMP 反向查找支持可确保用于反向流量的出口接口与用于到达流量的入口接口位于同一区域。
ECMP 集中的接口必须位于同一安全区域中。如果出口接口区域与入口接口区域不同,则可以创建会话,但数据包将被丢弃。
如果您决定启用反向 ECMP,请注意以下情况并采取措施避免这种情况: 使用 ECMP 基于流的转发时,SRX 系列防火墙可能会导致上游设备仅看到会话的单向流量。对于维护会话状态的上游设备(例如 TCP 代理和 SYN 代理),可能会出现问题。该问题类似于异步路由行为。
示例:配置基于流的 ECMP 转发
此示例说明了如何配置基于流的 ECMP 转发。
要求
配置此功能之前,不需要除设备初始化之外的特殊配置。
概述
此示例在 SRX 系列防火墙上配置三个静态 ECMP 路由。每个静态路由使用不同的下一跃点路由器到达目标服务器。指向路由器的接口会被分配给不信任安全区域。此示例创建一个负载均衡路由策略,名为 load-balancing-policy ,并将该策略应用于从路由表导出到转发表的所有路由。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层次结构级别的 [edit] CLI 中。
## Interfaces ## set interfaces ge-0/0/2 unit 0 family inet address 192.168.4.1/24 set interfaces ge-0/0/4 unit 0 family inet address 192.168.1.1/24 set interfaces ge-0/0/6 unit 0 family inet address 192.168.2.1/24 set interfaces ge-0/0/7 unit 0 family inet address 192.168.3.1/24 ## Static routes ## set routing-options static route 172.16.1.0/24 next-hop 192.168.1.2 set routing-options static route 172.16.1.0/24 next-hop 192.168.2.2 set routing-options static route 172.16.1.0/24 next-hop 192.168.3.2 ## Security zones, address book entry, and policy ## set security zones security-zone trust interfaces ge-0/0/2 set security zones security-zone untrust interfaces ge-0/0/4 set security zones security-zone untrust interfaces ge-0/0/6 set security zones security-zone untrust interfaces ge-0/0/7 set security address-book global address FTP-servers 172.16.1.0/24 set security policies from-zone trust to-zone untrust policy permit-ftp match source-address any set security policies from-zone trust to-zone untrust policy permit-ftp match destination-address FTP-servers set security policies from-zone trust to-zone untrust policy permit-ftp match application junos-ftp set security policies from-zone trust to-zone untrust policy permit-ftp then permit ## ECMP routing policy ## set policy-options policy-statement load-balancing-policy then load-balance per-flow set routing-options forwarding-table export load-balancing-policy
过程
分步程序
下面的示例要求您在各个配置层级中进行导航。
要配置基于 ECMP 流的转发:
-
配置接口。
[edit interaces] user@host# set ge-0/0/2 unit 0 family inet address 192.168.4.1/24 user@host# set ge-0/0/4 unit 0 family inet address 192.168.1.1/24 user@host# set ge-0/0/6 unit 0 family inet address 192.168.2.1/24 user@host# set ge-0/0/7 unit 0 family inet address 192.168.3.1/24
-
配置静态路由。
[edit routing-options] user@host# set static route 172.16.1.0/24 next-hop 192.168.1.2 user@host# set static route 172.16.1.0/24 next-hop 192.168.2.2 user@host# set static route 172.16.1.0/24 next-hop 192.168.3.2
-
创建
trust和安全untrust区域,并包含相关接口。[edit security] user@host# set zones security-zone trust interfaces ge-0/0/2 user@host# set zones security-zone untrust interfaces ge-0/0/4 user@host# set zones security-zone untrust interfaces ge-0/0/6 user@host# set zones security-zone untrust interfaces ge-0/0/7
-
为服务器子网配置地址簿条目。
此条目用于安全策略。
[edit security address-book] user@host# set global address FTP-servers 172.16.1.0/24
-
配置安全策略。
[edit security policies from-zone trust to-zone untrust] user@host# set policy permit-ftp match source-address any user@host# set policy permit-ftp match destination-address FTP-servers user@host# set policy permit-ftp match application junos-ftp user@host# set policy permit-ftp then permit
-
创建负载均衡路由策略。
[edit policy-options] user@host# set policy-statement load-balancing-policy then load-balance per-flow
-
将路由策略应用于从路由表导出到转发表的所有路由。
[edit routing-options] user@host# set forwarding-table export load-balancing-policy
结果
在配置模式下,发出 、 show security、 show policy-options和show routing-options命令以show interfaces确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
[edit]
user@host# show interfaces
ge-0/0/2 {
unit 0 {
family inet {
address 192.168.4.1/24;
}
}
}
ge-0/0/4 {
unit 0 {
family inet {
address 192.168.1.1/24;
}
}
}
ge-0/0/6 {
unit 0 {
family inet {
address 192.168.2.1/24;
}
}
}
ge-0/0/7 {
unit 0 {
family inet {
address 192.168.3.1/24;
}
}
}
user@host# show security
address-book {
global {
address FTP-servers 172.16.1.0/24;
}
}
policies {
from-zone trust to-zone untrust {
policy permit-ftp {
match {
source-address any;
destination-address FTP-servers;
application junos-ftp;
}
then {
permit;
}
}
}
}
zones {
security-zone trust {
interfaces {
ge-0/0/2.0;
}
}
security-zone untrust {
interfaces {
ge-0/0/4.0;
ge-0/0/6.0;
ge-0/0/7.0;
}
}
}
user@host# show policy-options
policy-statement load-balancing-policy {
then {
load-balance per-flow;
}
}
[edit]
user@host# show routing-options
static {
route 172.16.1.0/24 next-hop [ 192.168.1.2 192.168.2.2 192.168.3.2 ];
}
forwarding-table {
export load-balancing-policy;
}
如果完成设备配置,请从配置模式进入。commit
验证
验证转发表
目的
验证所有 ECMP 路由的路由信息是否显示在转发表中。
行动
在操作模式下,输入命令 show route forwarding-table destination 172.16.1.0 。
user@host> show route forwarding-table destination 172.16.1.0
Routing table: default.inet
Internet:
Destination Type RtRef Next hop Type Index NhRef Netif
172.16.1.0/24 user 0 ulst 262142 2
192.168.1.2 ucst 560 2 ge-0/0/4.0
192.168.2.2 ucst 561 2 ge-0/0/6.0
192.168.3.2 ucst 562 2 ge-0/0/7.0
...
意义
输出显示的下一跃点类型 ulst为 ,这意味着路由有多个符合条件的下一跃点。发往 172.16.1.0 网络的数据包可以使用列表中的任何下一跃点。
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。
