关于MPLS原理的文章在网上有很多,在这里就不在详细论述,只做一下简单的回顾<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一、MPLS概述
MPLS是一种2.5层技术,最初产生的目的是在网络骨干上提高数据的转发速度,减少延迟。MPLS数据转发只需检查入口标签,在根据事先建立的LFIB就可决定输出接口立即转发,解决了传统IP网络递归搜索,最长匹配造成的转发效率低、延迟及延迟抖动大的问题,而MPLS ×××和MPLS TE更加引起网络界对MPLS的关注。
二、部分基本概念回顾
1、包模式下的标签及标签结构
标签是一种定长的(20比特)插入在二层和三层包头之间的数据头,在MPLS网络中使用标签来决定数据的转发,在包模式下标签结构如下:
<?xml:namespace prefix = v /><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

20比特LABEL字段用来表示标签值。由于标签是定长的,因此可用硬件来实现数据转发,这种硬件转发方式与传统使用软件路由最长匹配的转发方式相比具有速度快、时延低的优点。
特别注意在标签结构中使用的S值的目的是用来表示标签是否到底,这样可以使用多层标签,也就是我们经常说的标签栈。在以后的实验中我们会看到MPLS ×××和MPLS TE就使用了两个以上的标签。
2、标记交换路由器(LSR---lable switch routers)
支持并使用了MPLS协议的路由器我们称为LSR。
支持并使用了MPLS协议的路由器我们称为LSR。
3、FEC(转发等价类)
MPLS实际上是一种分类转发的技术,它将具有相同转发处理方式(目的地相同、使用的转发路径相同、具有相同的服务等级等)的分组归为一类,这种类别就称为转发等价类FEC。属于相同转发等价类的分组在MPLS网络中将获得完全相同的处理。在LDP(后面讲到)过程中,各种等价类对应于不同的标记,在MPLS网络中,各个节点将通过分组的标记来识别分组所属的转发等价类。
4、标记交换路径(LSP)
使用MPLS协议建立起来的分组转发路径,我们称作LSP,它是由标记分组源LSR与目的LSR之间的一系列LSR以及它们之间的链路构成。
MPLS实际上是一种分类转发的技术,它将具有相同转发处理方式(目的地相同、使用的转发路径相同、具有相同的服务等级等)的分组归为一类,这种类别就称为转发等价类FEC。属于相同转发等价类的分组在MPLS网络中将获得完全相同的处理。在LDP(后面讲到)过程中,各种等价类对应于不同的标记,在MPLS网络中,各个节点将通过分组的标记来识别分组所属的转发等价类。
4、标记交换路径(LSP)
使用MPLS协议建立起来的分组转发路径,我们称作LSP,它是由标记分组源LSR与目的LSR之间的一系列LSR以及它们之间的链路构成。
5、LDP标记分发协议
LDP与传统的IP网络的路由协议的作用类似,负责FEC的分类,
分配和分布标签和路由的绑定信息及LSP的建立和维护等。只要经LDP学到的路由与IGP学到的路由相同,就会在LSR上的LFIB中创建一个进程。
6、LFIB
类似于路由表,包含目标网络prefix以及对应的如和出标签以及出口信息等。其中的local tag是告诉上游LSR使用这个标签到达本地;而outging tag是下游LSR告诉本地LSR要到达某个目标网络应该使用这个标签到达下游LSR。
7、上游和下游
源网络被称为上游;目标网络被成为下游。
8、下游分发标签及数据转发
在MPLS网络中,标签是由靠近目标网络的下游LSR逐级向上游LSR分发,标签仅具有局部意义。
9、POP tag倒数第二跳标签弹出
由于连接目标网络的LSR直接连接到客户网络,为了减轻倒数第一跳LSR的负担,CISCO在MPLS网络中采用POP tag倒数第二跳标签弹出机制。也就是在连接目标网络的倒数第二跳LSR上就将标签弹出直接将数据转发到倒数第一跳LSR上。
三、标签的分发及数据转发的基本过程
以下图为例,我们来看一下标签的分发和数据转发构成,图中R2、R3、R4、R5和R8为MPLS网络中的LSR路由器,而R1和R11为客户
ROUTER。
在这个例子中我们以192.168.5.0/24网络为目标网络为例,这样R2、R3、R4相对于R8就为上游LSR,而R8、R4、R3相对于R2就为下游LSR。对于目标网络192.168.5.0/24标签的分发是由R8---R4---R3---R2方向,采用下游分发方式分发的;而数据转发是根据实现实现分配的标签由R2---R3---R4—R8方向转发的。具体见下图所示:

