Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

LAG 和 ECMP 散列算法

了解用于 LAG 和 ECMP 的散列算法,以及如何配置散列算法。

了解用于对 LAG 捆绑进行散列处理并出口下一跃点 ECMP 流量的算法

在启用等价多路径 (ECMP) 时,瞻博网络 EX 系列和 QFX 系列使用散列算法来确定如何通过链路聚合组 (LAG) 束转发流量,或转发至下一跳设备。

散列算法根据各个数据包字段中的值以及一些内部值(如源端口 ID 和源设备 ID)做出散列决策。您可以配置散列算法使用的一些字段。

本主题包含以下部分:

了解散列算法

散列算法用于在启用 ECMP 时对进入 LAG 束的流量或退出交换机的流量做出流量转发决策。

对于 LAG 捆绑包,散列算法确定进入 LAG 捆绑包的流量如何放置到捆绑包的成员链路上。散列算法尝试通过跨捆绑包中的成员链路平均均衡所有传入流量来管理带宽。

对于 ECMP,散列算法决定了传入流量如何转发到下一跳设备。

散列算法根据各个数据包字段中的值以及一些内部值(如源端口 ID 和源设备 ID)做出散列决策。散列算法使用的数据包字段因数据包的 EtherType 而异,在某些情况下还因交换机上的配置而异。散列算法识别以下 EtherType:

  • IP(IPv4 和 IPv6)

  • MPLS

  • MAC 中的 MAC

如果流量无法被识别为属于其中任何一种 EtherType,则会根据第 2 层标头进行散列处理。当用户将散列模式配置为第 2 层标头时,还会根据第 2 层标头对 IP 和 MPLS 流量进行散列处理。

您可以配置散列算法用于做出流量转发决策的一些字段。但是,无法配置散列算法如何使用标头中的某些值。

请注意有关散列算法的以下几点:

  • 为散列选择的字段仅基于数据包类型。这些字段不基于任何其他参数,包括转发决策(桥接或路由)或出口 LAG 捆绑配置(第 2 层或第 3 层)。

  • 相同的字段用于对单播和组播数据包进行散列。但是,单播和组播数据包的散列方式不同。

  • 散列算法使用相同的字段来对 ECMP 和 LAG 流量进行散列,但散列算法对 ECMP 和 LAG 流量的散列方式不同。LAG 流量使用中继散列,而 ECMP 则使用 ECMP 散列。LAG 和 ECMP 都使用相同的 RTAG7 种子,但使用该 128B 种子的不同偏移量以避免极化。HASH 函数使用中继和 ECMP 偏移的初始配置在 PFE 初始化时设置。不同的散列可确保当 LAG 捆绑包属于 ECMP 下一跃点路径时流量不会极化。

  • 无论交换机是否加入混合或非混合虚拟机箱或虚拟机箱交换矩阵 (VCF),都将使用相同的字段进行散列处理。

以下部分将讨论用于每个 EtherType 散列的字段以及第 2 层标头使用的字段。

IP(IPv4 和 IPv6)

当 IPv4 或 IPv6 数据包需要放置在 LAG 捆绑包中的成员链路上或在启用 ECMP 时发送至下一跳设备时,散列算法会使用 IPv4 和 IPv6 数据包中的有效负载字段。

默认情况下,散列模式设置为第 2 层有效负载字段。当散列模式设置为第 2 层有效负载时,IPv4 和 IPv6 有效负载字段用于散列。

如果散列模式配置为第 2 层标头,则将使用第 2 层标头字段对 IPv4、IPv6 和 MPLS 数据包进行散列处理。如果希望传入 IPv4、IPv6 和 MPLS 数据包由源 MAC 地址、目标 MAC 地址 或 EtherType 字段进行散列处理,则必须将散列模式设置为第 2 层标头。

表 1 显示了默认情况下散列算法使用的 IPv4 和 IPv6 有效负载字段。

  • ✓ - 默认情况下,哈希算法使用字段。

  • Χ—默认情况下,散列算法不使用字段。

  • (可配置) — 字段可配置为由散列算法使用或不使用。

