使用如下的拓扑结构:
|---------------------| |----------------------|
| | 172.1.1.1 | |
|P1 R1 P2 |---------------------| P1 R2 P2 |
| | 172.1.1.2 | |
|---------------------| |----------------------|
loopback1: 1.1.1.9/32 loopback1: 2.2.2.9/32
路由器R1配置:
OSPF接口P2,类型Broadcast广播;
OSPF接口Loopback1,类型PTP点对点。
路由器R2配置:
OSPF接口P2,类型Broadcast广播;
OSPF接口Loopback1,类型PTP点对点。
两个路由器的AREA配置为0.0.0.0。
邻居发现过程
假设路由器R1首先发送了HELLO报文,格式如下图,HELLO报文目的地址使用多播地址224.0.0.5。Message Type为1,即Hello Packet。Area ID为0.0.0.0。使用本机的回环接口作为路由器ID:1.1.1.9。由于是第一个发送的OSPF报文,DR和BDR路由器都为空,并且没有任何的邻居路由器。
其次,路由器R2发送HELLO报文,大致内容如以上的相同,但是R2的OSPF路由器ID使用其Loopback接口地址2.2.2.9。并且,由于接收到了R1之前发送的HELLO报文,路由器R2将设置其邻居路由器为1.1.1.9。
之后,路由器R1再次发送HELLO报文,此时,邻居路由器显示为R2(2.2.2.9)。
DR/BDR选举
根据上节的HELLO报文内容可知,两个路由器设置了相同的优先级1(Router Priority),所以通过路由器ID的比较,ID大的路由器R2(2.2.2.9)被选举为指定路由器DR,路由器R1为BDR。
数据库描述报文
起初OSPF使用空的DBD报文确定主从路由器。假设路由器R2首先发送了DB Description报文,其中Init、More和Master标志全部置位,表明是初始的报文,后续还有其它报文,并且声明自身为主路由器Master。其序号为103934。报文如下:
同时,路由器R1也发送了相同的DB Description报文。三个标志位Init、More和Master也都置位,其序号为103944。但是比较两个路由器的ID值,较大的一个为最终的主路由器,即路由器R2。此后,在LSA交互过程中,使用主路由器R2的序号。
在协商主从完成之后,DBD报文将携带LSA摘要信息。并且由于1.1.1.9为从路由器,Master标志清零,DD序号使用主路由器R2的103934。More标志为零表明数据库描述报文发送完成。
LS-Request请求报文
在接收到路由器R1的以上DBD报文之后,路由器R2将请求其中某些LS的具体信息。
LS-Update更新报文
当路由器R1接收到以上的LS请求报文之后,回复以下的LS-Update更新报文,发送详细的LS信息:
LS-Acknowledge确认报文
最终路由器R2在接收到以上报文后,回复LS确认报文。
END