OptionC1
解决思路
- 为了减轻ASBR设备负担,将ASBR设备与其它P设备一样当做中间设备的角色。即在未配置OptionC1方案前,CE与PE设备正常建立起EBGP邻居,PE、P、ASBR设备只需要建立起IBGP邻居即可。
- 核心思路是实现PE1与PE2设备直接建立起MP-BGP邻居。
- 已知AS域内都是运行了LDP协议,但由于两个PE处于不同的AS,无法相互传递MPLS标签,故需要解决PE之间路由学习和传递问题。
1、解决PE双方路由问题:
-
ASBR上相互建立EBGP邻居,然后发布各自PE设备的环回口地址。由于是EBGP路由传递给IBGP邻居,故需要修改路由下一跳为ASBR(peer IBGP邻居 next-hop-local)
- 1.1、此时PE设备仍然无法互通,因为中间设备并没有学习到对端PE路由,故出现路由黑洞。解决方法也简单,就是进行标签转发,即给本端PE传递路由时打上标签。
为什么要手动打上标签?????
答:因为LDP默认并不会给BGP路由打上标签,所以需要手动打上标签或者修改MPLS功能。
- 1.2、ASBR1配置命令参考:
route-policy change_mpls permit node 5
apply mpls-label
bgp 100
peer PE1 label-route-capability
peer PE1 route-policy change_mpls export
2、PE双方建立MP-BGP邻居
- 2、双方PE设备通过环回口建立MP-BGP邻居。
- 2.1、PE1设备上配置命令参考:
# 与PE2建立MP-BGP邻居
peer PE2 as 200
peer PE2 con lo 0
peer PE2 ebgp-max-hop 20
ipv4 vpnv4
peer PE2 enable
3、解决PE双方网络通信问题
-
3、解决VPN实例路由在ASBR之间传递问题:由于ASBR之间互相建立的是EBGP邻居,无法转发实例路由(VPNv4),故需要ASBR设备向对端ASBR设备传递路由时也打上标签,解决路由传递问题。
- 3.1、ASBR向对端ASBR也打上标签,配置命令参考:
route-policy mpls permit node 5 apply mpls-label bgp 100 peer ASBR label-route-capability peer ASBR route-policy mpls export # 注意需要在ASBR互联链路之间开启MPLS功能 int g0/0/1 mpls
4、配置结合
-
4、汇总配置,由于对端ASBR2向ASBR1传递路由时是打上标签的,故需要修改一下第一条路由策略信息
change_mpls
:- 4.1、如下图,ASBR-PE2向ASBR-PE1发送的BGP路由也手动打上标签,故ASBR学习到的PE2环回口地址就变成了携带标签的路由。
- 4.2、为了节约标签资源,只需要对打上标签的BGP路由手动打上标签即可,因为打上标签的路由都是ASBR-PE2传递来的PE设备路由。
# 仅对对端ASBR传递来的PE设备手动打上标签
route-policy change_mpls permit node 5
if-match mpls-label
apply mpls-label
bgp 100
peer PE1 label-route-capability
peer PE1 route-policy change_mpls export
优缺点
- 优点:
- OptionA和B方案对于ASBR设备压力较大,始终都需要靠ASBR设备去完成路由学习和传递的操作。C1方案就是用来解放其余设备压力的方案,只需要在两端PE上传递路由即可,因为ASBR不维护或发布VPNv4路由。
- 网络扩展能力强,后继双方网络中新增PE设备也能快速配置实现建立MP-BGP邻居。
- 缺点:
- 相对于OtionA和B方案,OptionC1方案的配置相对复杂,牵扯到路由策略的配置及应用。
案例
- 要求通过OptionC1方案实现VPN A的跨域访问,实现CE1与CE2的网络成功互访。
- CE1网络:192.168.10.254/24,CE网络:192.168.20.254/24。
1、基础配置
- 首先将网络配置为单域的MPLS VPN网络。
- 即AS内建立OSPF邻居,PE、P、ASBR通过环回口建立BGP邻居,以及PE与CE建立起BGP邻居。
- 为了缩短篇幅,省略基础配置。
2、配置PE路由引入及MP-BGP建立
- 此处于ASBR1、PE1视角配置,ASBR2、PE2配置相似(即IP地址不同)。
ASBR1
[ASBR1]int g0/0/1
[ASBR1-GigabitEthernet0/0/1]ip add 10.1.12.1 30
[ASBR1-GigabitEthernet0/0/1]bgp 100
[ASBR1-bgp]peer 10.1.12.2 as 200
[ASBR1-bgp]network 1.1.1.1 32
- 建立完成EBGP并发布各自PE环回口之后,PE设备将能看到对端的PE环回口地址。
[PE1-bgp]dis bgp routing-table
BGP Local router ID is 10.1.111.5
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.1/32 3.3.3.3 2 100 0 i
*>i 11.11.11.11/32 3.3.3.3 2 100 0 200i
[PE2-bgp]dis bgp routing-table
BGP Local router ID is 10.1.211.5
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.1/32 33.33.33.33 2 100 0 100i
*>i 11.11.11.11/32 33.33.33.33 2 100 0 i
- 此时就可以开始配置PE之间的MP-BGP邻居:
PE1
[PE1] bgp 100
[PE1-bgp] peer 11.11.11.11 as-number 200
[PE1-bgp] peer 11.11.11.11 connect-interface LoopBack0
# 缺省EBGP建立只有1跳
[PE1-bgp] peer 11.11.11.11 ebgp-max-hop 20
[PE1-bgp] ipv4-family vpnv4
[PE1-bgp-af-vpnv4] peer 11.11.11.11 enable
- 配置完成之后,其实PE之间的MP-BGP还是没有起来的。因为PE设备之间的联通性还是存在一定问题的,如PE1访问PE2时,下一跳到了P1设备,由于P1设备并没有PE2的路由,故出现了路由黑洞造成丢包,从而使得PE1无法访问PF2 。
- 以及当VPNv4路由通过ASBR之间的链路时,由于链路并不支持MPLS功能,VPNv4将无法正常通过。
3、解决联通性问题
- 基于OptionC1的解决思路,需要在ASBR设备上向对端ASBR手动打上标签,解决VPNv4路由在ASBR之间传递问题。
- ASBR设备也要向PE设备打上标签,解决PE设备之间互访时中间设备路由黑洞问题。
- 此处于ASBR1、PE1视角配置,ASBR2、PE2配置相似(即IP地址不同)。
ASBR1
# 用于绑定在PE方向
[ASBR1]route-policy change_mpls permit node 5
[ASBR1-route-policy]if-match mpls-label
[ASBR1-route-policy]apply mpls-label
[ASBR1-route-policy]quit
# 用于绑定在对端ASBR方向
[ASBR1]route-policy mpls permit node 5
[ASBR1-route-policy]apply mpls-label
[ASBR1-route-policy]quit
# 绑定PE方向的策略,及开启标签路由能力
[ASBR1]bgp 100
[ASBR1-bgp]peer 1.1.1.1 label-route-capability
[ASBR1-bgp]peer 1.1.1.1 route-policy change_mpls export
# 绑定对端ASBR方向的策略,及开启标签路由能力
[ASBR1-bgp]peer 10.1.12.2 label-route-capability
[ASBR1-bgp]peer 10.1.12.2 route-policy mpls export
# 以及ASBR接口需要开启MPLS功能
[ASBR1-bgp]int g0/0/1
[ASBR1-GigabitEthernet0/0/1]mpls
PE1
# PE1方向只需要开启发送标签路由能力
[PE1]bgp 100
[PE1-bgp]peer 3.3.3.3 label-route-capability
4、检查配置结果
4.1 PE之间的MP-BGP邻居状态
<PE1>display bgp peer
BGP local router ID : 10.1.111.5
Local AS number : 100
Peer V AS MsgRcvd MsgSent OutQ Up/Down StatePrefRcv
3.3.3.3 4 100 7 6 0 00:04:04 Established 1
11.11.11.11 4 200 4 4 0 00:00:52 Established 0
<PE2>display bgp peer
BGP local router ID : 10.1.211.5
Local AS number : 200
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
1.1.1.1 4 100 5 5 0 00:01:37 Established 0
33.33.33.33 4 200 4 3 0 00:01:58 Established 1
4.2 检查MPLS LSP 标签信息
<PE1>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
11.11.11.11/32 NULL/1028 -/-
192.168.10.0/24 1026/NULL -/- A
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 3/NULL -/-
2.2.2.2/32 NULL/3 -/GE0/0/1
2.2.2.2/32 1024/3 -/GE0/0/1
3.3.3.3/32 NULL/1025 -/GE0/0/1
3.3.3.3/32 1025/1025 -/GE0/0/1
<ASBR1>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 1027/NULL -/-
11.11.11.11/32 1028/1029 -/-
11.11.11.11/32 NULL/1029 -/-
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1024 -/GE0/0/0
1.1.1.1/32 1024/1024 -/GE0/0/0
2.2.2.2/32 NULL/3 -/GE0/0/0
2.2.2.2/32 1025/3 -/GE0/0/0
3.3.3.3/32 3/NULL -/-
<ASBR2>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
11.11.11.11/32 1029/NULL -/-
1.1.1.1/32 NULL/1027 -/-
1.1.1.1/32 1030/1027 -/-
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
33.33.33.33/32 3/NULL -/-
22.22.22.22/32 NULL/3 -/GE0/0/0
22.22.22.22/32 1024/3 -/GE0/0/0
11.11.11.11/32 NULL/1025 -/GE0/0/0
11.11.11.11/32 1025/1025 -/GE0/0/0
<PE2>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1030 -/-
192.168.20.0/24 1026/NULL -/- A
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
22.22.22.22/32 NULL/3 -/GE0/0/1
22.22.22.22/32 1024/3 -/GE0/0/1
33.33.33.33/32 NULL/1024 -/GE0/0/1
33.33.33.33/32 1025/1024 -/GE0/0/1
11.11.11.11/32 3/NULL -/-
4.3 测试CE双方通信
<CE1>ping -a 192.168.10.254 192.168.20.254
PING 192.168.20.254: 56 data bytes, press CTRL_C to break
Reply from 192.168.20.254: bytes=56 Sequence=1 ttl=249 time=210 ms
Reply from 192.168.20.254: bytes=56 Sequence=2 ttl=249 time=60 ms
Reply from 192.168.20.254: bytes=56 Sequence=3 ttl=249 time=50 ms
Reply from 192.168.20.254: bytes=56 Sequence=4 ttl=249 time=60 ms
Reply from 192.168.20.254: bytes=56 Sequence=5 ttl=249 time=60 ms
<CE2>ping -a 192.168.20.254 192.168.10.254
PING 192.168.10.254: 56 data bytes, press CTRL_C to break
Reply from 192.168.10.254: bytes=56 Sequence=1 ttl=249 time=90 ms
Reply from 192.168.10.254: bytes=56 Sequence=2 ttl=249 time=60 ms
Reply from 192.168.10.254: bytes=56 Sequence=3 ttl=249 time=70 ms
Reply from 192.168.10.254: bytes=56 Sequence=4 ttl=249 time=80 ms
Reply from 192.168.10.254: bytes=56 Sequence=5 ttl=249 time=90 ms
疑惑
1、致命疑惑:为什么我只配置ASBR向PE分配标签后,PE1无法正常学习到PE2的环回口路由了?
- 即只在ASBR上配置对PE邻居的路由策略,手动打上MPLS标签。而ASBR之间并不做任何的操作。
- 此时的现象就是ASBR上能看到双方PE的路由,但PE设备上看不到对端PE的路由。
- 如下,ASBR1与PE1的BGP路由表:
[ASBR1]dis bgp routing-table
BGP Local router ID is 10.1.111.10
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 0.0.0.0 2 0 i
*> 11.11.11.11/32 10.1.12.2 2 0 200i
<PE1>dis bgp routing-table
BGP Local router ID is 10.1.111.5
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.1/32 3.3.3.3 2 100 0 i
- ASBR1相应配置:
- 配置说明,label-route-capability并不影响目前实验,主要是路由策略问题。
# 与PE1建立IBGP邻居并绑定策略
# 与对端ASBR建立EBGP
# 经过实验证明,label-route-capability并不影响目前实验。
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 10.1.12.2 as-number 200
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255
peer 1.1.1.1 enable
peer 1.1.1.1 route-policy mpls export
peer 1.1.1.1 next-hop-local
peer 1.1.1.1 label-route-capability
peer 10.1.12.2 enable
peer 10.1.12.2 label-route-capability
#
route-policy mpls permit node 5
apply mpls-label
#
- 当我ASBR双方的路由策略删除之后,PE设备恢复正常,能够学习到对方的PE环回口路由。
- 但很明显,路由策略就只有一个命令,也就是分配标签。
- 理论上讲,ASBR2将PE2路由通告给ASBR1,ASBR1将PE2的环回口路由分配标签然后转发给PE1就完事了。
- 但这个时候往往会忽略重要的一点,分配标签的条件。
- 因为ASBR1并非PE2的最后一跳路由,对于MPLS来说不会主动去分配相应的标签,只会去做中转。
- 而此时ASBR2并没有向ASBR1分配PE2相关的标签信息,所以ASBR1不会给路由分配标签,使得PE2路由无法匹配上路由策略而被丢弃(不传递该路由)。
- 这个时候再补上ASBR之间手动分配标签的话,就能解决这个问题了。
- ASBR2向ASBR1发布携带标签的PE2路由,ASBR1对携带标签的PE2路由做标签替换之后转发给PE1,完成终结。
2、基于第一个疑惑,反向操作,只做ASBR之间的路由策略标签分配。发现PE能够学习到路由,且ASBR上有MPLS标签信息。
- 当ASBR的配置修改成如下时:
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 10.1.12.2 as-number 200
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255
peer 1.1.1.1 enable
peer 1.1.1.1 next-hop-local
peer 1.1.1.1 label-route-capability
peer 10.1.12.2 enable
peer 10.1.12.2 route-policy mpls export
peer 10.1.12.2 label-route-capability
#
- 此时ASBR的MPLS标签:
[ASBR1-bgp]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 1026/NULL -/-
11.11.11.11/32 NULL/1026 -/-
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1024 -/GE0/0/0
1.1.1.1/32 1024/1024 -/GE0/0/0
2.2.2.2/32 NULL/3 -/GE0/0/0
2.2.2.2/32 1025/3 -/GE0/0/0
3.3.3.3/32 3/NULL -/-
[ASBR2-bgp]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1026 -/-
11.11.11.11/32 1026/NULL -/-
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
11.11.11.11/32 NULL/1024 -/GE0/0/0
11.11.11.11/32 1024/1024 -/GE0/0/0
22.22.22.22/32 NULL/3 -/GE0/0/0
22.22.22.22/32 1025/3 -/GE0/0/0
33.33.33.33/32 3/NULL -/-
- 此时的PE也能学习到对端PE的路由,但是不能通信:
<PE1>dis bgp routing-table
BGP Local router ID is 10.1.111.5
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.1/32 3.3.3.3 2 100 0 i
*>i 11.11.11.11/32 3.3.3.3 2 100 0 200i
<PE2>dis bgp routing-table
BGP Local router ID is 10.1.211.5
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.1/32 33.33.33.33 2 100 0 100i
*>i 11.11.11.11/32 33.33.33.33 2 100 0 i
- 如果是这种现象的话,就非常好理解了。
- 因为PE与PE之间互访时,并不走标签转发,所以就造成了中间设备出现路由黑洞。
- PE1上观看转发表,可以知道与PE2互访时并不走标签转发:
<PE1>dis fib
--------------------------------------------------------------------------------
FIB Table:
Destination/Mask Nexthop Flag TimeStamp Interface TunnelID
11.11.11.11/32 10.1.111.6 DGHU t[217] GE0/0/1 0x0
3.3.3.3/32 10.1.111.6 DGHU t[75] GE0/0/1 0x3
2.2.2.2/32 10.1.111.6 DGHU t[70] GE0/0/1 0x1
# 可以明显看到PE2环回口11.11.11.11的TunnelID=0x0并不走标签转发。
# 所以造成了PE1访问P2时,经过P设备时因为找不到PE2路由而出现丢包。
3、正常配置情况下,CE的路由传递过程是怎样的?
- 首先是CE1通过BGP路由访问CE2,下一跳到达PE1,由PE1进行报文封装:
- 首先是公网标签,即LDP分配,解决CE1访问CE2时AS内中间设备路由黑洞问题。
- 其次是中间层标签,手动路由策略分配,解决PE1到ASBR2之间的路由黑洞问题。处于中间层标签也完美解决了P1没有到达ASBR2的标签转发信息问题。
- 最内层的私网标签,由MP-BGP分配,解决标签路由到达PE2之后,PE2能够准确的转发到对应的VPN实例中。
# 此处附上相应MPLS LSP信息
<PE1>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
11.11.11.11/32 NULL/1029 -/-
192.168.10.0/24 1026/NULL -/- A
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
2.2.2.2/32 NULL/3 -/GE0/0/1
2.2.2.2/32 1024/3 -/GE0/0/1
3.3.3.3/32 NULL/1024 -/GE0/0/1
3.3.3.3/32 1025/1024 -/GE0/0/1
1.1.1.1/32 3/NULL -/-
# 此处可以看到相应的私网标签
<PE1>dis bgp vpnv4 all routing-table label
BGP Local router ID is 10.1.111.5
Route Distinguisher: 1:1
Network NextHop In/Out Label
*> 192.168.10.0 10.1.111.1 1026/NULL
*> 192.168.20.0 11.11.11.11 NULL/1026
- 当ASBR1收到PE1转发来的标签报文之后,剖离公网标签,露出中间层标签。
- ASBR1作为中转LSR(PE1-ASBR1-ASBR2),需要将1029标签替换为1028后再转发给ASBR2,同时仍携带私网的标签。
# ASBR1相应的MPLS LSP标签信息
# PE1发来1029标签之后,替换为1028继续转发给ASBR2
<ASBR1>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 1028/NULL -/-
11.11.11.11/32 1029/1028 -/-
11.11.11.11/32 NULL/1028 -/-
- 当流量达到ASBR2,会剥离中间层标签,替换成公网标签继续转发给PE2。
# ASBR2相应的MPLS LSP标签信息
<ASBR2>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
11.11.11.11/32 1028/NULL -/-
1.1.1.1/32 NULL/1028 -/-
1.1.1.1/32 1029/1028 -/-
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
33.33.33.33/32 3/NULL -/-
22.22.22.22/32 NULL/3 -/GE0/0/0
22.22.22.22/32 1025/3 -/GE0/0/0
11.11.11.11/32 NULL/1025 -/GE0/0/0
11.11.11.11/32 1026/1025 -/GE0/0/0
- 最后VPNv4路由来到PE2设备上,PE2设备剖离公网标签,根据私网标签完成最后的路由转发
<PE2>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1029 -/-
192.168.20.0/24 1026/NULL -/- A
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
22.22.22.22/32 NULL/3 -/GE0/0/1
22.22.22.22/32 1024/3 -/GE0/0/1
33.33.33.33/32 NULL/1024 -/GE0/0/1
33.33.33.33/32 1025/1024 -/GE0/0/1
11.11.11.11/32 3/NULL -/-