在 EX2300 交换机上,当需要将 IPv4 或 IPv6 数据包放置在 LAG 捆绑包中的成员链路上或在启用 ECMP 时发送至下一跳设备时,散列算法会使用 IPv4 和 IPv6 数据包中的以下有效负载字段:

  • 对于 LAG - SIP、DIP、L4SP、L4DP 上的单播流量

  • 对于 LAG 上的已知组播流量 - 源 IP、目标 IP、入口 Mod ID 和入口端口 ID

  • 对于 LAG 上的广播、未知单播和未知组播流量 - 源 MAC、目标 MAC、入口 Mod ID 和入口端口 ID

  • ECMP 负载平衡:目标 IP、第 4 层源端口和第 4 层目标端口

表 1:IPv4 和 IPv6 散列字段

Fields

EX3400

EX4300

QFX5100

QFX5110 and QFX5120

QFX5200

 

LAG

ECMP

LAG

ECMP

LAG

ECMP

LAG

ECMP

LAG

ECMP

源 MAC

X

Χ

X

Χ

Χ

Χ

Χ

Χ

Χ

X

目标 MAC

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

EtherType

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

VLAN ID

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

源 IP 或 IPv6

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

目标 IP 或 IPv6

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

协议(仅限 IPv4)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

下一个报头(仅限 IPv6)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

第 4 层源端口

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

第 4 层目标端口

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

IPv6 流标签(仅限 IPv6)

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

入口 Mod ID

(可配置)

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

入口端口 ID

(可配置)

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

Χ

MPLS

散列算法使用源 IP、目标 IP、MPLS标签 0、MPLS标签 1、MPLS标签 2 和 MPLS 3 字段对数据包MPLS进行散列处理。ECMP 使用以下字段在标签交换路由器路由器上进行散列:

  • 第 3 层 VPN:MPLS 标签(前 3 个标签)、源 IP、目标 IP 和入口端口 ID

  • 第 2 层电路:MPLS 标签(前 3 个标签)和入口端口 ID

使用 功能资源管理器 确认平台和版本对特定功能的支持。

表 2 显示了默认情况下散列算法使用的 MPLS 有效负载字段:

  • ✓ - 默认情况下,哈希算法使用字段。

  • Χ—默认情况下,散列算法不使用字段。

散列算法用于 MPLS 数据包散列的字段不可由用户配置。

源 IP 和目标 IP 字段并不总是用于散列。对于未终止的 MPLS 数据包,如果数据包中出现堆栈底部 (BoS) 标志,则会检查有效负载。如果有效负载为 IPv4 或 IPv6,则 IP 源地址和 IP 目标地址字段将与 MPLS 标签一起用于散列。如果数据包中未看到 BoS 标志,则仅使用 MPLS 标签进行散列。

表 2:MPLS 散列字段

Field

EX3400

EX4300

QFX5100

QFX5110 and QFX5120

QFX5200

源 MAC

Χ

Χ

Χ

Χ

Χ

目标 MAC

Χ

Χ

Χ

Χ

Χ

EtherType

Χ

Χ

Χ

Χ

Χ

VLAN ID

Χ

Χ

Χ

Χ

Χ

源 IP

目标 IP

协议(用于 IPv4 数据包)

Χ

Χ

Χ

Χ

Χ

下一个报头(用于 IPv6 数据包)

Χ

Χ

Χ

Χ

Χ

第 4 层源端口

Χ

Χ

Χ

Χ

Χ

第 4 层目标端口

Χ

Χ

Χ

Χ

Χ

IPv6 流实验室

Χ

Χ

Χ

Χ

Χ

MPLS 标签 0

Χ

MPLS 标签 1

MPLS 标签 2

MPLS 标签 3

X

X

X

X

入口端口 ID

(标签交换路由器和 L2 电路)

X

X

X

(标签交换路由器和 L2 电路)

(标签交换路由器和 L2 电路)

MAC-in-MAC 数据包散列

散列算法会使用第 2 层有效负载源 MAC、第 2 层有效负载目标 MAC 和第 2 层有效负载 EtherType 字段对使用 MAC-in-MAC EtherType 的数据包进行散列。见 表 3.

