1、MPLS VPN有几种路由器角色?

(1)CE(CustomEdge):直接与服务提供商相连的用户设备;

(2)PE(ProviderEdgeRouter):指骨干网上的边缘路由器,与 CE 相连,主要负责 VPN 业务的接入;

(3)P(ProviderRouter):指骨干网上的核心路由器,主要完成路由和快速

转发功能;

2、RD 和 RT 的作用?

(1)RD(RouteDistinguisher):为了防止一台 PE 接收到远端 PE 发来的不同 VRF 的相同路由时不知所措,而加在路由前面的特殊信息(RD)。在 PE

发布路由时加上,在远端 PE 接收到路由后放在本地路由表中,用来与后来接收到的路由进行区分。

(2)RT(RouteTarget):表明了一个 VRF 的路由喜好,通过他可以实现不同 VRF 之间的路由互通。他的本质就是 BGP 的 community 属性。(拓展体属性)。

扩展问题1:有RT可以不用RD吗?

理论上讲,是可以的。但 RT 不是一个简单的数字,通常是一个列表,而且他

是一种路由属性,不是与 IP 前缀放在一起的,这样在比较的时候不好操作。特别是:BGP 的 Routewithdraw(路由撤销)报文不携带属性,这样在这种情况下收到的路由就没有 RT 了,就会出现两条相同路由都被撤销了。

扩展问题2:有RD可以不用RT吗?

可以,用 RD 完全可以实现 RT 的功能,但是没有 RT 灵活(同个 pe 的两vrf 要进行互访的时候,用 RD 就实现不了),不便于控制。

扩展问题3:BGP/MPLS VPN是如何实现冲突的地址空间共存的?

在路由的前缀加上 64bit 位的 RD,成为 96bit 的 VPNv4 路由。

扩展问题4:8字节RD值由哪些内容构成?没有RD有什么问题?路由在哪里打上 RD值的?

格式为 AS:NN,总长 64bit。

由 Type 字段(16bit)、Administrator(管理员)字段、Assigned Nuber(分 配号)字段组成。

分为 3 种:

Type 为 0;Administrator 表示公有 AS 号,长度为 16bit;Assigned Number表示私有 AS 号,长度为 32bit。

Type 为1:Administrator 必须是个 IPv4 地址,通常为公有 IP;Assigned

Number 自定义,长度为 16bit。

Type 为2:Administrator 表示公有 AS 号,长度为 32bit;Assigned Number 。

自定义,长度为 16bit。

实际项目中需要严格按照上面三种格式设置 RD 值,实验环境没此要求。

没有 RD,PE 将两个 CE 同一条 IPv4 路由引入 BGP 传递出去,则会当成一条 BGP 路由。

扩展问题5:MP-BGP路由器收到一条VPNv4,如果没有导入RT,是否会接收这条VPNv4路由?

没有导入 RT 不会进入 VPNv4 路由表,因为没有导入 RT,接收这条路由也没有用。

3、VPN 实例的作用?

将 PE 设备的路由表逻辑的隔开来,实现私网路由和公网路由的隔离

同时也可以通过 vpn 实例中的 RD 值,在私网路由存在冲突时,对私网路由进

行区分。

4、PE 设备控制层面和数据层面的作用?

(1)控制层面:

各个设备角色之间的路由信息交换

CE------>PE:

a)PE 配置相应的 VPN 实例

b)PE 和 CE 之间运行相应的路由协议

c)将 CE 的私网路由引入 PEBGP 中,并加上 RD,成为 BGPVPNv4 路由

PE------>PE:

a)PE 与 PE 建立 VPNv4 的邻居关系

b)通过 update 携带 VPNv4 路由,Update 报文中携带 ExportVPNTarget 属性及 MPLS 标签。

c)出口 PE 收到 VPN-IPv4 路由后,在下一跳可达的情况下进行,根据 RT 导入到相应的 VPN 实例路由表

d)本地 PE 为其保留如下信息以供后续转发报文时使用:

1).MP-BGPUpdate 消息中携带的 MPLS 标签值

2).TunnelID

PE------>CE:

a)PE 将 BGP 路由引入到相应的路由协议中

(2)数据层面:

○1 CE 查找 FIB,根据 IP 转发把数据发送给 PE。

○2 PE 从 VPN 实例收到的数据包,先匹配目的 IPv4 前缀查找VPN 实例FIB,得到 Tunnel-ID、私网标签、下一跳,然后根据下一跳找到公网 LSP 并压入公网标签。

○3 中间的 P 设备根据外层标签进行转发。

○4 应用了倒数第二跳弹出,则此标签会在到达 Egress PE 之前的一跳弹出,Egress PE 只能收到带有内层标签的报文。

○5 对端 PE 设备收到私网标签,发现该标签处于栈底,剥离标签在送入相应的 VPN 实例的路由表中,再根据 FIB 转发。

扩展问题1:MPLS VPN的LSP隧道有几种实现方式?分别在什么情况下使用?(1)静态

中心到节点的帧中继网络,结构简单及拓扑比较稳定的小型网络

(2)LDP

结构比较复杂,拓扑经常变动的大型网络

扩展问题2:MPLS VPN有两层标签,如果第二跳弹出mpls标签,最后一跳路由器 怎么知道这个标签是mpls的还是bgp的?

最后一台路由器查看自己的标签转发表就能分辨是公网标签还是私网标签。

因为 MPLS 和 BGP 都是使用基于 LSR 平台的标签空间,所以最后一台路由器的公网标签和私网标签对应的标签号不同。

扩展问题3:路由器怎么确定是mpls转发还是ip转发?(从设备读取数据包的角度)首先要确定数据包为 MPLS 报文还是 IP 报文, 主要查看看二层报文头部中的 type 字段。

如果为 0x0800,则为 ip 报文;

如果为 0x8847 或者 0x8848,则为 mpls 报文。

(常见的 type 字段有 0x86dd 为 ipv6 0x0806 为 arp)

还有就是查看 FIB 表中去往目的地址的 tunnel-id 是否为 0X0;

扩展问题4:PE之间可以通过物理接口来建立MP-BGP 邻居吗?PE上的环回口一 定要是32 位的掩码吗?

华为 VRP 系统规定:PE 之间必须使用 32 位掩码的 Loopback 接口地址来建

立 MP-IBGP 对等体关系,以便能够迭代到隧道。以 Loopback 接口地址为目的地 址的路由通过 MPLS 骨干网上的 IGP 发布给对端 PE。

骨干网内做路由聚合会对 MPLS VPN 产生什么样的影响?




mpls RD作用 mpls rt rd_路由表


如图,在P设备上将3.3.3.9/32汇总为3.3.3.0/24

当 PE1 收到一条 VPNv4 的路由,首先需要查看下一跳是否存在对应的 LSP,如果不存在则直接不装 VPN 实例路由表中。

在路由汇总后,PE1 并没有关于下一跳的 LSP。所以下一跳不可达,该路由被

丢弃。

如果在 P 设备添加一条汇总后的静态路由并指向 null0,结果还是 PE1 不会将

VPNv4 的路由放入 VPN 实例路由表中。因为 PE 只使用下一跳的 32 位路由的LSP。而汇总后是 24 位路由的 LSP,所以该路由还是被丢弃。