MPLS小结

MPLS
MPLS:多协议标签交换,工作在数据链路层与网络层之间,即2.5层,支持多种协议,基于标签进行路由。传统的包交换是基于IP地址进行数据转发的。
MPLS的主要解决的问题:
1)BGP的路由黑洞(一层标签,为普通MPLS分组使用)
2)MPLS ×××(两层标签)
3)MPLS TE(流量工程)(三层标签)
一、MPLS的基本概念

1、转发等价类
MPLS作为一种分类转发技术,将具有相同转发处理方式的分组归为一类,称为FEC(Forwarding Equivalence Class,转发等价类)。相同FEC的分组在MPLS网络中将获得完全相同的处理。目前设备只支持根据报文的网络层目的地址划分FEC,即到同一个目的地址的所有报文就是一个FEC。

2、标签
标签是一个固定长度为4字节,仅具有本地意义的短标识符,用于唯一标示一个分组所属的FEC。一个标签只能代表一个FEC。标签的封装结构如下图:
Label Exp S TTL
Label:标签值字段,长度为20位,用来表示一个FEC。
Exp:长度为3位,协议中没有明确规定,通常用作CoS。
S:长度为1位,MPLS支持多种标签。值为1时,表示为最底层标签。
TTL:长度为8位,和IP分组中的TTL意义相同,可以用来防止环路。、

  1. 标签交换路由器(P路由器)
    LSR(Label Switching Router,标签交换路由器)是具有标签分发能力和标签交换能力的设备,是MPLS网络中的基本元素。
  2. 标签边缘路由器(PE路由器)
    位于MPLS网络边缘、连接其他网络的LSR称为LER(Label Edge Router,标签边缘路由器)。
    5、标签分发协议
    标签分发协议(LDP)是 MPLS 体系中的一种主要协议。在 MPLS 网络中,两个标签交换路由器(LSR)必须用在它们之间或通过它们转发流量的标签上达成一致。
  3. 标签交换路径
    属于同一个FEC的报文在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径)。
    7.转发信息库
    FIB从概念上讲类似于路由表或信息库。它维护着一个IP路由表中包含的转发信息的
    镜象。当网络中路由或拓朴结构发生了变化时,IP路由表就被更新,而这些变化也反映在FIB中。RIB表把所有路由协议学习到的路由汇总到一起,经过优选,把优选结果的路由加入到FIB表,供转发使用。所以FIB是RIB的一个子集。
    8.标签信息库
    对路由表中的每一条IGP的IP前缀来说,第一台LSR都会进行本地捆绑,也就是说,
    为IPv4前缀捆绑标签。然后LSR再将该捆绑的标签分发给所有LSP邻居。这些接收到的标签转换为远程标签。之后邻居将该远程和本地标签存储于一张特殊的表中,这张表就是标签信息库(LIB)。
    9.标签转发信息库
    在LFIB中,本地捆绑的标签被作为入站标签,通过路由表选择的远程捆绑标签中的一
    个作为出站标签。因此,当一台LSR收到一个带标签的报文以后,它就(根据LFIB)有能力将为自己分配的入站标签交换为其邻接的下一跳LSR分配的出站标签了。
    LFIB是CEF中的FIB+标签交换形成的LIB结合而成的(迭代)。

LFIB的每一个条目中包括输入标志,输出标志,输入接口和输出端口的MAC地址,转发表由输入标志对条项进行检索检查。

LIB与LFIB的区别
通过LIB,只保存有标签信息,并没有出接口和下一跳信息,而你的LFIB,必须有出接口和下一跳信息,否则,无法实现转发

  1. 控制平面和转发平面
    MPLS节点由两部分组成:
    控制平面(Control Plane):负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作。
    转发平面(Forwarding Plane):依据标签转发表对收到的分组进行转发。

