【RSR】MPLS OSPF VPN原理的功能原理是什么?

发布时间: 2013-11-17 点击量:1524 打印 字体:

1 原理概述
对于穿越BGP/MPLS/VPN域的路由协议多实例应用,OSPF类似于Static Routes/RIP/BGP等其他路由协议的多实例应用,在CE和PE之间建立对应路由协议多实例,然后在MBGP中引入多实例的路由协议(即重发布),由MBGP将相应路由传递到BGP/MPLS/VPN域的对端后再发布到对应路由协议多实例中,以完成路由的完整发布。
以OSPF为例,如果没有OSPF VPN功能,MBGP不会携带OSPF扩展属性,那么在VRF中BGP重发布到OSPF时只能以还原成5/7类LSA,无法正确传递携带路由拓扑信息的其他类型LSA,如此将导致OSPF路由拓扑的割裂。同时如果存在CE双归属环境,那么将照成次优路径或路由环路。
如果仅支持OSPF普通VPN形式,即在MBGP中携带OSPF扩展属性,MBGP处理能还原生成3/5/7类LSA,同样也法正确传递携带路由拓扑信息的其他类型LSA,如此将导致OSPF路由拓扑的割裂。但MBGP中携带OSPF扩展属性后,可以根据其中的DN位或ROUTER-TAG解决CE双归属造成的路由问题。同时存在backdoor链路情况下,因为域内路由优先级高的原因将导致无法优选到穿越BGP/MPLS/VPN传递的路由。鉴于此,引入Sham-link方式的OSPF VPN形式,该模式下在PE-PE之间建立单独的OSPF连接,也就是Sham-link,可以认为是一条OSPF区域内的P2P的伪链路,性质类似于Virtual-link,通过该链路直接发布接收OSPF协议报文,从而保留所有LSA的内容信息。
1.1 OSPF VPN的特性
1.1.1 域ID(DOMAIN-ID)
域ID是指该路由所属的OSPF域。当CE学习VPN内部站点OSPF路由,该路由以1、2或者3类LSA通告给PE并重分布到BGP形成VPN路由时,域ID也会随路由一起重分布给BGP,并作为VPN路由中的扩展团体属性一起通告出去。当其他PE收到该VPN路由并重分布给VRF OSPF实例,域ID也会随该路由一起重分布给对应的VRF OSPF实例,如果VRF OSPF实例确认路由中的域ID和本VRF OSPF实例的域ID一样,则以内部路由(3类LSA)的形式通告给CE;反之,如果VRF OSPF实例确认路由中的域ID和本VRF OSPF实例的域ID不一样,则该路由会以外部路由(5类或7类LSA)的形式通告给CE。
如下图所示,对于属于同一个OSPF域内部的路由,CE1把路由以2类LSA通告给PE1,并形成VPN路由通告给PE2,PE2接收到该路由并重分布给VRF OSPF实例,由于VRF OSPF实例具有和该VPN路由一样的域ID,则这些站点最终以内部路由的形式通告给VPN站点。
 
 注意:我司设备默认情况下,在MBGP的OSPF扩展属性中domain-id为空,可以通过在OSPF进程下配置domain-id来修改;而友商设备默认情况下,domain-id可能与OSPF进程号一致;在与友商设备对接时,建议手动定义每个PE下OSPF的domain-id 。
1.1.2 DN位
DN位是PE-CE间运行OSPF协议的一种环路检测技术。在某种场景中,PE-CE间运行OSPF也可能产生环路问题,比如在一个VPN站点连接多台PE(CE双归属环境),如果一台PE把学习到的VPN路由通告给VPN站点,在VPN站点内部又通过运行的OSPF协议传给另外一台PE并传播出去,那么就可能产生环路。
如下图所示。192.168.10.0/24的路由PE1通告给PE2和PE3,CE2通过OSPF协议通告给CE3,再由CE3通告给PE3,重分布给PE3的BGP协议,PE3上优选了OSPF重分布来的协议,并把该路由转化为VPN-IPV4路由通告出去,就有可能产生环路,如下图所示。
 
