很多朋友在学习MPLS/×××,我根据CISCO 文档写了本篇中文版的MPLS ××× 配置。
本篇的目的是为了让大家抛开复杂的MPLS/××× 的原理,快速的掌握MPLS/××× 的基本配置,这个配置可以完成大多数实际网络的需求。

介绍
MPLS 准许多个Site 通过Service Provider 的网络透明互联。一个ISP 的网络可以支持多个不同的IP ×××,每个×××对客户来说,是个单独的私有网络,和其它的客户都是独立的。在一个×××里面,每个site 可以发送IP 包给同一个××× 里的其它Site。换句话来说,MPLS/×××对于客户来说,相当于一个透明的三层传输网络,以前可以通过租用Leased Line 互联,现在可以租用MPLS/××× 链路互联。
每个×××和一个或多个VRF(××× Routing or forwarding instance)关联。一个VRF 包括一个路由表、一个CEF 表和一组使用这个转发表的接口。
路由器为每个VRF维护着独立的路由表和CEF 表。这可以防止信息被发送到××× 之外,并且每个××× 可以使用重叠的IP 地址。 路由器通过MP-BGP的扩展community 标签来分发××× 路由信息

实验环境

本例在下面的软件和硬件环境下实现:

P 和PE路由器
· Cisco IOS. Release 12.2(6h),支持MPLS ××× feature.
· P 路由器:Cisco 7200 系列路由器.
· PE 路由器:Cisco 2691, 或者3640 系列路由器.

C 和CE 路由器
· 任何可以和PE 交换路由信息的路由器都可以作为C 和CE 路由器缩写约定
· P - Provider's core router.
· PE - Provider's edge router.
· CE - Customer's edge router.
· C - Customer's router.
我们将用下面的拓扑图进行举例说明:

 

 

配置
网络拓扑图
本文档使用下面的拓扑图,网络中有3 台P 路由器、2 台PE 路由器(Pescara 和Pesaro),2 个
××× 客户分别是Customer_A 和Customer_B:

 

配置过程
启用ip cef
使用下面的过程启用ip cef.,为了提高性能,可以在支持的路由器上使用ip cef distributed命令。
当在接口上配置了MPLS 后(在接口上配置 tag-switching ip).,还要在PE 上完成下面的步骤:

1. 在路由器上为每个相连的×××创建一个VRF,使用命令 ip vrf配置ip vrf 的时候: o 为每个×××指定正确的RD.这是为了扩展IP 地址之用,以便你可以识别IP 地址属于哪个×××. o 配置MP-BGP的扩展communities 的import 和export 值. 这是用于过滤import 和export 过程的.
route-target [export|import|both]
2. 在××× 各自的接口下使用ip vrf forwarding ***>命令,别忘了还需要配置IP 地址
3. 配置PE-CE 间使用的路由协议,可是使用静态路由或者动态路由(RIP、OSPF、BGP).

配置MP-BGP

在PE 路由器之间配置MP-BGP.有几种办法来配置BGP,例如路由反射器或者联盟.我们这儿使用直连的邻居进行举例.

1. 声明彼此的邻居
2. 为这台PE 上的每个×××配置address-family ipv4 vrf  ***>如果需要的话,完成下面的步骤 
       o 重分布静态、RIP、或者OSPF 路由
       o 重分布直连的路由
       o Activate 和CE 路由器间的BGP 邻居
3. 进入address-family ***v4 模式,完成下面的配置:
       o Activate the neighbors. Activate 邻居
       o 指定必须使用扩展community,这是必须的. 
 

配置
本例中的5 台路由器配置如下:
Pescara
 
Current configuration:
!
version 12.2
!
hostname Pescara
!
ip cef
!
!--- Customer_A 的配置.

ip vrf Customer_A
!---启用Customer_A 的××× 路由和转发表 (VRF).
rd 100:110

!--- Route distinguisher creates routing and forwarding
!--- tables for a VRF.
route-target export 100:1000
!--- Creates lists of import and export route-target extended
!--- communities for the specified VRF.
route-target import 100:1000
!
!--- Customer_B 配置.
ip vrf Customer_B
rd 100:120
route-target export 100:2000
route-target import 100:2000
!
interface Loopback0
ip address 10.10.10.4 255.255.255.255
ip router isis
!--- Customer_A 的配置.
interface Loopback101
ip vrf forwarding Customer_A
!---将一个接口或者自接口和一个VRF 实例关联起来.
ip address 200.0.4.1 255.255.255.0
!--- Loopback101 和 102 使用相同的IP 地址 200.0.4.1.这是准许的,因为它们属于2 个不用客户的VRF
no ip directed-broadcast
!
!--- Customer_B 的配置.
interface Loopback102
ip vrf forwarding Customer_B
ip address 200.0.4.1 255.255.255.0
!--- Loopback101 和 102 使用相同的IP 地址 200.0.4.1.这是准许的,因为它们属于2 个不用客户的VRF
no ip directed-broadcast
!
interface Serial2/0
no ip address
no ip directed-broadcast