在版本 13.2X51-D20 的 EX4300 交换机上首次支持使用 MAC-in-MAC EtherType 数据包中的字段进行散列。早期版本不支持使用 MAC-in-MAC EtherType 中的字段进行散列。

散列算法用于 MAC-in-MAC 散列的字段不可由用户配置。

  • ✓ - 默认情况下,哈希算法使用字段。

  • Χ—默认情况下,散列算法不使用字段。

表 3:MAC-in-MAC 散列字段

Field

EX3400

EX4300

QFX5100

QFX5110 and QFX5120

QFX5200

第 2 层有效负载源 MAC

第 2 层有效负载目标 MAC

第 2 层有效负载 EtherType

第 2 层有效负载外部 VLAN

Χ

Χ

Χ

Χ

2 层标头散列

当数据包的 EtherType 未被识别为 IP(IPv4 或 IPv6)、MPLS 或 MAC-in-MAC 时,散列算法会使用第 2 层标头字段。当散列模式设置为第 2 层标头时,第 2 层标头字段还用于散列 IPv4、IPv6 和 MPLS 流量,而非有效负载字段。

  • ✓ - 默认情况下,哈希算法使用字段。

  • Χ—默认情况下,散列算法不使用字段。

  • (可配置) — 字段可配置为由散列算法使用或不使用。

表 4:第 2 层标头散列字段

Field

EX3400

EX4300

QFX5100

QFX5110 and QFX5120

QFX5200

源 MAC

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

目标 MAC

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

EtherType

(可配置)

(可配置)

(可配置)

(可配置)

(可配置)

VLAN ID

Χ

(可配置)

Χ

(可配置)

Χ

(可配置)

(可配置)

(可配置)

散列参数

从 Junos OS 19.1R1 版开始,在交换机的QFX5000系列上,您可以更改已实施的现有算法的散列参数。您可以更改入口和出口缓冲区分区的共享缓冲池阈值,也可以更改散列函数选择、散列算法和其他附加参数。请参阅本文档后面的配置其他散列参数。

配置用于对 LAG 束和 ECMP 流量进行散列处理的算法中的字段

瞻博网络 EX 系列和 QFX 系列交换机使用散列算法来确定如何在启用等价多路径 (ECMP) 时通过链路聚合组 (LAG) 束转发流量或转发到下一跳设备。

使用 链路聚合组 (LAG) 捆绑包散列配置 来确认平台和版本对特定功能的支持。

散列算法根据各个数据包字段中的值做出散列决策。您可以配置散列算法使用的一些字段。

在进入捆绑包的大多数流量相似且需要在 LAG 捆绑包中管理流量的情况下,配置散列算法使用的字段非常有用。例如,如果所有传入流量的 IP 数据包的唯一区别是源 IP 地址和目标 IP 地址,则可以通过将算法配置为仅使用这些字段做出散列决策,从而调整散列算法,以更有效地做出散列决策。

配置散列算法以使用第 2 层报头中的字段进行散列

要将散列算法配置为使用第 2 层标头中的字段进行散列:

  1. 将散列模式配置为第 2 层标头:

    默认散列模式为第 2 层有效负载。因此,如果之前未配置散列模式,则必须执行此步骤。

  2. 在第 2 层标头中配置散列算法用于散列的字段:

    默认情况下,散列算法使用标头中目标 MAC 地址、Ethertype 和源 MAC 地址字段中的值对 LAG 上的流量进行散列。您可以通过配置 no-destination-mac-addressno-ether-typeno-source-mac-address来配置散列算法,使其不使用这些字段中的值。

    您还可以通过配置该 vlan-id 选项来配置散列算法,以便在标头中包含 VLAN ID 字段。

    如果您希望散列算法不使用 Ethertype 字段进行散列:

配置散列算法以使用 IP 有效负载中的字段进行散列

要将散列算法配置为使用 IP 有效负载中的字段进行散列:

  1. 散列模式配置为第 2 层有效负载:

    除非将散列模式设置为第 2 层有效负载,否则散列算法不会检查 IP 有效负载。默认散列模式为第 2 层有效负载。

  2. 配置散列算法用于散列的 IP 有效负载中的字段:

    例如,如果您希望散列算法忽略第 4 层目标端口、第 4 层源端口和协议字段,而仅根据 IPv4 源地址和目标地址对流量进行散列:

