前言

在OSPF中,一台路由器可以配置多个进程。如果多台路由器都配置了多个OSPF进程,怎么确定对应关系呢?

OSPF进程的作用

在OSPF协议中,不同的OSPF进程仅对本地路由器有意义,也就是它仅将本地路由器划分成多个虚拟网络。无论两台路由器的OSPF进程ID是否相同,它们都可以建立OSPF邻居关系。

把各路由器接口划分到不同的路由进程后,对应接口只与相连路由器接口所在的OSPF路由进程中的各路由接口交换路由信息,但一定要注意的是,相连的两个路由器接口的路由进程号可以不一样,当然也可以一样。

OSPF多进程

OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。

路由器的一个接口只能属于某一个OSPF进程。

假设路由器A配置了两个OSPF进程1和2,路由器B配置了两个OSPF进程3和4,对于AB相连的链路来说,A的接口被划分给了进程2,B的接口被划分给了进程4,那么两台路由器的进程2和4就公用同一个OSPF数据库。

不同进程之间不相互交换路由信息,默认是不通的

其实我们可以简单地把多个不同OSPF进程理解为多个不同的动态路由协议的进程。不同路由协议下的路由信息是不能直接进行交换的,最终也造成通过不同路由协议学习到的动态路由都是不通的。OSPF上的不同进程也是如此,不同进程各自有不同的LSDB(链路状态数据库),彼此之间是不交换路由信息的,当然彼此之间的网络也就不会直接相通了。这就是相当于把一个物理网络划分成多个虚拟网络。

假设有以下这样的一个OSPF网络,R1、R2和R3均会运行OSPF协议,但R2上配置了10和20两个进程,如上图所示。这时,如果没有配置两个OSPF进程相互进行路由重发布的话,R1上连接的192.168.1.0/24网络是不能与R3上连接的192.168.4.0/24网络相通的,因为R2路由器的S1接口所学习到的R1路由器上的192.168.1.0/24网络路由是不会向其邻居R3路由器通告的,同样R2路由器的G0/0/1接口所学习到的R3路由器上的192.168.4.0/24网络路由是不会向其邻居R1路由器通告的。但是在R2上连接的两个网络还是可以直接通信的,因为它们在R2路由器上是直连路由,优先级最高,不需要OSPF协议的支持。

如果R2路由器上将位于OSPF进程10的S1接口学习到的OSPF路由和直连路由重分发到OSPF进程20,则R3路由器将学习到路由192.168.1.0/24和192.168.2.0/24网络了。同理,如果R2路由器上将位于OSPF进程20的G0/0/1接口学习到的OSPF路由和直连路由重分发到OSPF进程10,则R1路由器将学习到路由192.168.3.0/24和192.168.4.0/24网络了。

路由进程仅对本地路由器有意义,相连路由器的进程可以不同

关于OSPF路由进程,我们要理解的另一个重点就是,不同的OSPF进程仅对本地路由器有意义,也就它是仅将本地路由器划分成多个虚拟网络。把各路由器接口划分到不同的路由进程后,对应接口只与相连路由器接口所在的OSPF路由进程中的各路由接口交换路由信息,但一定要注意的是,相连的两个路由器接口的路由进程号可以不一样,当然也可以一样。如在上图,R1路由器的G0/0/0接口OSPF路由进程号可以与R2路由器的G0/0/0接口的OSPF路由进程号一样,即都为10,也可以不是10,如20、30等都可以。同理,R3路由器的S0接口OSPF路由进程号可以与R2路由器的G0/0/1接口的OSPF路由进程号一样,即都为20,也可以不一样。

同一个网络可以配置在多个OSPF路由进程中

在OSPF协议中,同一个直接连接的网络可以发布在多个不同的路由进程中,也就是一个路由器接口所连接的网络可以在多个不同的OSPF路由进程中发布。这样做的目的主要是出于路由备份的考虑,使得在某一个进程下的网络不通时,对应的路由器接口所连接的网络仍然可以通过其他进程在网络中进行通信。如上图所示,R2路由器G0/0/1接口可以同时发布在10和20的进程中,这样当R3路由器失效时(并不是链路down了,意思是某一进程OSPF出现了故障),它仍然可以与R1路由器通信,或者通过R1路由器所连接的网络最终访问R3路由器所连接的网络。

OSPF进程之间通信

不同的OSPF进程之间默认是不相互交换路由信息的,也就是彼此之间的网络默认是不通的。但是,可以通过路由重分发来实现不同OSPF进程之间的通信。

路由重分发就是将一种路由协议学习到的路由信息传递给另一种路由协议,使得两种不同的路由协议之间能够相互学习和使用对方的路由信息。

需要注意的是,路由重分发和路由注入是两个不同的概念。

  • 路由重分发:指将一种路由协议学习到的路由信息传递给另一种路由协议,使得两种不同的路由协议之间能够相互学习和使用对方的路由信息。
  • 路由注入:指在路由器上手动配置静态路由,并将这些静态路由注入到动态路由协议中,使得动态路由协议能够学习和使用这些静态路由信息。