您的位置 首页 php

MPLS VPN详解

目 录

1前 言

第一章 MPLS 概念2

第一节 MPLS产生的技术背景2

第二节 MPLS的定义2

第三节 MPLS 的功能6

第四节 MPLS的包头结构7

第五节 标签栈8

第六节 MPLS 相关术语8

第七节 标签交换路由器9

第八节 LIB LFIB 和FIB10

第九节 标签分发协议11

第十节 标签的分配和管理11

第十一节 倒数第二跳弹出12

第十二节 有关MPLS的一些操作13

第二章 MPLS VPN 理论知识14

第一节 VPN中的角色14

第二节 有关VPN14

第三节 MPLS VPN的概念15

第四节 MPLS VPN相关术语15

第五节 CE 路由器 PE路由器 P路由器16

第六节 MBGP路由17

第七节 介绍vrf17

第八节 介绍 RT18

第九节 介绍rd19

第三章 MPLS VPN实验21

第一节 CE和pe 路由器之间如何交换路由21

第二节 路由重分布21

第三节 MPLS VPN的实验22

第四节: MPLS VPN相关命令的总结32

参考文献38

致 谢39

前 言

MPLS VPN全球商用大约在2000年开始兴起。在国内,运营商中国网通率先在2000年几乎与世界同步推出该技术。目前其他运营商纷纷效仿。MPLS VPN技术现在已成为世界第一大网络设备商思科公司的主推技术,MPLS VPN为用户提供了安全保障和服务质量的保证,MPLS VPN为企业用户提供了语言,数据,视频的统一通信平台。目前MPLS VPN技术在网络服务商,跨国企业的应用越来越广泛。

MPLS VPN技术的发展前景非常乐观。以ipv6为核心网络技术的下一代互联网,MPLS VPN将扮演越来越重要的角色,这源于MPLS VPN技术是即支持ipv4,也支持ipv6 。由于MPLS VPN 具有多标签嵌套的功能,这就为语音技术提供了一个平台,三网合一在未来网络也是发展的趋势。MPLS VPN 与QOS相结合,可以使网络的服务质量更上一层楼。MPLS可以与各种网络技术相结合,MPLS VPN 将成为未来的主流技术之一。

本文主要介绍MPLS VPN的技术结构,介绍MPLS VPN相关的技术和相关的概念。本文分三大部分:第一章,主要介绍MPLS的知识;第二章,主要介绍MPLS VPN相关的理论知识;第三,通过实验说明MPLS VPN的操作过程。

第一章 MPLS 概念

第一节 MPLS产生的技术背景

在90年代中期,当时路由器技术的发展远远滞后于网络的发展速度与规模,主要表现在转发效率低下,无法很好的提供QOS保障。出现这一系列的问题的原因在于:当时路由查找算法使用最长匹配原则,必须使用软件查找。而IP的本质就是:”只关心过程,不注重结果”的”尽力而为”。还有一个重要原因,IP是没有可靠性机制保障的,IP的可靠性机制是靠TCP来完成的,TCP有三次握手机制,可以保障可靠性。当时网络界流行这样一种论调:过于简单的IP技术无法承载网络的未来,基于IP的因特网必将在未来的几年内崩溃。这就是所谓的IP的危机。

这时有很多的协议想取代IP的地位。在这些协议中,最具有代表性的是ATM协议,ATM准备取代IP成为网络中的主要协议。但是我们只有对比一下TCP/IP 和ATM,就会发现ATM的缺点是非常明显的。TCP/IP只有四层:网络接口层、互联网络层、传输层、应用层。ATM的层次是一个立体模型,与TCP/IP比就太繁复了。任何一个网络设备生产商,都无法与ATM技术完全结合。IP的背后支持者是IEEE(美国电气和电子工程师协会),这个协会又是网络的权威机构。最后ATM和IP的竞争中,ATM终于失败。最后成为IP的链路层。变成了一个链路层协议。 ATM虽然没有最终成功,但是ATM的思路却具有创新意义:第一,摒弃了繁琐的路由查找,改为简单而且快捷的标签查找。这一点是具有很大的创新,因为如果按照路由查找是非常低效的,标签查找可以很大的提高转发效率。第二,将全局意义上的路由表 变成只有本地意义的标签表。这两点都是ATM的精华,而MPLS 恰恰吸收了ATM的精华。

MPLS 吸收了ATM的精华,使用标签作为转发的前提。但是MPLS也看到了IP作为网络的主要承载体,IP在网络中的地位无法动摇。所以MPLS 作为IP的承载层,但是与一般的链路承载层又有区别,MPLS 定义为2.5层。MPLS被称为2.5层技术。

第二节 MPLS的定义

MPLS的定义为:路由器通过MPLS协议来创建标签到标签的映射关系,这些标签都被封装在IP报文,使得路由器通过标签查找来转发数据流量,而不是通过IP地址。这样一来,数据包是通过标签交换来传递的,而不是通过路由表的查找来传递的。

MPLS概念的解释:MPLS设备无需查看三层包头,也就是不用查看IP包头,只用查看标签就可以转发数据报文。这是MPLS技术一个非常大的优势,MPLS无需查看三层包头,就可以省去查看三层包头的时间。提高整体的转发效率。MPLS还有一个好处就是标签的无限嵌套,这就是网络服务商(下面简称服务商)非常喜欢MPLS技术的原因。有关标签无限嵌套的好处,打一个比方说:比如说一所大学的学生都发书,一所大学计算机系的学生都发计算机方面的书,一所大学计算机系学生选修数据库的大学生都发数据库的书。如果是这所大学的计算机系选修数据库方面的大学生,那么该发这个大学生什么书是非常清楚的。数据包与这个比喻是一样的,每一个数据包都被打上了若干标签,这些标签告诉网络该如何处理这个数据包。这就是标签的魅力,可以无限嵌套。换句话说就是无论这数据包”身份”如何复杂,都可以表示清楚。网络也知道如何处理该数据包。

15230142304055cef890567

下面通过一个例子来说明MPLS标签数据包转发的过程。三台核心路由器被自左向右被标示为1,2,3路由器左边连这一台路由器4,路由器3的右边连着一个路由器5连接的网段是5.5.5.0/24 。现在的问题是连在路由器1要去往5.5.5.0/24 这个网段。数据包从4发出,这时应该是一个完全意义上的IP数据包。在核心路由器上都有LFIB(标签转发信息数据库),在标签转发数据库中5.5.5.0 这个网段都有入标签和出标签。这些路由器被称为LSR.有关这些技术术语在后面会有专门的解释。这个实验在后面会有详细解释。

下面通过对路由器的MPLS数据库的描述,来详细分析一下数据包的流动方向:

r4#sh MPLS forwarding-table

Local Outgoing Prefix Bytes tag Outgoing Next Hop

tag tag or VC or Tunnel Id switched interface

400 Pop tag 1.1.1.1/32 0 Se0/2 point2point

401 100 2.2.2.2/32 0 Se0/2 point2point

402 101 3.3.3.3/32 0 Se0/2 point2point

403 103 5.5.5.5/32 0 Se0/2 point2point

404 104 172.16.35.0/24 0 Se0/2 point2point

405 Pop tag 10.1.12.0/24 0 Se0/2 point2point

406 105 10.1.23.0/24 0 Se0/2 point2point

数据包的目的地是5.5.5.5 打上的标签是103 这是外层标签

r1#sh MPLS forwarding-table

Local Outgoing Prefix Bytes tag Outgoing Next Hop

tag tag or VC or Tunnel Id switched interface

100 Pop tag 2.2.2.2/32 0 Se0/1 point2point

101 202 3.3.3.3/32 0 Se0/1 point2point

102 Pop tag 4.4.4.4/32 1668 Se0/2 point2point

103 204 5.5.5.5/32 324 Se0/1 point2point

104 205 172.16.35.0/24 0 Se0/1 point2point

105 Pop tag 10.1.23.0/24 0 Se0/1 point2point

可以看到:入标签是103 出标签是204

r2#sh MPLS forwarding-table

Local Outgoing Prefix Bytes tag Outgoing Next Hop

tag tag or VC or Tunnel Id switched interface

200 Pop tag 1.1.1.1/32 0 Se0/1 point2point

201 Pop tag 192.168.14.0/24 0 Se0/1 point2point

202 Pop tag 3.3.3.3/32 0 Se0/2 point2point

203 102 4.4.4.4/32 1712 Se0/1 point2point

204 304 5.5.5.5/32 744 Se0/2 point2point

205 Pop tag 172.16.35.0/24 0 Se0/2 point2point

可以看出:入标签是204 出标签是304

r3#sh MPLS forwarding-table

Local Outgoing Prefix Bytes tag Outgoing Next Hop

tag tag or VC or Tunnel Id switched interface

300 200 1.1.1.1/32 0 Se0/2 point2point

301 Pop tag 2.2.2.2/32 0 Se0/2 point2point

302 201 192.168.14.0/24 0 Se0/2 point2point

303 203 4.4.4.4/32 1712 Se0/2 point2point

304 Pop tag 5.5.5.5/32 1128 Se0/3 point2point

305 Pop tag 10.1.12.0/24 0 Se0/2 point2point

可以看出:入标签是304 出标签是pop 就是发出的是一个ip包 这是倒数第二跳

Gateway of last resort is not set

1.0.0.0/32 is subnetted, 1 subnets

O 1.1.1.1 [110/193] via 172.16.35.3, 00:24:29, Serial0/3

2.0.0.0/32 is subnetted, 1 subnets

O 2.2.2.2 [110/129] via 172.16.35.3, 00:24:29, Serial0/3

O 192.168.14.0/24 [110/256] via 172.16.35.3, 00:24:29, Serial0/3

3.0.0.0/32 is subnetted, 1 subnets

O 3.3.3.3 [110/65] via 172.16.35.3, 00:24:29, Serial0/3

4.0.0.0/32 is subnetted, 1 subnets