二、IP转发原理 
利用路由协议(静态\RIP\OSPF等)生成路由表,根据目的IP地址进行转发,在IP报文
转发的过程中,目的IP地址保持不变。其中用到两个表: 
RIB(路由表):路由信息库,通过各种路由协议获取路由信息。 
FIB(CEF表):转发信息库,根据RIB生成,用于指导IP报文的转发。 
路由器收到数据包,查看数据包的目的IP地址(IP头部),查找CEF表,根据CEF表转发数据。

三、MPLS的工作原理
使用路由协议传递路由条目时,路由器上使用LDP/TDP为FIB表中的每一条路由条目均分配一个标签号,装载于LIB表中,同时传递给邻居,LIB表中还记录邻居传递到本地的标签号,然后路由器基于本地的FIB表和LIB表生成LFIB表。在MPLS网络中,路由器根据LFIB表转发分组。
转发过程是:输入端的标记边缘路由器(LER)接收分组,并给分组贴上标签,标签交换路由器(LSR)对带有标签的分组进行交换,然后,输出端的标签边缘路由器(LER)去掉标签,并将分组传送给终端用户。

四、IP转发与MPLS转发的比较
IP包头长度20字节,MPLS包头长度是4字节,基于MPLS转发的效率高于基于IP转发。 
IP网络是逐跳转发数据,收到数据包,查找路由表发给下一跳就可以,而不关心下一跳路由器到底把数据包给谁。IP的逐跳转发,在经过的每一跳处,必须进行路由表的最长匹配查找(可能多次),速度缓慢。
MPLS 网络中,预先分配标签,生成LSP。 MPLS的标签转发,通过事先分配好的标签,为报文建立了一条标签转发通道(LSP),在通道经过的每一台设备处,只需要进行快速的标签交换即可(一次查找)。

四、MPLS转发的四个动作:
1.数据包由IP域进入到MPLS 域,LER根据标签转发表压入标签(PUSH)。
2.在MPLS域转发数据包时,LSR根据标签转发表替换标签(SWAP)。
3.当数据包离开MPLS域时,LER是弹出标签(POP)。PHP:倒数第二跳弹出。
4.在最后一跳将所有标签移除(Untag)。

五、LSR如何判断所收到的报文是MPLS标签报文? 
根据二层协议字段进行判断承载的是否是MPLS报文:以太网:0x8847(单播)
和0x8848(组播);PPP:0x8281 MPLSCP,一种新的NCP协议。 

六、次末跳弹出机制(Penultimate Hop Poping)
在MPLS ×××应用中,末跳路由器(输出端LER)在默认情况下需要查看LFIB表后再查看FIB表,然后转发数据(转发给CE,即客户端路由器),而PHP路由器在已知出接口、下一跳等信息时,便可以将顶层标签弹出,然后将数据包转发给末跳路由器(输出端LER),导致末跳路由器转发数据包时只需查看FIB表,节省了一次LFIB表的查询。
为了让次末跳LSR执行次末跳弹出,其下游的末跳LSR需要向次末跳LSR分发implicit-null标签,针对所有带有imp-null的remote标签的包,次末跳路由器就执行pop动作,将顶层标签弹出。为什么要强调“顶层”呢?这是因为对于MPLS ×××环境来讲,下面还有一层×××标签,PHP弹出之后的数据包仍然不是原本的IP包,而是带有×××标签的标签包。这样egress PE收到这个标签包之后,进行的不是IP的layer-3查找而仍然是标签查找,只不过查找的是×××标签所对应的VRF实例而已。查找完成之后就弹出×××标签包并放入对应的VRF实例里面发送给CE。

注意:PHP是MPLS的一种优化或补充,主要应用环境是MPLS ×××。要知道MPLS和MPLS ×××是两个不同的概念,而且,普通的MPLS分组使用一层标签,而MPLS ×××使用两层标签。对于普通MPLS分组,没有PHP,标签交换和数据转发也能正常完成。

MPLS小结

名词解释:
MPLS domain:MPLS的工作范围
LSR(P路由器):标签交换路由器
LER(PE路由器):标签边界路由器
CE(客户端路由器):不工作于MPLS域

猜你喜欢

转载自blog.51cto.com/13596342/2154678