MPLS-TE和SR-MPLS初了解
MPLS-TE初了解
前言
TE是什么意思?
TE的意思是流量工程,MPLS-TE意思其实是将MPLS和流量工程相结合的一种技术。
为什么要使用MPLS-TE?传统的MPLS有什么问题?
传统的MPLS的控制层面使用的标签分发协议为LDP,LDP形成LSP(标签交换路径)的工作过程是简单粗暴的,无法满足当前我们对于标签交换路径的需求。
我们当前对标签交换有什么需求?
我们希望管理员能参与到LSP形成过程当中,管理员可以自定义LSP,而不是“放任”LDP形成一条并不是最优的路径。
为什么LDP形成的路径不是最优的?
LDP去路由表当中找的路由条目通常是IGP协议形成的,而传统的IGP协议形成路由时所考虑到因素并不完美,比如并没有把带宽考虑到其中,而MPLS-LDP又是构建在传统IGP之上的,所以MPLS-LDP所选择路由或所选择的路由条目自然也不是完美的。
完美那么重要吗?
如果我们跑的流量是语音或流媒体类这种对时延要求很高的应用,我们希望MPLS网络能够找一条最优秀的路径来承载我们的流量,而不是死板的将流量放到一条拥塞的道路上,而LDP就会形成一条死板的的道路,不管它是否拥塞都不会自动调整路径,而MPLS-TE就可以根据管理员的要求自动调整道路,以保证业务的流畅性。
此还还有一个原因,MPLS可以是一种商业产品,比如可以做成MPLS-VPN,运营商是可以将其做成一种服务进行赚钱。在广域网互联当中,VPN种类繁多,运营商凭什么能说服用户不使用自建的VPN,而选择使用运营商的MPLS-VPN呢?我们企业日常办公用的网络运营商并不敢对时延、带宽做一个保证,比如我们公司日常在钉钉语音会议的时候经常遇到延迟问题,而一旦用户选择使用运营商的MPLS-VPN,运营商就敢做一个对时延、带宽的保证,这么做的底气就是来自于MPLS-TE能够自动选择比较优秀的转发路径,能动态为用户提供更好的服务体验。
同样都是使用MPLS架构,为什么MPLS-TE比传统的MPLS这么优秀?
MPLS:同样都是使用MPLS架构,为什么MPLS-TE比传统的MPLS这么优秀?
MPLS-TE:RSVP-TE和扩展的IGP你值得拥有!
其实这个话题比较大,我们会在下面详细的说一下;
MPLS-LDP并不涉及到路径的选择,就直接去路由器表里面找32位的路由条目,而MPLS-TE会涉及到路径的选择,从哪里选择?
从一个叫TEDB的数据库当中计算得来
TEDB是什么?
看名字就是知道了,MPLS-TE的数据库!
这个TEDB是谁形成?
是OSPF协议,扩展的OSPF协议通过10类LSA形成的
OSPF为什么会形成这样的数据库呢?
传统的OSPF自然不会形成这样的数据库,而被扩展过的OSPF会通过通过相互交互十类的LSA进而形成这么一个数据库;
那OSPF原本的自己的LSDB是否还存在呢?
当然存在,是扩展的OSPF,扩展的含义是在原本的基础上增加功能,之前的功能并没有受影响,与扩展的BGP是一个道理,通过dis ospf lsdb就可以查看到一、二、十类的LSA都在一起显示。
MPLS-TE为何这么秀儿?
其实这个问题从开发者的角度来看是最通透的,我们不是开发者,也不知道MPLS-TE的具体的开发细节,就只能通过华为PPT的内容做一个比较主观的理解。
第一个原因:将LDP替换为RSVP-TE
关于LDP的缺点我们已经在前言当中说过了,我们这里面主要来看一下RSVP-TE;
RSVP全称是资源预留协议,这个概念本来与MPLS并没有什么关系,这是QOS当中的概念,它是怎么后来变成替换LDP的RSVP-TE的呢?
MPLS-LDP的出现确实解决了很多的问题,但缺点也很明确,MPLS架构现在想实现对LSP的动态的灵活调整功能,后发现QOS架构在这方面有积累,于是MPLS关注到了RSVP,但是RSVP本身并没有标签分配的功能,所以无法替换LDP,现在目前两个选择,第一个选择是把RSVP扩展一下使其拥有标签分配的能力;另一个选择是在传统的LDP上做 个扩展,使其拥有RSVP的能力,我们经常使用的到是第一种,即扩展后的RSVP,也被称为RSVP-TE。扩展的RSVP-TE不仅仅有自身的资源预留功能,而且还拥有了标签分配的能力,完全有能力替换LDP。
第二个原因:RSVP-TE自身携带动态选路算法
LDP其中有一个缺点是依赖于IGP的路由,本身没有路径计算的算法,而扩展的RSVP-TE就拥有路径选择算法,这个算法能通过一些约束条件建立LSP,但问题也随之而来,并不是有了算法就能进行路径选择的,就拿OSPF来说,如果单纯的只有SPF算法也没啥用呀,算法是在数据的基础上进行计算的,OSPF本身人家有数据库形成的机制,那RSVP-TE给自己搞一个建立数据库的机制不就行了吗?在IT领域通常如果已经有现成的,就不要重新开发,MPLS架构严格遵循这种理念,RSVP-TE又看上了传统的IGP协议OSPF和ISIS,它觉得OSPF和ISIS形成数据库的机制就挺不错的,而且MPLSl架构底层必须得一个IGP,于是RSVP-TE决定让这个IGP同时干两个工作,即负责底层的数据转发,又帮助RSVP-TE建立数据库,就这么干!
第三个原因:LSP的建立过程设计方法优秀
有一些技术的设计有时候真的让人拍案叫绝,设计的人真是太聪明了,比如RSVP-TE的LSP建立过程。
OSPF是可以帮助RSVP-TE通过LSA传输一些关键的因素,比如说开销、带宽,为什么有这些因素,因为RSVP-TE的选路算法会用到的呀!挺好理解的吧!现在,数据库有了,路径算法也有了,也把路径计算出来了,然后呢?这个地方就出了问题,OSPF的SPF算法在路径计算出之后结果就是生成路由条目放到路由表当中,可是RSVP-TE不能这么做呀,因为RSVP-TE并不是做这个工作的,再者说了这个工作已经被底层的IGP协议做了,RSVP-TE想要的是标签转发路径,即LSP!仅把路径计算出来没有用,RSVP-TE要的是LSP!怎么做?这还不简单,参考一下LDP的作法,发消息通过某个设备,让它给某个路由发标签并且将分发的标签通告出去,问题又来了,MPLS网络中那么多设备,我怎么能保证这个通告一定会到达我这里呢?而且我怎么能保证它能按照最优秀的路径向本设备所在方向建立LSP呢?如果这两点无法保证,那使用RSVP-TE替换LDP将毫无意义,怎么做呢?我们直接就看一下MPLS-TE是怎么做的:
- 首端通过OSPF的LSA收集信息形成数据库
- 通过CSPF算法结合管理员限定的条件计算出一条路径
- 通过首端隧道接口向目标设备方向发送PATH报文,沿途所经过的所有节点都已经被首端计算完成放到列表(PSB路径状态块)当中去,沿途的设备根据列表进行转发就可以顺利将报文交付给目标设备
- 目标设备收到报文之后会产生RSB(预留状态块),根据报文里面指示对目标路由分配标签并通过resv报文向上游请求保留带宽和分配标签,resv回复的时的路径其实已经被计算好了,也是首端计算的。
PS:在MPLS-TE当中RSVP-TE会定期交互以维持路径转发
为什么要定期交互呢?
因为RSVP-TE的目标就是想获取最优秀的路径,而网络状态是不断的变化的,所以数据库也会随着报文的交互不断改变,路径的选择也会随之改变。
报文相关
MPLS-TE的报文其实指提就是RSVP-TE的报文,报文有六种之多,可以完成以下几种功能:
- 路径的建立和维护
- 路径的拆除
- 错误的通告
RSVP-TE的报文结构:公有首部、后跟多个对象组成
RSVP-TE的报文有六种之多,最常见就两种:path和resv
- path的作用:建立PSB、记录沿途跳数
- resv的作用:收到path之后的回复
RSVP的交互过程:源端计算完毕后带着计算后的结果通过path报文向着终点进行申请,终点收到path之后,根据path的指示分配标签同时向着源端方向申请资源,源到收到之后形成路径。
路径形成过程中的关键词:
- path报文发送过程当中源和目标不会发生改变
- 但path报文当中携带的被源端计算后的路径列表会不断弹出,类似源路由
- resv报文是逐跳从终点向着源端发送的,在过程当中源IP和目标IP会不断改变,抓包即可验证
- 总之所有的计算基本上都在源端完成,而path当中所携带的就是计算后的结果,终点收到之后就要按照path报文中的指示来操作。
RSVP-TE的问题:
- 为了保证最优秀的路径,RSVP-TE会定期交互报文,这是优点,也是缺点。
- 另一个缺点就是路径的规划依赖管理员,不能根据全局动态调整,这这也是MPLS架构被抛弃的原因之一;
SR-MPLS初了解
基本概念
我们这一节学习SR,为什么要有SR呢?
在网络领域里面出现一个新的技术,一定是因为前面的技术不太好用而出现的。我们在前面学了MPLS-LDP、RSVP-TE,那现在在SR看来,MPLS和MPLS-TE就是“前浪”,而SR就是将“前浪”拍在沙滩上的“后浪”!
前浪们为何会被拍在沙滩上?
好我们来看一下前浪们的问题,我们从MPLS-LDP开始说起,LDP是在传统IGP的基础上进行标签的分配和分发的,本身并不具备路径计算并选择的能力,而且与IGP之间容易发生因串行启动导致的的路由黑洞问题,这是MPLS-LDP的问题最严重的两个问题。
前浪们并不是没想过改进,RSVP-TE就是MPLS-LDP改进的产物,借助扩展的IGP为自己提供数据库并在此基础上运行路径选择算法进行路径选择,在此同时还结合和QOS使得自己拥有了灵活调整流量的功能,好了,现在前浪拥有了路径计算和路径选择的能力同时还能灵活的调整流量,看起来已经已经已经相当不错了,那RSVP-TE的问题出在哪里呢?其实最严重的一个问题是无法跟上目前时代的潮流,目前SDN搞的如火如荼,转控分离大行其道,而RSVP-TE的配置却还得网络工程师们挨个设备进行命令写入,未来已来。
SR是什么?
这种网络概念一旦被翻译之后就显得很奇怪,SR的全称是(segment routing),直译成中文就是“段路由”,奇奇怪怪的称呼!
新时代的宠儿—SR?SR是如何做到一举击败MPLS-LDP和RSVP-TE的呢?
关于击败MPLS-LDP的这个事根本就不劳烦RSVP-TE已经做到了,那SR又是怎么击败了RSVP-TE的呢?
RSVP-TE仅支持分布式部署,而SR可以配合SDN当中的控制器实现转控分离,可以将控制权从管理员手中交由控制器,由控制器通过数据分析后规则最优秀的网络路径并发下到SR的转发层面。
另一点是SR借鉴了源路由的方法论,简单的说所谓有源路由就是数据源可以指定通过每一跳的节点,下面我们再来详细说一下;
源路由
什么是源路由?我们先来看一下网上的解释:“源路由的用户可以指定他所发送的数据包沿途经过的部分或者全部路由器。它区别于由主机或者路由器的互联层(IP)软件自行选择路由后得出的路径。“
什么是源路由?这个话题要我们先来看一下正常的数据包是如何转发的,当我们的PC发出数据包到运营商之后,运营商的设备读取我们数据包当中目标IP地址,然后根据路由表进行数据转发,也就是说我们PC端是无法控制数据包转发时的路径,转发路径全是由沿途的路由器指定的。而源路由的思路与之相反,主打就是拿到报文的控制权,也就是说PC可以控制报文的转发路径,指定从哪一台网络设备经过,它是怎么做的呢?
在PC封装数据包的时候,会把指定的路过的IP地址全都写到网络层当中关于源路由的字段当中,比如192.168.0.2想要与223.6.6.6通信时通过源路由字段指定必须经过1.1.1.1、2.2.2.2、3.3.3.3,1.1.1.1是顶栈IP地址,当这个数据包到达第一跳路由器之后,第一跳路由器会读取顶栈IP,然后查找自己的路由表将数据转发到1.1.1.1并且将顶栈1.1.1.1删除,当而1.1.1.1网络设备收到数据包之后查看后发现2.2.2.2是顶栈了,于是将数据包再次转发到2.2.2.2,,然后将2.2.2.2删除……
源路由的数据包是什么样的?网络层当中的目标IP是真正的IP地址吗?如下所示
源路由与SR之间的关联性?
SR并不是真正的使用了源路由,而是使用了源路由的思路,即由数据源规划数据转发路径这个思路。
数据源来规则路径!这靠谱吗?
如果让数据源来规则路径的话,起码这个数据源得知道沿途哪些网络设备是靠谱的,我们在windows上使用trcert的时候指定的沿途网络设备是由windows的管理员来决定的,而管理员往往拥有全局视角,有所局视角才能规则出好的路径,这个全局视角从何而来的呢?两个方法第一由控制器提供,也就是拥有全网信息的的控制器来决定,这样是比较靠谱的;另一个方法让所有的设备都拥有相同的数据库,根据相同的数据库计算出一棵路径转发树,这一点由OSPF比较类似。我们当前在没有控制器的情况下,就只能使用第二种方法
SR与IGP的关系
我们上面谈到了如果想让网络设备规划出好的路径,那么网络设备就得有全局或全网络的拓扑信息,就像OSPF的区域0当中的所有路由器一样,所有的路由器上的LSDB是一样的,然后每台设备借由LSDB计算出一棵以自己为根的,无环的、最优秀的路径树,这一思路直接被MPLS-TE和SR借鉴,无论是SR和MPLS-TE都是通过OSPF或ISIS做底层的承载并通过OSPF与ISIS形成数据库。
无论在MPLS-TE还是SR当中都必须得有一种IGP路由协议,对于MPLS-TE来说,OSPF的意思不仅仅是为提供底层承载网络,更重要的是MPLS-TE利用IGP协议提供的数据库,主体依然是MPLS-TE;而在SR当中,依然需要IGP协议,只不过这一次主体变成了IGP,OSPF不仅提供底层承载网络还提供计算选路,我们可以简单做一个对比。
基本工作流程
虽然MPLS-SR还是使用的MPLS架构,但是重心已经偏向于IGP协议,希望通过IGP协议来实现标签分发,而不是LDP或RSVP-TE,这样做的好处就是不再会出现IGP与LDP串行启动导致的路由黑洞问题。
从这里面我们也可以看出来MPLS架构的演变过程,我们可以大胆猜测一下,在早期路由并没有MPLS,后来因路由黑洞问题引入了MPLS,在这一时期MPLS架构的思路是引入第三方,即LDP来解决问题;到了中期,LDP因功能性太少,出现了加强型的LDP和RSVP-TE;到了后期,MPLS架构不再希望通过第三方来解决问题,而是把关注点放在了IGP上,希望仅仅通过IGP就能解决问题,而SR技术就是这一时期的产物。
由于把重点关注点放到了IGP上,所以就进行了IGP协议的扩展,让ISIS和OSPF能够做标签分发的工作,同时也意味着整体的工作流程也偏向于IGP原有的工作流程,我们就像OSPF来举例子,OSPF本来的工作流程就是大家把信息泛洪出去,大家形成一致的数据库,在此数据库上进行路径计算,而现在MPLS-SR的思路与此类似也是把自己本地的信息泛洪出去,大家形成一致的数据库,在此数据库上进行路径计算,计算的最终结果是什么呢?形成一棵“标签“树,而标签树里面最重要的数据无非是入标签和出标签。
LDP是本地直接给路由分配标签,并且把消息传给其它路由器,而MPLS-SR则不是直接传递标签,而是传递传递标签计算需要的素材,这一点与从距离矢量到链路状态的演化有点类似,也与密码学的演进有点类似,从原本直接传某种事物演变到现在仅传递素材,那标签的计算需要哪些素材呢?两个事物非常重要:全局标签空间(SRGB)和索引(index)。SR是的意思是段路由,那段路由到底是什么?其实段指的就是标签而已,标签路由嘛!这名字听着舒服多了。