
在OSPF网络中,路由器发送任何链路状态信息之前,都必须建立起正确的OSPF邻居邻接关系,而建立邻居邻接关系是依靠hello报文来实现,OSPF路由器会检查所收到hello报文中的各种参数,比如router-ID,area-id,认证信息,子网掩码......
hello报文中这么多的参数信息,我今天便分享的是router-id。

OSPF router-id 指定优先级
在讨论router-ID 之前,复习下OSPF的基础配置:首先要明白的是network使能后,接口发送的信息可不是单单一个网络信息而是汇总后的:
如下图


OSPF动态路由协议是具有大局意识的特点
这个协议能够看到整个网络拓扑中每一个目标网络的路由方向。
之前,我在分享is-is动态路由协议的时候,说过网络实体名的概念,在is-is中网络实体名叫做network,每一台路由器都有一个唯一的网络实体名,而在OSPF中叫做router-id,而这个route-ID也是用来标识自己的。
关于OSPF中的router-id;是如何指定的呢?
华为官方是这样的定义的:缺省情况下,系统会从当前设备IP地址中选取一个最大值作为router-ID。
通常情况下,router-id指定会出现以下的三种方式:(优先级级别也是从1--->3的)
①手工指定。
②‘取环回接口中最大IP地址作为router-id’。(华为官方在router-ID优先顺序中并没有说明这一条,注意这里我用的是引号标注的。)
取物理接口上(活动)最大的IP地址作为 router-id。(但是我在做实验时,却发现即使 把IP地址最大的接口down时,也认为是此设备的router-id)
OSPF网络架构是十分具有智慧型的这一特点,以自己为中心,能够找到去往目标网络最优的路由方向。
router-ID的作用:(很像人类社会中的身份中。)使OSPF网络更加稳定可靠,路由器通常会启用Loopback接口,并配置特定的IP地址,且将此地址作为自己的router-id,从而在网络中标识自己。

router-id优先级顺序论证实验
拓扑如下:(为了验证优先级,我先把loopback接口去掉)

①把loopback接口去掉:
先查看下R1设备下所有接口的信息情况:
[R1]display ip interface brief

[R1]interface LoopBack 1
[R1-LoopBack1]undo ip address 192.168.1.1 24
[R1-LoopBack1]int loopback 2
[R1-LoopBack2]undo ip add 192.168.100.1 24
配置完成后查看各接口状态:只看到了s4/0/0的物理接口地址了,loopback接口是消失的就是对的。

同样的,也需要在r2这台设备上清除掉环回接口的地址:

②重新配置R1和R2的OSPF协议:
[r1-ospf-1-area-0.0.0.1]dis this
area 0.0.0.1
network 10.0.0.0 0.0.0.3


配置完成后,R1和R2这两台设备就建立起了OSPF的邻接关系:

那除了查看路由表证明OSPF关系建立成功以外,还有没有别的办法查看邻居关系呢?
③查看邻居邻接关系
[r1-ospf-1]dis ospf peer
从这张图我们可以看出处于区域1的IP地址是10.0.0.1的接口是s4/0/0的邻居router-id是10.0.3.1,IP地址是10.0.0.2.

从router-ID的优先级上来看:我第一二条并没有配置,之前我也是删除掉的,
①手工指定。
②取环回接口中最大IP地址作为router-id。
③取物理接口上(活动)最大的IP地址作为 router-id。
所以,我站在R2上来查看它的IP地址,是哪个最大且状态是down的:
很明显是10.0.3.1/30这个,因此R1就认为自己的s4/0/0接口所对应的邻居的router-id就是10.0.3.1


R1是如何知道R2有10.0.3.1这个网段呢?
这个分析的角度不能站在R1上,我们一定要站在R2上去分析,这肯定是R2通告给了R1的。因为建立邻接关系是依靠hello报文的,OSPF的相关报文后续文章我会详细分享。
讨论router-id的优先级顺序:
①手工指定。
②取环回接口中最大IP地址作为router-id。
③取物理接口上(活动)最大的IP地址作为 router-id。
①R2上新增一个环回接口地址:
[R2]int LoopBack 1
[R2-LoopBack1]ip add 192.168.2.1 24

②我们按照优先级的官方理论的字面意思上来分析,如果我将添加了环回接口地址的话,理应在R1上就能看到其邻居的router-id应该是192.168.2.1了。
可是站在R1上观察邻接关系:依旧还是10.0.3.1
这样看起来ospf的router-ID优先级的优先顺序并没有成立。

但是不要被表面现象所迷惑,我下一步的操作便是将R1和R2的OSPF重置!
③站在R1和R2上进行重置OSPF进程:
<r1>reset ospf 1 process


观察R1和R2邻接关系的router-id 依旧没有变化:

这么一看,还真的是跟华为官方的所说的router-id的优先级顺序是违背的。
但是我保存设备配置后,重启设备,再次观察:还是依旧没有变化,这就说明不是很稳定,除非我们将OSPF重新删除掉,重新配置,也不一定能看到router-ID的变化。这就说明了华为在这一方面确实没有思科那样的稳定,思科方面只要有环回接口地址的存在,一执行重置OSPF进程,router-id就可以里面更改回来。

手工指定router-id
①先删除之前的R1和R2上的OSPF配置:
[r1]undo ospf 1
Warning: The OSPF process will be deleted. Continue? [Y/N]:y

②手工指定router-id命令:
我先在R1上配置后在R2上配置
[r1]ospf 1 router-id 192.168.1.1


配置完成后,查看R1和R2的OSPF邻接关系状态:
结果显示手工配置有效。

其实,今天的分享的只是单单一个区域,知识的深度远远不够,OSPF网络本身就是针对中大型网络而生,后续的文章中会深入讲解,而学习OSPF的基本思路无非就是要熟悉OSPF的运作原理,其中包括:(初学者学习时可以先从4 3 1 2 这样的由浅入深的学习。)
①OSPF的报文类型。
②OSPF的LSA类型。
③OSPF的路由器类型。
④OSPF的区域类型
下回文章我会分享的是OSPF的区域类型。