encapsulation frame-relay
no fair-queue
!
interface Serial2/0.1 point-to-point
description link to Pauillac
bandwidth 512
ip address 10.1.1.14 255.255.255.252
no ip directed-broadcast
ip router isis
tag-switching ip
frame-relay interface-dlci 401
!
router isis
net 49.0001.0000.0000.0004.00
is-type level-1
!
router bgp 100
bgp log-neighbor-changes
!--- 启用BGP 邻居关系中断的记录.
neighbor 10.10.10.6 remote-as 100
neighbor 10.10.10.6 update-source Loopback0
!--- 配置BGP 邻居.
!
!--- Customer A and B commands.
address-family ***v4
!--- 进入address-family ***v4 配置模式,配置和PE/P 路由器间的MP-BGP 路由会话。
neighbor 10.10.10.6 activate
neighbor 10.10.10.6 send-community both
!--- Sends the community attribute to a BGP neighbor.
exit-address-family
!
!--- Customer B commands.
address-family ipv4 vrf Customer_B
!--- 进入address-family ipv4 的配置模式下,配置和CE 间的路由会话,
redistribute connected
no auto-summary
no synchronization
exit-address-family
!

!--- Customer A commands.
address-family ipv4 vrf Customer_A
redistribute connected
no auto-summary
no synchronization
exit-address-family
!
ip classless
!
end

Pesaro
 
Current configuration:
!
version 12.1
!
hostname Pesaro
!
!--- Customer A commands.
ip vrf Customer_A
rd 100:110
route-target export 100:1000
route-target import 100:1000
!
!--- Customer B commands.
ip vrf Customer_B
rd 100:120
route-target export 100:2000
route-target import 100:2000
!
ip cef
!
interface Loopback0
ip address 10.10.10.6 255.255.255.255
ip router isis
!--- Customer A commands.
interface Loopback101
ip vrf forwarding Customer_A
ip address 200.0.6.1 255.255.255.0
!

!--- Customer B commands.
interface Loopback102
ip vrf forwarding Customer_B
ip address 200.0.6.1 255.255.255.0
!
!--- Customer A commands.
interface Loopback111
ip vrf forwarding Customer_A
ip address 200.1.6.1 255.255.255.0
!
interface Serial0/0
no ip address
encapsulation frame-relay
no ip mroute-cache
random-detect
!
interface Serial0/0.1 point-to-point
description link to Pomerol
bandwidth 512
ip address 10.1.1.22 255.255.255.252
ip router isis
tag-switching ip
frame-relay interface-dlci 603
!
router isis
net 49.0001.0000.0000.0006.00
is-type level-1
!
router bgp 100
neighbor 10.10.10.4 remote-as 100
neighbor 10.10.10.4 update-source Loopback0
!
!--- Customer B commands.
address-family ipv4 vrf Customer_B
redistribute connected
no auto-summary
no synchronization
exit-address-family
!
!--- Customer A commands.

address-family ipv4 vrf Customer_A
redistribute connected
no auto-summary
no synchronization
exit-address-family
!
!--- Customer A and B commands.
address-family ***v4
neighbor 10.10.10.4 activate
neighbor 10.10.10.4 send-community both
exit-address-family
!
ip classless
!
end
 


 Pomerol
 
Current configuration:
!
version 12.0
!
hostname Pomerol
!
ip cef
!
interface Loopback0
ip address 10.10.10.3 255.255.255.255
ip router isis
!
interface Serial0/1
no ip address
no ip directed-broadcast
encapsulation frame-relay
random-detect
!
interface Serial0/1.1 point-to-point
description link to Pauillac
ip address 10.1.1.6 255.255.255.252
no ip directed-broadcast
ip router isis
tag-switching mtu 1520

tag-switching ip
frame-relay interface-dlci 301
!
interface Serial0/1.2 point-to-point
description link to Pulligny
ip address 10.1.1.9 255.255.255.252
no ip directed-broadcast
ip router isis
tag-switching ip
frame-relay interface-dlci 303
!
interface Serial0/1.3 point-to-point
description link to Pesaro
ip address 10.1.1.21 255.255.255.252
no ip directed-broadcast
ip router isis
tag-switching ip
frame-relay interface-dlci 306
!
router isis
net 49.0001.0000.0000.0003.00
is-type level-1
!
ip classless
!
end
 


 Pulligny
 