O 4.4.4.4 [110/257] via 172.16.35.3, 00:24:29, Serial0/3

5.0.0.0/32 is subnetted, 1 subnets

C 5.5.5.5 is directly connected, Loopback0

172.16.0.0/24 is subnetted, 1 subnets

C 172.16.35.0 is directly connected, Serial0/3

10.0.0.0/24 is subnetted, 2 subnets

O 10.1.12.0 [110/192] via 172.16.35.3, 00:24:30, Serial0/3

O 10.1.23.0 [110/128] via 172.16.35.3, 00:24:30, Serial0/3

这是最后一台路由器 这时查的是路由表 5.5.5.5 这是直连网段。

数据包一旦有LER打上相应的数据标签后,接下来传给核心路由器。数据包在核心路由器的转发是完全基于MPLS标签的。位于网络核心的LSR仅仅是查看数据包的入标签,因为网络核心路由器基于入标签就可以判断出目的网络在那里。核心路由器在向下一跳路由器转发会给数据包换上合适的标签。最后的边缘路由器会摘掉标签,还原出IP包。

这只是大致上描述了数据包在MPLS VPN 网络中的传递过程,在下面的介绍中会很详细的介绍这个过程。对相依的术语也会有详细介绍。

第三节 MPLS 的功能

任何一种技术的引入,都是为了解决一定的问题。MPLS的引入也是一样,因为MPLS 技术能够解决一定的问题。

前面已经介绍过,IP作为网络的主要承载协议。具有一定的问题,其中非常明显的一个问题是如果仅仅数基于IP的路由表的话,路由查找起来有一个最长匹配问题,如果每经过一个路由器都查找这么一番,转发效率是个问题。MPLS 的引入就是为了解决这一问题,数据包被MPLS重新封装之后,数据包查看的是MPLS 包头,不是IP数据包头。转发效率大大提高。这就是MPLS的功能。

第四节 MPLS的包头结构

有关MPLS数据包结构的研究是非常有必要的。这里介绍的数据包结构至少包括两个方面的内容:第一方面MPLS数据包头在整个数据包头中的位置;第二方面MPLS数据包头里面到底都有些什么内容。

第一方面:MPLS数据包头在整个数据包头中的位置。MPLS数据包头位于IP数据包头之前,位于二层数据包(即链路层数据包)之后。简单地说,MPLS数据包头位于二层和三层之间,这就是所谓的MPLS数据帧。位于二层和三层之间,2.5层技术由此而来。

数据包的结构为:

二层数据封装 MPLS数据包头封装 IP数据层封装数据。

前文已经提过,利用MPLS的标签机制,无需检查三层包头,这是为什么呢?因为标签插在二层和三层之间,查看标签就可以了,没有必要查看三层路由信息。

需要注意的是MPLS的标签可能有一层,可能有两层,但也有可能是很多层(一般到四五层就够了,没有必要太多)标签可以是无限多的,这是MPLS最大的魅力所在。也是MPLS能够支持多种业务的原因所在。

2层封装 ,MPLS外层标签, MPLS内层标签 ,IP头部标签 ,数据。

2层封装 ,MPLS顶层标签……MPLS底层标签 ,IP头部标签, 数据。

第二,MPLS标签里面有些什么内容呢。MPLS 标签的结构非常简单,MPLS的目的是减少转发数据包时所需的信息量,并不在依赖三层数据包包头信息,从而与三层数据包协议相独立。

我们来看数据包的内层结构

标签 EXP(COS) S TTL

标签会占到20个字节

EXP(COS)会占到3个字节

TTL 会占到8个字节

标签字段的取值范围是0—1048575,但0–15被保留给其将来使用,因而16是第一个标签值。但是一般在分标签的时候会充分考虑到易操作性,所以在分标签时会在一定的范围内分标签。

EXP(COS)字段的使用定义在RFC3031中,Cisco利用该字段来定义服务类别(COS

CLASS OF SERVICE)这里的COS值等于IP优先级的值。为什么要要设定COS值呢?主要是为了服务质量(Quality of Service)做准备。因为只有明确了每个数据包的优先级,我们才能够知道一旦网络发生拥塞,或者说网络环境不够理想,我们应该优先处理哪些数据包。

“标签栈”底指示符S。前面提到过,如果某个数据包在使用多层标签嵌套,这时就需要使用到”标签栈底标签”。如果S位被至为0(假)或者(1)。设置为0代表标签还没有到底,换句话说这不是最后一层标签。设置为1代表标签为”栈底标签”,也就是说这是最后的标签。

TTL字段的功能与IP中TTL字段的功能完全一样的。每经过一台路由器,TTL值就会减1,当TTL的值减少为0时。数据包在网络中将无法转发。设计TTL 的主要目的是为了避免环路。数据包在网络中无限循环下去是很可怕的,这样会浪费网络中有限的带宽。

第五节 标签栈

“标签栈”的概念在前面已浅层次的介绍过,在本节中将比较深入的介绍标签栈的概念。

“标签栈”的机制有点类似于GRE(generic routing encapsulating)通用路由封装协议。隧道在承载IP流时,用IP去封装IP。从本质看,这种情况应该是IP头部的外面再包裹着一层IP头部。虽然隧道中的每个数据包都有两个包头,但是到达隧道的目的地前,只有一个包头用于路由选择,外层的IP头部用于路由选择,里层的IP头部是不参与路由选择的。到达隧道的尽头后,外层的IP包头部将被移除,里层的IP包头部将显露出来。这时将发挥里层IP数据包头的作用。对通常的MPLS 设计者来说,标签的使用通常比较简单。用户可以使用多标签来完成某些特殊的应用,比较常见的应用如下:

MPLS VPN-利用一种特殊的标签,来标记数据包属于哪个VPN,这一点至关重要。因为网络通信时可能有若干组VPN在工作,每一组VPN必须要和他同组的VPN传递信息。不能和其他组的VPN传递信息,否则的话路由信息就会外泄,安全性机制无法得到保障。同一组的VPN一定要用同样的标示符。这样同一组的VPN就可以识别来自于同一个组的VPN设备。

MPLS TE-MPLS TE (traffic engineer 流量工程)使用RSVP来建立LSP 隧道,由RSVP 负责传递用来表示LSP隧道的标签和相关信息。

这是MPLS VPN数据包的格式:

2层封装, 标签3封装, 标签2封装, 标签1封装, 3层协议头部 ,数据包。

一旦标签的作用完成,就会移除或弹出该标签。这样做的原因很明显,如果MPLS 标签的功能发挥完了,这个标签也就没有用了。现在举例说明,MPLS TE数据包,在整个传递过程中。至少有3层标签,第1层标签是外层标签,这是给沿途路由器看的,主要是用标签转发代替路由查找,路由传递到LSP的尽头时外层标签也就没有用了。需要说明的是,在路由器的转发过程中里层的标签是不会”关注”的,应为没有必要关注。当到达VPN的对等体时,2层封装自然就会摘掉。这时露出了第3层封装,有关MPLS TE的标签,会完成对应的操作。

有一点是可以确定的。最外层的MPLS 标签一定是代替路由查找的标签,在MPLS VPN网络中,这个MPLS 标签是被交换的,就是在每一个LSR上 “出栈标签”都会代替入站标签。无论经过多少路由器都是一样的操作。到达LSP这个天然隧道的尽头时,外层标签自然就会拿掉。

第一个标签被称为”栈顶标签”,最后一个标签被称为”栈底标签”。标签的处理过程总是基于”栈顶标签”的。可以认为”标签栈”具有一定的深度,每一个标签都具有一个与”栈底”或”栈顶”相对位置有关的名称。最外面的标签被称为”栈顶标签”或一级标签,第二层标签被称为二级标签,第三层标签被称为三级标签……以此类推,最后一层标签被称为”栈底标签”。如果某个数据包无标签,我们可以认为这个数据包的标签深度为零。

第六节 MPLS 相关术语

下面来介绍与MPLS VPN相关的几个术语,这些概念对于MPLS VPN的学习是非常重要的。有些名词术语在前面提到过,在这里解释这些名词术语。

标签(LABEL):是一个比较短的,定长的,通常只具有局部意义的标识。这些标识通常用于二层链路封装(数据链路层的封装)与三层封装之间,标签通过绑定过程同FEC相映射。标签是在MPLS VPN中用到最广的概念。也是MPLS VPN的精髓之所在。

LSP(LABEL SWITCHER PATH):标签交换通道。一个FEC的数据流,在不同的节点被赋予确定的标签,数据包转发按这些标签进行。数据流所走过的路径就是LSP(label switch path)。LSP这个概念是非常重要的,因为LSP是一个天然的隧道,MPLS VPN就是基于这个隧道开发的。

LSR(LABEL SWITCHING ROUTER)标签交换路由器,LSR是整个MPLS 网络的核心路由器,该路由器负责标签的分发和标签的交换。

LSR是整个MPLS 网络的核心,整个标签转发的过程是靠MPLS网络中的LSR来完成的,可以这样说,没有LSR就没有MPLS 网络。在下面的小节中会有专门的描述。

LER(LABLE SWITCHING EDGE ROUTER)是一种特殊的LSR,处于MPLS网络云团的边缘。

下面的章节还会对某些重要的概念做出详解,深入剖析。

第七节 标签交换路由器

LSR(LABEL SWITCHER ROUTER)标签交换路由器是整个MPLS 网络云团的关键,是整个MPLS网络技术的核心。所以单独拿出一节来详细说明。

MPLS的转发工作是由能够进行标签查找和标签替换的网络设备来完成的。该设备无需进行三层包头的查找,或者说该设备可以进行三层包头的查找,但是三层包头的查找是要耗时的。于是网络设备就用2.5层标签数据包的查找来代替3层包头的查找。这样的网络设备就是LSR(标签交换路由器label switch route)。从纯粹的定义来看,LSR是根据打在数据包上标签进行3层数据包转发的MPLS节点。

