当前位置: 首页 网络技术 正文

mpls vpn防环与hub-spok VPN组网方案

朱古力 |

边学边记。。。

mpls vpn防环


 

在MPLS VPN中,当存在双PE、双CE、且双点双向引入时,可能就会产生环路,针对网络层运行的协议不同,MPLS VPN做了相应的解决方案。

  1. MPLS VPN针对OSPF环路的解决方案
  2. MPLS VPN针对RIP和BGP环路的解决方案
  3. 其他的环路解决方案

 

拓扑如下:

MPLS VPN针对OSPF环路的解决方案

MPLS VPN对于OSPF环路的解决方案分两种情况:一种是当MPLS网络为backbone时,PE设备向OSPF引入外部路由后,PE(作为ABR)会产生三类LSA;另一种是当MPLS网络为非backbone时,PE设备向OSPF引入的外部路由会产生五类LSA。

MPLS网络是否为backbone区域是由domain-ID决定的,当PE(作为ASBR)发送的VPNV4路由中的扩展团体属性domain-ID均为0时,为backbone区域。

针对这两种情况,MPLS VPN的处理方式有所不同。

当产生的LSA为三类时

PE1设备将VPN实例的路由通告到OSPF中时,三类LSA的option选项字段的DN(down-bit)位会被置位(类似ISIS路由渗透防环),该LSA再被PE2设备接收到后检查DN位置位,则只接收该LSA放到LSDB中,但是不会计算加入到路由表。

当产生的LSA为五类时

PE1设备将VPN实例的路由通告到OSPF中时,除了会将五类LSA中的option选项中的DN位置位之外还会将LSA的TAG字段填充为本设备实例的domain-tag。默认情况下,domain-tag就是设备所属的AS号。由于PE1和PE2同属相同区域,所以该LSA在被PE2设备接收到后发现domain-tag与自身的domain-tag一致,则只将LSA接收放到LSDB中,但不会计算路由。

为何五类LSA除了将domain-tag填充之外还要将DN位置1?

这是因为如果PE1和PE2属于不同AS时,使用domain-tag进行防环就行不通了,此时就需要再试一下DN位来防止环路。

 

——但我感觉直接使用DN位来防止环路会更简单点,为何还要搞出个这么麻烦的东西?针对这个问题,请教了一下华为2.0面试出题官韩老师:

 

看来存在即合理。 😯

domain-tag的组成:

domin-tag是由4比特组成,前两bit固定为0XD000,后两比特为AS号,比如AS号为100,那么后两bit则是0x0064,那么他的domain-tag就是:0xd000 0064

 

MPLS VPN针对RIP和BGP环路的解决方案

环路产生原因:当BGP或RIP的路由由CE2传给PE2后,该路由可能又会从MPLS网络中被PE1和PE2学习到,从而产生环路。

MPLS VPN对于OSPF环路的解决方案原理是一样,但是配置上有所不同,他们都是使用一个扩展团体熟悉——oss来防止环路的。

MPLS针对RIP环路的解决方案

当site方的路由协议使用的是RIP时,可在CE设备上配置策略,soo=100:1,比如在CE2上配置soo=100:1,策略配置完成后在入方向的接口上调用策略。(因为RIP是没有邻居的概念的)。同样的在CE1与site连的接口出方向上也要配置该策略,反过来也是一样。

当site内的路由在由CE2转发给PE2时,会在BGP的update报文的扩展团体属性中添加soo=100:1属性。当该报文被PE1收到后发现soo扩展团体属性和自身已配置的soo属性一致,则接收不计算该路由,以此实现防环。

(但是华为设备不支持这种配置,毕竟RIP已经淘汰掉了)

MPLS针对BGP环路的解决方案

原理和RIP的一样,但是配置上有所不同,RIP协议是需要在接口下调用策略,而BGP则是针对邻居,如下:

 

bgp 100
ipv4-family vpn-instance hcie 
peer 1.1.1.1 soo 100:1

 

MPLS VPN其他环路的解决方案

可以像解决IGP双点双向引入解决环路那样解决,将PE出方向的路由打个tag,到另一端PE设备的入方向deny掉,反过来的方向也是这样处理。

路由过滤也可以解决环路。

 

hub-spok VPN组网方案


拓扑:

应用场景:如果希望在MPLS VPN中设置中心访问控制设备,其他用户的互访需要通过中心访问控制进行,则可以使用这种类型的组网方案。


难点:合理规划RT值

值得注意:两个PE端的出入RT值是一样的,且HUB-PE的出和入要分别在不同实例中配置,且分别绑定到两个接口(物理接口或逻辑接口)

规划:两个spoke-PE实例的出RT均为100:1,入RT均为100:2,而HUB-PE刚好相反,入RT为100:1,出RT为100:2

控制层面分析:两个Spoke-PE均通过MPBGP传递VPNV4路由,该路由会被HUB的PE设备收到,由于Spoke-PE的出RT值和HUB-PE的入RT值一致,则HUB-PE均接收两个Spoke-PE的VPNV4路由。并且两个Spoke-PE也可以互相收到双方的VPNV4路由,但双方的出RT与对方的入RT不一致,则两Spoke-PE设备不会接收对方发来的VPNv4路由,这样两个站点的路由只会被HUB-pE设备收到。

HUB-PE设备也会将自己收到的关于双方两个Spoke-PE路由传递给两个Spoke-PE(是通过export实例绑定的接口转发),由于HUB-PE发出的VPNV4路由的出RT与两个Spoke-PE设备的入RT一致,则两个Spoke-PE设备就会接收HUB-PE发过来的VPNV4路由,并将HUB-PE作为标签路由去往目的Spoke-PE的下一跳设备。

数据层面分析:在数据进行转发的时候,Spoke-PE1设备会使用HUB-PE为Spoke-PE2的私网路由分的标签作为内层标签,外层标签使用LDP分发的标签(细节不写了)进行标签转发。数据转发到HUB-PE之后再次进行查询、打标签,此时的标签则是Spoke-PE2为其分配的内层标签,外层标签打上LDP的标签,进行标签转发,最终数据到达Spoke-PE2,由于数据的通信是双向的,反之亦然。

Spoke-CE2->Spoke-CE1的数据转发方向:

Spoke-CE1->Spoke-CE2的数据转发方向:

 

 

 

声明:原创文章请勿转载,如需转载请注明出处!