标签:MPLS ×××理论

MPLS ×××的作用


在上述拓扑图中,Internet边缘连接着多个用户网络,各种用户网络均使用私有网段在内部进行通信,如果要实现各个私有网络通过Internet进行 通信,其中一个办法可以在Internet网络中运行MPLS,因为运行了MPLS的网络要进行通信时,是查看标签而不是查看IP包头的,所以通过这种方 法我们可以轻松地实现用户网络与用户网络间跨Internet进行通信。

下面介绍在实施MPLS ×××时所涉及到的一些问题及解决办法:
1、RD—路由区分符
前面说过,我们可以通过MPLS ×××来实现用户网络间通过Internet进行相互通信,但是这里有一个问题,数据在MPLS网络中传输只查看标签进行传输这是没有问题的,但最终数据 是要离开MPLS网络最后进入用户网络的,如果这些数据到达边缘路由器时,该路由器还是无法区分用户私有网络时(因为用户私有网络地址是重叠的),那么这 时通信就会产生问题..............
要解决上述问题,办法就是让边缘路由器能够拥有正确的用户私有网络的路由,并且可以区分它们。


想让边缘路由器拥有用户私有网络的路由,通过BGP就可以实现,只要核心网络运行的MPLS保证BGP的邻居地址可达就行!边缘路由器拥有了用户网络的私 有路由后,由于用户网络的地址很多是重叠的,还需要边缘路由器可以区分这些路由,要区分这些路由是通过在用户私有网络中添加RD来实现的,在用户私有网络 进行BGP时,就为它加入额外的标记RD这样就可以实现BGP区分不同的用户私有网络。要让BGP支持RD额外标记的传递,需要使用MP-BGP。
原来的用户网络地址为32Bit,再加上96bit的RD地址,共96Bit,这样的地址称为***v4地址。
RD标记的格式分为以下两种:
(1)ASN:nn,ASN表示的是BGP的区域号码
(2)ip address:nn
比如一个网段是10.1.1.0/24,那么它的RD为100:1:10.1.1.0/24

2、VRF—虚拟路由表
使用MP-BGP可以使边缘路由器拥有用户网络的私有网络路由,仅仅这样是不能实现***功能的。如果有一台边缘路由器连接两个或者两个以上的用户网络, 而且这些用户网络使用的都是同一段的私有地址,那么当有远程用户需要用其中的一个用户网络进行通信时,边缘路由器如何正确转发这个数据呢?
比如在上述拓扑图中,当左上角的红色用户网络要与左下角红色网络进行通信时,边缘路由器是如何正确地把数据转发到左下角的红色网络而不是转发到蓝色网络呢?
要解决这个问题,办法是在边缘路由器上创建多个路由表,这个路由表只保存需要通信的用户网络。比如在边缘路由器中创建路由表,只保存红色网络的地址,这样 就可以实现红色网络数据的正确转发;如果还要转发蓝色网络的数据,那么只需要再另外创建一个路由表保存蓝色网络的路由即可!由此可见,一个边缘路由器如果 连接多个用户网络,则边缘路由器需要创建多个路由表,创建的这个路由表我们称为VRF虚拟路由表。

3、RT—路由对象
前面我们通过RD来让边缘路由器区分不同的用户网络、VRF为需要通信的用户网络创建虚拟路由表。这里又出现一个问题,那就是如何保证边缘路由器只会将需要通信的网络放入VRF中,而不会将错误的路由放入到VRF中呢?

要解决这个问题,方法是在将用户网络放入到BGP中时,我们会为它添加额外的RD标记,这时可以通过为需要通信的红色网络标记为相同的RD,比如 100:1,而将蓝色的网络标记为100:2,这样我们可以控制只将标记为100:1的放入到VRF中,如果蓝色的网络需要通信,我们可以再创建一个 VRF并把标记为100:2的放入到蓝色网络中的VRF中,这样我们就可以有效地控制哪些网络需要放到VRF中了。控制虚拟路由表只能进入什么样的路由或 者只能出去什么样的路由,称为RT(路由对象)。

通过以上描述,可以看到如果想让标记为同一RD值的路由(比如RD为100:2)进行通信的话,可以通过RT来进行控制。方法是将VRF的RT设置为100:2;如果网络中存在多个不同RD值的网络(比如100:2、100:3)需要进行通信时,该如何解决呢?

要解决这个问题,方法是通过在用户各自的VRF中设置多个RT值,这样就可以实现多个不同RD的用户网络进行相互通信。

从上面拓扑图中显示,红色网络中的R1和蓝色网络中的R2,默认情况下,他们是不能通信的,因为红色网络的VRF只允许RD为100:1的路由条目进入, 而蓝色网络的VRF只允许RD为100:2的路由条目进入,但是配置为大家的VRF都同时允许RD为100:1和100:2进入,最后两个VRF中都有了 对方的路由,也就实现了互通。

MP-BGP


