一、实验设想
假设晓飞网络科技公司的两家公司,在不同的站点内,通过不同的服务提供商相互连接。一家服务商使用 AS号 100 管理自己的自治系统,另一家使用AS 号 200 管理。同时需要将两家不同服务商使用 MPLS VPN 相互连接,使得用户两家公司能够通信,由于处在不同的 AS 自治系统,传统的单域无法解决,所以使用跨域 OptionC2 的方式解决。
二、拓扑设计
IP地址如上图规划
OptionC2配置大概:
CE1 通过 OSPF 与PE1 交互路由
ASBR-PE2 在 BGP 中宣告3.3.3.3 的路由,通过 EBGP 发给ASBR-PE3
ASBR-PE3 收到之后,在 ISIS 中引入BGP,ISIS 中有了该路由
在 AS200内,设备都能学习到 3.3.3.3的路由,都能为 3.3.3.3生成标签,该3.3.3.3成为 FEC
然后 AS200 内的设备通过为该FEC 生成LDP 标签,去访问PE1
注:PE1 和 PE4 传递的是带有标签VPNv4 路由,在 ASBR-PE 之间也需要发送带有标签的
IPv4 路由。
与 OptionC1 的区别是:ASBR收到标签后,还需要通告给 PE 设备,比如 ASBR-PE3 收到 ASBR-PE2发来的策略标签后,还需交换一个新的标签发给 PE4,而 OptionC2方案中,直接在两台 ASBR-PE 设备交换策略标签,然后把BGP 的路由引入到AS 内的IGP 协议中,让 IGP协议学到路由,生成FEC,分配标签。
三、配置脚本
PE1 的配置
bgp100peer1.1.1.1as-number100peer1.1.1.1connect-interfaceLoopBack0peer6.6.6.6as-number200peer6.6.6.6connect-interfaceLoopBack0#ipv4-familyunicastundosynchronizationpeer1.1.1.1enablepeer1.1.1.1label-route-capabilitypeer6.6.6.6enable#ipv4-familyvpnv4policyvpn-target//和 6.6.6.6 直接建立 MP-EBGP peer 6.6.6.6 enableipv4-familyvpn-instancevpn1import-routeospf1
ASBR-PE2的配置
mplslsr-id1.1.1.1mplslsp-triggerbgp-label-route#//可以为 BGP 路由生成标签mplsldp#isis1is-levellevel-2cost-stylewidenetwork-entity49.0000.0000.0000.0001.00import-routebgp//在 AS 内的底层ISIS 中,引入 BGP 路由interfaceGigabitEthernet0/0/0ipaddress100.1.12.1255.255.255.0isisenable1mplsmplsldp#interfaceGigabitEthernet0/0/2ipaddress14.1.1.1255.255.255.0mplsinterfaceLoopBack0ipaddress1.1.1.1255.255.255.255isisenable1#bgp100peer3.3.3.3as-number100peer3.3.3.3connect-interfaceLoopBack0peer14.1.1.4as-number200ipv4-familyunicastundosynchronizationnetwork3.3.3.3255.255.255.255peer3.3.3.3enablepeer14.1.1.4enablepeer14.1.1.4route-policy1exportpeer14.1.1.4label-route-capabilityipv4-familyvpnv4policyvpn-targetroute-policy1permitnode10applympls-label
ASBR-PE3的配置
mplslsr-id4.4.4.4mplslsp-triggerbgp-label-route#//为 BGP 路由产生标签mplsldp#isis1is-levellevel-2cost-stylewidenetwork-entity49.0000.0000.0000.0004.00import-routebgp//引入 BGP 路由interfaceGigabitEthernet0/0/0ipaddress200.1.45.4255.255.255.0isisenable1mplsmplsldp#interfaceGigabitEthernet0/0/2ipaddress14.1.1.4255.255.255.0mplsinterfaceLoopBack0ipaddress4.4.4.4255.255.255.255isisenable1#bgp200peer6.6.6.6as-number200peer6.6.6.6connect-interfaceLoopBack0peer14.1.1.1as-number100ipv4-familyunicastundosynchronizationnetwork6.6.6.6255.255.255.255peer6.6.6.6enablepeer14.1.1.1enablepeer14.1.1.1route-policy1exportpeer14.1.1.1label-route-capability#ipv4-familyvpnv4policyvpn-targetroute-policy1permitnode10applympls-label
PE4 的配置
bgp200peer3.3.3.3as-number100peer3.3.3.3ebgp-max-hop255peer3.3.3.3connect-interfaceLoopBack0peer4.4.4.4as-number200peer4.4.4.4connect-interfaceLoopBack0#ipv4-familyunicastundosynchronizationimport-routeisis1peer3.3.3.3enablepeer4.4.4.4enable#ipv4-familyvpnv4policyvpn-targetpeer3.3.3.3enable#ipv4-familyvpn-instancevpn1import-routeospf1
四、实验总结
控制平面流程:
1. PE1 与PE4 直接建立 MP-EBGP,分配内层标签
2. ASBR-PE2 上宣告 PE1 的路由 3.3.3.3,并以EBGP 方式发给 ASBR-PE3,由于需要策略标签,发给ASBR-PE3 时,携带了策略标签,为 IPv4 标签报文
3. ASBR-PE3 收到后,把 BGP 路由引入到了 IGP 协议中,AS 内的所有设备都能学到该路由,生成 FEC,为该 FEC 生成标签
4. 生成标签之后,相互可以学到该路由,并且能够通信,再在 PE 设备上相互引入到 CE 设备,CE 设备也能学到对方CE 路由
转发平面流程:
假设CE2 去访问CE1,8.8.8.8-->7.7.7.7
1. 8.8.8.8发给 PE4,PE4发现是通过 PE1学来的,下一跳为 3.3.3.3,于是封装上内层标签
2. PE4发现去往 3.3.3.3 是有隧道可走的,于是封装上 LDP 标签,走到P2,次末跳弹出发给 ASBR-PE3
3. ASBR-PE3 收到后,3.3.3.3 是通过 ASBR-PE2 学来的,携带了策略标签,于是又封装上策略标签,发给 ASBR-PE2
4. ASBR-PE2 收到后,由于该标签是自己产生的,所以该标签的最后一跳是自己,又发现去往 3.3.3.3 也是有标签可走的,于是封装上 LDP 标签,发给PE1
5. 在 P2 设备上次末跳弹出,PE1 收到后,只有内层标签,查看内层标签,发给了 CE1.
OptionC1 与C2 的区别在于:
C2 方案在每个 AS 内,始终是携带两层标签的。
C2 方案是通过把对端 PE 设备的路由引入到 IGP 协议中,并且通过LDP 为该 FEC 生成标签进行转发的,而C1 方案是通过收到 ASBR-PE 发来的策略标签后,交换新的标签再发给PE设备,进行转发的。