在 LAG 和 ECMP 组上进行弹性散列
弹性散列有助于最大程度地减少负载平衡系统中等价多路径 (ECMP) 组和 LAG 的流重新映射。以下主题讨论了在链路聚合组 (LAG) 和 ECMP 组上进行弹性散列的工作、使用和配置。
了解如何使用弹性散列来最大限度地减少 LAG/ECMP 组中的流重新映射
您可以使用弹性散列来最大程度地减少负载平衡系统中 LAG/ECMP 组成员之间的流重新映射。您可以在链路聚合组 (LAG) 和等价多路径 (ECMP) 组中配置弹性散列。
为什么您可能希望使用弹性散列及其与静态散列的工作原理
弹性散列与默认静态散列算法协同工作。将成员添加到 LAG/ECMP 组或从中删除成员时,静态散列算法可能会重新映射目标路径。借助弹性散列,如果流的路径不受 LAG/ECMP 组成员更改受到影响,则流被重新处理的机会将降至最低。当流受成员更改的影响时,数据包转发引擎通过重新编程流集表来重新平衡流。
因此,弹性散列具有以下优势:
将成员添加到组中或从组中删除时,最大限度地减少 LAG/ECMP 组成员之间的流量分布不平衡。
最大程度地减少添加新成员或从组中删除现有成员时对绑定到未受影响的成员的流的影响。
在正常基于哈希的负载平衡中,通过单独使用的静态散列算法,流通过数学模 (%) 操作分配给成员。组成员数量的任何增加或减少都会导致流完全重新映射到成员 ID,如以下示例所示:
成员 ID = 哈希(密钥)模(组中的成员数)
例子:
散列(密钥)= 10
10 mod 5 = 0(流选择 ID 为 0 的成员)
10 mod 4 = 2(当成员数减少 1 时,为同一流选择 ID 为 2 的成员)
弹性散列可以最大限度地减少 LAG/ECMP 组中的成员添加或删除时的目标路径重新映射。
当流受组中成员更改的影响时,弹性散列通过重新编程流集表来重新平衡流。
LAG/ECMP 组大小 |
正常(静态)散列结果 |
弹性散列结果 |
笔记 |
---|---|---|---|
4 |
哈希 (10) % 4 = 2 流被分配给成员 ID 2。 |
流会根据流集表条目分配给四个组成员之一。 |
原始 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 个成员。
-
弹性散列并不保证流量分布甚至跨所有组成员— 它取决于流量模式以及硬件中弹性散列流集表的组织。弹性散列 可以最大限度地减少 将成员添加到组或从组中删除成员时流到目标链路的重新映射。
-
如果在 LAG 或 ECMP 组上启用了弹性散列,并且
set forwarding-options enhanced-hash-key
使用了其中一个选项hash-mode
、inet
、inet6
或layer2
使用了,则某些流可能会更改目标链路,因为新的散列参数可能会为流生成新的散列索引,进而生成新的目标链路。 -
虚拟机箱端口 (VCP) 链路不支持弹性散列。
-
QFX5200 和 QFX5210 交换机不支持基于 LAG 的弹性散列。这些交换机支持基于 ECMP 的弹性散列。
对 LAG 进行弹性散列
LAG 将以太网接口(成员)组合在一起,形成逻辑点对点链路,从而增加带宽、提供可靠性并支持负载平衡。弹性散列可以最大程度地减少在 LAG 中添加或删除新成员时的目标重新映射行为。
LAG 上的弹性散列配置基于每个聚合以太网接口。
ECMP 上的弹性散列
路由的 ECMP 组在路由表中包含同一目标的多个下一跃点等价地址。(等价路由具有相同的优先级和指标值。)
Junos OS 使用静态散列算法选择 ECMP 组中要安装在转发表中的下一跃点地址。弹性散列可通过最大程度地减少从 ECMP 组添加或删除新成员时的目标重新映射行为来增强 ECMP。
ECMP 上的弹性散列配置是全局的 — 它适用于所有 ECMP 组。
为 LAG/ECMP 组配置弹性散列
您可以使用弹性散列来最大程度地减少负载平衡系统中 LAG/ECMP 组成员之间的流重新映射。您可以在链路聚合组 (LAG) 和等价多路径 (ECMP) 集中配置弹性散列。
本主题包括:
在 LAG 上配置弹性散列
QFX5200 和 QFX5210 交换机不支持基于 LAG 的弹性散列。这些交换机支持基于 ECMP 的弹性散列。
要为 LAG 实现弹性散列:
在 ECMP 组上配置弹性散列
要为 ECMP 组启用弹性散列:
[edit forwarding-options] user@switch# set enhanced-hash-key ecmp-resilient-hash
添加或删除弹性散列后,将会重新编程给定流的 ECMP 组所有成员之间的流量分布,因此,某些流可能会重新扩展到新的 ECMP 组成员。