包的号码相同,那么所有的交换机都做同样的转发,结果就导致这些数据包被发到 同一台设备。这样的数字网络,全球中,每两点之间仅有一个号码表示,第一个点的数据包头写上此号码,必定是发到第二个点,不可能发送到第三个点,因为第一 个点和第三个点,会使用另外一个号码,所以此号码为两点唯一,网络设备中有每两点(即每个号码)的出口信息,收到任何一个包,都能不看IP地址而根据此号码选择从相应接口发出去,每台设备执行相同的过程,即可完成任意两点间的传输。此交换方式其实并没有在计算机网络中应用,但是我们使用的电话网络,就是这种交换方式,即任何两台电话之间打电话,号码唯一,不可能有相同号码,如果你拨打电话,别人也拨一个电话号码,你们拨的号码如果是一样的,那肯定就打到同一个人那里去了。所以要实现此交换方式,网络中所有设备需要计算出任意两个点之间的号码,每一个号码都是唯一的,不可重复,与到目的地的相应出口作对应, 生成转发表。但是如果全球计算机网络使用这样的方式,那就是任何一台设备为任何一台主机计算路径时,都要所有全球的设备共同参与,如果不全部都参与,就可能和没参与的计算出重复号码,可想而知工作量之庞大。 3.交换方式总结
以上两种交换方式,都是在不看IP地址(IP包头),只看号码的情况下,做出的交换选择。
可以仔细想一下,在使用帧中继交换时,因为一个PVC号码只要保证单台设备不重复就可以了,这个号码跟接口是关联着的,也就是说一个数据包写上的PVC号码,这个PVC号码的范围只要比交换机的接口多就行,比如范围是1024,所以帧中继交换的包头,号码不是很庞大,也就是说包头并不是很长。而非IP包交换的网络中,因为每两点之间都要有独立的号码,所以如果网络中有10亿个点,那么这个号码的范围就应该比10亿还要大,所以非IP包交换,数据包头肯定要比帧中继的包头大。
但是从结论中,我们能不能说哪个好,哪个不好呢?当然不能,因为帧中继的包头虽然比非IP的包头要小,但是每经过一台设备都要重新改写,也就是说帧中继网络中,设备都在不停地为每个数据包改写PVC号码,这也是巨大的工作量啊。而非IP包头虽然要大一些,但是这个号码写好之后,就永远不会再变了,只要中间的设备看到号码直接转发就行,不用改写了。
4.MPLS(多协议标签交换)
在使用IP包交换网络的时候,人们总是认为设备要根据IP地址查路由表做出转发决定,觉得这样很耗时,总想着寻找一种新的交换技术来代替IP包交换。最初 就考虑使用数字号码的方式来代替IP地址,从上面介绍的交换方式中,由于第二种非IP包交换技术,需要在网络中对任意两点计算出一个全球唯一的号码,因为一个号码即代表了两个点之间的传输,如果其它的点之间的号码和别人出现重复,那么数据的走向也就会发生错误。当前没有研发出协议敢保证计算出任意两点的号码一定是唯一的。
在帧中继的交换中,只要保证每个网段(每台交换机)之间的PVC号码唯一即可,因为经过每个网段(每个交换机)号码都会重新修改。此交换方式也可避免设备检查数据包的IP地址来作做转发决定。(但也不要忘记,这种交换方式的弊端,在似乎节省了时间的同时,其实也浪费了许多时间。)
而当前人们认为效率比较高的MPLS(多协议标签交换)方式,它的数据交换思想则倾向帧中继的交换方式,即认为设备在查看IP地址之后做出转发决定,会比 较慢,会耗更多时间,则给数据包写上了额外的号码,根据此号码而不看IP地址,便能找出相应出口从而转发出去,这正是标签交换,而MPLS称此额外的号码为标签。在此可以看出,MPLS的交换号码(标签)并不是全球唯一,只是每个网段唯一,或者说是每跳唯一,所以,经过一跳之后,此号码对下一跳设备毫无意义,经过一跳之后,此号码要修改成对下一跳有意义的号码,让其根据号码做出转发决定。由此可见,MPLS的标签交换,是每跳都会改写标签,因为根据标签,便能够做出转发决定,所以省略了查看IP地址的过程,被人们认为比IP交换要快。 而MPLS根据自己的标签交换,需要给数据包先写上自己的标签,然后设备才能查看标签之后就转发,此标签是需要在原有的数据包的基础上加进去的,并没有将以前的包头删除,MPLS的标签加在了第二层帧的帧头之后,但又在第三层数据包的包头之前,而MPLS不管是什么协议的数据包,不管以前的包头是什么,都能够在包中加入对自己有利的标签,所以称MPLS交换为多协议标签交换。
MPLS优势:
1.(不正确的理由):因为IP在路由当中,总是根据目的地址在路由表中查找目标网段,并且逐条匹配最优路径,速度慢。
2.MPLS只根据数据包顶部标签来查找并转发,速度快。
结论:由于现在设备采用ASIC(专用集成电路)交换,所以速度并不慢,而MPLS
借签了帧中继交换方式,在数据包每经过一台设备时,都要重新封装,所以MPLS在速度上,并不是优势。
但MPLS可以给数据包加上标签,以做流量控制,这是优势。MPLS还可以承载各种协议,如IPv4,IPv6, 以太网,HDLC,PPP,以及其它第二层帧。
注:MPLS在骨干网中传输任意第二层帧的特征被称为MPLS的任意传输(AToM)。
MPLS中的BGP
BGP在决定一个数据包该如何被转发出去,是通过查找IP地址在路由表中的下一跳,有时不能避免这下一跳不是跟自己直连的,但是BGP只要知道如何到达那 个下一跳即可,所以BGP路由的下一跳,也许自己不清楚,但是只要IGP的路由能帮助自己到达下一跳就行。在大型的核心网络中,我们完全可以设计出网络这边的BGP路由器,它的下一跳在网络那边,那么如何到达网络那边的下一跳,中间就可以使用IGP去完成,只要中间的设备能够帮助BGP到达最终下一跳地址就足够了,所以这样的网络,需要BGP协议的只是网络的边缘路由器,而中间的路由器,只要做一件事,那就是帮BGP找下一跳,就不用启用BGP了,这就大大节省了系统资源。而MPLS的标签交换,就可以用在这样的网络中,来为BGP寻找下一跳,也就是MPLS只要为BGP路由的下一跳打上标签,能够帮助 BGP找到下一跳,那
么其它的问题,都不是问题,其它的路由,BGP就能够自己完成。
略:MPLS流量工程,路径是由首端路由器指定的,所以又称为基于源的路由。
思科MPLS历史
最初Cisco在IP报文顶部加入标签时,称其为标记交换(tag switching),而标记,现在改叫标签了,为每个路由条目分配好标记并写进去,所以这就需要一张表来指导标记交换,称为转发信息库(TFIB),每一台标记交换路由器查看数据包入站的标记,并转为出站标记后发出去。
注:思科第一个支持标记交换的IOS就支持流量工程,就是资源预留协议(RSVP)
MPLS标签
一个标签由32个bit组成
前20为标签值,范围从0到2的20次方减一,即1048575。
其中前16bit不能随便定义,有特定含义,从21到23bit共3位试验用 (EXP),用于QOS。
第24比特是栈底Bos位,值为0,如果是栈底,就为1,标签栈中,标签数量没有限 制。
从25到32共8个bit是TTL
MPLS标签栈
MPLS路由器对数据包可能添加一个标签,也可能添加多个标签,这些标签集合起来叫做标签栈,第一个为顶部标签,最后一个为底部标签,中间数量可以无限, 底部标签BOS总是1,否则就是0。而在数据包传输过程中,设备只根据第一个顶部标签来决定怎么转发。
有些情况是需要两个标签的,两个典型是MPLS VPN和AToM。MPLS VPN要用两个标签,是因为在骨干中传输时,用一个,等出了骨干,再用另外一个。 那么设备收到一个MPLS标签数据包时,又怎么知道这个数据包是要查IP路由表来决定转发呢,还是查标签表做出转发呢?那是因为标签是在第二层帧和第三层数据包之间,第二层会在数据链路层的协议字段写上新的值,以说明后面是一个带有MPLS标签的报文,所以设备能够做出正确的转发决策。
MPLS设备类型
能够理解MPLS标签并根据标签转发数据包的路由器称为LSR 共有以下3种LSR: