文/许亮、徐伟、张翔
对于穿越BGP/MPLS/VPN域的路由协议多实例应用,OSPF 普通VPN形式,类似于Static Routes/RIP/BGP等其他路由协议的多实例应用,在CE和PE之间建立对应路由协议多实例,然后在MBGP中引入多实例的路由协议,由MBGP将相应路由传递到BGP/MPLS/VPN域的对端后再发布到对应路由协议多实例中,以完成路由的完整发布。
以上OSPF普通VPN形式,MBGP处理仅能还原生成3/5/7类LSA,无法正确传递携带路由拓扑信息的其他类型LSA,如此将导致OSPF路由拓扑的割裂。同时存在backdoor链路情况下,因为域内路由优先级高的原因将导致无法优选到穿越BGP/MPLS/VPN传递的路由。鉴于此,引入Sham-link方式的OSPF VPN形式,该模式下在PE-PE之间建立单独的OSPF连接,也就是Sham-link,可以认为是一条OSPF区域内的P2P的伪链路,性质类似于Virtual-link,通过该链路直接发布接收OSPF协议报文,从而保留所有LSA的内容信息。
下面首先来搭建一个BGP/MPLS/VPN的实例环境。
以下环境中,PE1、P、PE2构成BGP/MPLS/VPN域,它们之间的互联互通由IGP保证(可以是Static Routes/RIP/ISIS/OSPF等,这里采用ISIS),同时使能MPLS,并采用LDP分发公网标签,建立LSP。在PE1与PE2之间运行MBGP来传递路由。CE1、CE2为普通接入路由器,没有特殊配置。以CE1与PE1直连区域为0区,CE1与RTA直连区域为1区,CE1与RTB直连区域为0区, PE2和CE2直连区域为0区为例。
因PE1、PE2配置完全对称,这里仅给出PE1的配置。
1、配置系统router id、vpn-instance和全局IGP协议:
#
router id 49.0.0.2
#
ip vpn-instance vpn1
route-distinguisher 1:1
vpn-target 1:1 export-extcommunity
vpn-target 1:1 import-extcommunity
#
isis 4
network-entity 00.0000.0000.4001.00
#
2、配置MPLS和LDP:
#
mpls lsr-id 49.0.0.2
#
mpls
lsp-trigger all
#
mpls ldp
#
3、配置公网接口:
#
interface LoopBack0
ip address 49.0.0.2 255.255.255.255
isis enable 4
#
interface Vlan-interface30
ip address 30.0.0.1 255.255.255.0
isis enable 4
mpls
mpls ldp
#
4、配置私网接口:
#
interface LoopBack1
ip binding vpn-instance vpn1
ip address 49.0.0.2 255.255.255.255
#
interface Vlan-interface100
ip binding vpn-instance vpn1
ip address 100.0.0.1 255.255.255.0
#
5、配置MBGP:
#
bgp 100
undo synchronization
peer 49.0.0.1 as-number 100
peer 49.0.0.1 connect-interface LoopBack0
#
ipv4-family vpnv4
peer 49.0.0.1 enable
#
#
P设备只需运行MPLS、LDP和公网IGP协议,配置如下:
#
router id 19.0.0.1
#
mpls lsr-id 19.0.0.1
#
mpls
lsp-trigger all
#
mpls ldp
#
isis 4
network-entity 00.0000.0000.4002.00
#
interface Ethernet0/0
port link-mode route
ip address 30.0.0.2 255.255.255.0
isis enable 4
mpls
mpls ldp
#
interface Ethernet0/1
port link-mode route
ip address 40.0.0.2 255.255.255.0
isis enable 4
mpls
mpls ldp
#
interface LoopBack0
ip address 19.0.0.1 255.255.255.255
isis enable 4
#
OSPF VPN普通模式下,PE建立多实例OSPF VPN,然后配置与MBGP互相引入;CE只需配置普通OSPF与PE建立peer即可。
以PE1为例配置,PE2做对称配置。
1、建立OSPF VPN实例与CE建立邻居关系,配置引入BGP获得从对端私网传来的路由:
#
ospf 4 vpn-instance vpn1
import-route bgp
area 0.0.0.0
network 100.0.0.0 0.0.0.255
#
2、配置BGP vpn-instance vpn1地址族,先不引入OSPF实例:
#
ipv4-family vpn-instance vpn1
#
1、CE1配置普通OSPF,与PE1、RTB建立0区关系,与RTA建立1区关系:
#
ospf 4
area 0.0.0.0
network 100.0.0.0 0.0.0.255
network 102.0.0.0 0.0.0.255
area 0.0.0.1
network 101.0.0.0 0.0.0.255
#
2、CE2与PE2建立普通OSPF 0区邻居关系:
#
ospf 4
area 0.0.0.0
network 200.0.0.0 0.0.0.255
#
1、RTA配置普通OSPF,与CE1建立1区关系,并引入静态路由:
#
ip route-static 103.0.0.0 255.255.255.0 NULL0
#
ospf 4
import-route static
area 0.0.0.1
network 101.0.0.0 0.0.0.255
#
2、RTB配置普通OSPF,与CE1建立0区关系:
#
ospf 4
area 0.0.0.0
network 102.0.0.0 0.0.0.255
#
等所有OSPF邻居关系FULL后,查看PE1的LSDB和相关路由表:
[PE1]display ospf 4 lsdb
OSPF Process 4 with Router ID 49.0.0.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 66.0.0.8 66.0.0.8 26 48 80000009 0
Router 49.0.0.2 49.0.0.2 726 36 80000005 0
Router 75.0.0.2 75.0.0.2 27 36 80000003 0
Network 102.0.0.1 66.0.0.8 22 32 80000002 0
Network 100.0.0.2 66.0.0.8 727 32 80000003 0
Sum-Net 101.0.0.0 66.0.0.8 1630 28 80000001 1
Sum-Asbr 50.0.0.60 66.0.0.8 99 28 80000001 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 103.0.0.0 50.0.0.60 105 36 80000001 1
可以看到该LSDB中包含了所有1-5类LSA。
[PE1]display ospf 4 routing
OSPF Process 4 with Router ID 49.0.0.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
100.0.0.0/24 1 Transit 100.0.0.1 66.0.0.8 0.0.0.0
102.0.0.0/24 2 Transit 100.0.0.2 66.0.0.8 0.0.0.0
101.0.0.0/24 2 Inter 100.0.0.2 66.0.0.8 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
103.0.0.0/24 1 Type2 1 100.0.0.2 50.0.0.60
Total Nets: 4
Intra Area: 2 Inter Area: 1 ASE: 1 NSSA: 0
可以看到,实际得到OSPF路由四条。
[PE1]display ip routing-table vpn-instance vpn1
Routing Tables: vpn1
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost NextHop Interface
49.0.0.2/32 Direct 0 0 127.0.0.1 InLoop0
100.0.0.0/24 Direct 0 0 100.0.0.1 Eth8/0
100.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
101.0.0.0/24 OSPF 10 2 100.0.0.2 Eth8/0
102.0.0.0/24 OSPF 10 2 100.0.0.2 Eth8/0
103.0.0.0/24 O_ASE 150 1 100.0.0.2 Eth8/0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
可以看到在路由表中生效的OSPF路由只有三条。
现在PE1上配置在BGP的VPN实例地址族中引入OSPF,打开BGP的debug开关查看经过BGP传递的路由信息。
[PE1-bgp-vpn1]import-route ospf 4
*Jun 24 11:36:26:445 2009 PE1 RM/6/RMDEBUG:
BGP_L3VPN.: Send UPDATE to peer 49.0.0.1 for following destinations :
*Jun 24 11:36:26:495 2009 PE1 RM/6/RMDEBUG:
Origin : Incomplete
AS Path :
Next Hop : 49.0.0.2
Local Pref : 100
MED : 3
Ext-Community:<OSPF Domain Id: 0.0.0.0:0>, <OSPF AreaNum: 0.0.0.0 Route
Type: 3 Option: 0>, <OSPF Router Id: 49.0.0.2:0:0>, <RT: 1:1>
101.0.0.0/24 (RD 1:1,Label 1031),
*Jun 24 11:36:26:595 2009 PE1 RM/6/RMDEBUG:
BGP_L3VPN.: Send UPDATE to peer 49.0.0.1 for following destinations :
*Jun 24 11:36:26:695 2009 PE1 RM/6/RMDEBUG:
Origin : Incomplete
AS Path :
Next Hop : 49.0.0.2
Local Pref : 100
MED : 3
Ext-Community:<OSPF Domain Id: 0.0.0.0:0>, <OSPF AreaNum: 0.0.0.0 Route
Type: 2 Option: 0>, <OSPF Router Id: 49.0.0.2:0:0>, <RT: 1:1>
102.0.0.0/24 (RD 1:1,Label 1031),
*Jun 24 11:36:26:795 2009 PE1 RM/6/RMDEBUG:
BGP_L3VPN.: Send UPDATE to peer 49.0.0.1 for following destinations :
*Jun 24 11:36:26:946 2009 PE1 RM/6/RMDEBUG:
Origin : Incomplete
AS Path :
Next Hop : 49.0.0.2
Local Pref : 100
MED : 2
Ext-Community:<OSPF Domain Id: 0.0.0.0:0>, <OSPF AreaNum: 0.0.0.0 Route
Type: 5 Option: 1>, <OSPF Router Id: 49.0.0.2:0:0>, <RT: 1:1>
103.0.0.0/24 (RD 1:1,Label 1031),
以上可见,BGP只传递OSPF路由表中生效的三条路由,并通过扩展团体属性Ext-Community携带了对应LSA所包含的路由信息,如AreaNum、Router Id、RouteType等。Route-Type字段的可能取值为1、2、3、5、7、129,其中前面5种取值表示OSPF的路由类型,而取值为129时表示是sham-link对端end point的地址。Option只在Route-Type取值为5或7,表示外部路由的类型。对于外部路由,Type2对应Option最低位为1,值为1,Type1对应Option最低位为0,值为0。除以上信息外,还携带了OSPF Domain Id信息,默认情况下为0.0.0.0,这里Domain 表示一个共同的区域,同一个Domain之内的路由器可以根据Route-Type字段还原LSA,还原的规则为:
Ø 如果Route-Type中的LSA Type为1、2、3,则作为3类区域间路由引入;
Ø 如果Route-Type中的LSA Type为5、7,Option为0时,则作为E1类型引入,Option为1时,作为E2类型引入;
当Domain ID不同时,则不能根据Route-Type字段还原LSA,此时只能按照外部LSA引入。
在PE2上配置在OSPF VPN 实例中引入BGP,查看对应LSDB:
[PE2-ospf-4]import-route bgp
[PE2-ospf-4]display ospf 4 lsdb
OSPF Process 4 with Router ID 49.0.0.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 66.0.0.2 66.0.0.2 1649 48 80000003 0
Router 49.0.0.1 49.0.0.1 1651 48 80000004 0
Sum-Net 102.0.0.0 49.0.0.1 52 28 80000001 3
Sum-Net 101.0.0.0 49.0.0.1 52 28 80000001 3
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 103.0.0.0 49.0.0.1 52 36 80000001 2
从中可以看到,MBGP将PE1一侧的私网路由传递到PE2,PE2根据携带的扩展团体属性将路由还原为对应的LSA。其中区域内、区域间OSPF路由将被还原为3类LSA。ASE路由还原为5类LSA。由以上也可以看到1、4类LSA通过此方式不能得到传递,2类LSA也丢失了携带的路由拓扑信息,这样实际上就割裂了整个VPN统一规划的OSPF。
在PE1、PE2两端OSPF domain-id不一致时,所有路由只能还原为5类LSA形式:
[PE1-ospf-4]domain-id 11.11.11.11
[PE2-ospf-4]display ospf 4 lsdb
OSPF Process 4 with Router ID 49.0.0.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 66.0.0.2 66.0.0.2 116 48 80000004 0
Router 49.0.0.1 49.0.0.1 118 48 80000005 0
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 103.0.0.0 49.0.0.1 219 36 80000001 2
External 101.0.0.0 49.0.0.1 2 36 80000001 3
External 102.0.0.0 49.0.0.1 2 36 80000001 3
由于OSPF VPN普通模式中是通过OSPF和BGP互相引入来传递路由,丢失了OSPF原有的拓扑信息,在这种情况下最多只能产生3类LSA,路由计算时采用类似距离矢量的方法,打破了OSPF路由计算原有的无环性。在如下的CE双归属组网中就会出现路由环路的现象:
CE-C和PE-A、PE-B都建立了OSPF邻接,PE-B把BGP路由发送给PE-A,PE-A转换后的LSA通过CE-C又传递给了PE-B,PE-B上一旦通过这些LSA计算出了路由,就会形成环路并且可能造成路由的振荡。出现这种环路后,通过OSPF原有的防环路机制是无法解决的,为此OSPF多实例中新增了如下特性来解决这个问题。
3类LSA中DN bit位,在RFC4577中规定:PE在将通过BGP还原得到的3类LSA发送给CE设备时,3类LSA Options field中DN bit位必须置为1。PE设备接收到DN bit置1的3类LSA后,不使用它进行路由计算。
在PE1、PE2两端OSPF domain-id一致时,检查PE2还原得到的3类LSA,看到DN bit被置位了:
[PE1-ospf-4]domain-id 0.0.0.0
[PE2-ospf-4]display ospf 4 lsdb summary 102.0.0.0
OSPF Process 4 with Router ID 49.0.0.1
Area: 0.0.0.0
Link State Database
Type : Sum-Net
LS ID : 102.0.0.0
Adv Rtr : 49.0.0.1
LS Age : 53
Len : 28
Options : E DN
Seq# : 80000001
Checksum : 0xe33
Net Mask : 255.255.255.0
Tos 0 Metric: 3
5、7类LSA中的Route tag,通过BGP路由还原的5类LSA中tag字段填写本地的Route Tag,从CE接收到5类LSA后,检查LSA的tag字段,和本地的Route Tag进行比较,如果相同的话,就不使用该LSA进行路由计算。Route Tag可以手工配置,也可以通过自动计算得到,当MPLS骨干网中BGP的AS号为2个字节长度时,Route Tag默认情况下是根据AS号进行自动计算的。
OSPF普通VPN配置下,MBGP与OSPF互相引入,MBGP将私网OSPF路由传递到对端,再由对端PE的OSPF引入BGP从而实现OSPF路由传递。这种情况下,最多只能还原为3类LSA,在CE上得到的路由是区域间路由。如果在CE之间存在backdoor链路(图示如下),作为公网MPLS链路的备份。则在CE上通过backdoor链路学到的路由是区域内路由,优于普通VPN学到的区域间路由,这样就导致数据只能通过backdoor链路而不会选择公网MPLS链路。由此可见,对于这种情况,使用普通VPN是不行的。
首先看一下CE2在普通OSPF VPN(没有backdoor链路)情况下的LSDB和路由表:
[CE2]display ospf 4 lsdb
OSPF Process 4 with Router ID 66.0.0.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 66.0.0.2 66.0.0.2 1202 48 80000004 0
Router 49.0.0.1 49.0.0.1 1205 48 80000005 0
Sum-Net 102.0.0.0 49.0.0.1 943 28 80000001 3
Sum-Net 101.0.0.0 49.0.0.1 943 28 80000001 3
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 103.0.0.0 49.0.0.1 1307 36 80000001 2
[CE2]display ospf 4 routing
OSPF Process 4 with Router ID 66.0.0.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
200.0.0.0/24 1562 Stub 200.0.0.2 66.0.0.2 0.0.0.0
102.0.0.0/24 1565 Inter 200.0.0.1 49.0.0.1 0.0.0.0
101.0.0.0/24 1565 Inter 200.0.0.1 49.0.0.1 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
103.0.0.0/24 2 Type2 3489661028 200.0.0.1 49.0.0.1
Total Nets: 4
Intra Area: 1 Inter Area: 2 ASE: 1 NSSA: 0
配置backdoor链路后,CE2的OSPF LSDB和路由表:
[CE2]display ospf 4 lsdb
OSPF Process 4 with Router ID 66.0.0.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 66.0.0.8 66.0.0.8 28 60 80000010 0
Router 66.0.0.2 66.0.0.2 27 60 8000000C 0
Router 49.0.0.2 49.0.0.2 22 36 8000000C 0
Router 49.0.0.1 49.0.0.1 21 48 8000000B 0
Router 75.0.0.2 75.0.0.2 1396 36 80000007 0
Network 50.0.0.1 66.0.0.8 25 32 80000002 0
Network 102.0.0.1 66.0.0.8 1391 32 80000006 0
Network 100.0.0.2 66.0.0.8 399 32 80000008 0
Sum-Net 101.0.0.0 66.0.0.8 1299 28 80000006 1
Sum-Asbr 50.0.0.60 66.0.0.8 1467 28 80000005 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 103.0.0.0 50.0.0.60 1451 36 80000005 1
[CE2]display ospf 4 routing
OSPF Process 4 with Router ID 66.0.0.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
50.0.0.0/24 1 Transit 50.0.0.2 66.0.0.8 0.0.0.0
100.0.0.0/24 2 Transit 50.0.0.1 66.0.0.8 0.0.0.0
200.0.0.0/24 1 Stub 200.0.0.2 66.0.0.2 0.0.0.0
102.0.0.0/24 2 Transit 50.0.0.1 66.0.0.8 0.0.0.0
101.0.0.0/24 2 Inter 50.0.0.1 66.0.0.8 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
103.0.0.0/24 1 Type2 1 50.0.0.1 50.0.0.60
Total Nets: 6
Intra Area: 4 Inter Area: 1 ASE: 1 NSSA: 0
以上可见,存在backdoor链路后,OSPF的LSDB和相应路由表均发生变化,通过backdoor链路的路由优选。此时,如果要想穿越VPN骨干域的路由生效,就应该使得穿越VPN骨干域的路由为域内路由类型。为此,在PE之间可以建立一条域内的链路来达到这个目的,这也就是Sham-link的本意所在。这样可以通过调整Sham-link和backdoor链路的COST值来控制选路。接下来给出我司Sham-link的实现。
Sham-link是PE上OSPF VPN实例间的链路配置,与其他设备无关。以下以PE1为例,PE2配置与此对称。
1、Sham-link的端点对应的路由必须是32位的主机路由,且属于私网,通过MBGP传递到对端。
[PE1-bgp-vpn1]import-route direct
此操作的作用为引入直连的32位私网主机路由,发布Sham-link端点路由。
[PE1-ospf-4-area-0.0.0.0]sham-link 49.0.0.2 49.0.0.1
建立Sham-link,后续可根据需要设置Sham-link的COST参数。
2、配置MBGP引入OSPF路由,用于对端PE学习,不能再配OSPF引BGP路由。
[PE1-bgp-vpn1]import-route ospf 4
这里引用一段话来说明一下:根据协议规定,这里是不需要再引入的,我司的实现PE仍采用BGP传递过来的OSPF路由,而不用Sham-link传来的LSA计算路由,这是因为如下考虑。Sham-link UP是通过PE学到对端Sham-link端点的私网路由,而如果该Sham-link端点的私网路由也通过OSPF发布的话,就会造成如下怪圈:PE学到对端的Sham-link端点路由->Sham-link UP->私网路由通过OSPF LSA学到->由于OSPF路由优于BGP路由,顶掉BGP路由->Sham-link DOWN ->OSPF路由消失,BGP路由生效->Sham-link UP。
这种情况下,PE之间传递了所有的LSA,保留了所有的拓扑信息,PE和CE均得到完整的LSDB,CE可以通过SPF算法得到相应的路由。
从PE2的角度,我们首先来看一下形成OSPF Sham-link后的接口和邻居变化。
[PE2-ospf-4-area-0.0.0.0]sham-link 49.0.0.1 49.0.0.2
[PE2-ospf-4-area-0.0.0.0]
[PE2]dis ospf 4 interface
OSPF Process 4 with Router ID 49.0.0.1
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
200.0.0.1 PTP P-2-P 1 1 0.0.0.0 0.0.0.0
由此可见Sham-link并没有形成新的ospf接口。
[PE2]display ospf 4 peer
OSPF Process 4 with Router ID 49.0.0.1
Neighbor Brief Information
Area: 0.0.0.0
Router ID Address Pri Dead-Time Interface State
66.0.0.2 200.0.0.2 1 33 S6/4 Full/ -
Sham link 49.0.0.1 -> 49.0.0.2:
Router ID Address Pri Dead-Time State
49.0.0.2 49.0.0.2 1 31 Full
以上可以看到,ospf形成两个邻居关系。
接下来我们来看一下配置Sham-link后PE的LSDB。
[PE2]display ospf 4 lsdb
OSPF Process 4 with Router ID 49.0.0.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 66.0.0.8 66.0.0.8 538 60 80000010 0
Router 66.0.0.2 66.0.0.2 537 60 8000000C 0
Router 49.0.0.2 49.0.0.2 24 48 8000000E 0
Router 49.0.0.1 49.0.0.1 19 60 8000000D 0
Router 75.0.0.2 75.0.0.2 205 36 80000008 0
Network 50.0.0.1 66.0.0.8 535 32 80000002 0
Network 102.0.0.1 66.0.0.8 199 32 80000007 0
Network 100.0.0.2 66.0.0.8 907 32 80000008 0
Sum-Net 101.0.0.0 66.0.0.8 107 28 80000007 1
Sum-Asbr 50.0.0.60 66.0.0.8 275 28 80000006 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 103.0.0.0 50.0.0.60 253 36 80000006 1
以上我们可以看到,OSPF LSDB中得到的为完整的LSA信息,可以进行OSPF的SPF运算来计算路由,这些都是通过Sham-link传递过来的,而不是通过引入得到的。下面分析一下backdoor链路和Sham-link不同COST情况下的路由选择情况。
1、 配置PE2如下:
#
[PE2-ospf-4-area-0.0.0.0]sham-link 49.0.0.1 49.0.0.2 cost 55
2、 配置CE2如下:
#
[CE2-Ethernet0/1]ospf cost 88
3、 查看CE2的OSPF路由表情况:
[CE2]display ospf 4 routing
OSPF Process 4 with Router ID 66.0.0.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
50.0.0.0/24 58 Transit 200.0.0.1 66.0.0.8 0.0.0.0
100.0.0.0/24 57 Transit 200.0.0.1 66.0.0.8 0.0.0.0
200.0.0.0/24 1 Stub 200.0.0.2 66.0.0.2 0.0.0.0
102.0.0.0/24 58 Transit 200.0.0.1 66.0.0.8 0.0.0.0
101.0.0.0/24 58 Inter 200.0.0.1 66.0.0.8 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
103.0.0.0/24 1 Type2 1 200.0.0.1 50.0.0.60
Total Nets: 6
Intra Area: 4 Inter Area: 1 ASE: 1 NSSA: 0
由路由表可见,在这种情况下,路由选择VPN域的主链路。
1、配置PE2如下:
#
[PE2-ospf-4-area-0.0.0.0] sham-link 49.0.0.1 49.0.0.2 cost 88
2、配置CE2如下:
#
[CE2-Ethernet0/1]ospf cost 55
3、 查看CE2的OSPF的路由表情况:
[CE2]display ospf 4 routing
OSPF Process 4 with Router ID 66.0.0.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
50.0.0.0/24 55 Transit 50.0.0.2 66.0.0.8 0.0.0.0
100.0.0.0/24 56 Transit 50.0.0.1 66.0.0.8 0.0.0.0
200.0.0.0/24 1 Stub 200.0.0.2 66.0.0.2 0.0.0.0
102.0.0.0/24 56 Transit 50.0.0.1 66.0.0.8 0.0.0.0
101.0.0.0/24 56 Inter 50.0.0.1 66.0.0.8 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
103.0.0.0/24 1 Type2 1 50.0.0.1 50.0.0.60
Total Nets: 6
Intra Area: 4 Inter Area: 1 ASE: 1 NSSA: 0
这种情况下,路由选择backdoor链路。由此可知,只要对两者链路的COST进行相应设置,就可以控制路由选择VPN主链路还是backdoor备份链路。
BGP/MPLS VPN以隧道的方式解决了在公网中传送私网数据的问题,但传统的BGP/MPLS VPN架构要求每个VPN实例单独使用一个CE与PE相连。
随着用户业务的不断细化和安全需求的提高,很多情况下一个私有网络内的用户需要划分成多个VPN,不同VPN用户间的业务需要完全隔离。此时,为每个VPN单独配置一台CE将加大用户的设备开支和维护成本;而多个VPN共用一台CE,使用同一个路由表项,又无法保证数据的安全性。为了解决这个问题提出了MCE组网,既在同一台CE设备上配置多个VPN实例和用户自己的VPN相对应,这样不但能够隔离私网内不同VPN的报文转发路径,而且通过与PE间的配合,也能够将每个VPN的路由正确发布至对端PE,保证VPN报文在公网内的传输。
在MCE应用情况下,CE上配置的OSPF多实例只是为了隔离不同VPN的路由,而不是来进行路由还原的,这种情况下进行路由计算不应该受防环路处理的影响,为此专门提供了命令来实现MCE设备上OSPF多实例路由的正常计算——vpn-instance-capability simple
在CE2上也配置VPN,将OSPF进程也绑定在VPN中,和PE2建立OSPF邻居。
[CE2-ospf-4]dis this
#
ospf 4 router-id 66.0.0.2 vpn-instance vpn1
route-tag 3489661028
area 0.0.0.0
network 200.0.0.0 0.0.0.255
#
return
[CE2-ospf-4]display ospf 4 peer
OSPF Process 4 with Router ID 66.0.0.2
Neighbor Brief Information
Area: 0.0.0.0
Router ID Address Pri Dead-Time Interface State
49.0.0.1 200.0.0.1 1 35 S1/4 Full/ -
在CE2上查看LSDB和OSPF路由表:
[CE2]display ospf 4 lsdb
OSPF Process 4 with Router ID 66.0.0.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 66.0.0.2 66.0.0.2 38 48 80000002 0
Router 49.0.0.1 49.0.0.1 39 48 80000002 0
Sum-Net 50.0.0.0 49.0.0.1 49 28 80000001 3
Sum-Net 102.0.0.0 49.0.0.1 49 28 80000001 3
Sum-Net 101.0.0.0 49.0.0.1 49 28 80000001 3
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 103.0.0.0 49.0.0.1 49 36 80000001 2
External 100.0.0.0 49.0.0.1 49 36 80000001 1
External 49.0.0.2 49.0.0.1 49 36 80000001 1
[CE2]display ospf 4 routing
OSPF Process 4 with Router ID 66.0.0.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
200.0.0.0/24 1 Stub 200.0.0.2 66.0.0.2 0.0.0.0
Total Nets: 1
Intra Area: 1 Inter Area: 0 ASE: 0 NSSA: 0
缺省情况下,配置OSPF多实例后,OSPF认为设备是PE,在路由计算时会按照PE的环路机制处理,从上面可以看到虽然OSPF的邻居建立正确并且LSDB中也存在3类和5类LSA,但OSPF并没有计算出了相关路由。
在CE2上配置vpn-instance-capability simple命令后,在进行观察:
[CE2-ospf-4]vpn-instance-capability simple
[CE2-ospf-4]display ospf 4 routing
OSPF Process 4 with Router ID 66.0.0.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
50.0.0.0/24 4 Inter 200.0.0.1 49.0.0.1 0.0.0.0
200.0.0.0/24 1 Stub 200.0.0.2 66.0.0.2 0.0.0.0
102.0.0.0/24 4 Inter 200.0.0.1 49.0.0.1 0.0.0.0
101.0.0.0/24 4 Inter 200.0.0.1 49.0.0.1 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
103.0.0.0/24 2 Type2 3489661028 200.0.0.1 49.0.0.1
100.0.0.0/24 1 Type2 3489661028 200.0.0.1 49.0.0.1
49.0.0.2/32 1 Type2 3489661028 200.0.0.1 49.0.0.1
Total Nets: 7
Intra Area: 1 Inter Area: 3 ASE: 3 NSSA: 0
配置vpn-instance-capability simple命令,OSPF认为设备不是PE,路由计算时不受防环路机制的影响,正确计算出了所有路由。