为了阻止上述可能的环路,当PE通告3、5或者7类的LSA给CE,会在LSA消息的可选字段中置上DN位。当其他PE站点收到的LSA的消息的可选字段包含有DN位,则PE上的OSPF协议不让该LSA参与OSPF计算。
1.1.3 路由标记(ROUTER-TAG)
VPN路由标记是PE-CE间运行OSPF协议的另一种环路检测技术。PE-CE运行OSPF协议时,PE上对应的VRF OSPF实例默认都有个路由标记,称之为“VPN路由标记”,在PE上的VRF OSPF实例引入VPN路由并转化为5类或者7类LSA通告给CE时,该 LSA消息会附带VPN路由标记,在一个VPN站点连接多台PE的环境中,如果PE收到5类或者7类LSA中设备含有VPN路由标记,且该VPN路由标记和该OSPF实例的VPN路由标记相等,则该LSA不会参与OSPF协议的路由计算。
 默认情况下,ROUTER-TAG的值为该路由器BGP的AS号
1.1.4 DN位及ROUTER-TAG的应用
通过前面介绍以及大家可能从一些书籍材料上查阅到,对于DN位及ROUTER-TAG的应用,大部分人存在如下理解:
3类LSA通过判断DN位是否置位来判断该LSA是否参与OSPF计算;如果DN置位,那么该LSA不参与OSPF计算;
5类LSA通过比较ROUTER-TAG是否与本地ROUTER-TAG一致来判断该LSA是否参与OSPF计算;如果ROUTER-TAG一致,那么该LSA不参与OSPF计算;
在早期时候,以上的理解没有错误。当初5类LSA不携带DN位,所以根据ROUTER-TAG判断。随着RFC的完善,根据RFC4577定义,在OSPF VPN环境中,PE重发布OSPF路由时,3/5/7类LSA必须携带DN位。那么我司现在的实现方式是:
3/5/7类LSA通过判断DN位是否置位来判断该LSA是否参与OSPF计算;只要DN置位,那么该LSA不参与OSPF计算;
为了兼容旧的RFC定义,如果收到的5/7类LSA 不携带DN位,那么将根据ROUTER-TAG是否一致来判断该LSA是否参与OSPF计算;
不论domain-id是否一致,只要从MBGP重发布到ospf,lsa的DN总是置位。DN是否置位与DOMAIN-ID无关,而DOMAIN-ID只是用来判断还原成3类还是5/7类LSA。
1.1.5 PE-CE间区域部署
正常情况下,PE-CE间的链路可以是任意的OSPF区域,但是如果PE-CE间的链路是非0区域,则对CE所在的OSPF区域来说,PE是一台ABR。这可能会引起问题,因为作为ABR设备的OSPF协议具有如下特点:
ABR只计算骨干区域的3类LSA
ABR只将骨干区域内的3类LSA转发到非骨干区域
如下图所示,如果PE-CE间的链路是非0区域,那么PE设备将MP-BGP通告的VPNv4路由重分布给OSPF并还原成3类LSA通告给CE1,CE1不会计算非骨干区域的LSA,所以这些LSA不会通告给Area0内的路由器,这样VPN内部站点可能无法学习到其他站点的路由。所以,对于PE-CE间是非0区域的部署要特别注意。
 
一般来说,在L3VPN应用中,如果PE-CE间运行OSP协议来交互VPN路由,则尽量不在VPN内部站点部署骨干区域,实际中如果除了PE站点外还有VPN内部站点路由器也是属于骨干区域,那么该VPN内部站点内必须至少有一个路由器设备和PE相连,且CE和PE间的链路必须属于区域0,这样才能确保区域间路由器和外部路由可以在PE和VPN站点间传输。
 

00 分享 纠错
相关条目