简介

在计算机网络中,很多时候通信的源和目的存在多条已知路径。例如在数据中心网络中,需要有大量的带宽资源,且网络拓扑已知,利用这种特性可以采用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
交换机的三种转发模式

网络协议学习:等价多路径路由ECMP相关推荐

  1. PHP与ECMP,ECMP等价多路径路由(与PCC区别)

    ECMP-"Equal-Cost Multi-Path Routing"即等价多路径路由是三层路由标准协议,在华为.H3C和思科等路由器中ECMP路由配置是很常见的静态路由负载均衡 ...

  2. 网络协议学习笔记-IGMP协议

     网络协议学习笔记-IGMP协议 http://hi.baidu.com/clxye/item/3db870336d86c0c11a969614 IGMP协议(Internet Group Man ...

  3. 网络协议学习之Ethernet II协议(二层)

    网络协议学习之Ethernet II协议 简介 一.协议 1.协议结构 二.抓包分析 总结 简介 Ethernet II协议位于五层OSI模型中的第二层,属于链路层的协议. 一.协议 1.协议结构 前 ...

  4. 网络协议学习:通用路由封装协议GRE

    隧道技术 Tunneling 网络隧道技术(Tunneling)指的是利用一种网络协议来传输另一种网络协议,它主要利用网络隧道协议来实现这种功能. 简单来说,使用隧道技术可以理解为,在一些网络链路中使 ...

  5. linux内核等价多路径路由,高级路由 - 我是*李世民*的个人空间 - OSCHINA - 中文开源技术交流社区...

    策略路由背后的概念 Linux内核在默认情况下使用两张路由表:一张表用于本地路由,另一张可以由管理员来配置.如果内核编译支持策略路由,那么可以有多大255张不同的.相互独立的路由表.策略路由背后的主要 ...

  6. 网络协议学习笔记 · 22

    IPv6 · 流媒体 · 即时通讯 · 缓存 · 网络爬虫 VPN 作用 VPN与代理的区别 实现原理(隧道协议) 网络爬虫 简易实例 robots.txt 无线网络 缓存(Cache) 响应头 请求 ...

  7. [趣谈网络协议学习] 08 世界这么大,我想出网关:欧洲十国游与玄奘西行

    MAC头与IP头 MAC头 目标 MAC 地址 源 MAC 地址 协议类型:说明里面是 IP 协议 IP头 详情可参见 IP数据报格式详解 版本号:占用4位二进制数,表示该IP数据报使用的IP协议版本 ...

  8. java的网络协议学习_协议简史:如何学习网络协议?

    大学时,学到网络协议的7层模型时,老师教了大家一个顺口溜:物数网传会表应.并说这是重点,年年必考,5分的题目摆在这里,你们爱背不背. 考试的时候,果然遇到这个问题,搜索枯肠,只能想到这7个字的第一个字 ...

  9. [趣谈网络协议学习] 03 DHCP与PXE:IP是怎么来的, 又是怎么没的?

    如何配置 IP 地址? 在linux中可以使用ifconfig, 也可以使用ip addr. 设置好了以后, 用这两个命令, 将网卡 up 一·下, 就可以开始工作了. 使用 net-tools: s ...

最新文章

  1. 三列浮动中间列宽度自适应
  2. 卡通渲染进阶 = toonlighting + outline + rimlighting + hair specular
  3. Matplotlib学习---用matplotlib画误差线(errorbar)
  4. 微服务与SpringCloud
  5. 华为HarmonyOS 2.0全面升级,构建中国软件的“根”!
  6. 小心!!,使用缓存的陷阱
  7. matplotlib—matplotlib绘图中出现□的解决办法
  8. RSS文件的基本格式
  9. 光栅透过率计算 (Matlab)
  10. 指定条件查找计算机,利用excel数组函数完成“根据给定条件查找匹配数据”-excel技巧-电脑技巧收藏家...
  11. 国家地表水水质自动监测站坐标每四小时数据(共1952个监测站,含省份、城市、河流、流域、断面名称、监测时间、水温、pH、DO、CODMn、TP、TN、NH3-N、浊度等)
  12. Mac OS X:单用户模式(Single User Mode)的操作和安全漏洞
  13. ProSpec Persephin小鼠重组体解决方案
  14. 【web前端初级课程】第二章 CSS层叠样式表
  15. AlgLib 使用----稀里糊涂
  16. Android 获取摄像头像素,个数
  17. u盘中Trojan.Generic病毒
  18. 无人机配聚合路由器提供应急网络保障
  19. 与美国移民局合作,微软和亚马逊遭员工组团抗议
  20. 日程信息管理系统设计与实现C 语言论文,C课设个人日程学习管理系统.docx

热门文章

  1. C++ 教学:从入门 到 入坟[7]
  2. 英国G5生物医学类专业IB成绩要求多高?
  3. 【教程】老主板可以用上Nvme协议的固态硬盘?当然可以!!!!(注意:只适用于支持UEFI BIOS的主板)
  4. 服务器主板显示wait,电脑开机出现wait怎么解决
  5. topsec—基础配置
  6. C语言中逗号表达式的使用
  7. 基于EasyExcel多线程分页导出excel
  8. 企业级负载均衡解决方案之七:京东四层负载均衡解决方案ContainerLB
  9. 实录分享 | Google Borg 系统 与 Coding Docker 实践
  10. 银联8583报文规范详解