弹性哈希有助于在负载平衡系统中最小化跨等价多路径(ECMP)组和LAG的流重映射。以下主题讨论了链路聚合组(LAG)和ECMP组上弹性哈希的工作原理、使用和配置。
您可以使用弹性哈希来最小化负载平衡系统中LAG/ECMP组成员之间的流重映射。您可以在链路聚合组(LAG)和等价多路径(ECMP)组中配置弹性哈希。
◼ 为什么您可能想要使用弹性哈希以及它如何与静态哈希一起工作
◼ 弹性哈希的限制和注意事项
◼ LAG 上的弹性哈希
◼ ECMP 上的弹性哈希
弹性哈希与默认的静态哈希算法结合使用。在 LAG/ECMP 组中添加或删除成员时,静态哈希算法可能会重新映射目标路径。使用弹性哈希,如果流的路径不受 LAG/ECMP 组成员更改的影响,则流被重新映射的可能性很小。当流受到成员更改的影响时,数据包转发引擎通过重新编程流表来重新平衡流。
因此,弹性哈希提供了以下好处:
◼ 当成员添加到组或从组中删除时,最大限度地减少 LAG/ECMP 组成员之间的流量分配不均衡。
◼ 当添加新成员或从组中删除现有成员时,将对绑定到未受影响成员的流的影响降至最低。
在普通的基于哈希的负载均衡中,单独使用静态哈希算法,通过数学 mod (%) 运算将流分配给成员。组成员数量的任何增加或减少都会导致流完全重新映射到成员 ID,如以下示例所示:
◼ Member ID = Hash (key) mod (组内成员数)
◼ 例子:
✸ Hash (key) = 10
✸ 10 mod 5 = 0(选择ID为0的成员进行流向)
✸ 10 mod 4 = 2(成员数减1时,同流选择ID为2的成员)
当添加或删除 LAG/ECMP 组中的成员时,弹性哈希最小化目标路径重新映射。
当流受到组中成员变化的影响时,弹性哈希通过重新编程流表来重新平衡流。
表 1:在 LAG 中添加或删除成员时静态哈希和弹性哈希的目标路径结果
LAG/ECMP 组大小 | 正常(静态)哈希结果 | 弹性哈希结果 | 笔记 |
---|---|---|---|
4个 | Hash(10) % 4 = 2,流分配给成员 ID 2。 | 基于流表条目将流分配给四个组成员之一。 | 原始 LAG/ECMP 组大小为 4。 |
3个 | Hash(10) % 3 = 1流分配给成员 ID 1。 | 流被分配给与前一种情况相同的成员。 | 从原始 LAG/ECMP 组中删除一个成员。LAG/ECMP 组大小为 3。 |
5个 | Hash(10) % 5 = 0流分配给成员 ID 0。 | 从其他成员到这个新添加的成员的流量重新分配最少。 | 将一名成员添加到原始 LAG 组。LAG/ECMP 组大小为 5。 |
请注意弹性哈希功能的以下限制和注意事项:
◼ 弹性哈希仅适用于单播流量。
◼ 弹性哈希最多支持 1024 个 LAG,每个组最多有 256 个成员。
◼ 弹性哈希并不能保证流量在所有组成员之间均匀分布——它取决于流量模式和硬件中弹性哈希流表的组织。当成员添加到组或从组中删除时,弹性哈希 最小化流到目标链接的重新映射。
◼ 如果在LAG或ECMP组上启用了弹性哈希,并且如果使用了带有 set forwarding-options enhanced-hash-key
选项的哈希模式、inet、inet6或layer2之一的设置,则某些流可能会更改目标链接,因为新的哈希参数可能会为流生成新的哈希索引,从而生成新的目标链接。
◼ 虚拟机箱端口 (VCP,Virtual Chassis port) 链路不支持弹性哈希。
◼ QFX5200 和 QFX5210 交换机不支持基于 LAG 的弹性哈希。这些交换机支持基于 ECMP 的弹性哈希。
LAG 组合以太网接口(成员)以形成逻辑点对点链路,从而增加带宽、提供可靠性并允许负载平衡。在 LAG 中添加或删除新成员时,弹性哈希可最大限度地减少目标重新映射行为。
LAG 上的弹性哈希配置是基于每个聚合以太网接口的。
路由的 ECMP 组包含路由表中相同目的地的多个下一跳等价地址。(等价路由具有相同的偏好和度量值。)
Junos OS 使用静态哈希算法选择 ECMP 组中的一个下一跳地址安装在转发表中。弹性哈希通过在 ECMP 组中添加或删除新成员时最小化目标重新映射行为来增强 ECMP。
ECMP 上的弹性哈希配置是全局的——它适用于所有 ECMP 组。
您使用弹性哈希来最小化负载均衡系统中 LAG/ECMP 组成员之间的流量重新映射。您可以在链路聚合组 (LAG) 和等价多路径 (ECMP) 集中配置弹性哈希。
本主题包括:
◼ 在 LAG 上配置弹性哈希
◼ 在 ECMP 组上配置弹性哈希
注意:QFX5200 和 QFX5210 交换机不支持基于 LAG 的弹性哈希。这些交换机支持基于 ECMP 的弹性哈希。
要为 LAG 启用弹性哈希:
◼ 在聚合以太网接口上配置弹性哈希:
[edit interfaces]
user@switch# set aex aggregated-ether-options resilient-hash
◼ (可选)为弹性哈希种子配置特定值。该值将仅适用于 HASH2 引擎:
[edit]
user@switch# set forwarding-options enhanced-hash-key resilient-hash-seed seed-value
为 ECMP 组启用弹性哈希:
◼ 为 ECMP 配置弹性哈希:
[edit forwarding-options]
user@switch# set enhanced-hash-key ecmp-resilient-hash
注意:当添加或删除弹性哈希时,给定流在 ECMP 组所有成员之间的流量分布将重新编程,因此,某些流可能会重新映射到新的 ECMP 组成员。
参考资料
声明:本文素材来源于网络,仅供学习使用,如有侵权请联系网站删除(ngdcn_admin@163.com)。
有话要说...