MPLS VPN基础配置详解及标签转发流程
MPLS VPN基础配置详解及标签转发流程
本文将详细介绍MPLS VPN的基础配置过程以及标签的转发流程。通过实验环境的搭建和详细的配置步骤,帮助读者理解VPN路由信息的发布机制、路由隔离原理以及数据转发过程。
实验环境
默认将接口的IP地址配置好。根据图上描述:
- R1和R3配置BGP
- R2和R3配置ISIS
- R7和R5配置RIP
- R6和R5配置OSPF
在基本MPLS VPN组网中,VPN路由信息的发布涉及CE和PE,P路由器只维护骨干网的路由,不需要了解任何VPN路由信息。R4什么都不用配置关于VPN的东西。
一、将CE的路由传到PE设备上
因为VPN对于用户是无感知的,所以需要在CE设备上正常的配置IGP协议/BGP。
R1配置
[R1]bgp 100
[R1-bgp]peer 13.1.1.3 as-number 500
[R1-bgp]network 192.168.1.0
R2配置
[R2]isis
[R2-isis-1]is-level level-2
[R2-isis-1]network-entity 49.0001.0000.0000.0002.00
在接口开启ISIS。
R6配置
[R6]ospf 1 router-id 6.6.6.6
[R6-ospf-1]area 0.0.0.0
[R6-ospf-1-area-0.0.0.0]network 56.1.1.6 0.0.0.0
[R6-ospf-1-area-0.0.0.0]network 192.168.2.1 0.0.0.0
R7配置
[R7]rip
[R7-rip-1]version 2
[R7-rip-1]network 57.0.0.0
[R7-rip-1]network 192.168.2.0
R3配置(PE配置)
创建VPN实例(VRF):
[R3]ip vpn-instance VPN1
[R3-vpn-instance-VPN1]route-distinguisher 1:1
[R3-vpn-instance-VPN1]vpn-target 100:1 export-extcommunity
[R3-vpn-instance-VPN1]vpn-target 1:100 import-extcommunity
解释:
ip vpn-instance VPN1
- 含义:创建名为VPN1的VPN实例,用于隔离不同VPN的路由和转发。
- 作用:VPN实例是MPLS VPN的核心,每个实例对应一个独立的虚拟路由表,实现不同VPN之间的逻辑隔离。
route-distinguisher 1:1
- 含义:设置VPN实例的路由标识符(Route Distinguisher, RD)为1:1。
- 作用:
- RD用于在MPLS VPN网络中唯一标识VPN实例。不同VPN实例的RD必须不同。
- 当本地私网路由(IPv4)通过MP-BGP发布为VPNv4路由时,RD会附加在IPv4路由前,形成全局唯一的VPNv4路由(格式:RD:IPv4)。
vpn-target 100:1 export-extcommunity
- 含义:设置导出VPN Target(Route Target)为100:1。
- 作用:
- 导出规则:从本VPN实例发出的路由会携带RT1属性。
- 对端PE设备需在对应VPN实例中导入RT1,才能接收这些路由。
- 类比:类似于“贴标签”,本端给发出的路由贴标签100:1,对端需要“认这个标签”才能接收。
vpn-target 1:100 import-extcommunity
- 含义:设置导入VPN Target(Route Target)为1:100。
- 作用:
- 导入规则:只有携带RT:1:100属性的路由,才会被本VPN实例接收。
- 若对端PE未在导出规则中发送RT:1:100,本端将无法接收其路由。
- 关键点:导入RT必须与对端PE的导出RT匹配,否则路由无法互通。
检查:
display ip routing-table vpn-instance VPN1
解释含义:
- RD:解决地址空间重叠,确保不同VPN的相同IP路由在骨干网中唯一。
- RT:控制路由互通策略,决定哪些VPN实例可以接收或发送路由。
- 关键点:RD是“身份证”,RT是“通行证”,两者共同实现MPLS VPN的逻辑隔离与灵活互通。
配置R3:
R3配置
[R3]int g0/0/01
[R3-GigabitEthernet0/0/1]ip binding vpn-instance VPN1
Info: All IPv4 related configurations on this interface are removed!
Info: All IPv6 related configurations on this interface are removed!
[R3-GigabitEthernet0/0/1]dis th
interface GigabitEthernet0/0/1
ip binding vpn-instance VPN1
return
[R3-GigabitEthernet0/0/1]ip address 13.1.1.3 24
1. 路由表隔离机制
每个VPN实例拥有独立的路由表和地址空间。当接口绑定到VPN实例时:
- 原IP地址属于全局路由表:未绑定前,接口的IP地址默认注册在设备的全局路由表中。
- 绑定后需归属VPN实例路由表:绑定VPN实例后,接口必须从全局路由表切换到该VPN实例的私有路由表,因此原IP地址需要解除全局注册并重新注册到VPN实例的路由表中。
在G0/0/2接口同样配置:
[R3]ip vpn-instance VPN2
[R3-vpn-instance-VPN2]route-distinguisher 2:2
[R3-vpn-instance-VPN2]vpn-target 2:100 export-extcommunity
[R3-vpn-instance-VPN2]vpn-target 100:2 import-extcommunity
interface GigabitEthernet0/0/2
ip binding vpn-instance VPN2
ip address 23.1.1.3 255.255.255.0
由于接口配置了VPN实例所以在和CE设备建立的是VPN实例的邻居关系
1. 路由隔离需求
- 多租户环境:PE设备需同时服务多个客户(VPN),每个客户可能使用重叠的私有IP地址(如192.168.1.0/24)。
- 独立路由表:VPN实例为每个客户创建独立的路由表,确保不同客户的路由互不干扰。
示例场景:
- 客户A(VPN1):CE1连接PE1,使用IP段192.168.1.0/24。
- 客户B(VPN2):CE2连接同一PE1,同样使用192.168.1.0/24。
- 绑定VPN实例后:
- PE1为VPN1和VPN2分别创建路由表,CE1和CE2的路由独立存储。
- 即使IP地址相同,PE能通过VPN实例区分流量。
邻居的建立
和R1建立BGP的实例邻居:
[R3]bgp 500
[R3-bgp]ipv4-family vpn-instance VPN1
[R3-bgp-VPN1]peer 13.1.1.1 as-number 100
和R2建立ISIS的VPN实例的邻居:
[R3]isis vpn-instance VPN2
[R3-isis-1]is-level level-2
[R3-isis-1]network-entity 49.0001.0000.0000.0003.00
[R3-isis-1]import-route bgp
[R3]bgp 500
[R3-bgp]ipv4-family vpn-instance VPN2
[R3-bgp-VPN2]import-route isis 1
在接口开启ISIS(只在G0/0/2)。
二、将PE1的路由传递到PE2设备上
其中在中间的设备配置底层协议OSPF进行普通的路由传递。
在基本MPLS VPN组网中,VPN路由信息的发布涉及CE和PE,P路由器只维护骨干网的路由,不需要了解任何VPN路由信息。R4什么都不用配置关于VPN的东西。
和R5建立VPNv4的路由邻居关系:
[R3-bgp]bgp 500
[R3-bgp]peer 5.5.5.5 as-number 500
[R3-bgp]peer 5.5.5.5 connect-interface LoopBack1
[R3-bgp]ipv4-family vpnv4
[R3-bgp-af-vpnv4] peer 5.5.5.5 enable
为什么要建立MP-BGP,的VPNv4的路由
1. MP-BGP的扩展能力
MP-BGP通过地址族(Address Family)机制扩展BGP协议,支持多种网络层协议(如VPNv4、IPv6等),并引入以下关键特性:
(1) 支持VPNv4地址族
- 格式:VPNv4路由 = RD(Route Distinguisher) + IPv4地址(如100:1:10.0.0.0/24)。
- 作用:
- 唯一性:通过RD将不同VPN的相同IPv4路由转换为全局唯一的VPNv4路由。
- 隔离性:PE设备根据VPN实例的RD区分路由归属。
(2) 携带扩展团体属性
- Route Target(RT):作为BGP的扩展团体属性,控制路由的导入/导出策略。
- 示例:
- 企业A的路由携带RT1,企业B的路由携带RT:200:1。
- PE设备根据RT策略决定是否接收路由。
R5配置:
[R5]bgp 500
[R5-bgp]peer 3.3.3.3 as-number 500
[R5-bgp]peer 3.3.3.3 connect-interface LoopBack1
[R5-bgp]ipv4-family vpnv4
[R5-bgp-af-vpnv4] peer 3.3.3.3 enable
三、将PE2学习到的路由发送给CE设备
先在PE2配置VPN实例:
为什么不配置VPN实例,RE设备不会显示VPN的路由
MP-BGP拒绝接受路由
- VPNv4路由的生成依赖RD:MP-BGP要求每条VPN路由必须附加RD属性,而RD仅在VPN实例中定义。
- 未配置VPN实例时:PE无法为路由分配RD,导致MP-BGP拒绝将这些路由转换为VPNv4格式,路由无法跨PE传播。
- PE1将VPN-A的路由附加RT1,通过MP-BGP发布给PE2。
- PE2检查接收的路由,发现其携带RT1,匹配VPN-B的导入规则,遂将路由存入VPN-B的路由表。
[R5]ip vpn-instance VPN1
[R5-vpn-instance-VPN1]route-distinguisher 1:1
[R5-vpn-instance-VPN1] vpn-target 1:100 export-extcommunity
[R5-vpn-instance-VPN1]r vpn-target 100:1 import-extcommunity
然后再接口绑定VPN实例
ip vpn-instance VPN2
ipv4-family
route-distinguisher 2:2
vpn-target 100:2 export-extcommunity
vpn-target 2:100 import-extcommunity
因为R5和R6配置的是IGP协议:
[R5]ospf 100 router-id 5.5.5.5 vpn-instance VPN1
[R5-ospf-100]import-route bgp
[R5-ospf-100-area-0.0.0.0] area 0.0.0.0
[R5-ospf-100-area-0.0.0.0] network 56.1.1.5 0.0.0.0
R5和R7配置是RIP:
[R5]rip 1 vpn-instance VPN2
[R5-rip-1]version 2
[R5-rip-1]network 57.0.0.0
[R5-rip-1]import-route bgp
R6配置:
[R6]ospf
[R6-ospf-1]ar 0
[R6-ospf-1-area-0.0.0.0]network 56.1.1.6 0.0.0.0
[R6-ospf-1-area-0.0.0.0]network 192.168.2.1 0.0.0.0
R7配置:
[R7]rip
[R7-rip-1]version 2
[R7-rip-1]network 57.0.0.0
[R7-rip-1]network 192.168.2.0
四、解决路由黑洞问题
由于中间的P设备什么都没没有配置任何关于VPN的东西,所以R5收到R3发来的路由先检查下一条是否可达,发现下一跳是不可达的,所以在R5查路由表的时候什么路由都没有。
解决
配置MPLS LDP:
[R3]mpls lsr-id 3.3.3.3
[R3]mpls
[R3]mpls ldp
[R3-GigabitEthernet0/0/0]ip address 34.1.1.3 255.255.255.0
[R3-GigabitEthernet0/0/0]mpls
[R3-GigabitEthernet0/0/0]mpls ldp
R4配置
[R4]mpls lsr-id 4.4.4.4
[R4]mpls
[R4]mpls ldp
[R4-GigabitEthernet0/0/0]ip address 34.1.1.4 255.255.255.0
[R4-GigabitEthernet0/0/0]mpls
[R4-GigabitEthernet0/0/0]mpls ldp
[R4-GigabitEthernet0/0/1] ip address 45.1.1.4 255.255.255.0
[R4-GigabitEthernet0/0/1] mpls
[R4-GigabitEthernet0/0/1] mpls ldp
R5配置:
[R5]mpls lsr-id 5.5.5.5
[R5]mpls
[R5]mpls ldp
[R5-GigabitEthernet0/0/1]ip address 45.1.1.5 255.255.255.0
[R5-GigabitEthernet0/0/1]mpls
[R5-GigabitEthernet0/0/1]mpls ldp
转发过程
R1访问R6
数据从CE1设备发送原始的数据,发送到PE1
PE1收到后先查询转发表
发现目的地址192.168.2.1的Tunbel ID不为零,所以在查询BGP的VPN的路由
将原始路由上压入1027的私网标签,并且下一跳是5.5.5.5
在查询转发表,发现5.5.5.5的Tunnel ID不为0根据隧道转发
在查询MPLS的LSP表
发现下一跳是34.1.1.4并且动作时压入1024的标签这时原始的数据压入的两层标签,一层是BGP下发的标签1027,一层是MPLS下发的1024,数据带着两层标签发送到R4,
R4收到后进行查表
R4查表后发现目的地址是5.5.5.5的路由动作是交换,将原来的标签1024替换成3
3(隐式空标签)次末节弹出。。。当数据标签换成3的时候,在将MPLS的标签弹出,只剩下BGP的路由标签1027,这时数据带着BGP的标签发送到R5
到了R5后进行查表
发现收入的标签是1027动作是剥离,也就是将原来的BGP标签剥离掉,剩下原始的数据。
在将原始的数据发送到CE设备,完成标签的压入,交换,剥离。