网络协议学习:等价多路径路由ECMP

简介

在计算机网络中,很多时候通信的源和目的存在多条已知路径。例如在数据中心网络中,需要有大量的带宽资源,且网络拓扑已知,利用这种特性可以采用ECMP(Equal-cost multi-path, 等价多路径路由)来进行负载均衡。
ECMP是指,到达一个目的地有多条相同度量值的路由项(路由路径),这样就可以使用不超过3条这样的路径来转发流量。ECMP最大的特点是实现了等值情况下,多路径负载均衡链路备份的目的,在静态路由OSPF中基本上都支持ECMP功能。

ECMP

在这里插入图片描述
传统的路由协议都是采用单路径路由的方式,简单地认为,从源到目的,所有的包都通过一条路径转发(如果某条最优路径出现了问题,再考虑下一条最优路径),其它链路处于备份状态或无效状态,并且在动态路由环境下相互的切换需要一定时间。
例如在上面这张图片的拓扑结构中,从source到Destination,是有两条路径可走的且代价相同。在正常情况下,SW1会选择随意的一跳链路进行转发,例如选择SW1、SW2、SW5这条路径,那么每次都会走转发表的这一项,通过这条链路进行报文传输。
这样存在两个问题:

  • 如果占用的带宽比较高,所有流量都在上面的链路上进行传输,而下面的链路一直闲着,显然不合理
  • 容易导致上面这条链路负担过重,直至难以承担

因此,在这里也可以采取一种方式,对于不同的报文,选择不同的路径进行报文传输。

可以选择的负载均衡策略:

  • 基于流负载分担
    路由器根据IP报文的五元组信息(是指源IP地址,源端口,目的IP地址,目的端口,和传输层协议这五个量组成的一个集合。 例如:192.168.1.1 10000 TCP 121.14.88.76 80 就构成了一个五元组)将数据分成不同的流。具有相同五元组信息的IP报文属于同一个流。
  • 基于包负载分担
    转发数据时,路由器把数据包从多个路径上依次发送出去。但是,Internet应用都是基于流的,如果路由器采用基于包的负载分担,一条流中的数据包会经过不同路径到达目的地,可能会造成接收方的乱序接收,从而影响应用程序的正常运行。
  • 基于带宽的非平衡负载分担
    报文按接口物理带宽进行负载分担(即基于报文的负载分担)。当用户为接口配置了指定的负载带宽后,设备将按用户指定的接口带宽进行负载分担,即根据各接口物理带宽比例关系进行分配。

优点

正如上面讨论的,采用ECMP可以可同时利用多条路径,进行基于流的负载均衡。防止局部网络链路过于拥塞,而部分网络链路相对空闲。
在网络环境下同时使用多条链路,不仅增加了传输带宽,并且可以无时延无丢包地备份失效链路的数据传输。
负载均衡也可以有效地提高网络的利用率,灵活的选择自己的网络链路。进一步地,可以通过探测各路径的状况(比如丢包率)猜测网络的拥塞程度,据此调整对各路径的使用,从而在得到优质服务的同时也提高了网络的利用率。

缺点

  • 虽然可以提高网络利用率,但是也可能增加链路的拥塞
    ECMP并没有拥塞感知的机制,只是将流分散到不同的路径上转发,可能加剧链路的拥塞
  • 非对称网络使用效果不好
    从定义也能够看出,多条相同度量值的路由项适用ECMP。但是很多实际情况下,也可以选择其他的更加灵活的链路,才是合理的
  • 基于流的负载均衡效果不好
    例如,假如在之前的拓扑中,再加一个Source2,Source1流量为100,Source2流量为10,不管Source1的流量走哪个链路,都会拥塞

参考

数据中心内负载均衡-ECMP的使用分析
ecmp理论的初步认识(持续更新)
浅析ECMP等价路由
多路径路由算法选择(1)——ECMP、WCMP
交换机的三种转发模式

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ECMP (Equal Cost Multi-Path) 是一种路由算法,它可以在有多条等价路径的情况下均衡数据流量。Round-robin 是一种负载均衡策略,它会依次将流量发送到不同的路径上。在 Linux 中,可以通过设置路由表来实现 ECMP + round-robin 模式。 ### 回答2: ECMP等价多路径路由)是一种路由选择算法,在Linux中,ECMP支持多条等价的路径通过不同的出口进行负载均衡和流量分配。而ECMP Round-Robin模式是ECMP的一种具体实现,其工作原理是按照循环轮询的方式将流量依次分发到不同的路径上。 ECMP Round-Robin模式的步骤如下: 1. 首先,根据数据包头部的目的IP地址进行筛选,将符合条件的数据包匹配到多条等价路径中。 2. 在选中的等价路径中,通过循环轮询的方式,将数据包依次转发到每条路径上。每条路径都承担着一定的负载量,以实现流量的均衡分布。 3. 当数据包到达目的地时,ECMP Round-Robin模式会将对应路径的计数器加一,以记录该路径的流量量。 4. 下一次有数据包来临时,ECMP Round-Robin会根据路径的计数器值来选择下一条转发路径,从而保证每条路径都能得到相同的流量。 ECMP Round-Robin模式的优点是能够有效地利用多条等价路径,实现流量的负载均衡。此外,ECMP Round-Robin模式的实现较为简单,在多个路径之间切换时,不需要复杂的计算和决策过程。 需要注意的是,ECMP Round-Robin模式并不能保证路径之间的负载量完全相同,因为在实际网络中,不同的路径可能会遇到不同的拥塞程度或延迟情况。另外,ECMP Round-Robin模式只适用于无连接的IP数据包转发,而对于有连接的协议(如TCP),可能需要其他机制来保证连接的连续性。 综上所述,ECMP Round-Robin模式是一种简单有效的负载均衡算法,适用于Linux系统中多条等价路径的流量分配和均衡。 ### 回答3: ECMP(Equal Cost Multipath)是一种路由选择算法,用于在网络中选择多个等价路径中的一个进行数据传输。在Linux中,ECMP支持轮询(round-robin)模式,将传入的数据流量均匀地分配到具有相同的最佳路由的多个路径上。 ECMP的轮询模式通过在每个数据包上设置不同的路由标识符来实现。当数据包到达Linux系统时,内核根据路由表中的目标地址和路由标识符来确定正确的路径。在轮询模式下,内核会按照预先定义的顺序将不同的标识符分配给不同的路径。这样,每个路径都会负责处理一部分数据包,实现了负载均衡的效果。 ECMP的轮询模式具有以下优点: 1. 增加带宽利用率:通过将流量分散到多个路径上,可以更好地利用可用带宽,提高网络的整体吞吐量。 2. 提高可靠性:因为数据流量被分散到多条路径上,即使某条路径出现故障,其他路径仍可继续传输数据,从而提高了网络的可用性。 3. 平衡负载:轮询模式可以使数据包均匀地分布在不同的路径上,避免单个路径负载过重,从而提高系统的性能。 ECMP轮询模式的实现可以采用多种方法,如源地址、目标地址、源端口、目标端口等来确定路由标识符。根据具体的应用需求,可以选择不同的标识符分配方法来实现定制化的负载均衡策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值