基于 ECMP 流的转发
本主题提供对 SRX 系列设备和多实例上转发和反向Junos OS等价多路径 (ECMP) vSRX概述。全面覆盖 SRX 系列设备和 Junos OS实例上的 ECMP vSRX情况。
了解基于 ECMP 流的转发
等价多路径 (ECMP) 是一种网络路由策略,允许通过成本相等的多个路径传输相同会话或流量(即同一来源和目标的信息流)。这种机制允许您充分利用同一目标链路上原本未使用的带宽,以均衡信息流、增加带宽。
转发数据包时,路由技术必须决定使用哪个下一跳跃路径。在做出确定时,设备将考虑用于识别流的数据包标头字段。使用 ECMP 时,根据路由指标计算和散列算法识别成本相等的下一跳跃路径。也就是说,等价路由具有相同的优先级和度量值,以及网络成本。ECMP 进程标识一组路由器,每个路由器都是朝着目标的合法等价下一跳跃。识别的路由称为 ECMP 集。因为它只处理下一跳跃目标,因此 ECMP 可用于大多数路由协议。
当路由表包含同一目标的多个下一跃点地址且成本相等时,将形成等价多路径 (ECMP) 集。(等价路由具有相同的优先级和度量值。)如果有为活动路由设置的 ECMP,Junos OS 使用散列算法来选择 ECMP集的下一跃点地址之一,以安装到转发表中。
您可以配置Junos OS,以便转发表中安装 ECMP 集内的多个下一跳跃条目。在瞻博网络设备上,可执行每流负载平衡,以在路由设备之间的多个路径上传播流量。在瞻博网络设备上,将检查源和目标 IP 地址和协议,以确定单个流量。相同流的数据包在同一接口上转发;当 ECMP 集有增加或更改时,接口不会更改。对于源路由等功能NAT这一点至关重要,此功能仅在 IDP、ALG 和基于路由的 VPN 隧道建立会话建立的第一个路径期间执行转换。如果数据包到达 ECMP 集的给定接口,安全设备将确保通过同一接口转发反向信息流。
安全设备上基于 ECMP 流的转发适用于 IPv4 和 IPv6 单播流量。从 Junos OS 版本15.1X49-D60开始,所有 SRX 系列设备和网络实例上都支持基于 ECMP 流的 IPv6 单播流量vSRX转发。不支持组播流。
在瞻博网络安全设备上,可安装在转发表中的 ECMP 集下一跃点地址的最大数量为 16。如果 ECMP 设置下一跃点地址超过 16 个,则仅使用前 16 个地址。
在机箱群集部署中,本地接口是位于与数据包到达的接口相同的节点上的接口,远程接口是位于其他机箱集群节点上的接口。如果 ECMP 路由在机箱集群中同时具有本地和远程接口,则本地接口更适合下一跳跃。
如果下一跳跃地址不再是 ECMP 集的一部分,或者由于路由更改而从路由表中移除,则使用下一跳跃的流将重新路由,并且会话不会受到影响。如果配置更改会移除下一跃点地址,或者管理员在删除下一跃点接口的情况下关闭下一跃点接口,则还会重新路由流。如果下一跃点地址因接口删除或会话有意清除而从路由表中移除,则会话将结束,而不重新路由。
建议 ECMP 集内的接口在同一安全区域中。如果重新路由流且重新路由流使用与原始路由不同的安全区域中的接口,则会话将结束。
要针对 瞻博网络 安全设备配置基于 ECMP 流的转发,首先要在 [ ] 层次结构级别包含一个或多个配置语句并采取措施,以定义负载平衡路由 policy-statement
edit policy-options
策略 load-balance per-packet
。然后,将路由策略应用于从路由表导出到转发表的路由。为此,在 [ forwarding-table
] 层次结构 export
级别中包括 edit routing-options
和 配置语句。
SRX 系列Junos OS实例的 ECMP vSRX实施
您可以为 SRX 系列设备和实例配置 ECMP,vSRX实例实施每流负载平衡,以在路由设备之间的多个路径上传播流量。等价路由具有相同的优先级和度量值。这些设备检查源 IP 地址、目标 IP 地址以及协议,以确定单个流量。安全策略允许的源 IP 地址、目标 IP 地址和协议编号的信息流将转发到同一跃点。Junos OS设备上使用散列逻辑中的流信息。
对于Junos OS SRX 系列设备和 vSRX 实例,当路由表包含相同目标的多个下一跃点地址且成本相等时,将形成一个 ECMP 集。ECMP 允许在转发表中安装 ECMP 集内的多个下一跳跃条目。相同流的数据包在同一接口上转发;当 ECMP 集有增加或更改时,接口不会更改。
如果有为活动路由设置的 ECMP,Junos OS 使用散列算法来选择 ECMP集的下一跃点地址之一,以安装到转发表中。
SRX 系列设备和实例上基于 ECMP 流的转发vSRX适用于 IPv4 和 IPv6 单播流量。从 Junos OS 15.1X49-D60 和 Junos OS 17.3R1 版开始,所有 SRX 系列设备和 vSRX 实例都支持基于 ECMP 流的 IPv6 单播流量转发。不支持组播流。
反向信息流 ECMP
从 Junos OS 17.3 版开始,如果您为反向流量启用 ECMP 支持,SRX 系列设备将使用散列算法来确定用于流中的反向流量的接口。此过程类似于非对称路由,其中数据包从一个路径中的源遍历到目标,在返回源时采用不同的路径。
如果不启用此功能,SRX 系列设备将 ECMP 设置中的路由设置为传入接口以接收反向信息流,这是默认行为。
您可使用 [ ] 层次结构中的配置语句配置基于 ECMP 流的转发,以使用散列算法在 ECMP 设置中选择路由以用于反向 allow-reverse-ecmp
edit security flow
流量传输。也就是说,如果您启用此功能,而不是选择到达传入接口的路由,SRX 系列设备将使用散列算法在 ECMP 设置中选择路由以用于反向流量。
由于基于 ECMP 流的策略基于区域,ECMP 反向查找支持可确保用于反向流量出口接口与用于到达流量的入口接口在同一区域。
ECMP 集内的接口必须在同一安全区域中。如果出口接口区与入口接口区域不同,可以创建一个会话,但数据包将被丢弃。
如果您决定启用反向 ECMP,请注意以下情况并采取措施避免这种情况:在使用基于 ECMP 流的转发时,SRX 系列设备可能会导致上游设备仅看到会话的单向流量。维护会话状态(例如 TCP 代理和 SYN-proxy)的上游设备可能会出现问题。该问题类似于异步路由行为。
示例:配置基于 ECMP 流的转发
此示例展示如何配置基于 ECMP 流的转发。
要求
配置此功能之前,不需要除设备初始化之外的特殊配置。
概述
此示例在 SRX 系列设备上配置了三个静态 ECMP 路由。每个静态路由都使用不同的下一跳跃路由器来到达目标服务器。路由器的接口将被分配给不信任安全区域。此示例将创建名为 的负载平衡路由策略,将策略应用于从路由表导出到转发表 load-balancing-policy
的所有路由。
配置
CLI快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,然后将命令复制并粘贴到 层次结构级别的 CLI 中 [edit]
。
## 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-packet 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-packet
将路由策略应用于从路由表导出到转发表的所有路由。
[edit routing-options] user@host# set forwarding-table export load-balancing-policy
结果
在配置模式下,确认您的配置,然后发出 show interfaces
、 show security
show policy-options
和 show routing-options
命令。如果输出未显示预期的配置,请重复此示例中的说明,以更正配置。
[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-packet; } }
[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 网络的数据包可使用列表中的下一跳跃。