MPLS introducing Part1
MPLS是Multi-protocol Label Switching(多协议标签交换)的缩写,MPLS是一种能够携带任何三层协议(数据)的包转发技术,这也名称中“多协议”一词的由来。当装有层三(或以上数据)的数据包需要穿越部署了MPLS的网络时,处于MPLS网络边缘的路由器会在该数据包的L3头和L2头之间打上标记(label),使这些三层的数据包可以顺利穿越一个部署了MPLS的网络到目的地。
MPLS Label的结构及其作用:
MPLS label是一个固定长度4Byte,被入口路由器添加在L2和L3报头之间,主要用于识别数据包目的地的标识符。这个标识符被那些MPLS网络内部(非边缘)路由器所使用,这些内部路由器只需要根据数据包中这个处于L2.5(2.5层)的标识符就可以知道它的目的地,而不用进行任何的三层路由表查找,这也意味着可以带来一定性能上的提升!
在入口路由器处,一个或多个标签被压(pushed)进了包里面,我们通常称第一个标签为顶层标签或者传输(transport)标签,根据不同MPLS应用(如MPLS VPN),这个顶层标签后可能还有其他标签。
上图是一个完整的标签结构,一共32位,可见除了标签(Label)之外,还有一些其他的字段。这里简单介绍一下这四个字段:
- Label:“真正”的标签,20bits的标签值;
- EXP:Experimental bits 实验位,3bits,主要用于区分流量,也是在MPLS网络中实施QoS的依据;
- S Bit:Botton栈底位,1bit,用于标识当前标签是否为标签栈中的最后一个标签(栈底),值为“1”时表示当前标签为栈底,值为“0”时当前标签后面还有后续标签;
- TTL:Time to live生存时间,8bits,跟IP报头中的TTL一样,主要用于防环,MPLS label与label,label与IP之间的TTL行为有详细定义,具体可参考相关文档;
MPLS的一些术语:
- DownStream router:下游路由器,该路由器是某目的网络前缀的通告者,举个例,从下游路由器(A)收到网络前缀(N)的路由器的路由器(B)将以A作为该目的网络N的下一跳路由器,而这个前缀的接受者B向网络N发送数据时,数据流必须发送到A,因此我们称之为下游路由器,由此也可以看出,“下游”这一概念是相对于去往某特定网络前缀的数据流和路由器而言的。一路由器作为某网络前缀的下游路由器,但同时它也可能是另一网络前缀的上游路由器。
- UpStream router:上游路由器,正如上面所说的,上游路由器是某网络前缀的被通告者(接收者),通俗一点,“下游”和“上游”的意思就是某网络前缀的“通告方”和“被通告方”。
我们可以通过路由信息的方向和数据流的方向对上游和下游进行区分,路由信息是从下游路由器传给上游路由器的,而针对某特定前缀的数据流是从上游路由器流向下游路由器的。关于这两个概念很多都容易搞混了,所以我就花一些周章说明一下。
- Label Edge Router(LER):边缘路由器,处于MPLS网络的边缘,一般地,他们根据IP报头作出转发决定;
- Label Switch Router(LSR):标签交换路由器,处于MPLS网络的内部的路由器根据标签作出转发决策。
本文参考:What is MPLS,在结合自己的见解后在内容上稍作扩张和修改,如有错漏之处敬请提出
未完,待续。



6 条留言
我要留言秦大少 | 2010/04/01 14:52 下午
我只能说,我完全都看不懂……
[Reply]
疾风 回复:
四月 2nd, 2010 at 2:43 下午
@秦大少, O(∩_∩)O哈哈~ 一样啊
[Reply]
秦大少 | 2010/04/01 14:52 下午
我是来要CHD的邀请码的,哈哈!
[Reply]
Alvin.J 回复:
四月 2nd, 2010 at 6:33 下午
@秦大少, 用你留言的邮箱吗?
[Reply]
飞猪 | 2010/04/01 14:52 下午
我只能说。。这些字我倒都还认识~
[Reply]
Alvin.J 回复:
四月 12th, 2010 at 8:07 下午
@飞猪, 术有专攻
[Reply]