配置散列算法以使用 IPv6 有效负载中的字段进行散列

要将散列算法配置为使用 IPv6 有效负载中的字段进行散列:

  1. 散列模式配置为第 2 层有效负载:

    除非将散列模式设置为第 2 层有效负载,否则散列算法不会检查 IPv6 有效负载。默认散列模式为第 2 层有效负载。

  2. 配置散列算法用于散列的 IPv6 有效负载中的字段:

    例如,如果您希望散列算法忽略第 4 层目标端口、第 4 层源端口和“下一个报头”字段,而仅根据 IPv6 源地址和 IPv6 目标地址字段对流量进行散列:

配置其他散列参数

要为 ECMP 或 LAG 流量配置散列参数:

  1. 配置 preprocess 参数:
  2. 配置函数参数:
  3. 配置偏移量值:

示例:配置 QFX 系列交换机与聚合交换机之间的链路聚合

QFX 系列产品允许您将多个以太网链路组合到一个逻辑接口中,以实现更高的带宽和冗余。以这种方式组合在一起的端口称为链路聚合组 (LAG) 或束。可组合成 LAG 的以太网链路数量取决于您的 QFX 系列产品型号。您可以配置 LAG 将 QFX 系列产品或 EX4600 交换机连接到其他交换机,如聚合交换机、服务器或路由器。此示例介绍如何配置 LAG 以将 QFX3500、QFX3600、EX4600、QFX5100 和 QFX10002 交换机连接到聚合交换机。

要求

此示例使用以下软件和硬件组件:

  • Junos OS QFX3500 和 QFX3600 交换机使用 11.1 或更高版本,QFX5100 和 EX4600 交换机使用 Junos OS 13.2 或更高版本,QFX10002 交换机使用 Junos OS 15.1X53-D10 或更高版本。

  • 一台 QFX3500、QFX3600、EX4600、QFX5100 或 QFX10002 交换机。

概述和拓扑

在此示例中,交换机有一个包含两个 10 千兆以太网接口的 LAG。此 LAG 在端口模式中继(或接口模式中继)中配置,以便交换机和分配到它的 VLAN 可以发送和接收流量。

将以太网接口配置为 LAG 具有以下优点:

  • 如果一个物理端口因任何原因丢失(电缆拔出或交换机端口出现故障),逻辑端口将以透明方式继续在剩余物理端口上运行。

  • 可以选择配置链路聚合控制协议 (LACP) 来进行链路监控以及自动添加和删除单个链路,无需用户干预。

注意:

如果 LAG 链路的远程端是安全设备,则可能不支持 LACP,因为安全设备需要确定性配置。在这种情况下,请勿配置 LACP。除非交换机检测到以太网物理层或数据链路层内的链路故障,否则 LAG 中的所有链路将永久运行。

此示例中使用的拓扑结构由一台交换机组成,其交换机的两个 10 千兆以太网接口之间配置了一个 LAG。交换机连接到聚合交换机。

表 5 详细介绍了此配置示例中使用的拓扑。

表 5:用于在交换机和聚合交换机之间配置 LAG 的拓扑组件
主机名 基本硬件中 继端口

开关

QFX3500、QFX3600、EX4600、QFX5100 或 QFX10002 交换机

ae0可配置为中继端口,并组合以下两个接口: xe-0/0/2 xe-0/0/3

配置

在两个 10 千兆以太网接口之间配置 LAG。

程序

CLI 快速配置

要在交换机上的两个 10 千兆以太网接口之间快速配置 LAG,请复制以下命令并将其粘贴到交换机终端窗口中:

注意:

要使用增强型第 2 层软件配置 LAG(例如,在 EX4600、QFX5100 或 QFX10002 交换机上),请使用 interface-mode 语句代替 port-mode 语句。有关 ELS 的详细信息,请参阅 使用增强型第 2 层软件 CLI

分步程序

