CE双上联情况下的路由控制(二)

  1. 前言

继续分析CE双上联情况下的路由控制。

其实前面文章描述的仅仅是最为基本的网络结构,网络通常会更为复杂。下图所示为前面网络的拓展,此时增加了一个新的城域节点(CE-2)。由于信道等原因,在网络设计上,规划PE-1是CE-1的优选出入口,PE-2是CE-2的优选出入口。

CE双上联情况下的路由控制(二)_第1张图片

 

但这时我们会面临一个主要的矛盾问题,就是CE-1与CE-2之间的互访,是否需要遵守网络拓扑所示的规则?

假设我们仍以拓扑上所示的规则来约束互访流量,就会是如下情况:以CE-1去往CE-2的流量为例,有两条必经路径,分别是CE-1至PE-1PE-2至CE-2。也就是,当去往CE-2的流量到达PE-1后,PE-1如何在iBGP路由和OSPF路由之间做出选择?

为了分析方便,再次假定在前面步骤中,已经对全网所有网络设备的路由协议优先级进行了调整,具体数值如下(只列出所需):

华为设备

思科设备

直连路由

0

0

OSPF路由

10

10

OSPF external路由

150

150

iBGP路由

30

30

参照前面文章,按照第二种方式进行其他配置,具体参数不再赘述。

  1. 新情况的分析和处置

以PE-1为例,关于CE-2的路由信息,有两个来源,分别是来自于PE-2的iBGP路由、来自CE-2的OSPF路由。

CE双上联情况下的路由控制(二)_第2张图片

 

对比前面列出的路由协议优先级,我们发现对于相同长度的前缀信息,OSPF优于iBGP。也就是当流量到达PE-1后,会直接通过与CE-2的直连链路转发,出现CE-1=>CE-2流量路径:CE-1---PE-1---CE-2,返程路径会是CE-2---PE-2---CE-1。这显然与前面的规划设计不一致,怎么办?下面开始尝试一些解决方法。

①调整全局OSPF路由协议优先级,使iBGP优先级优于OSPF

这通常会是第一反应,既然我们想让流量优先走大网,那把大网来的路由信息优先级调高不就行了?按照这种思路,假设协议优先级设置如下表:

华为设备

思科设备

OSPF路由

40

40

OSPF external路由

150

150

iBGP路由

30

30

先来看PE-1上关于CE-2的路由选择问题。由于iBGP优先级高于OSPF,因此PE-1选择PE-2为去往CE-2的下一跳。这个问题看起来得到了解决。

但细心观察,我们会发现,PE-1获取CE-1路由信息也可能有两个来源,分别是来自PE-2的iBGP,以及来自CE-1的OSPF,如下图所示:

CE双上联情况下的路由控制(二)_第3张图片

 

此时,由于优先级的调整,PE-1会认为来自iBGP的路由信息更优先,因此会选择PE-2为去往CE-1的优选下一跳。

这不是和刚刚的分析矛盾了吗?为什么在PE-1上,对于CE-2的路由选择与既定规则一致,反倒是对于CE-1的选择出现了偏差?大家可以想一想为什么会有如此的现象发生,会是前面章节所说的先富抑制后富吗?

我在这一个分析中,其实是故意做了错误的引导。

将CE-1的路由信息引入iBGP,不仅仅是PE-2在做,PE-1其实也在做。也就是说,在iBGP中,关于CE-1和CE-2均会有两个来源,分别是PE-1和PE-2。我们只需要根据规则,使得来自于PE-1的关于CE-1的路由信息优先级更高即可。下图列出了基本的判断和传递过程,因为比较简单,因此不展开介绍。

CE双上联情况下的路由控制(二)_第4张图片

 

这里只做一点基本的提示,通常情况下将OSPF路由引入iBGP中,有两种具体做法:一是直接在BGP进程下重分布OSPF;二是直接在BGP进程下采用network命令发布相关信息。

但在此时这种模式下,采用network命令可能会不成功。原因就留给大家去分析了。

②不调整全局OSPF路由协议优先级,仅使从备选路径上获取的OSPF路由信息优先级次于iBGP即可

这比较容易理解,对着今天的第二张图,基本都能看明白。

但是问题在于,对于OSPF路由协议,除了ABR,基本都没有办法针对特定的LSA内所含的路由信息进行调整或控制(原因也不是一句话就能说清的,感兴趣多的话,会试着写一写关于这方面的文字)。所以,这时需要在PE-1上启动两个OSPF进程,一个进程用于与CE-1的联接,一个用于CE-2,再针对具体进程调整优先级。

对于这种解决方法/模式,具体配置不会过于复杂,但就是理解起来容易有混淆,因此画了一张大概能说清楚基本过程的图。

CE双上联情况下的路由控制(二)_第5张图片

 

【关键点】

1.两个OSPF进程之间,不需要进行重分布。对于网络设备而言,两个OSPF相互独立和隔离,代表两个不同的OSPF Domain,也会有两个独立的LSDB,当然也会有不同的Router-ID。

2.可以参考的路由协议优先级。

华为设备

思科设备

OSPF路由

(优选路径)

10

10

OSPF路由

(次选路径)

40

40

OSPF external路由

150

150

iBGP路由

30

30

  1. 问题的拓展/重点

看起来截止到这,问题已经得到了圆满解决。但实际上真的是如此吗?忽略掉其他无关的细节,同时通过①②③,给动作加上时序,如下图所示:

CE双上联情况下的路由控制(二)_第6张图片

 

我们会发现,问题并没有得到结束。因为这里面又引入了BGP选路原则的内容。

熟悉BGP的应该都知道WLLA OMNI这些BGP选路所涉及到的属性。其中排第一个的就是W——weight,权重。这时思科的命名方式,华为做了改变(名字没记住),但基本的含义和作用是一致的。就是对于本地引入BGP的路由信息,权重=65535(or65536,有点困不想查了),但这一属性不可传递,即传递时为0。

相信到这里大家就明白了,只要是和图上的时序一致,PE-1的BGP进程绝对不会选取来自iBGP的路由为优选。这当然也是不可接受的。

看到这里,相信解决方法也就基本上有了。在采用重分布方式,将CE-2的OSPF路由引入BGP时,需要设置路由图/路由策略,将权重设置为0、LP(本地优先级设置为10,默认是100),就可以解决BGP的问题。

前面介绍的都是联接互联网的情况,假设CE-1和CE-2不再是需要联接互联网的城域节点,而是跨城市或省的某大型公司的两台设备,需要工作在VPN中,此时会发生什么样的变化呢?我觉得除了配置命令不同,基本是类似的。

【本节小结】

写这几篇文字,初衷还是来自于和同事在交流一个问题的思考。这个问题来自于对下列文字的解读。

CE双上联情况下的路由控制(二)_第7张图片

 

当我们在BGP进程下,采用network+路由图的方式发布路由时,是否可以设置PA(路径属性)。

当时自己的回答是:通常不采用,但可以用,我自己用过。这也使得自己产生了将我怎么用的写出来的冲动。

你可能感兴趣的:(网络)