OSPF应用在MPLS VPN中的特殊设计

简述

OSPFMPLS VPN场景中,应用在PE和CE之间时,会在OSPF基础协议上进行扩展的特性被启用。
假设用户站点内部网络运行着OSPF,在MPLS VPN下也希望和对端运行该协议传输路由信息,那么就需要在PE和CE之间也运行OSPF,在这个过程中为了解决一些因此引发的问题,OSPF会在基础协议上启用扩展的特性,Domain id、DN、route-tag意思是一旦在MPLS VPN中应用了OSPF那么就会有这些特性存在,是OSPF应用在其他环境中没有的

如何配置MPLS VPN看站内文章跳转

OSPF应用在MPLS VPN中的特殊设计
以该图来解释下面的特性

Domain ID

OSPF应用在MPLS VPN中的特殊设计
  • PE把BGP传来的远端路由向CE发布时,需要根据域标识符(Domian ID)的情况选择向CE发布Type3、Type5、Type7的OSPF路由
    • 如果本地的域标识符域BGP路由信息中携带的远端域标识符相等或互相兼容,则发布LSA3类路由
    • 否则,发布LSA5或LSA7路由
  • 域标识符可以通过在OSPF视图下domain-id x.x.x.x修改
    • 是以IP形式配置的,格式是x.x.x.x:0,0是默认字符无特殊意义
    • 华为默认ID是空,两边都没有配置则代表一样
  • 通过PE1学习到的对面PE3设备传来的远端路由,这里可以看到域标识符是0.0.0.0:0,OSPF R T是1:0表示192.168.2.0网段属于1类路由信息(还会有3:0、5:0、5:1、7:0等代表LSA类型5:0和5:1意思是5类LSA的type1和type2,OSPF RT不是MPLS VPN中RT的意思)
OSPF应用在MPLS VPN中的特殊设计
将PE设备间看作是一个区域0,只传递3类、5类、7类。
192.168.2.0/24本来是1类,传过去对端变成了3类。
8.8.8.8/32是PE3的回环口ip、10.1.2.0/24是PE3直连网段,引入到对端是5类LSA
开销因为是type2不计算内部开销,所以5类开销都是1,3类的开销就是4

路由环路预防

OSPF应用在MPLS VPN中的特殊设计
  • 在双路径这种类型情况下,如果没有特性就是会引发问题:
    • PE1和PE2分别将路由10.1.1.1/32以5类或7类LSA发布给CE1,CE1此时会学习到两条等价的OSPF路由分别指向PE1和PE2
    • CE1根据OSPF特性会向PE1和PE2分别发布从PE1和PE2学习到的路由
    • 由于OSPF路由优先级高于BGP路由,所以PE1和PE2的BGP路由10.1.1.1/32被OSPF的路由所取代,这段路由的下一跳都将是CE1
    • 这样就会导致BGP路由不活跃,那么PE1和PE2就会将引入OSPF的路由撤销,从而导致路由表中没有该OSPF路由。
    • 没有OSPF路由后BGP路由又会重新活跃,继续重复之前的循环,从而导致路由振荡

所以需要OSPF使用下面特性防环:

OSPF应用在MPLS VPN中的特殊设计
OSPF应用在MPLS VPN中的特殊设计
从A-main路由上查看5类路由信息可以得出,在路由信息的options字段中存在DN字段和tag
  • DN-bit:
    • 类似IS-IS的up/down字段,当PE设备看到DN置位,那么将不计算该LSA,但是会收录到数据库
    • IS-IS防环机制:
  • route tag:
    • 和DN类似,是两种防环手段,可以一起出现。
    • route tag它的值有计算方法,将值转换位二进制后取后12位,再转换位十进制得出AS号

OSPF伪连接

Sham link