要在 QFX 系列交换机和聚合交换机之间配置 LAG:

  1. 指定要在交换机上创建的 LAG 数量:

  2. 指定 LAG 接口up需要ae0存在的链路数:

  3. 指定链路的 ae0 介质速度:

  4. 指定要包含在聚合以太网捆绑包中的成员:

  5. 为链路分配中继 ae0 的端口模式:

    注意:

    要使用增强型第 2 层软件配置 LAG(例如,在 EX4600、QFX5100 或 QFX10002 交换机上),请使用 interface-mode 语句代替 port-mode 语句。有关 ELS 的详细信息,请参阅 使用增强型第 2 层软件 CLI

  6. 将 LAG 分配给 VLAN:

  7. (可选):将 LAG 的一端指定为 LACP 的活动状态:

  8. (可选): 指定接口发送 LACP 数据包的间隔和速度:

结果

显示 QFX3500 或 QFX3600 交换机上的配置结果:

验证

要验证交换是否正常运行以及是否已创建一个 LAG,请执行以下任务:

验证是否已创建 LAG ae0.0

目的

验证交换机上是否已创建 LAG ae0.0

行动

show interfaces ae0 terse

意义

输出将确认 ae0.0 链路已开启,并显示分配给此链路的 family 和 IP 地址。

验证是否已创建 LAG ae0

目的

验证交换机上是否已创建 LAG ae0

行动

show interfaces ae0 terse

意义

输出显示 ae0.0 链路已关闭。

故障 排除

对关闭的 LAG 进行故障排除

问题

命令显示 show interfaces terse LAG 为 down

溶液

请检查以下内容:

  • 验证是否存在配置不匹配。

  • 验证所有成员端口是否均已开启。

  • 验证 LAG 是否属于家族以太网交换(第 2 层 LAG)或家族 inet(第 3 层 LAG)。

  • 验证 LAG 成员是否连接到另一端的正确 LAG。

LAG 和 ECMP 组上的弹性散列

弹性散列有助于最大程度地减少负载平衡系统中等价多路径 (ECMP) 组和 LAG 之间的流量重新映射。以下主题讨论弹性散列在链路聚合组 (LAG) 和 ECMP 组上的工作、使用和配置。

了解如何使用弹性散列将 LAG/ECMP 组中的流量重新映射降至最低

使用弹性散列可最大程度地减少负载平衡系统中 LAG/ECMP 组成员之间的流量重新映射。您可以在 LAG 和 ECMP 组中配置弹性散列。

为什么您可能想要使用弹性散列及其如何与静态散列配合使用

弹性散列与默认的静态散列算法配合使用。将成员添加到 LAG/ECMP 组或从 LAG/ECMP 组中删除时,静态散列算法可能会重新映射目标路径。借助弹性散列,如果流的路径不受 LAG/ECMP 组成员更改的影响,则重新映射流的可能性很小。当流量受到成员更改的影响时,数据包转发引擎会通过对 FlowSet 表进行重新编程来重新平衡流量。

使用 弹性散列实现负载平衡 ,以确认平台和版本对特定功能的支持。

因此,弹性散列提供了以下好处:

  • 在 LAG/ECMP 组中添加成员或删除成员时,最大限度减少 LAG/ECMP 组成员之间的流量分配不平衡。

  • 在添加新成员或从组中删除现有成员时,最大程度地减少对绑定到未受影响成员的流的影响。

在正常的基于散列的负载平衡中,仅使用静态散列算法时,流将通过数学 mod (%) 运算分配给成员。组成员数量的任何增加或减少都会导致流完全重新映射到成员 ID,如以下示例所示:

  • 成员 ID = Hash(密钥)mod(组中的成员数)

  • 例:

    • 哈希(密钥)= 10

    • 10 mod 5 = 0(为流选择 ID 为 0 的成员)

    • 10 mod 4 = 2(当成员数减少 1 时,为同一流选择 ID 为 2 的成员)

添加或删除 LAG/ECMP 组中的成员时,弹性散列可最大限度地减少目标路径的重新映射。

当流受到组中成员更改的影响时,弹性散列会通过对 FlowSet 表进行重新编程来重新平衡流。

表 6:静态散列和将成员添加到 LAG 或从 LAG 中删除时弹性散列的目标路径结果

LAG/ECMP 组大小

正常(静态)散列结果

弹性散列结果

笔记

4

哈希 (10) % 4 = 2 流分配给成员 ID 2。

