MPLS基础


LSR分为 Control Plane 和 Data plane两个面板,一个负责路由,一个负责转发数据。

LIB: Label Information Base, 记录LSR上有多少个可用的LABEL。

FIB: Forwarding Information Base, 如果对已知IP已经做过LABEL关联(比如远端IP网络与本地DLCI关联),则接收到此IP时会直接从相应LABEL发送出去。而对于不准备打LABEL的数据(没做过DLCI关联),以普通IP路由的形式保持IP数据包格式直接转发。

LFIB: Label Forwarding Information Base, 如果收到的数据直接就是LABEL形式,则直接通过该BASE中记录的下一跳LABEL进行转发。

什么是MPLS

多重通讯协议标签交换传输(Multi-Protocol Label Switching)是由IETF 所发展出来的Network Standard。它是实现宽带因特网最热门的技术;其目的是要提供一个更具弹性、扩充性及效率更高的IP层交换技术。

MPLS 是一种整合了卷标交换架构与网络层的路由机制的技术,最基本的概念是将进入MPLS Network 的封包(Packet)配置一个固定长度的标签(Label),在MPLS Network中Packet会根据标签(Label) 做Forwarding , 由Label来决定Packet在网络上的路径,不会再看 Layer 3的 IP Header(标头)。

传统IP Network 的运作方式

Packet在一般的IP Network传递时,路由器的运作是以所谓的”Store and Forward”的程序来做Packet路由的选择及转送,所以当路由器收到一个Packet时,会先储存Packet 、分析路由、转送Packet 到下一个适当的路由器,而当此路由器又收到下一个Packet 要传送到相同的目的地时,它必须重复执行相同的程序(储存、分析、转送),这样是很没有效率的而且会耗用路由器大量的CPU处理能力及内存空间,此外传 统的路由器是以软件的处理方式转送IP 封包,而MPLS的技术则是引用与ATM交换技术类似的标签交换(Label Switching)技术,简化了路由器的转送功能直接利用Switching Fabric以在线速度(Line Speed)来转送封包(Packet)到达目的地。

MPLS Label 的Format及插入Packet的位置

Label是一个4Bytes、固定长度、locally-significant identifier类似在ATM网络中VPI(Virtual Path Identifier)/VCI(Virtual Circuit Identifier)或是Frame-Relay网络中的DLCI(Data Link Circuit Identifier),Label是被插入于Packet的第二层数据链结层(data link layer)与第三层网络层(network layer)Header之间。

MPLS Network 的组成

MPLS 网络是由多个具有标签交换能力的路由器LSR(Label Switch Router)互相连结所组成,根据在MPLS网络内扮演角色的不同LSR可以分为三种类型:
(1) Ingress LSR:负责将进入MPLS网络的IP Packet贴上卷标(Push Label)
(2) Core LSR:LSR则位于MPLS网络的核心,负责做标签转换(Label Swap)
(3) Egress LSR:当封包要离开MPLS网络到一般IP网络时,负责去除标签( Pop Label)。

Label Assignment and Distribution的过程

1. LSR Routing Table的建立:在MPLS网络中所有的LSR利用routing protocol来交换路由信息,建立自己的IP Routing Table,并根据Routing Table 建立自己的FIB(Forwarding Information Base),此时的FIB中并没有Label的信息。

2. LSR Allocating Label过程: 当LSR路由器开始启动MPLS功能时,会根据由IGP(如RIP、OSPF)学来的路由表(Routing Table)内容,对于使用相同处理方式、相同path、到达相同目的地IP subnet的Routing entry 做汇整(aggregation)及分类后Assign Label。
如同FRAME RELAY一样,LABEL 25和远端X的IP关联。

3. LSR 初步建立自己的LIB及LFIB:将前面步骤Allocating 的local Label信息储存于LIB(Label Information Base)和LFIB(Label Forwarding Information Base)中,此时的LFIB中只有local Label 的信息并没有outgoing Label 的信息。
B没有收到C发的LABEL信息,所以它认为C可能不是一个LSR,所以保险期间它会将LABEL POP OUT,变回IP发送。

4. LSR Label Distribution过程:LSR将他Local assign的Label信息传送(Distribution)给相邻的LSR,不论这相邻的LSR是local LSR的downstream或upstream 都会传送,而Label Distribution 靠的是相邻的LSR间要执行LDP(Label Distribution Protocol)的协议,来互相交换彼此的Label信息。另外谈到LDP 的特性,MPLS Device 会send/receive LDP,LDP 透过Discovery 去和Neighbor沟通对方是否有启动MPLS及交换Label information,而LDP是用UDP protocol去discovery neighbor,并利用 TCP 去去交换彼此Label information。

5. LSR收到相邻LSR送来的Lable信息做信息的汇整过程:最后每个LSR 根据接收到相邻LSR送来的Label 信息后,新增这些Label信息于自己的LIB中,并根据routing table得到的最佳路径,获知到某网段的Next-hop LSR 所送来的Label信息,插入到LFIB的outgoing Label数据结构中。

Packet在MPLS网络中传送的过程

  1. Ingress LSR(Router A):IP Packet 进入MPLS网络的第一颗LSR路由器称为Ingress LSR,当IP Packet 进入Ingress LSR 首先会查看Packet中的Destination IP address,并且在FIB中lookup 是否有符合的IP network ,如果有则进一步查看FIB中相对应的Label字段其值为何?(例如:IP =X ,Label=25 ),当Packet从Ingress LSR 送出时,会在此Packet中打上Label=25的标示,再传送出去。
  2. Core LSR (Router B):当带有Label=25的Packet传到Router B时,Router B会查看(lookup)他的LFIB的资料,看看是否有Inbound Label=25的entry,如果有则再查看此entry中Outgoing Label的域值为何?(例如 Outgoing Label=47),所以Packet中的Label快速的被置换(Label=25 aLabel=47)并往下一个节点传送出去。
  3. Egress LSR(Router C):当带有Label=47的Packet传到Router C时,Router C会查看(lookup)他的LFIB的资料,看看是否有Inbound Label=47的entry,如果有则再查看此entry中Outgoing Label的域值为何?(例如 Outgoing Label=Pop),所以Packet中的Label被移除,此时已离开MPLS网络再进入到IP的网络中,因此重新查看Packet中的Destination IP address为何?并查看其FIB以决定Packet要传送的下一个节点 。

在MPLS网络中Egress LSR double lookup的问题

由于Egress LSR不但要查看LFIB中的数据以便移除Packet 中的Label,而且还要查看FIB中的数据以决定将Packet往IP网络的下一个节点传送,这样的作法会使Egress LSR 的负担太重,而且对传送有Label的封包也不是最有效的方式。

Penultimate Hop Popping

所以解决的方式就是在原来Egress LSR前一个节点就把Label移除,最后一颗Router 只要做IP lookup 就好了,此种运作方式称为Penultimate Hop Popping。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s