原理:mpls使用了两层标签 一层用于打破路由黑洞 一层实现私网互通
B1访问B2 把数据包交给R2
R2查询FIB表 (表中有是否打上标签 标签号是几的信息)于是给数据包打上两层标签 B2的每条路由在R4上都拥有一个不会重复的标签号 这一标签用来区分信息传给B2还是A2 第一层标签 是去往R4的环回(BGP建邻使用的环回)的标签 第二层标签则是给R4看的用于区分不同的路由条目的标签
R3收到后 查询LFIB表 发现下一跳是3 3作为一个特殊标签 指的是弹出标签 把数据交给R4并且弹出标签 此时如果只有一层标签 弹出后给R4 R4将查询FIB表 而FIB表中是RIB表的延续 并不能区分不同的私有空间
R4收到后 由于弹出一层 剩下的还有一层标签 将查询 LFIB表 将最后一层标签弹出 并通过标签知道下一跳交给R5 于是B1B2成功互通
外层标签由下游提供 内层标签则由BGP邻居提供
数据层面通过标签来区分
控制层面则通过RD和RT区分
RD区分本端的不同VPN RT则用于确认对端与自己是否在同一个VPN
开始实验:
首先配置网络 合法的ip和路由
[R1-LoopBack0]ip add 192.168.1.1 24
[R1-GigabitEthernet0/0/0]ip add 192.168.2.1 24
[R6-LoopBack0]ip add 192.168.1.1 24
[R6-GigabitEthernet0/0/2]ip add 192.168.2.1 24
[R2]ip vpn-instance B
[R2-vpn-instance-B]ipv4-family
[R2-vpn-instance-B-af-ipv4]route-distinguisher 1:1
[R2-vpn-instance-B-af-ipv4]vpn-target 1:1
注:在R2上需要先创建vpn空间再进行ip的配置否则会将IP作用于公网
[R2-GigabitEthernet0/0/1]ip binding vpn-instance B
声明这个接口在vpn空间B
[R2-GigabitEthernet0/0/1]ip add 192.168.2.2 24
[R2-LoopBack0]ip add 2.2.2.2 32
[R2]ip vpn-instance A
[R2-vpn-instance-A]ipv4-family
[R2-vpn-instance-A-af-ipv4]route-distinguisher 2:2
[R2-vpn-instance-A-af-ipv4]vpn-target 2:2
[R2-GigabitEthernet0/0/2]ip binding vpn-instance A
[R2-GigabitEthernet0/0/2]ip add 192.168.2.2 24
[R2-GigabitEthernet0/0/0]ip add 23.0.0.1 24
[R3-GigabitEthernet0/0/1]ip add 23.0.0.2 24
[R3-LoopBack0]ip add 3.3.3.3 32
[R3-GigabitEthernet0/0/0]ip add 34.0.0.1 24
[R4-LoopBack0]ip add 4.4.4.4 32
[R4-GigabitEthernet2/0/0]ip add 47.0.0.1 24
[R4]ip vpn-instance B
[R4-vpn-instance-B-af-ipv4]route-distinguisher 1:1
[R4-vpn-instance-B-af-ipv4]vpn-target 1:1
[R4-vpn-instance-A-af-ipv4]route-distinguisher 2:2
[R4-vpn-instance-A-af-ipv4]vpn-target 2:2
[R4-GigabitEthernet0/0/2]ip add 47.0.0.2 24
[R4-GigabitEthernet2/0/0]ip binding vpn-instance A
[R4-GigabitEthernet2/0/0]ip add 192.168.3.2 24
[R4-GigabitEthernet0/0/0]ip binding vpn-instance B
[R4-GigabitEthernet0/0/0]ip add 192.168.3.2 24
[R5-LoopBack0]ip add 192.168.4.1 24
[R5-GigabitEthernet0/0/1]ip add 192.168.3.1 24
[R7-GigabitEthernet0/0/0]ip add 192.168.3.1 24
[R7-LoopBack0]ip add 192.168.4.2 24
[R7-GigabitEthernet0/0/2] ip add 47.0.0.1 24
路由:先实现公网互通
[R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
[R4-ospf-1-area-0.0.0.0]network 47.0.0.0 0.0.0.255
[R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255
[R7-ospf-1-area-0.0.0.0]network 47.0.0.0 0.0.0.255
4 7之间是公网
想要7的环回能访问公网需要nat
[R7]acl 2000
[R7-acl-basic-2000]rule permit source 192.168.4.0 0.0.0.255
[R7-GigabitEthernet0/0/2]nat outbound 2000
开始配置mpls域
[R2]mpls lsr-id 2.2.2.2
[R2]mpls
Info: Mpls starting, please wait... OK!
[R2-mpls]mpls ldp在接口上开启
[R4-GigabitEthernet0/0/1]mpls
[R4-GigabitEthernet0/0/1]mpls ldp
其余操作类似234上都需要配置
配置bgp
R2 R4建邻:
[R4]bgp 1
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 2.2.2.2 as-number 1
[R4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[R2]bgp 1
[R2-bgp]peer 4.4.4.4 as-number 1
[R2-bgp]peer 4.4.4.4 connect-interface LoopBack 0[R4-bgp]ipv4-family vpnv4
[R4-bgp-af-vpnv4]peer 2.2.2.2 enable
开启BGP拓展功能 与对端建立连接R2上也同样开启
现在就差把A1A2B1B2的路由导入到路由器中了
B1B2采取静态方法 A1采取ripA2采取ospf
B1:
[R2]ip route-static vpn-instance B 192.168.1.0 24 192.168.2.1
[R4]ip route-static vpn-instance B 192.168.4.0 24 192.168.3.1
然后通过bgp来传播路由给对端[R2-bgp]ipv4 vpn-instance B
[R2-bgp-B]import-route static
[R2-bgp-B]import-route direct
[R4-bgp]ipv4 vpn-instance B[R4-bgp-B]import-route static
[R4-bgp-B]import-route direct
现在只需要将ce路由器的缺省指向pe[R1]ip route-static 0.0.0.0 0 192.168.2.2
[R5]ip route-static 0.0.0.0 0 192.168.3.2成功互通
R7 ospf
[R7]ospf 1
进程号只具有本地意义
[R7-ospf-1]area 0
[R7-ospf-1-area-0.0.0.0] n
[R7-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255
[R7-ospf-1-area-0.0.0.0]network 192.168.4.0 0.0.0.255
[R4]ospf 2 vpn-instance A
[R4-ospf-2-area-0.0.0.0]network 192.168.3.0 0.0.0.255[R4-bgp]ipv4 vpn-instance A
[R4-bgp-A]import-route ospf 2R6 RIP
[R6]rip
[R6-rip-1]version 2
[R6-rip-1]network 192.168.1.0
[R6-rip-1]network 192.168.2.0[R2]rip vpn-instance A
[R2-rip-1]version 2
[R2-rip-1]network 192.168.2.0
[R2-rip-1]bgp 1
[R2-bgp]ipv4 vpn-instance A
[R2-bgp-A]import-route rip 1双向重发布
[R2-rip-1]import-route bgp
[R4-ospf-2]import-route bgp
成功访问
总结一下基本步骤
1 首先配置合法的ip地址
2 公网的路由要通
3 在pe上创建vrf虚拟路由转发空间 配置好RD RT
4 配置mpls区域在需要打标签的接口上都要开启
5 启动扩展bgp 先正常建邻 然后使用pv4-family vpnv4进行vpn建邻
6 将ce的路由到给pe 需要静态 或者 动态做法
6.1静态:在pe上使用ip route-static vpn-instance 【vty名称】来添加 然后重发布到bgp中
6.2动态:在ce上正常配置 动态协议 在pe上使用ospf 2 vpn-instance A配置然后双向重发布
至此 实验结束