假设我们有下面的拓扑。R1代表Router1,R2代表Router2,R3代表Router3,R4代表Router4。
Src表示源服务器。
Dest表示目的地。
从源服务器到目的地有3条不同的路径。
R1--R2--R4是path1,R1--R4是path2,R1--R3--R4是path3。
假设,所有这些都是相同的成本路径。BGP作为路由协议正在运行,并且启用了BGP的最大路径。
因此,我们将有从R1到R4的所有3条路径。更准确地说,R1将将所有3条路径安装在路由表中,以到达R4。
假设有一个应用程序(它使用TCP)在Src上运行,在第6811端口上运行,并且在30分钟内对端口号53上的目的地执行事务。
因此,根据源IP、目标IP、源端口、目标端口和协议计算散列,得到一个唯一的散列值,这将是一个TCP流。
我相信在上面提到的三个不同的路径中,只有一个路径将被使用(即使我们启用了BGP ECMP )。其余的2条路径将被使用,因为哈希值在这30分钟内保持不变。
以上的理解是否正确?
问题2:假设有另一个应用程序(它使用TCP)在Src上运行,在端口编号6812上运行,并在10分钟内对端口号64上的目的地执行事务。(注:与问题1方案相比,源端口和目标端口已经更改)。因此,基于源IP、目标IP、源端口、目标端口和协议来计算散列。我们将得到一个唯一的哈希值,这将是一个不同的TCP流。这个哈希值肯定不同于在Question1中计算的哈希值。
我相信在上面提到的三个不同的路径中,只有一个路径将被使用(即使我们启用了BGP ECMP )。其余的2条路径将被使用,因为哈希值在这10分钟内保持不变。
以上的理解是否正确?

发布于 2018-12-30 13:59:07
是的,在这两个问题上你都是对的。为了使它更简单: ECMP及其散列算法在每个流中选择一个路径。因此,单个流总是使用相同的路径*。
虽然ECMP的总带宽是所有链路的总和,但单个流不能超过单个链路的带宽。
*每包ECMP在某些情况下是可用的,但几乎从未在实际网络中使用过。
https://networkengineering.stackexchange.com/questions/55745
复制相似问题