一、简介

 

OSPF Router-ID:路由器标识符(Router Identifier),在OSPF域中唯一地标识一台路由器。

        OSPF协议使用Router-ID作为路由器的身份标示,如果在启动这些路由协议时没有指定Router-ID,则路由协议进程可能无法正常启动;在OSPF区域中必须保证Router-ID唯一,不然OSPF无法正确识别邻居,导致OSPF网络不通。

OSPF Router-ID 选举规则

  1. 如果通过Router-ID命令配置了Router-ID,则按照配置结果设置,选取优先级为第一;
  2. 在没有配置Router-ID的情况下,如果存在配置了IP地址的Loopback 接口,则选择Loopback接口地址中最大的地址作为Router-ID,选取优先级为第二;
  3. 如果没有已配置IP地址的Loopback接口,则从其他接口的IP地址中选择最大的地址作为 Router-ID(不考虑接口的Up/Down状态),选取优先级为第三。

解析列表

  • 如果通过Router-ID命令配置了Router-ID,并且存在Loopback 接口和路由器接口配置了IP地址,则以配置Router-ID为Router-ID;
  • 如果通过Router-ID命令配置了Router-ID,并且配置了IP地址的Loopback 接口,路由器接口没有配置IP地址,则以配置Router-ID为Router-ID;
  • 如果通过Router-ID命令配置了Router-ID,并且配置了IP地址的路由器接口,Loopback 接口没有配置IP地址,则以配置Router-ID为Router-ID;
  • 如果存在配置了IP地址的Loopback 接口和配置了IP地址的路由器接口,没有通过Router-ID命令配置Router-ID,则选择Loopback接口IP地址中最大的地址作为Router-ID;
  • 如果没有通过Router-ID命令配置Router-ID,没有配置IP地址的Loopback 接口,则以配置了IP地址的路由器接口的IP地址中最大的地址为Router-ID。
  • 没有通过Router-ID命令配置Router-ID,没有配置IP地址的Loopback 接口,也没有配置IP地址的路由器接口,则Router-ID默认为0.0.0.0。

        当且仅当被选为Router-ID的接口IP地址被删除/修改,才触发重新选取Router-ID,其他情况(例如接口处于DOWN状态;已经选取了一个非Loopback接口地址后又配置了一个Loopback接口地址;配置了一个更大的接口地址等)不触发重新选择的过程。

        OSPF Router-ID选举具有非抢占性,Router-ID改变之后,OSPF协议需要通过手动执行reset命令,重启OSPF进程(或重启路由器)后才会重新选取新的Router-ID。重启OSPF进程命令:<R>reset ospf process。

二、示例

网络拓扑图


 OSPF Router-ID 选举规则测验示例

测验1:没有通过Router-ID命令配置Router-ID,没有配置IP地址的Loopback 接口,也没有配置IP地址的路由器接口,则Router-ID默认为0.0.0.0。

只启动网络拓扑图中的R路由器,然后进行如下配置:
<Huawei>system-view 
[Huawei]sysname R
[R]ospf
[R-ospf-1]

        验证了:没有通过Router-ID命令配置Router-ID,没有配置IP地址的Loopback 接口,也没有配置IP地址的路由器接口,则Router-ID默认为0.0.0.0。

注:路由器没进行任何配置前,Router-ID默认也为0.0.0.0

测验2:如果没有通过Router-ID命令配置Router-ID,没有配置IP地址的Loopback 接口,则以配置了IP地址的路由器接口的IP地址中最大的地址为Router-ID。

只启动网络拓扑图中的R路由器,然后进行如下配置:
system-view 
sysname R
interface GigabitEthernet 0/0/0
ip address 10.1.1.1 24
interface GigabitEthernet 0/0/1
ip address 20.1.1.1 24
interface GigabitEthernet 0/0/2
ip address 30.1.1.1 24
ospf

        Router-ID为ge0/0/0端口IP地址10.1.1.1,因为ge0/0/0端口IP地址是先配置的,选取ge0/0/0端口IP地址10.1.1.1为Router-ID后,才配置的ge0/0/1端口IP地址,所以ge0/0/1端口IP地址值20.1.1.1比ge0/0/0端口IP地址10.1.1.1大,但没被选取为OSPF Router-ID。