注意:local tag是本地ROUTER告知上游LSR应该使用这个标记到达某个目标网络;而out tag是由下游LSR接收到的标签,本地LSR根据这个标签向下游转发数据。
四、实验拓扑

五、设置指导
1、在所有路由器上启动routing protocol,考虑到MPLS ×××和MPLS TE正常情况下,在MPLS骨干网络中主要采用两种IGP协议:OSPF和IS-IS,并保证路由畅通,在这个实验中我们以OSPF为例。
2、在MPLS骨干网络上所有路由器上启动CEF或distribute CEF.
Router(config)# ip cef
或
Router(config)# ip cef distributed
3、在所有LSR连接MPLS 骨干的接口上起用MPLS
Router(config--f)#mpls ip
或
Router(config--f)# tag-switching ip
具体采用那个命令要根据IOS版本。
4、指定使用那种标签分发协议,默认为TDP,当与其他厂家设备相连时要指定使用LDP。
Router(config)#mpls label protocol <tdp/ldp>
六、部分效验命令
1、show ip route---效正路由
2、show ip protocol---检查routing protocol是否正常启动。
3、show ip cef---检查CEF是否正常启动。
4、show mpls interface---检查MPLS骨干的接口是否起用了MPLS,同时检查使用的是那种标签分发协议。
5、show mpls forwarding-table或show tag-switching forwarding-table检查是否正确建立了MPLS forwarding table(LFIB),使用这个命令可以看到针对某个目标网络在本地LSR上的输入和输出标签,以及输出接口等信息。
6、show mpls forwarding-table < Destination prefix> 〈MASK〉 detail可以查看某个目标网络的详细的mpls forwarding table.
7、show mpls ldp binding < Destination prefix> 〈MASK〉或
Show tag-switching tdp binding < Destination prefix> 〈MASK〉效验针对某个具体的目标网络的标签关联信息。应该注意的是针对某个目标网络具有多个途径时,会有多个remote bingding标签,这种
情况下LSR将选择具有shortest path的标签。
8、show ip cef < Destination prefix> detail不但可以效验CEF是否工作正常同时也可以效验标签是否正确置换。
9、show mpls ldp neighbor或show tag-switching tdp neighbor效验LSR之间是否正确建立了ldp neighbor或tdp neighbor关系。
七、所有ROUTER设置
r1设置
enable
config t
no ip domain lookup
host r1
ip cef
enable password ccsr
inter lo 0
ip address <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1.1.1.1 255.255.255.255
no shut
exit
inter fa 2/0
full-duplex
ip address 192.168.1.1 255.255.255.0
no shut
exit
router ospf 1
network 192.168.1.0 0.0.0.255 area 1
exit
line vty 0 4
login
password ccsr
end
r2设置
enable
config t
no ip domain lookup
host r2
ip cef
enable password ccsr
inter lo 0
ip address 2.2.2.2 255.255.255.255
no shut
exit
inter fa 2/0
full-duplex
ip address 192.168.1.2 255.255.255.0
no shut
exit
inter fa 0/0
full-duplex
ip address 192.168.2.1 255.255.255.0
mpls ip
no shut
exit
router ospf 1
network 2.2.2.2 0.0.0.0 area 0
network 192.168.1.0 0.0.0.255 area 1
network 192.168.2.0 0.0.0.255 area 0
exit
line vty 0 4
login
password ccsr
end
r3设置
enable
config t
no ip domain lookup
host r3
ip cef
enable password ccsr
inter lo 0
ip address 3.3.3.3 255.255.255.255
no shut
exit
inter fa 2/0
full-duplex
ip address 192.168.3.1 255.255.255.0
mpls ip
no shut
exit
inter fa 0/0
full-duplex
ip address 192.168.2.2 255.255.255.0
mpls ip
no shut
exit
router ospf 1
network 3.3.3.3 0.0.0.0 area 0
network 192.168.3.0 0.0.0.255 area 0
network 192.168.2.0 0.0.0.255 area 0
exit
line vty 0 4
login
password ccsr
end
r4设置
enable
config t
no ip domain lookup
host r4
ip cef
enable password ccsr
inter lo 0
ip address 4.4.4.4 255.255.255.255
no shut
exit
inter fa 2/0
full-duplex
ip address 192.168.3.2 255.255.255.0
mpls ip
no shut
exit
inter fa 3/0
full-duplex
ip address 192.168.4.1 255.255.255.0
mpls ip
no shut
exit
router ospf 1
network 4.4.4.4 0.0.0.0 area 0
network 192.168.3.0 0.0.0.255 area 0
network 192.168.4.0 0.0.0.255 area 0
exit
line vty 0 4
login
password ccsr
end
r8设置
enable
config t
no ip domain lookup
host r8
ip cef
enable password ccsr
inter lo 0
ip address 8.8.8.8 255.255.255.255
no shut
exit
inter fa 3/0
full-duplex
ip address 192.168.4.2 255.255.255.0
mpls ip
no shut
exit
inter fa 2/0
full-duplex
ip address 192.168.5.1 255.255.255.0
no shut
exit
router ospf 1
network 8.8.8.8 0.0.0.0 area 0
network 192.168.4.0 0.0.0.255 area 0
network 192.168.5.0 0.0.0.255 area 2
exit
login
password ccsr
end
r11设置
enable
config t
no ip domain lookup
host r11
ip cef
enable password ccsr
inter lo 0
ip address 11.11.11.11 255.255.255.255
no shut
exit
inter fa 2/0
full-duplex
ip address 192.168.5.2 255.255.255.0
no shut
line vty 0 4
exit
router ospf 1
network 192.168.5.0 0.0.0.255 area 2
exit
line vty 0 4
login
password ccsr
end
八、部分效验
1、路由器正常设置后,我们会从路由器上的显示中判断LSR的工作情况,我们这里以R4的显示为例:
r4#
*Sep 20 12:32:59.635: %SYS-5-CONFIG_I: Configured from console by console
*Sep 20 12:33:01.519: %LINK-3-UPDOWN: Interface FastEthernet2/0, changed state to up
*Sep 20 12:33:01.563: %LINK-3-UPDOWN: Interface FastEthernet3/0, changed state to up
*Sep 20 12:33:02.519: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet2/0, changed state to up
*Sep 20 12:33:02.563: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to up
*Sep 20 12:33:40.371: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet2/0 from LOADING to FULL, Loading Done
*Sep 20 12:33:42.295: %OSPF-5-ADJCHG: Process 1, Nbr 8.8.8.8 on FastEthernet3/0 from LOADING to FULL, Loading Done
*Sep 20 12:33:55.427: %LDP-5-NBRCHG: TDP Neighbor 3.3.3.3:0 is UP
*Sep 20 12:34:01.623: %LDP-5-NBRCHG: TDP Neighbor 8.8.8.8:0 is UP
我们从R4启动时的显示可以看出:
1、相应的接口启动
2、ospf neighbor建立
3、ldp neighbor建立
2、show mpls ldp neighbor效验LSR之间是否正确建立了ldp neighbor关系。我们这里以R4的显示为例:
r4#show mpls ldp neighbor
Peer TDP Ident: 3.3.3.3:0; Local TDP Ident 4.4.4.4:0
TCP connection: 3.3.3.3.711 - 4.4.4.4.11013
State: Oper; PIEs sent/rcvd: 7/7; Downstream
Up time: 00:03:24
TDP discovery sources:
FastEthernet2/0, Src IP addr: 192.168.3.1
Addresses bound to peer TDP Ident:
192.168.3.1 3.3.3.3 192.168.2.2
Peer TDP Ident: 8.8.8.8:0; Local TDP Ident 4.4.4.4:0
TCP connection: 8.8.8.8.11012 - 4.4.4.4.711
State: Oper; PIEs sent/rcvd: 7/7; Downstream
Up time: 00:03:18
TDP discovery sources:
FastEthernet3/0, Src IP addr: 192.168.4.2
Addresses bound to peer TDP Ident:
192.168.4.2 8.8.8.8 192.168.5.1
r4#
从上面的显示可以看出R4与R3和R8建立了正确的ldp neighbor.
3、检查mpls forwarding-table, R4的显示为例
r4#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 192.168.2.0/24 896 Fa2/0 192.168.3.1
17 16 2.2.2.2/32 0 Fa2/0 192.168.3.1
18 Pop tag 3.3.3.3/32 0 Fa2/0 192.168.3.1
19 Pop tag 8.8.8.8/32 0 Fa3/0 192.168.4.2
20 17 192.168.1.0/24 1518 Fa2/0 192.168.3.1
21 Pop tag 192.168.5.0/24 2166 Fa3/0 192.168.4.2
r4#
从上面显示可以看出由于R4对于192.168.5.0/24网络来说是倒数第二跳LSR,因此进行了标签弹出(Pop tag)
下面我们在来看一下R3的mpls forwarding-table
r3#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 0 Fa0/0 192.168.2.1
17 Pop tag 192.168.1.0/24 2012 Fa0/0 192.168.2.1
18 Pop tag 192.168.4.0/24 0 Fa2/0 192.168.3.2
19 Pop tag 4.4.4.4/32 0 Fa2/0 192.168.3.2
20 19 8.8.8.8/32 0 Fa2/0 192.168.3.2
21 21 192.168.5.0/24 1544 Fa2/0 192.168.3.2
r3#
我们可以看到由于R3不是倒数第二跳LSR,它针对目标网络192.168.5.0/24同时具有local tag和outgoing tag。
4、效验CEF是否正常工作以及标签是否正确置换
以R3为例:
r3#show ip cef 192.168.5.2 detail
192.168.5.0/24, version 22, epoch 0, cached adjacency 192.168.3.2
0 packets, 0 bytes
tag information set
local tag: 21
fast tag rewrite with Fa2/0, 192.168.3.2, tags imposed: {21}
via 192.168.3.2, FastEthernet2/0, 0 dependencies
next hop 192.168.3.2, FastEthernet2/0
valid cached adjacency
tag rewrite with Fa2/0, 192.168.3.2, tags imposed: {21}
r3#
5、我们在所有的LSR上使用show mpls forwarding-table观察标签的置换和分发
r8#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 192.168.3.0/24 0 Fa3/0 192.168.4.1
17 16 192.168.2.0/24 0 Fa3/0 192.168.4.1
18 17 2.2.2.2/32 0 Fa3/0 192.168.4.1
19 18 3.3.3.3/32 0 Fa3/0 192.168.4.1
20 Pop tag 4.4.4.4/32 0 Fa3/0 192.168.4.1
21 20 192.168.1.0/24 0 Fa3/0 192.168.4.1
r8#
r4#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 192.168.2.0/24 896 Fa2/0 192.168.3.1
17 16 2.2.2.2/32 0 Fa2/0 192.168.3.1
18 Pop tag 3.3.3.3/32 0 Fa2/0 192.168.3.1
19 Pop tag 8.8.8.8/32 0 Fa3/0 192.168.4.2
20 17 192.168.1.0/24 1518 Fa2/0 192.168.3.1
21 Pop tag 192.168.5.0/24 2166 Fa3/0 192.168.4.2
r4#
r3#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 0 Fa0/0 192.168.2.1
17 Pop tag 192.168.1.0/24 2012 Fa0/0 192.168.2.1
18 Pop tag 192.168.4.0/24 0 Fa2/0 192.168.3.2
19 Pop tag 4.4.4.4/32 0 Fa2/0 192.168.3.2
20 19 8.8.8.8/32 0 Fa2/0 192.168.3.2
21 21 192.168.5.0/24 1544 Fa2/0 192.168.3.2
r3#
r2#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 3.3.3.3/32 0 Fa0/0 192.168.2.2
17 Pop tag 192.168.3.0/24 0 Fa0/0 192.168.2.2
18 18 192.168.4.0/24 0 Fa0/0 192.168.2.2
19 19 4.4.4.4/32 0 Fa0/0 192.168.2.2
20 20 8.8.8.8/32 0 Fa0/0 192.168.2.2
21 21 192.168.5.0/24 0 Fa0/0 192.168.2.2
r2#
注意在R8上并没有关于192.168.5.0/24的进程,而且在倒数第二跳LSR也就是R4上采用了标签弹出(POP TAG)。我们观察上面的标签分发和置换应记住local tag是本地ROUTER告知上游LSR应该使用这个标记到达某个目标网络;而out tag是由下游LSR接收到的标签,本地LSR根据这个标签向下游转发数据。
6、最后我们在R2上使用traceroute命令观察一下标签的置换过程
r2#traceroute 192.168.5.2
Type escape sequence to abort.
Tracing the route to 192.168.5.2
1 192.168.2.2 [MPLS: Label 21 Exp 0] 192 msec 172 msec 212 msec
2 192.168.3.2 [MPLS: Label 21 Exp 0] 144 msec 84 msec 136 msec
3 192.168.4.2 256 msec 208 msec 156 msec
4 192.168.5.2 296 msec * 260 msec
r2#
丛上面的显示我们可以看出MPLS标签置换过程,同时也能看出当到达R4时进行了倒数第二跳标签弹出(POP TAG)。
转载于:https://blog.51cto.com/coooooooooper/54237