OSPF伪连接,是MPLS VPN骨干网上两个PE之间的点到点链路,这些链路使用借用(Unnumbered)的地址。同样是只有在MPLS VPN特定环境才会有。它有点像虚链路但是它运行在MPLS VPN环境下,建立了伪连接相当于在MPLS VPN中有条线路,但它不会用对端的伪连接地址做下一跳。

技术背景

  • 如果在本地CE所在网段和远端CE所在网段间存在一条区域内OSPF链路,称之为后门链路(Backdoor link)也就是备份链路,一般都是只用作来备份链路使用。这种情况下经过后门链路的路由是区域内路由,其优先级要高于经过MPLS VPN骨干网的区域间路由(经过BGP传递根据域ID的变化为3、5、7类),这将导致VPN流量总是通过后门路由转发,而不走骨干网。
  • 为了解决上诉的问题,可以在PE之间建立OSPF伪连接(Sham link),使经过MPLS VPN骨干网的路由也成为OSPF区域内路由,并且被优选(调整开销)

案例分析

  • 当CE和CE间有一条BackDoor后门链路,并且运行OSPF的情况下,那么它将成为优选链路,路由会通过它将路由传递给对端CE
  • R4将44.4.4.4路由通过后门链路传递到R3,R3将之设为优选路由,同时R4也通过MPLS VPN传递路由到R2,R2将路由给到R1,R1通过变换将路由转换为3类或5类传递到R3。
  • R3收到后比较路由,肯定是优选R4通过后门链路传递过来的1类LSA路由
  • 同时R3将优选的路由发给R1,R1收到后会将原先从BGP学来的路由次优选,去往44.4.4.4也走后门链路。这就导致了链路的次优问题出现
  • PS:这里R1也就是PE设备不会因为前面的DN和route-tag而规避到CE发来的OSPF路由,因为R3发的LSA中压根没有DN和route-tag,该路由是R4经过1类LSA传递过来的

注意事项

  • OSPF Sham-link 也算是一条OSPF链路,这条链路可以指定为任何区域
  • 后面链路属于OSPF区域内,即双方学到的路由时intra-area区域内路由,所以必须将Sham-link伪连接也指定为同一个区域,如果sham-link规划为另一区域,那么表示表示从MPLS VPN骨干网络到达远端网络是inter-area区域间路由,那区域间路由是肯定不如区域内路由优先的,也就不能用sham-link到达远端网络。
  • 在配置伪连接时需要考虑OSPF的比较规则,和后门链路的优先级问题,配置不同区域要考虑配置区域内还是区域间,相同区域需要考虑就是开销。

配置条件/配置命令

  • 配置前提条件:
    • 在PE上单独创建/32位的地址,在PE之间使用这个地址来建立Sham-link(创建回环口)
    • 这个/32位地址的接口必须放入相应的VRF,因为CE接口划分VRF,这个伪连接为哪个网段起作用就肯定得放在哪个VRF内
    • 这个/32位地址必须在BGP里发布,而不能在OSPF里发布
  • 配置命令:
    • int lo 55
      • ip binding vpn-instance A
      • ip add 11.11.11.1 32
    • bgp 100
      • ipv4-family vpn-instance A
      • network 11.11.11.1 32
    • ospf 1
      • ar 0
        • sham-link 11.11.11.1 11.11.11.2
        • 配置伪连接,不需同段IP因为是/32
    • display ospf 1 sham-link
      • 验证
    • 两边PE设备都需要配置,sham-link前后源目ip地址
  • PS:伪连接接口开销cost取值为1,为了使VPN流量通过MPLS 骨干网转发,在配置伪连接时,应保证伪连接cost值小于通过用户网络转发时OSPF路由的cost值,因此,常常需要调整用户网络转发接口的cost值,使它比伪连接的cost大
OSPF应用在MPLS VPN中的特殊设计
调整开销后PE1设备去往192.168.2.0网段下一跳走对端PE3公网地址,而不会用伪连接建立的回环口地址。

作者:Zleoco,如若转载,请注明出处:https://www.zleoco.com/?p=2601