在此页面上
用于 ECMP 负载平衡的自定义哈希字段选择
概述:自定义哈希功能
借助 Contrail 网络,您可以配置在等价多路径 (ECMP) 负载平衡期间用于哈希处理的字段集。
借助自定义散列功能,用户可以配置在一组符合条件的 ECMP 候选项中选择转发路径时要散列的确切字段子集。
可以通过以下方式应用自定义哈希配置:
全球
每个虚拟网络 (VN)
每个虚拟网络接口 (VMI)
VMI 配置优先于 VN 配置,VN 配置优先于全局级别配置(如果存在)。
每当源自特定源并寻址到特定目标的数据包在传输过程中必须通过同一组服务实例时,自定义哈希非常有用。如果源节点、目标节点或中转节点基于流维护特定状态,并且状态行为也可用于同一对源地址和目标地址之间的后续新流,则可能需要这样做。在这种情况下,后续流必须遵循同一组服务节点,后跟初始流。
您可以使用 Contrail Web UI 在 ECMP 哈希字段部分的“配置>网络>创建网络”窗口中标识网络中要对其进行哈希处理的特定字段,如下图所示。

如果为虚拟网络配置了散列字段,则在 vRouter 通过 ECMP 路径转发期间,发往该 VN 的所有流量都将受到自定义散列字段选择的约束。这可能并非在所有情况下都是可取的,因为它可能会通过 IP 交换矩阵中的一小部分路径将所有流量倾斜到目标网络。
更实际的方案是,源和目标之间的流量必须经过两者之间的同一服务实例,其中可以为服务实例的虚拟机接口配置自定义的 ECMP 字段。然后,源自该虚拟机接口的每个服务链路由都将应用所需的 ECMP 字段选择作为其路径属性,并最终传播到入口 vRouter 节点。请参阅以下示例。

使用 ECMP 哈希字段选择
自定义哈希字段选择在目标存在多个 ECMP 路径的情况下最有用。通常,多个 ECMP 路径指向入口服务实例节点,这些节点可以在 Contrail 云中的任何位置运行。
通过服务链配置 ECMP 哈希字段
使用以下步骤通过服务链上的 ECMP 创建自定义哈希字段。
创建使用服务链和 ECMP 负载平衡进行互连所需的虚拟网络。
创建服务模板并启用缩放。
创建服务实例,然后使用服务模板通过选择以下内容进行配置:
所需的横向扩展实例数
要连接的左右虚拟网络
共享地址空间,以确保实例化服务分别为左和右提供相同的 IP 地址
此配置在转发期间在所有这些服务实例中启用 ECMP。
创建策略,然后选择之前创建的服务实例,并将策略应用于所需的 VMI 或 VN。
实例化服务虚拟机后,左右接口的端口可用于进一步配置。在“网络”下的“Contrail Web UI 端口”部分,选择服务实例左侧接口(虚拟机接口)上的端口,然后应用所需的 ECMP 哈希字段配置。
注意:目前,必须通过使用网络下的端口 (VMI) 部分并为每个实例化服务实例的 VMI 显式配置 ECMP 字段选择来应用服务实例左侧或右侧接口的 ECMP 字段选择配置。必须对组的所有服务接口执行此操作,以确保最终结果符合预期,因为只有最佳路径的负载均衡属性才会传递到入口 vRouter。如果未配置负载均衡属性,则即使其他路径具有该配置,也不会将其传播到入口 vRouter。
配置完成后,虚拟路由器将使用路由表进行编程,其中包含到各种服务实例的 ECMP 路径。虚拟路由器还使用所需的 ECMP 哈希字段进行编程,以便在流量负载平衡期间使用。