admin 管理员组

文章数量: 1087652


2024年8月28日发(作者:1kb是多少字节)

多进程OSPF及进程号的意义

在配置OSPF时,我们采用的是router ospf命令,在该命令后面需要加上这个

OSPF进程的进程号(Process-Id),进程号用于在一台路由器上区分不同的OSPF进程。

这就有点像人格分裂的感觉 —— 一个自然人有多种不同人格,每种人格之间相互独立,

互不影响。进程号的取值范围是1-65535。

拓扑中,R1使用进程号10创建了一个OSPF进程,同时激活了自己的直连接口

FE0/0,而R2使用进程号20创建了一个OSPF进程,同时也在自己的直连接口上激活了

OSPF。虽然这两个进程号不一样,但是R1-R2之间的邻居关系建立是完全没有问题的。

因为OSPF进程号只具有本地意义,路由器之间交互的所有OSPF报文中,都不会体现任

何关于进程号的信息。进程号只在一台路由器上用于区分多个OSPF进程,因此对于R1

而言,它并不关心它的直连OSPF邻居R2使用的是什么OSPF进程号,10也号,20也

罢,这就有点像“自己的事自己知道就行“ -- 本地意义。

当然,在实际的网络部署中,除非有特定的需求,我们还是建议全网使用统一的进程

号,虽然每台设备使用不同的进程号对OSPF的运行没什么影响,但是却给网络的管理和

维护带来了多余的成本,你不会这么干的,对吧?

1. 多个OSPF进程

拓扑很有意思,在R2上,常规的做法是用一个进程号创建一个OSPF进程,同时将

自己的两个直连接口都宣告进这个OSPF进程,但是为了讲解OSPF进程ID的本地意

义,我这里在R2上使用两个进程号分别创建了两个OSPF进程,并且分别宣告了R2的

两个直连接口,换句话说,R2使用OSPF进程12与R1建立邻居关系,使用OSPF进程

23与R3建立OSPF邻居关系。如此一来,R2在本地就有了两个OSPF进程,使用进程

号12及23进行区分。整个网络中也就出现了两个OSPF域(OSPF Domain)。这两个

OSPF进程,都会各自从其邻居R1和R3学习到OSPF路由,但是值得强调的是:

这两个OSPF进程相互独立和隔离(两个OSPF Domain),两个进程独立维护各自的

LSDB。换而言之R2通过OSPF进程12从R1学习到的OSPF路由(严格的说,应该是

LSA),例如描述1.1.1.0/24的LSA,缺省时不会传递到进程23的(这是因为在R2,这两

个OSPF进程互相独立互相隔离),当然,从R3学习过来的OSPF路由,R2虽然自己能

学习到,但是照样不会传递给R1,这就好像,这两个进程虽然都在R2上,但是彼此之

间有着一道鸿沟,世界上最遥远的距离,莫过于此啊。

再者,R2这两个OSPF进程虽然说彼此隔离,但是都可以为R2自身贡献路由,例

如如果R1更新过来一条路由1.1.1.0/24,R3更新过来一条3.3.3.0/24,那么在R2的全

局路由表里都是能看到这两条路由的。但这两条路由不会互相灌进对方的OSPF进程(造

成的直接结果是R1没有R3的路由,R3没有R1的路由),除非 -- 对了,路由重发布,

你懂的。

2. OSPF进程之间的路由重发布

同一台路由器上的不同OSPF进程相互独立,各自维护自己的LSDB。如果要把一个

OSPF进程内的路由注入到另一个进程中,就需要部署路由重发布,例如上图所示,R2

作为一台ASBR,要把进程12中的路由注入到进程23中,配置如上。当然,如果要实现

全网路由互通,则还需要在OSPF进程12中,将进程23的路由重发布进来。

3. 什么时候会使用不同的OSPF进程

我们知道一台路由器可以创建多个OSPF进程,而且进程之间相互隔离。一般情况

下,当我们在做网络建设时,整个网络就是一个统一的路由选择域,如果选用OSPF作为

路由协议,则所有的OSPF路由器使用一个OSPF进程即可。

展示了一个大型企业的网络拓扑,R1、R2、R3及R4是省公司的设备,SW1、SW2

及往下是市公司的设备,R5是区县站点设备(实际上有多个区县站点,此处只显示了一

个)。为了实现市公司与各区县站点的网络互通,我们在市公司所有设备,以及区县站点

的所有路由器上都配置了OSPF并且进行了多区域的规划。由于整个企业数据网络的规模

较大,要想打通整个网络的路由,使用一个OSPF域直接从区县站点往上拉到省公司,显

然是不靠谱的,一来整个域太大,路由前缀数量太多,二来OSPF的多区域设计在面对这

么大规模网络的时候显得还是有点力不从心,三来总公司并不希望看到分公司以及下面的

子站点的路由明细,路由汇总势必是要考虑的,加之对流量的走向还有严格的要求,策略

部署上如何考虑?因此为省公司网络规划了另外一个OSPF域,在省公司的边界设备R3、

R4上创建两个OSPF进程,进程1面向总公司,进程2面向下面的市公司及区县站点。

两个进程相互独立不互相干扰,而R3及R4又能够学习到省公司、分公司及各个区县站

点的路由,两个OSPF域可以独立规划,域内Area的设计又变得更加宽松和灵活。

当然,省公司、总干以及地市公司是需要相互通信的,这时候由于省公司的网络属于

OSPF进程1,而市分公司及区县站点的网络属于OSPF进程2,相互独立,为了把路由

打通,就需要在R3和R4上执行OSPF进程之间的路由相互重发布。一旦把R3、R4设

计为路由重发布的执行点,他俩瞬间就变得非常重要和牛逼了,因为在重发布的'过程

中,可以执行路由策略、可以做路由过滤,更可以做路由汇总,网络的设计和规划就变得

非常有弹性了。

下面再来看多进程OSPF的另一个例子:

网络中,存在两个不同的业务。生产及办公,两个业务各有自己的服务器网络,两台

Router分别连接着这两个业务的服务器网络。而终端用户则连接在SW上,现在终端用

户需要访问各自业务的服务器,那么SW当然是需要有相应的路由的。我们希望将生产及

办公的业务进行隔离,但是这两个业务的终端用户又都是连接在SW上,如何隔离?很简

单,在SW上创建两个OSPF进程,其中进程1用于生产业务,进程2用于办公业务。

在OSPF进程1中,激活VLAN10及VLAN20对应的SVI,并激活与SC-Router对接的

三层接口;在OSPF进程2中,激活VLAN30、40对应的SCI,并激活与BG-Router对

接的三层接口,如此一来办公及生产服务器网段的路由通过这两个OSPF进程在SW上进

行了隔离。

这的确是一种好方法,但是虽然OSPF进程是隔离的,SW的全局路由表中却拥有者

生产及办公两个业务的路由,也就是说两个业务的路由实际上在SW这个点上是打通的,

显然不够安全,如果有人从办公网络登到办公终端,然后再从办公终端跳转,去访问生产

服务器就麻烦了。所以,我们又引入了另一个概念——VRF(Virtual Routing

Forwarding,虚拟路由转发),所谓的VRF你可以理解为虚拟设备,通过在SW上创建

VRF实例,并且将生产的OSPF进程关联到一个VRF实例中,从而彻底将生产路由与办

公路由进行隔离(办公路由及业务跑在根设备上,生产路由及业务跑在VRF实例上,两者

完全隔离,可以想象为两台SW)。


本文标签: 进程 路由 网络 业务 使用