在以上拓扑中,LAN1连接Internet,LAN2也连接着Internet,要让LAN1与LAN2可以相互通信,只需要在中间运行MPLS ***即可。中间运行MPLS的路由器称为P,在核心网边缘与用户网相连的称为PE,用户网与核心网相连的称为CE,用户网内部的路由器称为C。
用户网络进入 PE时,BGP会为其添加上RD标签,添加了RD的路由称为***v4,这时BGP会将***v4路由放入MP-BGP,然后MP-BGP会将其发送给对端的MP-BGP邻居,为了保证对端邻居收到这些***v4路由后还能认识***v4的RD,那么BGP必须为***v4添加额外的标签,对方BPG看到这个标签后,就能根据RD将其放入到相应的VRF中,将数据发往CE。正因为BGP要对***v4添加额外的标签,所以要使用MP-BGP。
在MPLS中,数据包可以被打上多个标签,而LSR在转发时,只看顶部的标签,也就是说在数据包的多个标签中,只有顶部这一个标签会被使用和修改,所以MP-BGP在给***v4加入标签时,只要加在顶部标签的下面,这样数据包在MPLS中传输时,就不会被修改了,所以对端BGP邻居能够正确识别数据包的相应RD,这也是为什么MPLS_×××中数据包需要使用两个标签的理由。

MP-BGP规则
普通的BGP通过额外配置address-family之后,就可以实现MP-BGP的功能,普通的BGP只是能够传递普通IPv4的路由,所以这样也会有个默认address-family,称为ipv4,但是因为IP分为单播和多播,所以这种默认的address-family就是ipv4 unicast,如果要让BGP支持ipv4多播,那address-family就是ipv4 multicast。 如果要支持IPv6的单播和多播,那么address-family就分别为ipv6 unicast和ipv6 multicast。 在这里,以上的都不是我们要用到的address-family,因为我们要传递的即不是ipv4单播,也不是ipv4多播,更不是ipv6,我们要传递的是***v4,所以就要开启MP-BGP支持***v4,要支持***v4,也需要创建相应的***v4的address-family。并且需要创建相应的VRF,这样相应的***4就和相应的VRF相关联起来。所有多协议的BGP在运行之前,应该保证普通的BGP邻居是正常的。MP-BGP在为***v4通告标签时,并且所有信息要当作团体属性带出去,要手工指定。

PE-CE间的路由
不同用户网络间要通过MPLS ×××进行通信,PE上则需要有用户网络的路由,然后PE再将这些路由发送到对端MP-BGP邻居。
在将用户网络发送到对端MP-BGP邻居时,PE首先要获得用户网络的路由,PE获得这些路由信息的方法可以使用静态路由或者是动态路由协议。如果使用动态路由协议,那么PE和CE间必须要运行某一种路由协议。PE获得用户网络路由后,需要将这些路由信息重分布进MP-BGP,再发送到对端MP-BGP邻居;同时CE也需要知道远程用户网络的路由信息,方法是将MP-BGP重分布进PE与CE间的路由协议中。

PE和CE间支持的协议有:
静态路由
RIPV2
OSPF
EIGRP
IS-IS

各种协议的配置方法:
1、静态路由
(1)PE上直接对某个VRF写静态路由
ip route 0.0.0.0 0.0.0 14.1.1.4
(2)在PE上将静态路由重分布进MP-BGP
router bgp 100
address-famile ipv4 vrf ***1
redidstribute static
exit
(3)CE上要有指向PE的默认路由
ip route 0.0.0.0 0.0.0.0 14.1.1.1

2、RIPV2
(1)在PE上运行RIP V2
router rip
version 2
no auto-summary
address-family ipv4 vrf ***1
no auto-summary
network 14.0.0.0
redistribute bgp 100 metric 1
(2)PE上将RIP重分布进MP-BGP
router bgp 100
address-family ipv4 vrf ***1
redistribute rip 
exit
(3)在CE上正常配置RIPV2
router rip
version 2
no auto-summary
network 14.0.0.0
network 10.0.0.0
exit

3、OSPF
(1)在PE上配置OSPF
router ospf 100 vrf ***1
router-id 3.3.3.3
network 36.1.1.3 0.0.0.0 area 0
redistribute bgp 100 subnets
(2)在PE上将OSPF重分布进MP-BGP
router bgp 100
address-family ipv4 vrf ***1
redistribute ospf 100
exit
(3)在CE上正常运行OSPF
rotuer ospf 100
router-id 6.6.6.6
network 36.1.1.6 0.0.0.0 area 0
network 192.168.1.6 0.0.0.0 area 0
exit

4、EIGRP
(1)在PE上运行EIGRP
router eigrp 1
no auto-summary
address-family ipv4 vrf ***2
no auto-su
network 83.1.1.3 0.0.0.0
autonomous-system 1
redistribute bgp 100 metric 10000 1000 255 1 1500

(2)将EIGRP重分布进MP-BGP
router bgp 100
address-family ipv4 vrf ***2
redistribute eigrp 1

(3)在CE上正常运行EIGRP
router eigrp 1
no auto-su
network 172.16.1.8 0.0.0.0
network 83.1.1.8 0.0.0.0
exit