MPLS_VPN站点双归属和MPLS_ MCE组网

似梦清欢
• 阅读 88

私网站点内不同业务需要隔离时,可以在CE设备上配置多VPN实例。CE设备使能多实例称为MCE。 在PE设备做VPN实例隔离业务相当于在每一个CE设备上物理隔离业务,成本较高。 MCE与对应的PE之间通过物理接口、子接口或者逻辑接口进行互联,PE上将这些接口绑定到对应的VPN实例。


特殊场景下的BGP配置

  • AS号替换 MPLS VPN场景中,PE与CE之间运行EBGP交互路由信息,可能会出现两个站点的(私有)AS号相同: MPLS_VPN站点双归属和MPLS_ MCE组网 如上,两个私网站点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特性避免环路。 MPLS_VPN站点双归属和MPLS_ MCE组网 如上,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传回公网,形成环路: MPLS_VPN站点双归属和MPLS_ MCE组网 :::


BGP站点双归问题

如下操作出现环路:

  1. 连接多个私网站点的AS号相同,且私网站点之间需要相互通信。

  2. PE设备AR3需要对站点使用AS号替换,即去掉AS-path防环。

  3. 修改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 
  4. 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属性是否相同:

    1. 如果相同,则不向该站点发送路由。
    2. 如果不相同,则继续向站点内传递。

BGP站点双归属实验

MPLS_VPN站点双归属和MPLS_ MCE组网

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发送路由

MPLS_VPN站点双归属和MPLS_ MCE组网

MPLS_VPN站点双归属和MPLS_ MCE组网 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号替换

MPLS_VPN站点双归属和MPLS_ MCE组网 AR1收到该路由: MPLS_VPN站点双归属和MPLS_ MCE组网


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计算得出的路由

MPLS_VPN站点双归属和MPLS_ MCE组网

MPLS_VPN站点双归属和MPLS_ MCE组网


OSPF防环

站点1和站点2都属于VPN1,站点1通过OSPF Area0接入骨干网的PE1;站点2通过OSPF Area0分别接入骨干网的PE2和PE3(双归属负载分担场景): MPLS_VPN站点双归属和MPLS_ MCE组网

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)。 如下: MPLS_VPN站点双归属和MPLS_ MCE组网 ::: 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)

BGP对等体之间通过BGP扩展团体属性在MPLS VPN骨干网上承载路由信息,PE运行OSPF生成PE到CE的Type 3 LSA(区域间路由)。 若在CE1和CE2之间增加一条后门(Backdoor)链路,并且直接运行OSPF交互路由。通过后门链路学习到的路由类型为区域内路由(Intra_Area route)。 区域内路由优于区域间路由,CE设备优选后门链路,如果需要将后门链路作为备份链路,可采用sham link实现。 MPLS_VPN站点双归属和MPLS_ MCE组网 ::: 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实例中时,会通过特殊的扩展团体属性来标识: MPLS_VPN站点双归属和MPLS_ MCE组网

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,导致优选后门链路或者无法通信。

  1. 如果两端站点所在区域为骨干区域,后门链路所在区域为非骨干区域:

正常情况下站点间通过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: MPLS_VPN站点双归属和MPLS_ MCE组网 对端CE设备引入的路由由1类LSA传递: MPLS_VPN站点双归属和MPLS_ MCE组网

MPLS_VPN站点双归属和MPLS_ MCE组网 以上1类LSA是从后门链路学到的: MPLS_VPN站点双归属和MPLS_ MCE组网

修改后门链路开销,使得设备优选sham link
[AR1-GigabitEthernet0/0/1]ospf cost 10

MPLS_VPN站点双归属和MPLS_ MCE组网 如上,sham link相当于把两个PE设备放在同一个区域内,传递了1类LSA。

点赞
收藏
评论区
推荐文章

暂无数据

似梦清欢
似梦清欢
Lv1
学海无涯
文章
17
粉丝
17
获赞
1