私网站点内不同业务需要隔离时,可以在CE设备上配置多VPN实例。CE设备使能多实例称为MCE。 在PE设备做VPN实例隔离业务相当于在每一个CE设备上物理隔离业务,成本较高。 MCE与对应的PE之间通过物理接口、子接口或者逻辑接口进行互联,PE上将这些接口绑定到对应的VPN实例。
特殊场景下的BGP配置
AS号替换 MPLS VPN场景中,PE与CE之间运行EBGP交互路由信息,可能会出现两个站点的(私有)AS号相同: 如上,两个私网站点AS号都是65001,CE1通过EBGP向PE1发送一条私网路由,并经过PE2发送到CE2,则CE2会由于AS号重复(65001 123)丢弃这条路由,导致属于同一VPN的Site 1和Site 2之间无法连通。
[PE1] bgp 123 [PE1-bgp] ipv4-family vpn-instance vpn1 [PE1-bgp-vpn1] peer 192.168.100.1 substitute-as substitute-asAS号替换,PE用本地AS号123替换收到的私网路由的CE(2)所在VPN站点(Site 2)的AS号65001
如上,替换后CE1收到的对端站点发来路由的AS_Path属性为{123,123}。
SoO CE多归属场景下,使能BGP的AS号替换功能可能会引起路由环路,可以使用SoO特性避免环路。 如上,CE1与CE3处于Site 1,CE2处于站点Site 2,Site 1和Site 2站点所在的AS号都为65001。PE1和PE2上配置AS号替换功能,保证Site 1和Site 2之间的路由可以正常学习。CE1传递站点内的路由给PE1,PE1传递该路由给CE3,由于配置AS号替换,AS号由65001替换成123,CE3接收该路由,优选PE1发来的路由,可能导致路由环路。 ::: tip BGP选路规则:EBGP路由优于IBGP路由。 如上图拓扑,如果是CE1始发的路由,没有MED开销,不能通过开销判断。 ::: ::: warning SoO的环路是针对于公网和私网的环路。 站点内CE1将路由发到公网PE1,公网PE1将路由发到站点内CE2,CE2优选PE1发来的路由,CE2将路由发到PE1传回公网,形成环路: :::
BGP站点双归问题
如下操作出现环路:
连接多个私网站点的AS号相同,且私网站点之间需要相互通信。
PE设备AR3需要对站点使用AS号替换,即去掉AS-path防环。
修改CE设备到PE设备的路由开销值,即MED值进行修改(AR2到AR4的MED值设置为100)。
[AR2]route-policy MED permit node 10 [AR2-route-policy]apply cost 100 [AR2-bgp]peer 10.1.24.4 route-policy MED export
AR2站点路由通告。
问题:
AR2会将路由传递给EBGP邻居AR4(MED=100) AR2会将路由传递给IBGP邻居AR1(MED=0) AR1会将路由传递给EBGP邻居AR3(MED=0) (unco拒绝AR2向AR1通告路由的策略) AR3会将路由传递给MP-IBGP邻居AR4(MED=0) AR4会优选MED值小的路由,即优选MP-IBGP邻居AR3给的路由 AR4会将路由传递给EBGP邻居AR2
问题解决: 通过配置SoO属性来防止路由环路:
[AR3-bgp-A]peer 10.1.13.1 soo 111:111 [AR4-bgp-A]peer 10.1.24.2 soo 111:111
PE连接相同站点的SoO属性一定要配置相同。 配置SoO属性后,AR3在接收站点VPN实例路由时会加上SoO属性,转换为VPNv4路由发送给AR4,AR4收到后根据携带的SoO属性,判断和自身连接站点的SoO属性是否相同:
- 如果相同,则不向该站点发送路由。
- 如果不相同,则继续向站点内传递。
BGP站点双归属实验
CE站点配置
[AR1]ospf router-id 10.1.1.1
[AR1-ospf-1]area 0
[AR1-GigabitEthernet0/0/0]ip ad 10.1.13.1 24
[AR1-GigabitEthernet0/0/1]ip ad 10.1.12.1 24
[AR1-GigabitEthernet0/0/1]ospf enable area 0
[AR1-LoopBack0]ip ad 1.1.1.1 32
[AR1-LoopBack0]ospf enable area 0
[AR1]bgp 65001
[AR1-bgp]peer 2.2.2.2 as-number 65001
[AR1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR1-bgp]peer 10.1.13.3 as-number 100
[AR2]ospf router-id 10.2.2.2
[AR2-ospf-1]area 0
[AR2-LoopBack0]ip ad 10.1.24.2 24
[AR2-LoopBack0]ip ad 2.2.2.2 32
[AR2-LoopBack0]ospf enable area 0
[AR2-GigabitEthernet0/0/0]ip ad 10.1.24.2 24
[AR2-GigabitEthernet0/0/1]ip ad 10.1.12.2 24
[AR2-GigabitEthernet0/0/1]ospf enable area 0
[AR2-bgp]peer 1.1.1.1 as-number 65001
[AR2-bgp]peer 1.1.1.1 connect-interface LoopBack 0
[AR2-bgp]peer 10.1.24.4 as-number 100
公网ISP配置
VPN配置
[AR3]ip vpn-instance A
[AR3-vpn-instance-A]route-distinguisher 100:100
[AR3-vpn-instance-A-af-ipv4]vpn-target 1:1
[AR3-GigabitEthernet0/0/0]ip binding vpn-instance A
[AR3-GigabitEthernet0/0/0]ip ad 10.1.13.3 24
[AR3-isis-1]network-entity 49.0001.0000.0000.0003.00
[AR3-isis-1]is-level level-2
[AR3-isis-1]cost-style wide
[AR3-GigabitEthernet0/0/1]ip ad 10.1.34.3 24
[AR3-GigabitEthernet0/0/1]isis enable
[AR3-LoopBack0]ip ad 3.3.3.3 32
[AR3-LoopBack0]isis enable
[AR3]mpls lsr-id 3.3.3.3
[AR3]mpls
[AR3]mpls ldp
[AR3-GigabitEthernet0/0/0]mpls
[AR3-GigabitEthernet0/0/1]mpls ldp
[AR4]ip vpn-instance A
[AR4-vpn-instance-A]route-distinguisher 100:100
[AR4-vpn-instance-A-af-ipv4]vpn-target 1:1
[AR4-GigabitEthernet0/0/1]ip binding vpn-instance A
[AR4-GigabitEthernet0/0/1]ip ad 10.1.24.4 24
[AR4-isis-1]network-entity 49.0001.0000.0000.0004.00
[AR4-isis-1]is-level level-2
[AR4-isis-1]cost-style wide
[AR4-GigabitEthernet0/0/0]ip ad 10.1.34.4 24
[AR4-GigabitEthernet0/0/0]isis enable
[AR4-LoopBack0]ip ad 4.4.4.4 32
[AR4-LoopBack0]isis enable
[AR4]mpls lsr-id 4.4.4.4
[AR4]mpls
[AR4]mpls ldp
[AR4-GigabitEthernet0/0/0]mpls
[AR4-GigabitEthernet0/0/0]mpls ldp
公网互联配置
[AR3]bgp 100
[AR3-bgp]peer 4.4.4.4 as-number 100
[AR3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[AR3-bgp]undo peer 4.4.4.4 enable
[AR3-bgp]ipv4-family vpnv4
[AR3-bgp-af-vpnv4]peer 4.4.4.4 enable
[AR4]bgp 100
[AR4-bgp]peer 3.3.3.3 as-number 100
[AR4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR4-bgp]undo peer 3.3.3.3 enable
[AR4-bgp]ipv4-family vpnv4
[AR4-bgp-af-vpnv4]peer 3.3.3.3 enable
VPN实例建立EBGP邻居关系
[AR3]bgp 100
[AR3-bgp]ipv4-family vpn-instance A
[AR3-bgp-A]peer 10.1.13.1 as-number 65001
[AR4]bgp 100
[AR4-bgp]ipv4-family vpn-instance A
[AR4-bgp-A]peer 10.1.24.2 as-number 65001
AR2引入通告路由
[AR2-LoopBack1]ip ad 100.2.2.2 32
[AR2-bgp]network 100.2.2.2 32
[AR2]route-policy deny deny node 10 AR2做策略拒绝所有
[AR2-bgp]peer 1.1.1.1 route-policy deny export AR2不向AR1发送路由
AR1所在AS为65001,不会接收AS-path中有65001的路由。
[AR3]bgp 100
[AR3-bgp]ipv4-family vpn-instance A
[AR3-bgp-A]peer 10.1.13.1 substitute-as 将发往10.1.13.1的路由做AS号替换
AR1收到该路由:
OSPF VPN扩展
MPLS VPN中的OSPF/BGP
当PE-CE间部署OSPF交互路由信息时,PE上部署BGP/OSPF,远端PE在将BGP引入VPN实例的OSPF进程时,产生5类 LSA,即出现总部将分支和其他站点发来的路由都视为自治系统外部路由(AS_external)。 (总部和分支使用OSPF,分支传到总部的路由为3类LSA,其他站点使用ISIS,传到总部的路由为5类LSA,跨VPN实例做连接时,通过公网BGP传输引入到OSPF中,都按照5类LSA接收,不能做出区分。)
为保留OSPF的路由信息,BGP新增可携带OSPF路由信息的团体属性:
Domain ID:域标识符用来标识和区分不同的域(OSPF站点)
Route Type:包含被引入到BGP的OSPF路由的Area-ID以及Route Type
Area-ID:PE的VPN实例的OSPF进程和CE建立邻接关系的区域号
Route Type:被引入的OSPF路由的类型
1或2:表示路由的类型为区域内部路由,也就是PE根据Type-1及Type-2 LSA所计算出来的路由
3:表示路由的类型为区域间路由
5:表示路由的类型为OSPF外部路由,也就是PE通过Type-5 LSA计算得出的路由当Route-Type字段的值为5时,Area-ID 字段的值需为0.0.0.0
7:表示路由的类型为NSSA路由,也就是PE通过Type-7 LSA计算得出的路由
OSPF防环
站点1和站点2都属于VPN1,站点1通过OSPF Area0接入骨干网的PE1;站点2通过OSPF Area0分别接入骨干网的PE2和PE3(双归属负载分担场景):
Site1的CE1通过Type3 LSA发布192.168.1.0/24的路由给PE1。
PE1向BGP引入OSPF VPN1进程,通过MP-IBGP将该路由发布给PE2和PE3。
PE2配置BGP到OSPF的路由引入,PE2产生Type3 LSA给CE2,CE2将来自PE2的Type3 LSA发布给PE3。(双点双向)
(普通的OSPG/BGP可以做双Tag,MPLS_VPN下需要使用DN bit)
PE3收到两条去往192.168.1.0/24的路由:一条是PE1发布的,另一条是从PE2路由引入的。
缺省情况下,IGP(OSPF默认10,外部引入路由默认150)路由优先级高于IBGP(默认255)路由,即PE3优选OSPF路由。
::: tip 缺省情况下,OSPF产生的LSA的DN位设置为1。可通过命令dn-bit-set disable来禁止设置OSPF LSA的DN位。
路由协议优先级值越小优先级越高。 :::
PE3将优选的学自OSPF的路由通过MP-IBGP发布给PE1。
PE1存在两条去往192.168.1.0/24的路由,一条通过OSPF学习自CE1,另一条通过MP-IBGP学习自PE3。
可能会导致以下问题:
PE1撤销192.168.1.0/24这条路由,但由于PE1与PE2之间的链路阻塞,BGP Update(撤销报文)无法及时发送给PE2,导致PE3发给PE1的路由依然存在(正常情况下会随着PE1发送给PE2的Update报文被撤销),PE1上到达目的地192.168.1.0/24的下一跳为PE3。此时路由环路产生。
若PE1上MP-IBGP的路由优先级高于OSPF,则PE1会优选PE3通告的BGP路由,此时PE1需要撤销发给PE2的BGP路由,导致PE3撤销发布给PE1的路由,PE1上的OSPF再次被优选。如此反复,形成路由震荡。
如果是VPN实例接收路由,不计算DN bit置1的LSA(PE3), 如果没有配置VPN实例,可以正常计算DN bit置1的LSA(PE2)。 如下: ::: warning DN bit在跨OSPF区域传递时(如PE2-CE2为区域0,PE3-CE2为区域1),经过ABR的转换,会导致DN置位消失。需要继续使用VPN Route Tag防环。只有5类和7类LSA携带Route Tag。 ::: OSPF Route Tag只用于私网,针对5/7类LSA做防环。 在PE上当OSPF发现收到的BGP转换的5/7类LSA的tag和自己route-tag的一样,会忽略这条路由不进行处理。 用于防止CE双归属时,5/7类LSA发生环路。
当一个CE接入两个PE时,PE1将根据引入的BGP路由产生的5类LSA发给CE,CE又将这条LSA发给PE2,由于OSPF的路由比BGP的路由优先级高,在PE2中就会将BGP路由替换为OSPF路由,产生(公网和站点间的)环路。设置route-tag之后,当PE发现LSA的route-tag和自己的一样,就会忽略这条LSA,因此避免了环路。 ::: tip 缺省情况下,VPN的路由标记根据BGP的AS号计算得到。如果没有配置BGP,则默认值为0。 可以通过指令route-tag配置VPN的路由标记。 :::
::: warning DN bit置位会随LSA在域内泛洪。即AR1、AR3收到的该3类LSA的DN bit都会置位。 :::
DN bit置位的条件
将VPN实例中的路由引入到实例OSPF,对应产生的LSA就会出现DN bit置位
(VPN实例不限制OSPF、ISIS等协议,实例OSPF即ospf route-id xxxx vpn-instance A)
DN bit的传递:
1.同一个区域内DN bit随着LSA正常泛洪
2.不同区域内DN bit跨区域泛洪会消除置位
DN bit的作用:
1.PE设备(带VPN实例的)收到带有DN bit置位的LSA不会计算路由
2.PE设别(带VPN实例的)收到DN bit不置位的LSA,判断是否是非骨干的3类LSA
如果PE设备收到没有DN bit置位,且是骨干的3类LSA,会正常计算路由:
1.在PE设备上引入VPN实例路由 进入VPN实例OSPF时,执行[AR-ospf-1]dn-bit-set disable summary,不会将DN bit置位
2.PE设备收到骨干的3类LSA且DN bit置位,可以执行[AR-ospf-1]dn-bit-check disable summary,忽略DN bit置位,正常计算该路由
3.PE设备收到骨干的3类LSA且DN bit置位,可以执行[AR-ospf-1]vpn-instance-capability simple,减弱VPN实例的处理机制(忽略DN bit、忽略route tag)
[AR-ospf-1]route tag disable可以忽略route tag
PE设备对于站点5类LSA的处理:
1.PE设备上引入VPN实例路由进入VPN实例OSPF时,产生5类LSA
2.产生的5类LSA,会存在DN bit置位,且会存在route tag置位
3.PE设备收到5类LSA后判断DN bit是否置位:
1.DN bit没有置位,需要继续判断route tag是否相同
1.route tag不同,则不计算该路由
2.route tag相同,则判断是否存在忽略route tag检查的配置
2.DN bit置位,需要检查是否存在忽略DN bit的配置
1.不存在,则不计算该路由
2.存在,需要计算判断route tag是否相同
1.route tag不同,则计算该路由
2.route tag相同,则判断是否存在忽略route tag检查的配置
1.如果忽略,则正常计算
2.没有忽略,则不计算该路由
MCE设备:站点设备CE通过VPN实例规划,绑定不同的业务。相当于将PE设备连接站点的实例绑定,提前在CE设备上部署。站点协议规划,需要注意存在VPN实例影响(比如OSPF的DN bit)
OSPF sham link
BGP对等体之间通过BGP扩展团体属性在MPLS VPN骨干网上承载路由信息,PE运行OSPF生成PE到CE的Type 3 LSA(区域间路由)。 若在CE1和CE2之间增加一条后门(Backdoor)链路,并且直接运行OSPF交互路由。通过后门链路学习到的路由类型为区域内路由(Intra_Area route)。 区域内路由优于区域间路由,CE设备优选后门链路,如果需要将后门链路作为备份链路,可采用sham link实现。 ::: warning 如上两端站点OSPF的区域ID必须相同。 当站点1为区域0,站点2为区域1,后门链路经过OSPF区域为区域0时,CE1经过骨干网由PE2发送3类LSA到CE2,CE1经过后门链路发送3类LSA到CE2。CE2作为ABR,不接收来自非骨干的3类LSA,即不接收PE2发来的路由。 当站点1为区域0,站点2为区域1,后门链路经过OSPF区域为区域1时,CE2经过骨干网由PE1发送3类LSA到CE1,CE2经过后门链路发送1类LSA到CE1。CE1去往CE2,优选1类LSA。 ::: sham link的作用是相当于使得PE和CE在同一个区域内,即在后门链路和骨干链路都学到同样的1类LSA,再将后门链路开销改大,实现主备。
扩展团体属性
OSPF站点路由如果引入到BGP VPN实例中时,会通过特殊的扩展团体属性来标识:
OSPF DOMAIN ID <0.0.0.0 : 0> 默认站点所在的区域标识
OSPF RT <0.0.0.0 : 1 : 0>
站点所在的区域 : 路由在站点内使用几类LSA表示
如果是5类LSA且是type 2引入,则该值为1
如果是5类LSA且是type 1引入或其他LSA,该值都为0
OSPF ROUTER ID <10.4.4.4 : 0> 引入该路由的设备RID : 该设备所属区域
如果两个站点domain id值相同:
1.发出路由站点的1、2、3类LSA会变为对方站点的3类LSA
2.发出路由站点的5、7类LSA会变为对方站点的5、7类LSA
如果两个站点domain id值不相同:
发出路由站点的1、2、3、5类LSA会变为对方站点的5类LSA
::: warning 模拟器对于2类LSA没有添加domain id、OSPF RT、OSPF RID等扩展属性,直接当作自身直连来使用,传递至对端,对端当作5类LSA引入。 :::
domain id只用来标识OSPF路由信息是内部的(区域间3类)还是外部的。 OSPF一个区域学习到3类LSA,意味着正在进行区域间的路由信息传递。 当站点允许的路由协议为OSPF时,中间的MPLS VPN网络称为超级骨干区域(backbone)。
为防止MPLS VPN网络出现故障导致业务中断,需要在两端站点之间添加一条后门链路(后门链路要求两端站点在同一个区域)。
站点所在区域和后门链路所在区域要求必须在同一个区域,否则两站点设备作为ABR,不会接收跨域传来的非骨干3类LSA,导致优选后门链路或者无法通信。
- 如果两端站点所在区域为骨干区域,后门链路所在区域为非骨干区域:
正常情况下站点间通过MPLS VPN骨干网络进行数据访问。当MPLS VPN骨干网络失效,后门链路无法当作备份链路使用(ABR不计算非骨干区域的3类LSA),站点间不能通信。 2. 如果两端站点所在区域为非骨干区域,后门链路所在区域为骨干区域: 站点间通信直接通过后门链路完成,不会优选MPLS VPN骨干网络访问。
::: warning 站点区域和后门链路处在同一个OSPF区域中存在的问题:
- 两端站点通过MPLS VPN骨干网络传递的LSA,最优的情况下交互的是3类LSA。
- 两端站点通过后门链路传递的LSA是1类LSA。
站点间会直接通过1类LSA进行数据访问,即优选后门链路。 ::: 在两个站点的PE间部署OSPF sham-link(可以连续区域的范围,即将站点的区域进行连接)可以解决上述问题。 ::: warning sham-link默认是属于OSPF的骨干区域0,建立sham-link时,PE和CE之间最好使用OSPF协议。 :::
sham-link配置思路:
1.两端站点的PE都保留一个绑定VPN实例的地址信息(如环回口)用于建立sham-link。
2.该sham-link的地址不能在OSPF站点内宣告,而是通过MP-BGP传递给对端PE设备,即需要在BGP VPN实例中宣告。
3.两端PE学习到相互的路由信息后,在站点OSPF区域下建立sham-link。
::: tip sham-link配置时,PE环回口绑定VPN实例,在OSPF非骨干区域内使用sham-link + 源IP + 目标IP。在BGP VPN实例下通告自身IP(或者引入直连路由)。 配置sham-link后,PE设备不需要做站点和MP-BGP的路由相互引入。 ::: 当PE之间sham-link正常建立后,PE之间通过sham-link传递1类LSA。 该操作不会影响原本站点OSPF和BGP VPN实例之间路由的相互引入(3/5类),PE设备的LSDB中会存在1类LSA和3类LSA并存的情况(且两类LSA描述同一种路由信息)。
sham link的实验验证
PE设备保留绑定实例的环回口用于创建sham link
[AR2]int lo 1
[AR2-LoopBack1]ip binding vpn-instance A
[AR2-LoopBack1]ip ad 10.1.24.2 24
[AR4]int lo 1
[AR4-LoopBack1]ip binding vpn-instance A
[AR4-LoopBack1]ip ad 10.1.24.4 24
两种方式将sham link伪连接接口通告对端
[AR2-bgp]ipv4-family vpn-instance A
[AR2-bgp-A]network 10.1.24.2 32
[AR4-bgp]ipv4-family vpn-instance A
[AR4-bgp-A]import-route direct 最好配置成network宣告
不配置站点路由相互引入,路由表中只有sham link: 对端CE设备引入的路由由1类LSA传递:
以上1类LSA是从后门链路学到的:
修改后门链路开销,使得设备优选sham link
[AR1-GigabitEthernet0/0/1]ospf cost 10
如上,sham link相当于把两个PE设备放在同一个区域内,传递了1类LSA。