删除ge0/0/0端口IP地址10.1.1.1后,触发重新选取Router-ID为ge0/0/2端口IP地址30.1.1.1


使用reset ospf process 命令重启ospf进程和重启路由器,Router-ID未改变,没测试成功。

        验证了:如果没有通过Router-ID命令配置Router-ID,没有配置IP地址的Loopback 接口,则以配置了IP地址的路由器接口的IP地址中最大的地址为Router-ID。

测验3:如果存在配置了IP地址的Loopback 接口和配置了IP地址的路由器接口,没有通过Router-ID命令配置Router-ID,则选择Loopback接口IP地址中最大的地址作为Router-ID。

只启动网络拓扑图中的R路由器,然后进行如下配置:

system-view 
sysname R
interface GigabitEthernet 0/0/0
ip address 10.1.1.1 24
interface GigabitEthernet 0/0/1
ip address 30.1.1.1 24
interface LoopBack 1
ip address 1.1.1.1 32
interface LoopBack 2
ip address 2.2.2.2 32
ospf


        Router-ID为ge0/0/0端口IP地址10.1.1.1,因为ge0/0/0端口IP地址是先配置的,选取ge0/0/0端口IP地址10.1.1.1为Router-ID后,才配置的回环口IP地址,所以回环口IP地址值优先于ge0/0/0端口IP地址10.1.1.1,但没被选取为Router-ID。

 
        修改ge0/0/0端口IP地址为10.1.1.10后,没有触发重新选取OSPF Router-ID;删除ge0/0/1端口IP地址后,也没有触发重新选取OSPF Router-ID;重启OSPF进程后,才触发重新选取OSPF Router-ID为回环口2的IP地址2.2.2.2。


        删除ge0/0/0端口IP地址10.1.1.1后,重启OSPF进程后,才触发重新选取Router-ID,选取IP地址值打的LoopBack 2回环口IP地址值2.2.2.2为Router-ID。

        验证了:如果存在配置了IP地址的Loopback 接口和配置了IP地址的路由器接口,没有通过Router-ID命令配置Router-ID,则选择Loopback接口IP地址中最大的地址作为Router-ID。

 测验4:如果通过Router-ID命令配置了Router-ID,并且存在Loopback 接口和路由器接口配置了IP地址,则以配置Router-ID为Router-ID。

只启动网络拓扑图中的R路由器,然后进行如下配置:

system-view 
sysname R
interface GigabitEthernet 0/0/0
ip address 10.1.1.1 24
interface GigabitEthernet 0/0/1
ip address 20.1.1.1 24
interface LoopBack 1
ip address 1.1.1.1 32
interface LoopBack 2
ip address 2.2.2.2 32
ospf
//启用ospf进程
ospf router-id 0.0.0.1 //等一会儿配置ospf router id命令,即选取Router-ID后再配置此命令


        先启用ospf进程,选取的Router-ID为10.1.1.1,后配置ospf router id命令,提示需要重启ospf进程后才能生效,重启ospf进程后,OSPF Router-ID被设置为2.2.2.2。

        使用reset ospf process 命令重启ospf进程,Router-ID变为0.0.0.1

 

 注:但是用display router id查看命令,Router-ID还是10.1.1.1

        验证了:如果通过Router-ID命令配置了Router-ID,并且存在Loopback 接口和路由器接口配置了IP地址,则以配置Router-ID为Router-ID。


OSPF区域中必须保证Router-ID唯一的测验示例

         路由器R的GE 0/0/0和GE0/0/2端口、路由器R1的GE 0/0/0和GE0/0/1端口、路由器R3的GE 0/0/0端口在area 0中,路由器R的GE 0/0/1端口、路由器R2的GE 0/0/0和GE0/0/1端口在area 1中,实现整个网络互联互通。

网络拓扑图

代码段

