多路径路由算法选择(1)——ECMP、WCMP
不要问为什么,现在的工作转向了网络路由协议的设计。
传统的网络拓朴结构可以形象的表示为树结构,我们称之为“有中心的网络拓扑结构”,简单地认为很多流量请求最终会汇聚到主干网这样的路由中心,才能转发到下一条路径。
传统的路由协议都是采用单路径路由的方式,简单地认为,从源到目的,所有的包都通过一条路径转发(如果某条最优路径出现了问题,再考虑下一条最优路径),其它链路处于备份状态或无效状态,并且在动态路由环境下相互的切换需要一定时间。
现在问题来了:
1)主干网总有一天会承受不了过多的流量请求;
2)单一的路径路由会使很多路由路径处于相对空闲的状态。
那么一个解决问题的办法就产生了,使用多路径路由,因为路由器是有多个端口的,所以这样的路由方式在硬件上是有支持的。好处就是,在网络环境下同时使用多条链路,不仅增加了传输带宽,并且可以无时延无丢包地备份失效链路的数据传输。
多路径路由特点:(1)可以为不同的服务质量要求提供不同的路径。(2)多路可以为同一种类型的服务提供多条路径,经聚集可实现更高的服务质量。(3)由于主机对路径有自主的使用权,它可以通过探测各路径的状况(比如丢包率)猜测网络的拥塞程度,据此调整对各路径的使用,从而在得到优质服务的同时也提高了网络的利用率。因此,多路的正确使用还可以提高网络的利用率。
根据不相交性,多路径路由可以分为3种:节点不相交(Node-Disjoint)多路径、链路不相交(Link-Disjoint)多路径和相交多路径。节点不相交多路径,也称为完全不相关多路径,就是各条路径中除源节点和目的节点之外没有其他任何共用节点。链路不相交多路径是指各条路径间没有任何共用的链路,但有可能有共用的节点。相交多路径是指各条路径间既有共用的节点,又有共用的链路。表1是3种路径间的比较。
那下面的问题就是如何进行多路径路由。关键问题就两个:
1)多路径选择
2)流量的动态分配
---------------------------------------------------------------------------------
下面看一下目前的多路径选择算法都有哪些:
1)ECMP(Equal-Cost Multi-Path Routing,等价多路径路由)。
Equal-cost multi-path (ECMP) [8] is a routing technique for routing packets along multiple paths of
equal cost. Load is distributed equally over multiple equal-cost paths typically using simple round-robin
distribution. Optimal splitting with ECMP has been researched in OSPF-Optimized Multi Path (OMP) [9].
OSPF-OMP uses ECMP, but instead of depending upon weight assignments, it samples traffic load
information and floods it via opaque LSAs. This information is used to change local load splitting
decisions.
ECMP是指,到达一个目的地有多条相同度量值的路由项(路由路径),这样就可以使用不超过3条这样的路径来转发流量。ECMP最大的特点是实现了等值情况下,多路径负载均衡和链路备份的目的,在静态路由和OSPF中基本上都支持ECMP功能。
但是实际情况是,各路径的带宽、时延和可靠性等不一样,把Cost认可成一样,不能很好地利用带宽,尤其在路径间差异大时,效果会非常不理想。例如,路由器两个出口,两路径,一个带宽是100M,一个是2M,如果部署是ECMP,则网络总带宽只能达到4M的利用率。(在RFC2991中讨论了一般的多路径路由。每一封包多路径路由的负载平衡通常不适用因为大辐变化的延迟、数据包重新排序,以及可以破坏许多互联网协定运作的最大传输单元(MTU)在网络流量的差异,最特别是传输控制协议(TCP)和path MTU discovery。)另外一种情况下等价多路径路由也不能提供真正的最佳路径路由的优点,例如,如果多个最佳的next-hop的路径到目的地重新汇聚到一个单一的低带宽的路径(一种常见的情形)下游,它只会增加到该目的地流量路径的复杂性,而无法提高带宽的能力。
有篇专利可供参考:http://www.google.com/patents/CN103607358A?cl=zh
我们可以看到,“等价路径的计算”妨碍了这个算法的使用。
2)WCMP(Weight-Cost Multi-Path Routing,加权多路径路由)。
WCMP能够非常灵活地按照比例在链路上传递流量,ECMP是它的特例。IGRP、EIGRP和部分静态路由也支持WCMP,但因为IGRP和EIGRP为非标准私有协议(Cisco的私有协议),不适宜扩展,因此只能采用静态路由,在中小网络部署。
貌似也不需要考虑。
3)MPA、DSPA、CRA、MDVA、MPDA/QMPDA、MPTAH、MARA、ST、NPMA等算法稍后讲解
关于流量的动态分配,即所谓的负载均衡问题:
1)负载分担方式有3种。
基于流负载分担:路由器根据IP报文的五元组信息(是指源IP地址,源端口,目的IP地址,目的端口,和传输层协议这五个量组成的一个集合。 例如:192.168.1.1 10000 TCP 121.14.88.76 80 就构成了一个五元组)将数据分成不同的流。具有相同五元组信息的IP报文属于同一个流。转发数据时,路由器把不同的数据流根据算法从多个路径上依次发送出去。
基于包负载分担:转发数据时,路由器把数据包从多个路径上依次发送出去。
基于带宽的非平衡负载分担:报文按接口物理带宽进行负载分担(即基于报文的负载分担)。当用户为接口配置了指定的负载带宽后,设备将按用户指定的接口带宽进行负载分担,即根据各接口物理带宽比例关系进行分配。
基于包转发能够做到更精确的负载分担。但是由于路由器要对每一个包进行路由查表与转发操作,所以无法使用快速转发缓存来转发数据,转发效率降低了。另外,Internet应用都是基于流的,如果路由器采用基于包的负载分担,一条流中的数据包会经过不同路径到达目的地,可能会造成接收方的乱序接收,从而影响应用程序的正常运行。
多路径路由算法选择(1)——ECMP、WCMP的更多相关文章
- RRT路径规划算法
传统的路径规划算法有人工势场法.模糊规则法.遗传算法.神经网络.模拟退火算法.蚁群优化算法等.但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度 ...
- 基础路径规划算法(Dijikstra、A*、D*)总结
引言 在一张固定地图上选择一条路径,当存在多条可选的路径之时,需要选择代价最小的那条路径.我们称这类问题为最短路径的选择问题.解决这个问题最经典的算法为Dijikstra算法,其通过贪心选择的步骤从源 ...
- 全局路径规划算法Dijkstra(迪杰斯特拉算法)- matlab
参考博客链接:https://www.cnblogs.com/kex1n/p/4178782.html Dijkstra是常用的全局路径规划算法,其本质上是一个最短路径寻优算法.算法的详细介绍参考上述 ...
- 排序算法--选择排序(Selection Sort)_C#程序实现
排序算法--选择排序(Selection Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来 ...
- 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)
本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A 谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26 ...
- 域名检索&路由算法
域名查询顺序: a. 浏览器缓存(本机hosts文件),浏览器会缓存DNS记录一段时间. b. 系统缓存 c. 路由器缓存 d. 检查ISP e. 递归搜索域名服务器 路由算法: 一.静态路由算法 a ...
- 【Memcached】原理、体系架构、基本操作及路由算法
1. 什么是Memcached 要了解Memcached首先要到官网上去看官方对它的描述.Memcached的官网网站是:http://memcached.org/,官方对Memcached的描述如下 ...
- 路径规划: PRM 路径规划算法 (Probabilistic Roadmaps 随机路标图)
随机路标图-Probabilistic Roadmaps (路径规划算法) 路径规划作为机器人完成各种任务的基础,一直是研究的热点.研究人员提出了许多规划方法如: 1. A* 2. Djstar 3. ...
- NPOI_winfrom导出Excel表格(一)(合并单元格、规定范围加外边框、存储路径弹框选择)
1.导出 private void btn_print_Click(object sender, EventArgs e) { DataTable dtNew = new DataTable(); d ...
随机推荐
- Unity3D 海水多线程渲染算法实现
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- Android中免root的hook框架Legend原理解析
一.前言 Android中hook框架已经非常多了,最优秀的当属Xposed和Substrate了,这两个框架我在之前的文章都详细介绍过了,不了解的同学,可以转战这里:http://www.wjdia ...
- 创建Azure scheduler完成日常任务
Azure Scheduler 1. 登录portal,创建azure scheduler2. 选择任务类型.azure scheduler支持两种类型的任务.http :定时给一个url发请求sto ...
- 基于sklearn进行文本向量化
sklearn中,计数向量化用CountVectorizer,tfidf向量化用TfidfVectorizer: import pickle from sklearn.feature_extracti ...
- Mac设置SVN:Cornerstone3
前因 在windows下用Tortoisesvn.可惜Tortoisesvn没有Mac版,只能上知乎寻找适合于 Mac的SVN软件. 经过 找到了一款名为Cornerstone的软件.在App Sto ...
- Ubuntu终端远程连接linux服务器
SSH是一个远程接入软件,可以让你想坐在计算机前面一样操作计算机.SSH使用加密方式传输数据,是一种非常安全的工作方式 步骤如下: 前提:如果没有安装ssh的话请 sudo apt-get inst ...
- LOJ2424 NOIP2015 子串 【DP】*
LOJ2424 NOIP2015 子串 LINK 题目大意是给你两个序列,在a序列中选出k段不重叠的子串组成b序列,问方案数 首先我们不考虑相邻的两段,把所有相邻段当成一段进行计算 然后设dpi,j, ...
- Codeforces 280C Game on tree【概率DP】
Codeforces 280C Game on tree LINK 题目大意:给你一棵树,1号节点是根,每次等概率选择没有被染黑的一个节点染黑其所有子树中的节点,问染黑所有节点的期望次数 #inclu ...
- Redis中关于Hash键的一些问题
Hash键存在的意义: 1.Hash键可以将信息凝聚在一起,而不是直接分散的存储在整个Redis中,这不仅方便了数据管理,还可以尽量避免一定的误操作: 2.避免键名冲突: 3.减少内存占用.(最重要的 ...
- ubuntu下Python的安装和使用
版权声明 更新:2017-04-13-上午博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Python的开发环境. ...