OSPF的五类包:
一,1,HELLO包:建立和维护邻居关系。
HELLO包中封装router ID,路由器ID,代表路由器身份的IP地址。默认:无环回口是,使用活动物理端口上的最大IP作为路由器的ID,建议使用环回口,作为环回口ID.
(config)#init lo0
(config-if)#ip addr ip 掩码
(config-router)#router ospf  进程号
(config-router )#router-id ip
提示:OSPF 路由器的ID,是在OSPF进程启动时定义的,为了使配置立即生效,应使用命令
#clear ip ospf process  //重新启动OSPF进程。
 
2.HELLO包的发送时间,10秒。
3.    死亡时间(保持时间),在该时间内未收到HELLO包,认为邻居有故障,40秒。
4.    邻居信息,申明自己的邻居,
5.    区域ID:区域号。
6.    路由器的优先级:用于选举DRBDR.
7.    DRIP地址。
8.    BDR是哪个IP.
9.    验证密码。
10. 末节区域标识。
二,   DBD(数据库描述包),database description
描述链路状态信息。
三,Request包查询链路状态信息
四,UPDATE包。
更新链路状态信息。
五,ACK确认包,对可靠包的确认。
 
 
 
OSPF的状态;
1Down state :关闭状态,未收到邻居的HELLO包。 
2Init state 初始状态,路由器收到对方的HELLO包,把对方加入邻居表(单向)。
3Two-way:双边状态,路由器互为邻居。
备注:成为邻居的路由器中,没有DRBDR,路由器之间的最终状态是双边状态,成为论据的路由器有DRBDR,路由器之间的状态将进入准启动状态。
4,准启动状态;
协商谁先发链路状态信息。Router ID大的先发。
5exchang state 交换状态。
6loading state加载状态,向邻居发送某链路状态的请求信息。
7,Full state 全,满状态,相互发送链路状态信息。
提示:两台路由器的最终状态是双边状态或全状态。 
 
在R1上建立两个物理端口,IP地址分别是192.168.10.1和202.110.100.1,显然是两个大小不同的IP地址.   
 
R2上也建立两个物理端口,和R1形成邻居关系,并且状态都由loading加载状态到full满状态.

 
 

利用show ip ospf 查看路由器的路由ID号.显然是我们刚才较大的那个IP地址.最好多做几个端口.效果会更明显.结论:当不存在环回口时.只有物理端口时,路由ID取IP地址较大的IP地址.
 
在R1上新建环回口,IP172.16.1.1
 

直接利用ospf路由将环回口发布出去,我们查看效果.

很显然,效果和刚才一样,没有变化.继续往下看.

 

删除刚才的ospf路由,让路由器重新学习路由,
 
再次发布路由
 

查看,我们看到了路由ID变成了172.16.1.1,是我们刚才配置的环回口的IP地址.
于是总结结论:当环回口和物理端口同时存在时,路由ID优先选取环回口作为路由ID.
 
再次建立物理端口,IP地址173.16.1.1,这次就不需要像刚才那样说明啦,直接重新学习路由,
 
发布路由,
 

显然,路由ID号是173.16.1.1,于是总结结论:
当有多个环回口和多个物理端口同时存在时,路由ID号优先选取环回口的IP地址作为路由ID.并且由大到小选取,然后再考虑物理端口.
 
 

另外,这里还存在一个问题,就是存在多台设备时,还可以手工指定路由ID号。
                 例如我们指定1.1.1.1作为路由ID号。应用命令:(config-router)#router-id   指定的IP地址。
 
 
 
 
 
 
 
 
 
 
 
 
 
]