根据 FlowSet 表条目将流分配给四个组成员之一。

原始 LAG/ECMP 组大小为 4。

3

哈希 (10) % 3 = 1 流被分配给成员 ID 1。

流被分配给与前一个案例中的同一成员。

从原始 LAG/ECMP 组中删除一个成员。LAG/ECMP 组大小为 3。

5

哈希 (10) % 5 = 0 流分配给成员 ID 0。

从其他成员到此新添加成员的流量重新分配最小。

将一个成员添加到原始 LAG 组。LAG/ECMP 组大小为 5。

弹性散列的限制和注意事项

请注意弹性散列功能的以下限制和注意事项:

  • 弹性散列仅适用于单播流量。

  • 弹性散列最多支持 1024 个 LAG,每个组最多有 256 个成员。

  • 弹性散列并不能保证流量在所有组成员之间均匀分布,这取决于流量模式和硬件中弹性散列 FlowSet 表的组织。在将成员添加到组或从组中删除时,弹性散列 可最大限度地减少 将流量重新映射到目标链路的情况。

  • 如果在 LAG 或 ECMP 组上启用了弹性散列,并且与以下选项之一一起使用,则 set forwarding-options enhanced-hash-key某些流量可能会更改目标链路。原因是新的哈希参数可能会为流生成新的哈希索引。

    • hash-mode
    • inet
    • inet6
    • layer2
  • VCP 链路不支持弹性散列。

LAG 上的弹性散列

LAG 将以太网接口(成员)组合在一起,形成逻辑点对点链路,从而增加带宽、提供可靠性并允许负载平衡。当从 LAG 添加或删除新成员时,弹性散列可以最大限度地减少目标重新映射行为。

LAG 上的弹性散列配置基于每个聚合以太网接口。

ECMP 上的弹性散列

路由的 ECMP 组在路由表中包含同一目标的多个下一跃点等价地址。等价路径具有相同的优先级和度量值。

Junos OS 使用静态散列算法选择要安装在转发表中的 ECMP 组中的下一跃点地址之一。在 ECMP 组中添加或删除新成员时,弹性散列可以最大程度地减少目标重新映射行为,从而增强 ECMP。

ECMP 上的弹性散列配置是全局的,它适用于所有 ECMP 组。

为 LAG/ECMP 组配置弹性散列

使用弹性散列可最大程度地减少负载平衡系统中 LAG/ECMP 组成员之间的流量重新映射。您可以在 LAG 和 ECMP 集中配置弹性散列。

.

本主题包括:

在 LAG 上配置弹性散列

要为 LAG 启用弹性散列:

  • 在聚合以太网接口上配置弹性散列:
  • (可选)为弹性散列种子配置特定值。此值仅适用于 HASH2 引擎:

在 ECMP 组上配置弹性散列

要为 ECMP 组启用弹性散列:

ECMP 配置弹性散列:

添加或移除弹性散列后,将重新编程给定流量的 ECMP 组所有成员之间的流量分布,因此,某些流量可能会重新映射到新的 ECMP 组成员。

使用弹性散列技术将流量重新映射降至最低

在网络端点之间的部署中,有必要保留已建立的连接以及关联的第 2 层和第 3 层路径。如果网络发生任何变化,例如网络设备或服务器发生故障,数据包将采用新的路径。

弹性散列可减少网络更改带来的影响。每个具有弹性散列的 ECMP 都会在负载均衡表(也称为宏流表)中分配一个 256 个条目的区域。表中的每个条目都存储分配给该宏流的成员链路 ID。

弹性散列的工作原理如下所述:

  • 将传入数据包散列到这些宏流条目或存储桶之一。

  • 然后,将数据包链接到 ECMP 组中的路径。

如果我们使用“篮子”来表示每个成员链路/路径,则弹性哈希作可以建模为将桶(宏流)放入其中一个篮子中。