为了能够顺利下面的解读,先来介绍两个概念。从基础架构的角度看,MPLS将传统的路由选择机制划分成以下两个部分。控制平面—负责处理相邻设备的路由选择和标签信息的交换。数据平面—根据目的地址或者标签转发数据流。

打一个比喻,控制平面有些类似于交通规则的制定,交通规则的制定是一个比较复杂的过程。而数据平面类似于交规的执行。我们把这个过程大致描述一下。首先在控制平面上,控制平面上有路由协议,路由协议一旦工作,就会与周围的邻居交互路由信息,然后形成路由表。这张路由表非常关键,路由表是生成下面一系列表的来源。在数据平面会有FIB( forwarding information database)数据转发信息库,如果来的数据包是一个IP数据包,那么这个数据包就需要用FIB来转发。如果来的数据包是一个标签包,但是需要弹出标签,弹出了标签以后就会变成一个数据包。这时依然要依靠FIB表。数据平面还有一张表,这个表是LFIB(label forwarding information database)标签转发信息数据库。这张表的用处在于:路由器接受到的是一个标签包,这时路由器要查的就是LFIB表。通过对LFIB的查找,路由器可以搞清用什么来代替MPLS入标签。还有一点,如果是IP的数据包,但是发出去的时候需要打上标签,此时仍然要查这张表。

数据平面的功能在于根据路由协议形成的路由表的镜像(FIB)或LDP提供的信息来源来转发数据流量,会创建一个转发标签数据库(LFIB),通过这个转发引擎来转发数据。为数据包到达目的地提供转发模块。LSR(标签交换路由器)必须同时工作于控制平面和数据平面。控制层面主要是负责交换路由选择信息,这是传统路由器的功能,任何一台路由器都具有学习路由的功能。这就是前面所讲的交规制定过程,这个过程是下面数据平面的基础。就像交规的制定过程是交规的执行过程的基础一样。

数据平面主要负责实际的转发操作。如果是一个MPLS包,MPLS数据包的转发完全基于标签。可以这么讲,对于LSR标签交换的过程可以代替路由查找的过程。换句话说,虽然每一台路由器都保持着一个完整的收敛后的路由表,但它们并不参与常规的路由选择操作。LSR(标签交换路由器)维护路由表的作用主要是为了确保FIB(转发信息数据库)随时保持最新状态。确保能正确的分配标签,并且能正确的处理数据包。需要特别说明的是,边缘LSR(标签交换路由器)不仅要转发数据包,而且还要增加或者移除标签。

第八节 LIB LFIB 和FIB

在前面的叙述中,我们反复提到过三张表。LIB(label information database)标签信息库。LFIB(label forwarding information database)标签转发信息数据库。和FIB(forwarding information database)转发信息库。在本小节中我们需要深入分析一下这三张表。这对我们研究MPLS VPN是非常有帮助的。

MPLS需要依赖底层的协议来收集构建LFIB(标签转发信息数据库)所需的信息。从本质上讲,LFIB是一个标签路由表。虽然标签是通过标签分发协议(LDP)来共享的,但是标签信息是基于IP路由信息来构建的。如果IP网出现路由收敛问题或者其他不稳定的状况,MPLS网络也将受到相应的影响。

一旦构建完路由表,且路由收敛过程也完成,那么每台LSR(标签交换路由器)会为路由表中的每个路由条目分配标签,这些标签都只在本地才有意义,并被存储在LIB(标签信息库)中。LIB(label information database)标签信息数据库里面存储的信息是非常丰富的,每一个目的网段(每一个目的前缀)都会有对应的本地标签,和若干个来自它邻居的标签。标签数量的多少实际上取决于邻居的多少。

LIB是控制平面的一部分。LIB包含的主要有这么几个方面的信息。前面也叙述过,在这里小结一下。目的网络地址(目的网络前缀),本地对这个目的网络地址分配的标签,来自邻居路由器对这个目的地址分配的标签。这些信息都会汇总在LIB中。来自邻居的标签是不分优劣都会存的,这一点很重要。但是在LFIB(标签转发信息数据库)里存的只是最优的。所谓的最优的标签,是到达目的网段最快捷的路由分配的标签。

LFIB(标签转发信息数据库)是数据平面的一部分。负责转发带标签的MPLS数据包。LFIB是用的最多的数据库,在该数据库中,只会存最优标签。

IGP被用来在整个网络中的所有MPLS路由器之间传播路由信息,路由器基于igp路由更新所共享的信息。就会确定去往每个网络目的地的最优路径了。

FIB(转发信息数据库)也是数据平面的一部分。为转发不带标签的数据包提供ip提供相应的数据库。从本质上说,FIB是路由表的镜像,如果到达下一跳目的地需要经过一个不支持MPLS的输出接口。这时需要使用FIB表。

如果简单地说,FIB(forwarding information database)转发信息数据库,用于转发带IP 包的数据包。LIB(label information database)标签信息数据库用来存储标签。LFIB(label forwarding information database)用来转发MPLS数据包。

第九节 标签分发协议

在前面反复提到了标签,实际上整个MPLS的基础就是建立在标签上的。有了标签转发是非常自然的事。那么标签是如何生成的呢,在本节中重点讨论这个问题。

标签是靠一种协议生成的,这种协议被称为LDP协议(label distritution protocol)标签分发协议。是一种动态生成标签的协议。这种动态标签协议LDP与OSPF协议十分相似,都具备以下几个要素:

报文(或者叫做信息)

邻居的自动发现和维护机制

一套算法,用来根据搜集到的结果计算出最终结果。

OSPF计算的是路由,LDP计算的是标签。

在LDP协议中,存在着4种LDP信息:

发现(Discovery)消息

用来通告和维护网络中LSR的存在。

会话(session)信息

用于建立,维护和结束LDP对等实体之间的会话连接。

通告(advertisement)消息

用来创建、改变和删除特定FCE的绑定

通知(notification)消息

用来提供消息通告和差错通知。

LDP会话的建立和维护

邻居发现:通过互发hello报文。用的是UDP的646端口,组播地址为224.0.0.2

建立TCP连接:由地址大的一方主动发起。用的是TCP的646端口。这时会做一件事,确定主从关系。地址大的为主(master),地址小的为从(slave)。

会话初始化:由master发出初始化信息,并携带协商参数。

有slave检查参数能否接受,如果能则发送初始化信息,并携带协商参数,并随后发送keepalive信息。

由master检查参数能否接受,如果能则发送keepalive信息。

相互接受keepalive消息,会话建立。

期间受到任何差错消息,比如说超时。均会关闭会话,断开TCP连接。

类比OSPF就会很容易的理解,首先发送hello信息,告诉对方我是存在的。接下来互发参数,目的在于建立TCP连接,建立会话。一旦会话建立后,就靠keepalive保持会话,如果出现问题,比如说超时,会话自然会断开。一旦邻居建立后,传标签是非常自然的事。

第十节 标签的分配和管理

为了能够介绍清楚标签的分配和管理,首先要明确一个概念,上游路由器和下游路由器。上游路由器和下游路由器是相对于数据包的传送方向而言。数据包的传送方向和路由的传送方向和标签的分发方向正好相反。举例说明,有三台路由器1,2,3。路由器3联系着一个网络192.168.2.0。现在路由传递得方向是3,2,1.标签传递得方向也是3,2,1.但是数据包传递得方向却是1,2,3.根据路由器上游和下游的定义。相对于路由器2而言,路由器3是它的下游路由器,路由器1是它的上游路由器。

下游路由器发出标签,路由器主动发出标签的前提是:

第一:路由器的接口必须是开启状态。这很容易理解,反过来想想,如果路由器的接口是关闭状态,那么路由器任何信息都无法发送。当然就不会发送标签信息了。

第二:路由器受到了下游路由器的关于某个网络的标签。如果说这个路由器直接连接某个网络的话,可以直接发送标签。

对于邻居发给我的LDP(标签分发协议),有所谓的标签保留方式。有两种标签保留方式。一种是自由方式。另一种是保守方式。

自由方式:自由方式保留来自邻居的所有标签。需要说明的是所有标签,即所有邻居发来的标签,它都会收。不一定是下一跳邻居。自由方式的优点很明显:当路由表发生变化,路由发生抖动的时候。可以快速找到下标签,用于发送。自由方式的缺点也是很明显的:需要更多的内存空间和标签空间。这一点很容易理解,如果路由的目的网络非常多(网络的目的前缀非常多)这时对应的标签会更多。一条路由可能对应好几个标签。标签越多,标签空间就会越大。内存就会越大。

现在比较流行的是自由方式。

保守方式:保守方式只保留来自于下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签。就是说只保留来自于下一跳的标签。如果说一台路由器是我的邻居路由器,但是不是我的下一跳路由器。这个邻居路由器发出的标签我是不收的。

保守方式的优点是可以节约标签空间和内存空间。保守方式的缺点是当路由表发生变化的时候,下一跳发生变化时收敛较慢。