system-view 
sysname R
interface GigabitEthernet 0/0/0
ip address 10.1.1.1 24
interface GigabitEthernet 0/0/1
ip address 20.1.1.1 24
interface GigabitEthernet 0/0/2
ip address 30.1.1.1 24
ospf 11 router-id 0.0.0.1
area 0
network 10.1.1.0 0.0.0.255
network 30.1.1.0 0.0.0.255
area 1
network 20.1.1.0 0.0.0.255

system-view 
sysname R1
interface GigabitEthernet 0/0/0
ip address 10.1.1.2 24
interface GigabitEthernet 0/0/1
ip address 192.168.1.254 24
ospf 11 router-id 0.0.0.11
area 0
network 10.1.1.0 0.0.0.255
network 192.168.1.0 0.0.0.255

system-view 
sysname R2
interface GigabitEthernet 0/0/0
ip address 20.1.1.2 24
interface GigabitEthernet 0/0/1
ip address 192.168.2.254 24
ospf 11 router-id 0.0.0.12
area 1
network 20.1.1.0 0.0.0.255
network 192.168.2.0 0.0.0.255

system-view 
sysname R3
interface GigabitEthernet 0/0/0
ip address 30.1.1.2 24
ospf 11 router-id 0.0.0.13
area 0
network 30.1.1.0 0.0.0.255

代码解析

<Huawei>system-view
[Huawei]sysname R
[R]interface GigabitEthernet 0/0/0
[R-GigabitEthernet0/0/0]ip address 10.1.1.1 24
//给端口配置IP地址
[R-GigabitEthernet0/0/0]interface GigabitEthernet 0/0/1
[R-GigabitEthernet0/0/1]ip address 20.1.1.1 24
[R-GigabitEthernet0/0/1]interface GigabitEthernet 0/0/2
[R-GigabitEthernet0/0/2]ip address 30.1.1.1 24
[R-GigabitEthernet0/0/2]ospf 11 router-id 0.0.0.1
 //使能OSPF进程11,设置R路由器的router-id为0.0.0.1,进入OSPF视图
[R-ospf-11]area 0 //创建区域area 0,并进入到区域视图
[R-ospf-11-area-0.0.0.0]network 10.1.1.0 0.0.0.255  //指定运行OSPF协议的接口
[R-ospf-11-area-0.0.0.0]network 30.1.1.0 0.0.0.255
[R-ospf-11-area-0.0.0.0]area 1
[R-ospf-11-area-0.0.0.1]network 20.1.1.0 0.0.0.255

验证测验


上图说明整个网络陆联互通正常。

测验1:区域area 0中直连路由器R和R1设置相同的Router-ID 0.0.0.1,网络陆联互通是否正常?


R1无法正常建立邻居


R1和R之间的网络不通

验证了同区域中,OSPF建立直连邻居关系时,Router-ID必须唯一。

测验2:区域area 0中非直连路由器R1和R3设置相同的Router-ID 0.0.0.11,网络陆联互通是否正常?

上图说明R1和R3都能建立ospf邻居 


R1的ospf路由表中有到30.1.1.0/24网段的路由


        R3的ospf路由表中没有到30.1.1.0/24网段的路由,R1和R3之间的网络不通。这是因为R3认为是同一个OSPF邻居,但是LSA又不一致,造成链路状态数据库发送错误,无法计算出正确的路由信息。

验证了同区域中,多个非直连路由器设置相同的Router-ID,路由器邻居关系能建立正常,但无法正常获取路由条目,网络通信不正常。

 综上所述,OSPF协议的Router-ID务必要在整个路由选择域内保持唯一。

 测验3:区域area 0中路由器R1和区域area 1中路由器R2设置相同的Router-ID 0.0.0.11,网络互联互通是否正常?


路由器R1和R2邻居建立正常,获取路由条目正常,网络通信正常。

验证了不同区域中的路由器OSPF Router-ID相同,不影响邻居建立和获取路由条目,网络互联互通正常。

综上所述,OSPF协议在不同区域中的Router-ID不一定是唯一的。


注: 上图中有OSPF Router ID和Router ID,这两个ID是不一样的。具体请参考OSPF技术连载14:OSPF路由器唯一标识符——Router ID-云社区-华为云

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