Current configuration:
!
version 12.1
!
hostname Pulligny
!
!
ip cef
!
!
interface Loopback0
ip address 10.10.10.2 255.255.255.255
!
interface Serial0/1

no ip address
encapsulation frame-relay
random-detect
!
interface Serial0/1.1 point-to-point
description link to Pauillac
ip address 10.1.1.2 255.255.255.252
ip router isis
tag-switching ip
frame-relay interface-dlci 201
!
interface Serial0/1.2 point-to-point
description link to Pomerol
ip address 10.1.1.10 255.255.255.252
ip router isis
tag-switching ip
frame-relay interface-dlci 203
!
router isis
passive-interface Loopback0
net 49.0001.0000.0000.0002.00
is-type level-1
!
ip classless
!
end
 


 Pauillac
 
version 12.1
!
hostname pauillac
!
ip cef
!
interface Loopback0
ip address 10.10.10.1 255.255.255.255
ip router isis
!
interface Serial0/0
no ip address
encapsulation frame-relay
no ip mroute-cache

tag-switching ip
no fair-queue
!
interface Serial0/0.1 point-to-point
description link to Pomerol
bandwith 512
ip address 10.1.1.1 255.255.255.252
ip router isis
tag-switching ip
frame-relay interface-dlci 102
!
interface Serial0/0.2 point-to-point
description link to Pulligny ip address 10.1.1.5 255.255.255.252
ip router isis
tag-switching ip
frame-relay interface-dlci 103
!
interface Serial0/0.3 point-to-point
description link to Pescara
bandwidth 512
ip address 10.1.1.13 255.255.255.252
ip router isis
tag-switching ip
frame-relay interface-dlci 104
!
router isis
net 49.0001.0000.0000.0001.00
is-type level-1
!
ip classless
!
end
 

检验
本节讲述了如何检查你的配置是否工作正常.
· show ip vrf - Verifies that the correct VRF exists.
· show ip vrf interfaces - Verifies the activated interfaces.
· show ip route vrf Customer_A - Verifies the routing information on the PE routers.
· traceroute vrf Customer_A 200.0.6.1 - Verifies the routing information on the PE routers.
· show ip bgp ***v4 tag - Verifies the BGP.
· show ip cef vrf Customer_A 200.0.6.1 detail - Verifies the routing information on the PE  routers.

更多的排错命令详见: MPLS ××× Solution Troubleshooting Guide.
下面的输出是命令 show ip vrf 的结果
Pescara#show ip vrf
Name                         Default RD                             Interfaces
Customer_A                100:110                              Loopback101
Customer_B                100:120                              Loopback102

下面的输出是命令show ip vrf interfaces 的结果.
Pesaro#show ip vrf interfaces
Interface                  IP-Address              VRF               Protocol
Loopback101             200.0.6.1         Customer_A            up
Loopback111             200.1.6.1         Customer_A            up
Loopback102            200.0.6.1         Customer_B            up

下面的 show ip route vrf 命令的结果显示在2 个×××l 里面都有相同的网段 200.0.6.0/24. 这是因为两个×××客户 Customer_A 和Customer_B 使用了重叠的IP 地址.

Pescara#show ip route vrf Customer_A
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR

Gateway of last resort is not set
C 200.0.4.0/24 is directly connected, Loopback101
B 200.0.6.0/24 [200/0] via 10.10.10.6, 05:10:11
B 200.1.6.0/24 [200/0] via 10.10.10.6, 04:48:11

Pescara#show ip route vrf Customer_B
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route

Gateway of last resort is not set
C 200.0.4.0/24 is directly connected, Loopback102
B 200.0.6.0/24 [200/0] via 10.10.10.6, 00:03:24

在Customer_A 的2 个站点间使用Traceroute,可能可以看到MPLS 网络使用的label stack。
(如果配置mpls ip ttl .)
Pescara#traceroute vrf Customer_A 200.0.6.1
Type escape sequence to abort. Tracing the route to 200.0.6.1
1 10.1.1.13 [MPLS: Labels 20/26 Exp 0] 400 msec 276 msec 264 msec
2 10.1.1.6 [MPLS: Labels 18/26 Exp 0] 224 msec 460 msec 344 msec
3 200.0.6.1 108 msec * 100 msec
Note: Exp 0 是QoS 使用的一个字段