LDP(label distribution protocol标签分发方法控制方式有两种。一种是有序方式。第二种是独立方式。

有序方式标记控制:除非LSR是路由的始发节点,否则LSR要等到来自下一跳的路由器发过来标签时才会向上游路由器发送标签。

现在比较流行的是有序方式。

独立方式标记控制:LSR可以向上游发送标签,而不必等待来自于LSR的下一跳的标签信息。

用一个比喻来说,有序方式类似于”击鼓传花”。路由器收到来自于下一跳的路由器的”花”,路由器才会往下传。否则不传。现在比较流行的是有序方式。

有关标签可以概括成这么几句话:

入标签是我分给别人的,出标签是别人分给我的。

我分配的标签是给别人用的,我不会添加在报文中。

我添加到报文中的是别人发给我的标签。

连接上游的路由器出口只能发标签,不能收标签。

连接下游的路由器出口可以发标签,可以收标签。

第十一节 倒数第二跳弹出

在MPLS网络云团的出口处,LSR(标签交换路由器)应变MPLS数据包转发为ip路由查找。这时必须去掉标签,去掉标签的目的在于还原出ip包。因为下面的网络根本无法识别MPLS包。如果发出去的是一个MPLS包,下面的路由器是无法识别的。一旦去掉MPLS包头,接下来查的是FIB(转发信息数据库)。

作为最后一跳路由器,如果受到的是一个MPLS数据包头,按着常规,这个数据包应该交给MPLS数据模块处理,而对于一个边缘路由器,在MPLS数据模块能做的唯有去掉标签。然后交给FIB(转发信息数据库),查找FIB后处理。现在看来这样是有些浪费时间。对于一个边缘路由器而言,反正也要摘掉MPLS数据包头,不如直接交给最后一跳路由器的就是一个ip数据包。

于是就有了一个需求,最好在倒数第二跳时将MPLS标签弹出来。这样发过来的数据包不就是一个ip数据包了么。而最后一跳路由器也没有必要去查MPLS数据模块,直接交给ip数据层就可以了。这样操作可以大大提高转发效率。

刚才介绍的是理论层面上的知识,如何进行操作。关键是如果让倒数第二跳路由器知道自己应该弹出标签。其实很简单,在最后一跳路由器为倒数第二跳路由器分标签时,分一个”3″标签即可。这是一个特殊的标签,受到这个标签的路由器在往外发数据包时,自动弹出标签。

总结一下,MPLS可以分为两大组件:

MPLS控制平面,控制层面的作用作用在于交换路由信息和标签。

MPLS数据平面,根据标签转发数据包。

MPLS体系结构中需要用到各种表,具体作用如下。

FIB(转发信息数据库),构建者某个igp路由协议(路由进程),包含的内容目的地前缀,输出接口和下一跳接口。作用在于将目的网络映射到下一跳地址和出接口,实现无MPLS的数据包的转发。

LFIB(标签转发信息数据库),构建者igp和LDP信息,入标签、出接口和出标签。作用在于转发带标签的数据包。

第十二节 有关MPLS的一些操作

MPLS的理论在前面已经讲了很多了,其实MPLS的操作完全基于理论,本节重点在于操作。

命令:IP CEF

命令解释:这条命令是必须打的。CEF是MPLS的逻辑前提,如果CEF 关闭了的话,整个MPLS是不会运转的。那么CEF里面都有些什么呢?打一个比喻来说,一个学校里面有1000名学生,每个学生建一张表。这表里面有关于这个学生的全部信息,当然包括这个学生的住宅地址。如果想找到这个学生的住宅地址,必须先找到这张表。1000名学生就是1000张表,找起来很麻烦。如果能另外建一张表,表里面就是1000名学生的名字和住宅地址。找起来就会很容易。CEF 就像这张简化后的表,可以帮助路由器快速查找。

命令:mpls label protocal ldp

命令解释:MPLS标签协议是基于LDP来分发数据标签的。MPLS分发协议一般是LDP。MPLS当然也有其他的分发协议的方式。至于MPLS的LDP协议前面解释过了,就不重复了。

命令:mpls label range 100 199

命令解释:MPLS 标签的范围是100 ,199。就是说标签从100 定义到199。标签的范围是任意的,但是一般情况下都按照范围分。这样清楚,易于操作。

第二章 MPLS VPN 理论知识

在第一部分,介绍了有关MPLS的知识,在MPLS的基础上我们构建了MPLS VPN。第二部分主要介绍MPLS VPN相关的理论知识和操作原理。为第三部分MPLS VPN的实验打下坚实的基础。

第一节 VPN中的角色

MPLS VPN网络中有各种各样的路由器,每个路由器都扮演着一定的角色。在本节中对路由器可能的角色进行介绍,这一节是下面章节的基础。

CE(custom edge)直接与服务商相连的用户设备。CE路由器是客户路由器,简单地说就是客户网络与MPLS VPN网络相连的路由器。

PE(provide EDGE router):指骨干网上的边缘路由器,与CE相连,主要负责VPN业务的接入。PE路由器首先是在MPLS VPN网络中的,而且一般处于MPLS VPN的边缘。PE路由器是MPLS VPN云团的边缘路由器,这种边缘路由器一般会与若干个CE路由器相连。换句话说,就是若干个CE路由器共享一个PE路由器,基于这个原因,一般PE路由器的性能都是比较高的。

P(provide router):指骨干网上的核心路由器,主要完成路由和快速转发功能。一般P路由器都是LSR(label switcher router),一般都运行MPLS协议。P 路由器是转发路由器,靠着标签交换转发数据包。

第二节 有关VPN

VPN是一种应用比较广泛的概念,VPN可以利用服务商提供的网络基础设施来实施专用网络。许多服务商提供的VPN服务包含了”网络中的防火墙功能”。VPN的本质是虚拟专用网络,本身就具有安全保护特性。

VPN从宏观上可以分为两大类:一类被称为覆盖VPN–包括老式的X.25、帧中继和ATM等2层覆盖VPN。以及GRE隧道和IPsec等3层覆盖VPN。

对等互联VPN–使用ACL在共享的服务提供商网络基础设施上实现VPN,为每个客户提供独立的VPN。

覆盖VPN最大的特点就是:服务商不参与路由,而对等互联VPN最大的特点是服务商参与路由。在覆盖VPN中,私有网络在服务商中是看不见的。

但是在对等互联VPN中私有网络是可以在服务商网络传递的。

覆盖网络的本质是一种”静态”VPN,这就好比是静态的路由,所有它具有静态路由的全部缺点。

第一:所有的配置和部署都需要手工完成,都存在N的平方的问题。如果某个客户的VPN新增了一个节点,则需要完成以下工作:

在这个新增节点上建立与所有存在的N个VPN节点的隧道建立相关路由。

在这N个VPN节点上必须与新增的VPN节点建立隧道连接。

第二:由于是静态VPN路由,则无法反应网络的实际变化情况。

而且,如果隧道建立在CE(custom EDGE),换句话说隧道建立在客户端上,客户完全可能是不会配置VPN设备。这就是说配置在客户端可没有可操作性的。如果建立在PE上,地址冲突问题该如何解决。

所有具有”静态”性质的东西都不太适合大规模的应用和部署,因为这样做配置量实在是太大了。最重要的是,网络是一个变化的东西,一旦网络拓扑发生变化,”静态”的东西显然是不适用的。首先要解决的问题就是VPN的部署变为动态性。对等体VPN(peer-to-peer vpn )的产生就是源于这个思路。

这里的peer-to-peer vpn (对等体VPN)是指ce-to-pe,也就是要在ce和pe 之间之间交换私有网络的信息,然后由PE将这些私有网络在P网络中传播。P网络肯定运行了一种路由动态路由协议,这样这些私有网络的路由会自动传播到其他pe上。

Peer-to-peer(对等体VPN)的引入,使得服务商可以在客户的路由选择操作中扮演更加积极的角色。换句话说就是服务商参与私有网络路由。

大多数服务商都允许客户自行选择本地路由器使用的路由协议。

通过上面的叙述,我们可以看到peer-to-peerVPN有很多优点。网络提供商扮演的角色发生了变化。此时网络服务商已经变成客户路由基础设施的一部分。只要通过一条可达网络服务商的链路即可。可以实现全网络拓扑的结构。这使得网络非常具有弹性。

MPLS VPN属于对等互联(peer-to -peer vpn.)

第三节 MPLS VPN的概念

为什么要引入MPLS VPN这个概念。我们会发现对等互联VPN(peer-to-peer vpn)有很多的优点,但是有很多问题没有解决。第一,隧道技术问题,需要有一种动态建立的隧道。第二,如何解决地址冲突的问题。第三,如何让同一种VPN的网络设备只收本VPN的路由。在MPLS 网络中的lsp(label switcher path)标签交换路径是一个天然的隧道。而且lsp是基于ldp建立的,ldp 是一种动态标签协议。正好解决了动态建立隧道的问题。所以将MPLS引入到VPN中是非常自然的事。剩下两个问题如何解决后面会有专门的介绍。

前面提过MPLS VPN属于对等体VPN (peer-to-peer)vpn.

MPLS VPN是一种基于MPLS技术的IP-VPN,是在网络路由和交换设备上应用MPLS技术,简化核心路由器的路由选择方式,利用结合传统路由技术的标记交换实现的IP虚拟专用网络(IP VPN),可用来构造宽带的Intranet、Extranet,满足多种灵活的业务需求。

MPLS VPN的概念有几个要点:第一,MPLS VPN技术首先是建立在MPLS标签网络上的。第二:MPLS VPN利用客户唯一的RD(router distinguished )实现客户的路由信息完全独立,区分开路由信息;第三:MPLS VPN利用RT(router target)技术来区别不同的vrf ,从而实现同一个vrf之间路由的互访。第四:利用vrf技术,实现一台路由器模拟多台专用模拟器。

这里涉及到的MPLS VPN相关概念,在下面的章节中会做介绍。

第四节 MPLS VPN相关术语

前面已经讨论过一些MPLS VPN的术语了,为了叙述的方便,在这里将MPLS VPN相关术语整理一下。

C网络—客户控制的内部网络

CE路由器—客户端路由器(也称客户前端路由器设备),连接在PE路由器上。

LSP—lable switcher path 标签交换路径,标签交换数据包通过P网络传送到特定目的地是用的路径。

P网络—网络服务商提供的核心路由器组成的内部路由,有LSR(labe switcher router)标签交换路由器组成的MPLS云团。

P路由器—服务商MPLS核心路由器或骨干路由器,无需有面向客户的端口,无需携带VPN路由。

PHP—倒数第二跳弹出,由P网络的倒数第二跳弹出标签。

Vrf—virtual router forwarding (虚拟路由表),一个虚拟路由表可以与一个特定的VPN交换路由条目。

RD—一个64比特的网络标示符,附加在ipv4前面就可以形成一个全球唯一的vpnv4。

RT-route target 是vpnv4的附加属性,用以指出VPN的成员关系,就是告诉VPN设备那个是本VPN的路由可以收。哪些不是本VPN路由,不可以收。

第五节 CE路由器 PE路由器 P路由器

前面有关CE路由器,PE路由器,P路由器的介绍不够深入,在本节中将会有比较深入的介绍。

CE路由器的架构:前面已经介绍过,CE路由器非常关键,无论使用什么样的名字。CE的路由器的本质都是一台路由器,这台路由器运行igp协议(比如OSPF eigrp rip)和相邻路由器(一般是PE路由器)交换路由信息。

CE 路由器无需支持MPLS,也不属于MPLS体系结构。只是负责发送和接受客户路由信息。所有的路由重分布和MPLS标签相关的操作都是在PE路由器上完成的,对于CE 路由器来说是完全透明的。从体系结够看,CE路由器的功能主要表现在能与PE路由器交换路由。

PE 路由器架构:在网络服务商内部网络中,每个客户都有自己的RD和专门维护某个VPN的特定vrf表,有关RD核vrf表的概念在后面会有专门的介绍。

P路由器:P网络由P路由器组成,P路由器并不携带VPN路由,它们仅提供PE路由器之间流量的传送功能,其路由表仅仅携带P网络中的路由信息。P路由器与PE路由器相连,负责将BGP对等信息传送到远端PE设备。

第六节 MBGP路由

前面提到过一个非常重要的问题就是地址冲突问题,而仅仅依靠MPLS是无法解决地址冲突问题的。必须引入一种路由协议,这种路由协议具有非常好的可扩展性,可以利用这种路由协议的可扩展性来解决地址冲突问题。当然还有一些其他问题也需要利用这种路由协议的可扩展性来解决。

BGP路由协议是一种非常适合解决上述问题的路由协议,理由非常充分。

第一:网络中的VPN数目可能非常庞大,BGP是唯一能够支持大量路由条目的路由协议。BGP的容量非常大,可以容下整个互联网的路由。

第二:BGP也是为不直接相连的路由器交换路由信息而设计的,就是说BGP可以跨路由器建立连接,而且是跨多少台路由器都可以。这使得P路由器无需携带VPN路由,这可以节约很多路由器的性能。

第三:BGP可以运载附加在路由条目后面的任何信息,这是BGP的一种属性。BGP的团体属性,就是给不同的路由条目打上相同的团体值,这就等于给了这些路由一个相同的性质。可以基于这个相同的属性,定义一些功能。

我们为什么要选BGP作为MPLS VPN中PE路由器运行的路由协议呢,一个很重要的原因是我们要用BGP的路由属性,bgp的路由属性非常丰富,后面的rd(router distinguished)rt (router target)说的简单一点就是BGP的团体属性。更为重要的是,BGP可以跨路由器建立连接,而任何一种IGP都没有这种功能。

简述一下BGP和igp之间的关系。Bgp是以igp为”平台”建立的,bgp需要igp作为基础。简单地说,bgp需要igp为其找到bgp的下一跳,找到bgp的对等体后即可和bgp的对等体互传bgp路由。Bgp找到下一跳的工作由igp去做,这样可以屏蔽掉许多工作细节。

第七节 介绍vrf

Vrf(VPN router forwarding instance)VPN路由转发实例,是整个MPLS VPN中最难理解的一个概念。也是MPLS VPN中最重要的一个概念。正确理解vrf是正确理解MPLS VPN的关键。

在解决地址冲突的问题上,存在着一些方法:acl nat等。这些方法基于”打补丁”的思想,无法在本质上解决问题。

可以从专用路由器上得到启示。专用路由器分工明确,即每vpn都有VPN对应的专用PE(provide EDGE router)路由器。每pe都保留自己VPN的路由。而公网上的路由也有专门的路由器P路由器来保留公网上的路由。这样做的好处很明显,即VPN与VPN之间的路由永远也不要担心互相干扰。但是不好的地方也很明显,成本太高了。

现在的思路是:将所有专用pe设备集合在一台共享pe上来完成。用一台共享pe设备去模拟专用pe设备和公网上的路由器p。如何来模拟呢?这就需要引入vrf(VPN router forwarding instance)VPN 路由转发实例的概念。

每一个vrf可以看做是一个虚拟的路由器,就好比是一台专用的pe设备。该虚拟设备包含以下几个元素:一张独立的路由表,当然也包括了独立的地址空间;一组属于这个vrf的接口的集合;一组只用于本vrf的路由协议。包括igp和bgp协议。

在我们常规的思路中,一个路由器一般都只有一个路由表,别管这个路由器起了多少个路由协议,最后都汇总成一个路由表。但是现在的思路:一台路由器有多个路由表,每个路由表可以视为一台单独的”路由器”。当然这个路由器是虚拟的路由器。每个虚拟路由器又有专属于它的接口。并且运行着路由协议,与特定VPN的ce路由器建立起邻居关系,并且可以互传路由。这样做的好处是:既可以节约成本(只有一台真实的路由器),又可以解决地址冲突问题,实现一台pe上区分不同的VPN路由。

第八节 介绍 RT

在专用pe的方式中,已经很好的解决了这个问题。当时使用了bgp的community属性。Bgp的团体属性。现在共享pe路由器仍旧使用这个思路,只不过将community属性扩展了一下,冠以新名称为rt(router target)。

如果对bgp的community属性非常熟悉的话,很容易理解rt(router target)这个概念。设计community团体属性的目的就是为了给一组路由条目打上一个相同的标示。从标示相同这个角度来讲,这些路由具有相同的性质。我们可以基于标示相同这一点,做一些设置。

Rt(router target)的本质是每个vrf表达自己的路由取舍和喜欢的方式。可以分为两部分:export target和import target。前者标示发出的路由属性,后者标示我会收那些路由。

举例说明,路由器a和路由器b属于同一个VPN。路由器a发出的路由是红色的,接受的路由也是红色的。路由器b发出的路由是红色的,接受的路由也是红色的。用红色这一标示,来绑定一种VPN。

在一个vrf中,在发布路由时使用rt的export的规则。直接发送给其他pe设备,在接收端的pe设备上,接受所有的路由条目。并根据每个vrf的配置import 规则来检查。如果和发来的路由的export相匹配,则可以导入,否则无法导入。

第九节 介绍rd

在ipv4地址加上rd之后,就变成VPN-ipv4地址了。

如果两个vrf存在相同的地址(这种情况很常见,两个vrf里存的路由可能都是192.168.0.0 网段,很多公司都会这么做)。但rd不同,则两个vrf一定不能互访,间接互访也不行。

Pe从ce接收到的路由是一个ipv4路由,如果需要发布给其他的pe路由器,此时需要为这个路由条目增加一个rd.在ipv4地址加上rd之后,就变成vpn-ipv4地址族了。Vpn-ipv4地址仅用于网络服务商内部。rd的本质就是为了让每一个路由前缀保持唯一性。

Rd是一个64比特的标示符,附加在ipv4地址前(ipv4地址是不能改的)构成vpnv4地址,pe路由器上这些VPNv4地址在bgp对等体间进行宣告,支持ipv4之外地址族的bgp被称为mbgp(multiple protocol bgp)。Mbgp最主要的特点是,能够支持各种地址族。比如说vpnv4地址,ipv6地址。但是如果是一般的bgp,则无法支持除ipv4协议之外的协议。这就是为什么一定要将用mbgp的原因。

操作的过程为:第一,通过igp(也可以是bgp,但是一般情况下是igp)从ce端学到一个前缀,这个前缀一定是ipv4地址;第二,在pe路由器上igp的vrf表中分布到bgp的vrf表中,路由被重分布到mbgp时,附加rd(router distinguished)在ipv4的前面,变成一个vpnv4地址。第三,pe将一个vpnv4地址发送到pe的对端。第四,在pe的对等体将vpnv4地址还原成ipv4地址,只要移除rd就可以了。

将操作过程详细解释一下。在ce(custom edge router)上运行igp或bgp,这样做的目的在于让pe和ce之间能够建立起邻居关系,建立起邻居关系之后自然可以传递路由条目。这里传递得路由形式一定ipv4地址形式。在pe路由器上,路由条目被重新分布到mbgp(multiple protocol bgp)中,有关重分布在后面的章节中会有专门的介绍。这时在原来的路由条目前加上rd信息。这样做的目的是让ipv4变成vpnv4地址。Pe路由器之间直接通过i-bgp(同一个自制系统内部的VPN)对等体之间建立bgp对等关系,然后传递路由条目。I-bgp是邻居关系是必须建立的,这是传递路由的基础。对等体pe的另一端受到vpnv4的路由条目后,需要将rd(router distinguished)移除,还原出ipv4地址,然后再做一次重分布。vrf表中与ce端连接路由表中重分布。这里必须要移除rd,可以反过来看:如果不移除rd,那么就是vpnv4地址,可是ce肯定看不懂ipv4地址。

Rd值并没有什么特殊含义,其功能主要在于解决地址重叠的问题。在MPLS VPN的实现中,可以将rd视为vrf的标示符。换句话说,rd视为VPN路由的标示符。

概念总结:前面讲了一些概念,在这里把这些概念总结一下。

Vrf—在一台pe路由器上虚拟出来的一个路由器,包括一些特定的接口,一张路由表,一个路由协议,一个rd和一组rt规则。

Rt—表明了一个vrf的路由喜好,通过它可以实现不同的vrf之间的路由互访。他的本质就是bgp的community属性。

RD—为了防止一台pe接收到远端pe发来的不同vrf的相同路由时不知所错,而加在路由前面的特殊信息。

第三章 MPLS VPN实验

前面的章节主要是介绍了MPLS VPN的理论,在第三部分主要是通过一个实验来解释MPLS VPN的配置思路,配置过程,和排错思路。包括使用命令的介绍。

第一节 CE和pe 路由器之间如何交换路由

CE上的配置十分简单,只要正常启路由协议,然后宣告对应的接口就可以了。但是在pe(provide EDGE router)相对而言就比较复杂。

首先要启用vrf,并且需要配置和vrf相关联的参数,主要是rd(router distinguished)和rt(router target)参数。这些参数是必须配置的,没有这些vrf的参数,就无法完成路由的导入和导出。Pe上维护的路由表,包括公网路由表和私有网络的路由表(vrf)表。需要说明的是私有网络(vrf)表,可能是若干个路由表,这是非常常见的。公网路由表:包括全部pe和p路由器之间的路由,由骨干igp产生。私有网络路由表:报告本VPN用户可达信息的路由和转发。私有网络路由表主要是和本地ce路由器建立邻居后互传路由的结果,和远端pe路由器互传vpn的路由信息。

Pe和ce之间交换路由信息的方式有多种:可以是静态路由,可以是rip协议,可以是OSPF协议,可以是eigrp(思科私有)的协议。还可以是e-bgp协议。静态路由、rip都是标准的协议。每个vrf运行不同的协议的实例,相互之间没有干扰。说的更加简单一些:一个rip协议下可以放置多个vrf,每个vrf属于多个不同的进程,相互之间不会干扰。与pe(provide EDGE router)的mp-bgp之间只是简单的重分布操作。可以这样理解,一个vrf就像是一台路由器,当然这个路由器是虚拟的路由器,这个路由器有igp进程也有bgp进程,现在是把igp进程下的路由重分布进入bgp进程。这个bgp是mp-bgp(multiple protocol bgp)。重分布的概念是把属于其他路由进程下的路由条目放置到本路由进程下,本路由进程下的路由条目会增多。在重分布的过程中,路由的参数可能要重新设置。

第二节 路由重分布

上一节提到,在本地ce路由器和本地pe路由器vrf之间路由邻居关系建立起来之后,将会互传路由信息。本地vrf有两个部分组成,一个是vrf 的igp部分,这是从ce路由器学习来的路由条目。另一部分是与远端pe路由器建立的mp-bgp邻居关系,简单的说就是vrf 中的mp-bgp路由部分。现在需要把vrf 的igp部分注入到mp-bgp中。所用的方法就是路由重分布。这时pe路由器需要对一条路由进行如下操作:加上rd(router distinguished)rd为手工配置,变成一条vpnv4地址。这一点很重要,否则在服务商网络中就有可能传递相同的路由。加上私有网络的标签(随即自动生成,无需配置)。加上rt(router target)属性,rt需要手工配置,有关rt的概念前面有叙述。这些工作做完之后,发给所有的pe邻居。是所有的pe邻居,一个pe可能有多个pe对等体邻居。

Mp-bgp的vpnv4路由在服务商的网络中传递,当传递到bgp的对等体时,vpnv4路由变成了ipv4路由,这时去掉rd头部。并且根据本地的vrf的import属性放置到相应的vrf中,也就是说同一个VPN的vrf和同一个VPN的vrf之间传递路由,私有网络标签保留,留作转发时使用。由对等体pe路由器的vrf mp-bgp路由注入到vrf 的igp路由表中。这个过程是第二次重分布,第一次重分布将igp重分布进入mp-bgp,第二次重分布正好相反,是将mp-bgp重分布进入igp中。再由本vrf的路由协议转发至相应的ce中。经过这么两次的重分布,就可以将VPN路由跨越服务商网络传递,传递到服务商网络的另一端的客户网络中。这正是MPLS VPN网络的魅力所在,也是MPLS VPN的精髓所在。还是MPLS VPN网络实现功能所在。

第三节 MPLS VPN的实验

15230142304773dd157308c

实验需求:实现VPN网络的互访,4.4.4.4网络和5.5.5.5网络可以互访。

实验设备:五台路由器,其中两台客户路由器,两台pe路由器,一台P路由器。

实验目的:通过实验掌握MPLS VPN的配置思路,和相关的命令。

实验思路:

第一:给所有路由器的接口配置ip地址,并且根据路由器的编号1,2,3,4,5。配置loopback口的地址。1为1.1.1.1,以此类推。

第二:在路由器1,2,3之间,开启OSPF进程,并且把相关接口放入到OSPF进程中。就是开启OSPF路由协议。这是后面操作的基础。属于底层配置。

第三:在路由器1,2,3之间,启动MPLS协议,将相关的接口放置到MPLS 进程中。

第四:在路由器1和路由器3之间配置mp-bgp进程。先配置bgp进程,然后配置mp-bgp,注意启动多协议。

第五:在路由器1和路由器3上,就是路由器上,启动vrf。配置vrf相关的参数,并且把相关接口放入到vrf中。相关接口指的是与客户端关联的接口。

第六:在路由器1和路由器3上,就是pe路由器上,开启路由协议。这个路由协议要与客户端配置的路由协议相同,否则不传路由。然后将vrf放置到相关的路由协议中。

第七:做重分布。一个方向上两次重分布。在另一个方向上相同,完全是对称的。

第八:设计一下,让两边的RT属性一开始不一样,后来一样。观察一下后发现。属性不一样时路由无法进入vrf。属性一样时可以进入vrf。

MPLS VPN 的实验

1523014230536b54859ba3c

R1:

int s0/2

Ip add 192.168.14.1 255.255.255.0

No sh

Int s0/1

Ip add 10.1.12.1 255.255.255.0

No sh

Int lo0

Ip add 1.1.1.1 255.255.255.255 //OSPF环回口的网络类型

R2:

Int s0/1

Ip add 10.1.12.2 255.255.255.0

No sh

Int s0/2

Ip add 10.1.23.2 255.255.255.0

No sh

Int lo0

Ip add 2.2.2.2 255.255.255.255

R3:

Int s0/2

No sh

Ip add 10.1.23.3 255.255.255.0

Int s0/3

no sh

ip add 172.16.35.3 255.255.255.0

int lo0

ip add 3.3.3.3 255.255.255.255

R4:

Int s0/2

Ip add 192.168.14.4 255.255.255.0

No sh

Int lo0

Ip add 4.4.4.4 255.255.255.0

R5:

Int s0/3

Ip add 172.16.35.5 255.255.255.0

No sh

Int lo0

Ip add 5.5.5.5 255.255.255.0

二、R1,R2,R3起OSPF

R1:

Router ospf 110

Router-id 1.1.1.1

Net 10.1.12.0 0.0.0.255 area0

Net 1.1.1.1 0.0.0.0 area 0

R2:

Router ospf 110

Router-id 2.2.2.2

Net 10.1.12.0 0.0.0.255 area 0

Net 10.1.23.0 0.0.0.255 area 0

Net 2.2.2.2 0.0.0.0 area 0

R3:

Router ospf 110

Router-id 3.3.3.3

Net 10.1.23.0 0.0.0.255 area 0

Net 3.3.3.3 0.0.0.0 area 0

三、R1,R2,R3起mpls

R1:

ip cef

mpls label range 100 199

mpls label protocol ldp

mpls ldp router-id lo0 //要能ping通R1,R2,R3的loop口

inf s0/1

mpls ip

R2:

ip cef

mpls label range 200 299

mpls label protocol ldp

mpls ldp router-id lo0 //要能ping通R1,R2,R3的loop口

int s0/1

mpls ip

int s0/2

mpls ip

R3:

ip cef

mpls label range 300 399

mpls label protocol ldp

mpls ldp router-id lo0 //要能ping通R1,R2,R3的loop口

inf s0/2

mpls ip

show mpls ldp neighbor //察看 mpls ldp的邻居关系

traceroute 3.3.3.3 sou 1.1.1.1 //看有没有走标签

Tracing the route to 3.3.3.3

1 10.1.12.2 [MPLS: Label 201 Exp 0] 100 msec 76 msec 64 msec

2 10.1.23.3 92 msec * 80 msec

配mpls/vpn:

起底层IGP:rip ospf eigrp

起mpls

起vpn

PE1〈—〉PE2 mp-BGP邻居关系

CE1 —〉PE1 路由协议

PE1 将从客户学到的路由重分布进BGP,从而让PE2通过mp-BGP邻居关系能学到CE1的路由

PE2再将从PE1传过来的BGP路由重分布进PE2与CE2之间的路由协议

反过来,同理

PE1〈—〉PE2 mp-BGP邻居关系:

R1:

router bgp 123

bgp router-id 1.1.1.1

no au

no sy

nei 3.3.3.3 remote 123

nei 3.3.3.3 up lo0

R3:

router bgp 123

bgp router-id 3.3.3.3

no au

no sy

nei 1.1.1.1 remote 123

nei 1.1.1.1 up lo0

激活mp-BGP的邻居关系:

R1:

router bgp 123

address-family vpnv4

nei 3.3.3.3 active

R3:

router bgp 123

address-family vpnv4

nei 1.1.1.1 active

CE1 —〉PE1 路由协议:

R4:

R4(config)#router rip

R4(config-router)#ver 2

R4(config-router)#no au

R4(config-router)#net 4.0.0.0

R4(config-router)#net 192.168.14.0

R1:

R1(config)#ip vrf PE1-CE1

R1(config-vrf)#rd 123:1

R1(config-vrf)#route-target 100:1

R1(config-vrf)#exit

R1(config)#int s0/2

R1(config-if)#ip vrf forwarding PE1-CE1

% Interface Serial0/2 IP address 192.168.14.1 removed due to enabling VRF PE1-CE1

R1(config-if)#ip add 192.168.14.1 255.255.255.0

R1(config-if)#end

R1#sh ip route vrf PE1-CE1

Routing Table: PE1-CE1

Codes: C – connected, S – static, 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

i – IS-IS, su – IS-IS summary, 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 192.168.14.0/24 is directly connected, Serial0/2

R1#ping 192.168.14.4

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.14.4, timeout is 2 seconds:

…..

ping 不通!!! 对了!!!

R1#ping vrf PE1-CE1 192.168.14.4

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.14.4, timeout is 2 seconds:

!!!!!

R3:

R3(config)#ip vrf PE2-CE2

R3(config-vrf)#rd 123:3

R3(config-vrf)#route-target 300:3

R3(config-vrf)#exit

R3(config)#int s0/3

R3(config-if)#ip vrf forwarding PE2-CE2

% Interface Serial0/3 IP address 172.16.35.3 removed due to enabling VRF PE2-CE2

R3(config-if)#ip add 172.16.35.3 255.255.255.0

R3(config-if)#end

R1上的路由协议

R1(config)#router rip

R1(config-router)#ver 2

R1(config-router)#no au

R1(config-router)#address-family ipv4 vrf PE1-CE1

R1(config-router-af)#ver 2

R1(config-router-af)#no au

R1(config-router-af)#net 192.168.14.0

R1#sh ip route vrf PE1-CE1

Gateway of last resort is not set

C 192.168.14.0/24 is directly connected, Serial0/2

4.0.0.0/24 is subnetted, 1 subnets

R 4.4.4.0 [120/1] via 192.168.14.4, 00:00:15, Serial0/2

R3,R5同理

R5:

R5(config)#router rip

R5(config-router)#ver 2

R5(config-router)#no au

R5(config-router)#net 5.0.0.0

R5(config-router)#net 172.16.0.0

R5(config-router)#end

R3:

R3(config)#router rip

R3(config-router)#ver 2

R3(config-router)#no au

R3(config-router)#address-family ipv4 vrf PE2-CE2

R3(config-router-af)#ver 2

R3(config-router-af)#no au

R3(config-router-af)#net 172.16.0.0

R3(config-router-af)#end

PE1将收到的这条RIP路由重分布进BGP:

R1:

R1(config)#router bgp 123

R1(config-router)#address-family ipv4 vrf PE1-CE1

R1(config-router-af)#redistribute rip

R1(config-router-af)#end

R1#sh ip bgp vpn all

Network Next Hop Metric LocPrf Weight Path

Route Distinguisher: 123:1 (default for vrf PE1-CE1)

*> 4.4.4.0/24 192.168.14.4 1 32768 ?

*> 192.168.14.0 0.0.0.0 0 32768 ?

PE1会将这条4.4.4.0路由通过VPN BGP邻居关系,传给PE2

但是,我们在R3上

R3#sh ip bgp vpn all

什么都没有!!!

因为,BGP默认过滤掉所有跟自己VRF里RT不一样的路由

R3:

R3(config)#ip vrf PE2-CE2

R3(config-vrf)#route-target import 100:1 //手工倒入PE1的RT路由

R3(config-vrf)#end

PE2再将从PE1传过来的BGP路由重分布进PE2与CE2之间的路由协议

R3(config)#router rip

R3(config-router)#address-family ipv4 vrf PE2-CE2

R3(config-router-af)#redistribute bgp 123 metric 1

R3(config-router-af)#end

R5上就能看到4.4.4.0的路由了

反过来同理

实验总结:以上是实验的全过程,通过这个过程可以看到MPLS VPN的配置思路和MPLS VPN的工作原理,现在分析一下数据包转发的过程,通过数据包转发的过程可以看出MPLS VPN 设计原理。

第一:在路由器4上,根据实验需求,目的网络是5.5.5.5。源网络是4.4.4.4.

此时查看的一定是路由表。因为路由器4上根本没有MPLS标签数据库。

r4#sh ip route

Codes: C – connected, S – static, 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

i – IS-IS, su – IS-IS summary, 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 192.168.14.0/24 is directly connected, Serial0/2

4.0.0.0/24 is subnetted, 1 subnets

C 4.4.4.0 is directly connected, Loopback0

5.0.0.0/24 is subnetted, 1 subnets

R 5.5.5.0 [120/1] via 192.168.14.1, 00:00:24, Serial0/2

172.16.0.0/24 is subnetted, 1 subnets

R 172.16.35.0 [120/1] via 192.168.14.1, 00:00:24, Serial0/2

通过路由表可以看出,下一跳的地址是192.168.14.1。是路由器1的s0/2接口的ip地址。

第二:在路由器1上,查看的是路由器1的vrf表。

r1#sh ip route vrf pe1-ce1

Routing Table: pe1-ce1

Codes: C – connected, S – static, 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

i – IS-IS, su – IS-IS summary, 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 192.168.14.0/24 is directly connected, Serial0/2

4.0.0.0/24 is subnetted, 1 subnets

R 4.4.4.0 [120/1] via 192.168.14.4, 00:00:28, Serial0/2

5.0.0.0/24 is subnetted, 1 subnets

B 5.5.5.0 [200/1] via 3.3.3.3, 00:13:18

172.16.0.0/24 is subnetted, 1 subnets

B 172.16.35.0 [200/0] via 3.3.3.3, 00:13:18

通过路由器1的vrf表可以看出,想去往5.5.5.5。Mp-bgp的邻居是3.3.3.3

下一跳地址为3.3.3.3 。就是说只要去往3.3.3.3,就能找到去往5.5.5.5的路由。

根据前面的知识:路由器1是一台pe路由器,在这里需要给数据包打上一个标签。因为进入了MPLS网络。该打上一个什么样的标签呢,需要查看标签表。

r1#sh mpls forwarding-table

Local Outgoing Prefix Bytes tag Outgoing Next Hop

tag tag or VC or Tunnel Id switched interface

100 Pop tag 2.2.2.0/24 0 Se0/1 point2point

101 201 3.3.3.0/24 0 Se0/1 point2point

102 Pop tag 10.1.23.0/24 0 Se0/1 point2point

103 Aggregate 192.168.14.0/24[V] \

1684

104 Untagged 4.4.4.0/24[V] 1684 Se0/2 point2point

通过标签表,可以看出去往3.3.3.3 的目的网络,需要打上的标签是201.

MPLS 标签包从s0/1口发出。

第三:在路由器2上,因为受到的数据包是MPLS标签数据包,所以查看LFIB(lable forwarding informaiton database)标签转发信息数据库。

r2#sh mpls forwarding-table

Local Outgoing Prefix Bytes tag Outgoing Next Hop

tag tag or VC or Tunnel Id switched interface

200 Pop tag 1.1.1.0/24 9609 Se0/1 point2point

201 Pop tag 3.3.3.0/24 5753 Se0/2 point2point

在这个MPLS标签转发数据库中,可以看出去往目的网络3.3.3.3的出标签是不用打的,这是为什么?因为路由器2是倒数第二跳。根据倒数第二跳弹出,此时要弹出MPLS标签包。MPLS标签数据包弹出了,如何到3.3.3.3呢。路由表在。

1.0.0.0/24 is subnetted, 1 subnets

O 1.1.1.0 [110/65] via 10.1.12.1, 00:42:32, Serial0/1

2.0.0.0/24 is subnetted, 1 subnets

C 2.2.2.0 is directly connected, Loopback0

3.0.0.0/24 is subnetted, 1 subnets

O 3.3.3.0 [110/65] via 10.1.23.3, 00:42:32, Serial0/2

10.0.0.0/24 is subnetted, 2 subnets

C 10.1.12.0 is directly connected, Serial0/1

C 10.1.23.0 is directly connected, Serial0/2

通过路由表可以看出,去往3.3.3.3从s0/2口发出即可。

第四:到路由器3上,这又是一台边缘路由器,在这查看vrf表。

r3#sh ip route vrf pe2-ce2

Routing Table: pe2-ce2

Codes: C – connected, S – static, 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

i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS lev

ia – IS-IS inter area, * – candidate default, U – per-user static

o – ODR, P – periodic downloaded static route

Gateway of last resort is not set

B 192.168.14.0/24 [200/0] via 1.1.1.1, 00:31:01

4.0.0.0/24 is subnetted, 1 subnets

B 4.4.4.0 [200/1] via 1.1.1.1, 00:31:01

5.0.0.0/24 is subnetted, 1 subnets

R 5.5.5.0 [120/1] via 172.16.35.5, 00:00:02, Serial0/3

172.16.0.0/24 is subnetted, 1 subnets

C 172.16.35.0 is directly connected, Serial0/3

可以看出,目的网络5.5.5.5的路由是从s0/3口发出,去往172.16.35.5.这是直接连接的网络。

第五:在路由器5上,肯定是查看路由表。

r5#sh ip route

Codes: C – connected, S – static, 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

i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2

ia – IS-IS inter area, * – candidate default, U – per-user static rou

o – ODR, P – periodic downloaded static route

Gateway of last resort is not set

R 192.168.14.0/24 [120/1] via 172.16.35.3, 00:00:08, Serial0/3

4.0.0.0/24 is subnetted, 1 subnets

R 4.4.4.0 [120/1] via 172.16.35.3, 00:00:08, Serial0/3

5.0.0.0/24 is subnetted, 1 subnets

C 5.5.5.0 is directly connected, Loopback0

172.16.0.0/24 is subnetted, 1 subnets

C 172.16.35.0 is directly connected, Serial0/3

船到码头车到站,发现5.5.5.5是直连网络。目的地到了。数据包往回走的路与来的过程是对称的,在这里就不重复了。

第四节: MPLS VPN相关命令的总结

最后把MPLS VPN 配置相关的命令总结如下:

步骤1:配置接口和IGP

1:在全局配置模式下,在PE路由器上打开CEF。CEF交换是运行MPLS所必须的。

Router(config)#ip cef

命令解释:开启cef功能

2:配置环回接口的地址,用作IGP路由选择进程中的标识符。

Router(config)#interface lookback n

Router(config-if)#ip address add mask

3:配置IGP。例如,启动OSPF路由选择,进入路由配置模式。

Router(config)#router ospf process-id

命令解释:开启ospf功能 指定ospf id

4:定义一个运行OSPF的接口,并指定接口区域

Router(config-router)#network address wildcard-mask area area-id

命令解释:匹配接口范围 将接口放的ospf进程中

5:为连接到PE路由器的接口配置IP地址。

Router(config)#interface Serial slot/port

Router(config-if)#ip address address mask

6:在接口上启动标记交换。

Router(config-if)#mpls ip

命令解释:接口下开启mpls功能

步骤2:定义VPN

1:确定VRF名字(唯一名字,区分大小写),进入VRF配置模式,定义不同的VPN路由选择和转发实例。

Router(config)#ip vrf vrf-name

命令解释:定义一个vrf 并且给这个vrf命名

2:用路由标识符(RD)标示VPN,为用户VPN创建路由选择和转发表。

Router(config-vrf)#rd route-distinguisher

命令解释:定义rd 后面跟着rd的数值 特别注意如果有几个RD 这些rd需不同

3:从或向目标VPN扩展共同体导入或导出路由选择信息。

Router(config-vrf)#route-target {import | export | both} route-target-ext-community

命令解释:定义rt 如果不特别说明 则为both 同时是输入也是输出

4:把指定的路由映像和VRF关联起来(可选)。

Router(config-vrf)#import map route-map

5:把VRF和接口或子接口关联起来。

Router(config-if)#ip vrf forwarding vrf-name

命令解释:这条命令必须在接口下打,表示这个接口放到某个vrf之下

步骤3:配置PE到PE的路由选择

1:配置IBGP路由选择进程的自治系统号。

Router(config)router bgp autonomous-system

命令解释:开启bgp进程 并且给这个bgp进程赋予一个as号

2:关闭IPv4单播前缀的通告。让MP-BGP只承载VPN-IPv4会话。

Router(config-router)#no bgp default ipv4-unicast

3:指定相邻PE的IP地址或IBGP对等路由器组,确定其属于本自治系统。

Router(config-router)#neighbor {ip-address | peer-group-name} remote-as number

命令解释:指定bgp邻居的ip地址 和bgp邻居所示的区域号

4:激活IPv4地址到IBGP邻居的通告。

Router(config-router)#neighbor ip-address activate

命令解释:激活bgp邻居关系

步骤4:配置PE到CE的路由选择

有4种方法配置PE到CE的路由

静态的PE到CE的路由选择配置。

RIPv2的PE到CE的路由选择配置。

BGP4的PE到CE的路由选择配置。

OSPF的的PE到CE的路由选择配置。

1、配置静态的PE到CE路由选择会话

1:为每一个PE到CE的会话定义静态的路由参数。

Router(config)#ip route vrf vrf-name

2:为每一个BGP的PE到CE路由选择会话定义静态路由参数。

Router(config-router)#address-family ipv4 [unicast] vrf vrf-name

3:把VRF静态路由重分发到VRF的BGP表里。

Router(config-router-af)#redistribute static

4:把直接相连的网络重分发到VRF的BGP表里。

Router(config-router-af)#redistribute connected

2、配置RIPv2的PE到CE路由选择会话

1:启动RIPv2。

Router(config)#router rip

Router(config-router)#version 2

命令解释:启动rip协议 这里用的是版本2的rip

2:在地址系列子模式下,在RIP进程的主要配置里,为PE到CE路由选择会话定义RIP参数。

Router(config-router)#address-family ipv4 [unicast] vrf vrf-name

命令解释:将这个rip协议放到某个vrf之下,或者说是某个vrf下的rip

3:在地址系列子模式下,把网络和RIP路由选择进程关联起来。

Router(config-router-af)#network prefix

命令解释:匹配相关的接口

4:把IBGP路由重分发到RIP地址系列里,用一把这些路由通告给CE。

Router(config-router-af)#redistribute bgp as-number metric metric

命令解释:将bgp重分布到rip协议中 metric后面跟的是跳数的参数

3、配置BGP4的PE到CE路由选择会话

1:配置一个IBGP路由选择进程,并具有一个以至传递到其他PE路由器的自治系统号。

Router(config)#router bgp autonomous-system

2:进入地址系列子模式,在IBGP进程的主要配置中,为PE到CE路由选择会话定义EBGP参数

Router(config-router)#address-family ipv4 [unicast] vrf vrf-name

3:指定相邻CE的IP地址或配置表明它属于本地自治系统的EBGP对等体组。

Router(config-router-af)#neighbor {ip-address | peer-group-name} remote-as number

4:打开IPv4地址系列的通告。

Router(config-router-af)#neighbor ip-address activate

4、配置OSPF的PE到CE路由选择会话

1:启用带VRF扩展的OSPF。

Router(config)#router ospf process-id vrf vrf-name

2:定义一个运行OSPF的借口,并指定接口区域。

Router(config-router-af)#network address wildcard-mask area area-id

3:把IBGP路由重分发到OSPF的VRF进程里。

Router(config-router-af)#redistribute protocol [process-id] {level-1 | level-1-2 | level-2}

[metric metric-value] [metric-type type-value] [match internal | internal | external 1 | external 2] [tag tag-value] [route-map map-tag] [weight weight] [subnets]

4:在IBGP进程的主要配置里进入地址系统子模式。

Router(config-router)#address-family ipv4 [unicast] vrf vrf-name

5:通过地址系列子模式的配置,把VRF的OSPF路由重分发到IBGP里。

Router(config-router-af)#redistribute protocal [process-id] {level-1 | level-1-2 | level-2}

[metric metric-value] [metric-type type-value] [match internal | internal | external 1 | external 2] [tag tag-value] [route-map

map-tag] [weight weight] [subnets]

步骤5:配置P路由器

1:在PE路由器的全局配置模式下,启用CEF。

Router(config)#ip cef

2:配置环回接口的地址,用作IGP路由选择进程中的标识符。

Router(config)#interface lookback n

Router(config-if)#ip address add mask

3:配置IGP,本例使用OSPF。

Router(config)#router ospf process-id

4:定义运行OSPF的接口,并指定接口区域。

Router(config-router)#network address wildcard-mask area area-id

5:为连接到PE路由器的接口配置IP地址。

Router(config)#interface Serial slot/port

Router(config-if)#ip address address mask

6:启动这个接口上的标签交换功能。

Router(config-if)#mpls ip

步骤6:配置CE路由器

有4种配置选择

静态路由

RIPv2路由选择

BGP4路由选择

OSPF路由选择

1、运行静态路由的CE路由器

1:为连接到CE路由器的接口配置IP地址。

Router(config)#interface Serial slot/port

Router(config-if)#ip address address mask

2:配置一条指向到PE路由器作为下一跳的缺省路由。

Router(config)#ip route 0.0.0.0 0.0.0.0 [PE-ip-address | CE-egress-interface]

2、运行RIPv2路由选择的CE路由器

1:启用RIPv2

Router(config)#router rip

Router(config-router)#version 2

2:在路由器配置模式下把一个网络和RIP路由进程关联起来。

Router(config-router)#network prefix

3、运行BGP4路由选择的CE路由器

1:为IBGP路由选择进程配置传递到PE路由器的自治系统号。

Router(config)#router bgp autonomous-system

2:指定相邻PE的IP地址或EBGP对等体组,表明它属于一个自治系统。

Router(config-router)#neighbor {ip-address | peer-group-name} remote-as number

3:指定EBGP会话所通告的网络或子网。

Router(config-router)#network network-number [mask network-mask]

4、运行OSPF路由选择的CE路由器

1:启用OSPF。

Router(config)#router ospf process-id

2:定义运行OSPF的接口,并指定接口区域。

Router(config-router)#network address wildcard-mask area area-id

验证VPN的操作

1:查看已定义的VRF和接口设置。

Router#show ip vrf

2:查看已定义的VRF以及相关连接口的信息。

Router#show ip vrf[{brief | detail | interfaces}] vrf-name

3:查看VRF的IP路由选择表。

Router#show ip route vrf vrf-name

4:查看VRF的路由选择协议信息。

Router#show ip protocols vrf vrf-name

5:查看与VRF相关联的CEF转发表。

Router#show ip cef vrf vrf-name

6:查看与接口相关联的VRF表。

Router#show ip interface interface-number vrf vrf-name

7:查看BGP VPN的信息。

Router#show ip bgp vpnv4 all [tags]

8:查看与路由器通告的VRF路由相对应的标记转发表条目。

Router#show mpls forwarding vrf vrf-name [prefix mask/length] [detail]

参考文献

[1] luc de chein著. 陈麟帆 翻译. MPLS VPN 技术架构. 人民邮电出版社. 2009

[2] brian morgan著. 夏俊杰 翻译. ccnp iscw 认证考试指南. 人民邮电出版社. 2008

附录:

MPLS VPN技术中出现的英文术语

MPLS —multiple protocol label switch 多协议标签转发协议

VPN—virtual private network 虚拟专用网络

Lsr—label switch router 标签交换路由器

Vrf—virtual router forwarding instance 虚拟路由转发实例

Rd—router distinguished 路由标示

Rt—router target 路由目的

LSP—LABEL SWITCHER PATH 标签交换通道

LSR—LABEL SWITCHING ROUTER 标签交换路由器

LIB—label information database标签信息库

LFIB—label forwarding information database标签转发信息数据库

FIB—forwarding information database转发信息库

LDP—协议label distritution protocol标签分发协议

CE—custom edge 客户端边缘路由器

PE—provide EDGE router 指骨干网上的边缘路由器

P—provide router 指骨干网上的核心路由器

Mbgp—multiple protocol bgp 多协议bgp

1523014230613214b2d1f1f 1523014230677ebd3268e8f

文章来源:智云一二三科技

文章标题:MPLS VPN详解

文章地址:https://www.zhihuclub.com/41714.shtml

关于作者: 智云科技

热门文章

网站地图