OSPF Router-ID:路由器标识符(Router Identifier),在OSPF域中唯一地标识一台路由器。
OSPF协议使用Router-ID作为路由器的身份标示,如果在启动这些路由协议时没有指定Router-ID,则路由协议进程可能无法正常启动;在OSPF区域中必须保证Router-ID唯一,不然OSPF无法正确识别邻居,导致OSPF网络不通。
OSPF Router-ID 选举规则
解析列表
当且仅当被选为Router-ID的接口IP地址被删除/修改,才触发重新选取Router-ID,其他情况(例如接口处于DOWN状态;已经选取了一个非Loopback接口地址后又配置了一个Loopback接口地址;配置了一个更大的接口地址等)不触发重新选择的过程。
OSPF Router-ID选举具有非抢占性,Router-ID改变之后,OSPF协议需要通过手动执行reset命令,重启OSPF进程(或重启路由器)后才会重新选取新的Router-ID。重启OSPF进程命令:
网络拓扑图
只启动网络拓扑图中的R路由器,然后进行如下配置:
[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
只启动网络拓扑图中的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。
只启动网络拓扑图中的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。
只启动网络拓扑图中的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。
路由器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]sysname R
[R]interface GigabitEthernet 0/0/0
[R-GigabitEthernet0/0/0]ip address 10.1.1.1 24
[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
验证测验
验证了同区域中,OSPF建立直连邻居关系时,Router-ID必须唯一。
上图说明R1和R3都能建立ospf邻居
R3的ospf路由表中没有到30.1.1.0/24网段的路由,R1和R3之间的网络不通。这是因为R3认为是同一个OSPF邻居,但是LSA又不一致,造成链路状态数据库发送错误,无法计算出正确的路由信息。
验证了同区域中,多个非直连路由器设置相同的Router-ID,路由器邻居关系能建立正常,但无法正常获取路由条目,网络通信不正常。
综上所述,OSPF协议的Router-ID务必要在整个路由选择域内保持唯一。
路由器R1和R2邻居建立正常,获取路由条目正常,网络通信正常。
验证了不同区域中的路由器OSPF Router-ID相同,不影响邻居建立和获取路由条目,网络互联互通正常。
综上所述,OSPF协议在不同区域中的Router-ID不一定是唯一的。
注: 上图中有OSPF Router ID和Router ID,这两个ID是不一样的。具体请参考OSPF技术连载14:OSPF路由器唯一标识符——Router ID-云社区-华为云