关于 ECMP 散列

网络工程 BGP ecmp
2022-02-12 14:30:53

假设我们有以下拓扑。 R1代表Router1,R2代表Router2,R3代表Router3,代表Router4 R4

Src代表源服务器。

Dest代表目的地。

从源服务器到目的地有 3 条不同的路径。

R1--R2--R4是路径1, R1--R4是路径2, R1--R3--R4是路径3。

假设,所有这些都是等成本路径BGP 作为路由协议运行,并且为 BGP 启用了最大路径。

因此,我们将拥有从 R1 到 R4 的所有 3 条路径。更准确地说,R1 将在路由表中安装所有 3 条路径,以到达 R4。

问题1:

假设有一个应用程序(它使用 TCP)Src在端口号 6811 上运行,并在端口号 53 上执行到目标的事务 30 分钟。

因此,根据源 IP、目标 IP、源端口、目标端口和协议计算哈希,我们将得到一个唯一的哈希值,这将是一个 TCP 流。

我相信在上面提到的 3 条不同的路径中,只有 1 条路径会被使用(即使我们启用了 BGP ECMP)。其余 2 条路径将不会使用,因为这 30 分钟内哈希值保持不变。

上述理解正确吗?

问题 2: 假设有另一个应用程序(使用 TCP)Src在端口号 6812 上运行,并在端口号 64 上执行到目标的事务 10 分钟。(注:源端口和目的端口与问题 1 的情况相比发生了变化)。因此根据源 IP、目标 IP、源端口、目标端口和协议计算哈希。我们会得到一个唯一的哈希值,这将是一个不同的 TCP 流。这个哈希值肯定会和 Question1 中计算的不同。

我相信在上面提到的 3 条不同的路径中,只有 1 条路径会被使用(即使我们启用了 BGP ECMP)。其余 2 条路径将不会使用,因为这 10 分钟内哈希值保持不变。

上述理解正确吗?

在此处输入图像描述

1个回答

是的,你在这两个问题上都是正确的。为了简单起见:ECMP 及其散列算法为每个流选择一个路径。因此,单个流将始终使用相同的路径 *.

虽然 ECMP 的总带宽是所有链路的总和,但单个流不能超过单个链路的带宽。

* Per-packet ECMP 在某些场景下可用,但在实际网络中几乎从未使用过。