如果 ECMP 组有 N 个存储桶和 P 路径,请使用以下顺序:

  1. 初始存储桶映射是使用轮询方法生成的。因此,所有存储桶在 ECMP 组成员之间的分布几乎相等 (N/P)。稍后,存储桶会根据路径添加或删除事件移动。

    如果 N=64 个存储桶,P=4 个路径,则以轮询方式分配所有 64 个存储桶。由于您有 4 条路径,因此有 4 个堆栈。每个堆栈对应一个路径。每个堆栈具有相同数量的存储桶,N/P=16。

    Last_processed_path= 0(参考算法的步骤 5)。

  2. 如果发生路径故障或移除,您会突然从故障路径/堆栈中移除所有存储桶,并以循环循环方式将它们推送到剩余的路径/堆栈中。

    如果删除路径 3(上图中的堆栈 3),则需要将堆栈 3(下图中的橙色)中的所有存储桶移动到剩余的堆栈中。

  3. 如果添加了路径,您突然以循环轮询的方式从现有路径中删除 N/(P+1) 存储桶,并将它们推送到新添加的路径/堆栈中。

    如果添加新路径,则需要从现有堆栈(堆栈 0、1、2)中移动 N/P+1=64/4=16 个桶。所有橙色的桶现在都回到了堆栈 3,蓝色的堆栈没有移动并且完好无损。

    Last_processed_path= 0

  4. 步骤 2 和步骤 3 的圆形轮询方向相反。确定循环轮询开始的第一个堆栈非常重要。保留一个索引指针 last_processed_path ,该指针提供步骤 2 的起始堆栈索引和步骤 3 的开始堆栈之前的索引。

  5. 5. 要设置 last_processed_path,请执行以下作:

    • 当您推送存储桶时,如步骤 2 中所示, last_processed_path 是您推送最后一个存储桶的最后一个堆栈的下一个堆栈。

    • 当您删除存储桶时,如步骤 3 中所示, last_processed_path 是删除存储桶的最后一个堆栈。

弹性散列的限制和注意事项

  • 只有基于等价 BGP 路由的 ECMP 组才支持弹性散列。如果配置优先级高于 BGP 路由的其他协议或静态路由,则不支持弹性散列。

  • 混合速度 LAG 不支持弹性散列。

  • 当前设计不支持 128 路 ECMP 弹性散列。仅支持 64 路 ECMP 弹性散列。

  • 当前的弹性散列设计不支持混合速率聚合以太网 (AE) 和自适应负载平衡 (ALB) AE。

为 ECMP 配置弹性散列

  1. 为选定的 ECMP 路由启用弹性散列。创建单独的路由策略,以便将传入路由与一个或多个目标前缀进行匹配。请参阅 在路由策略中配置默认作
  2. 在 BGP 配置层次结构的所需级别(全局、组或对等)应用策略:
    注意:对等级 import 或 export 语句将覆盖组 import 或 export 语句。组级导入或导出语句将覆盖全局 BGP 导入或导出语句。关键一点是,在如上所示的配置中,仅应用最显式的策略。邻接方级别策略比组级别策略更明确,组级别策略比全局策略更明确。(尽管出于说明目的,上述示例中的每个级别都应用了相同的策略,但结果不受影响。

    如果您需要邻接方来执行所有三个策略的功能,请执行以下任一作:

    • 您可以编写并应用包含其他三个功能的新邻居级策略。

    • 您可以将所有三个现有策略作为一个链应用到此邻接方。

  3. [可选] 选择散列密钥计算中使用的数据包字段。以下示例来自 PTX10001-36MR 22.2R1.12-Junos OS Evolved:

    使用以下命令选择数据包字段:

    1. user@router# set forwarding-options enhanced-hash-key family family

      在这里,家庭可以采用 inetinet6mplsmultiservice 值。

    2. user@router# set forwarding-options enhanced-hash-key hash-seed

    3. user@router# set forwarding-options enhanced-hash-key resilient-hash-seed

    注意:

    默认情况下,大多数字段都启用了负载平衡。如果在 forwarding-options enhanced-hash-key family 下配置任何配置,则会影响弹性散列密钥以及常规 LAG 和 ECMP 负载平衡密钥生成。

为聚合以太网接口配置弹性散列

使用以下命令进行配置:
user@router# set interface ae1 aggregated-ehter-options resilient-hash

变更历史表

是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。

释放
描述
19.1R1
在交换机的QFX5000线上,可以更改已实施的现有算法的散列参数。