Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用弹性哈希来最大程度地减少流重新映射

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

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

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

  • 将传入数据包散列到其中一个宏流条目或存储桶。

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

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

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

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

    如果 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 配置层次结构的所需级别(全局、组或对等方)应用策略:
    注意:对等级导入或导出语句覆盖组导入或导出语句。组级导入或导出语句将覆盖全局 BGP 导入或导出语句。关键点是,在上面显示的配置中,仅应用最明确的策略。邻居级策略比组级策略更明确,组级策略比全局策略更明确。(尽管出于说明目的,在上述示例中的每个级别应用了相同的策略,但结果不受影响。

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

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

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

  3. [可选] 选择哈希键计算中使用的数据包字段。以下示例来自 PTX10001-36MR 22.2R1.12-Junos OS 演化版:

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

    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

    注意:

    默认情况下,大多数字段都启用了负载平衡。如果在转发选项增强型哈希密钥家族下配置任何内容,则它会影响弹性哈希密钥以及常规 LAG 和 ECMP 负载平衡密钥生成。

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

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