OSPF邻接关系建立过程:

在数据库描述数据包(DBD)中有3个标记位用来管理邻接关系的建立:
Ø I位,初始位(Initial bit),当需要指明发送的是第一个数据库描述数据包时,该位设置为1;
Ø M位,后继位(More bit),当需要指明所发送还不是最后一个数据库描述数据包时,该位设置为1;
Ø MS位,主/从位(Master/Slave bit),当数据库描述数据包始发于一个“主”路由器时,该位设置为1。
Flag可能有以下几种值
|
Flag值 |
I位 |
M位 |
MS位 |
意义 |
|
7(111) |
1 |
1 |
1 |
表示是第一个DBD,且不是最后一个,宣称自己为master |
|
3(011) |
0 |
1 |
1 |
表示不是第一个也不是最后一个DBD,且为Master |
|
2(010) |
0 |
1 |
0 |
表示不是第一个也不是最后一个DBD,自己为slave |
|
1(001) |
0 |
0 |
1 |
表示不是第一个是最后一个DBD,且自己为Master |
|
0(000) |
0 |
0 |
0 |
表示不是第一个是最后一个DBD,且自己为slave |
实验:
IP地址划分:
1、
R 1-----R2: 192.168.12.x/24 x为设备号
2、
每台路由器上创建环回口,IP地址为x.x.x.x/24
在每台路由器上启用OSPF,使用network 0.0.0.0 0.0.0.0 area 0宣告
*Mar
1 00:15:14.703: OSPF: Interface Serial0/0 going Up
*Mar
1 00:15:14.703: OSPF: Send hello to 224.0.0.5 area 0 on Serial0/0 from
192.168.12.2
*Mar
1 00:15:14.727: OSPF: Interface Loopback0 going Up
*Mar
1 00:15:14.839: OSPF: Rcv hello from 1.1.1.1 area 0 from Serial0/0
192.168.12.1
//R2收到来自1.1.1.1的hello包,截图如下:

如图中黄色标注位置,R1发来的hello包中,含有自己的RID。则R2将与R1的邻接关系置为2Way
*Mar
1 00:15:14.843: OSPF: 2 Way Communication to 1.1.1.1 on Serial0/0, state
2WAY
*Mar
1 00:15:14.843: OSPF: Send DBD to 1.1.1.1 on Serial0/0 seq 0x1975 opt 0x52 flag 0x7 len 32
//发送空DBD包,序列号为0x1975,flag 为7,则表示表示是第一个DBD,且不是最后一个,宣称自己为master,长度为32,表明是空的DBD包

图中的DBD序号为十进制,换算成十六进制为0x1975。
*Mar
1 00:15:14.847: OSPF: Send immediate hello to nbr 1.1.1.1, src address
192.168.12.1, on Serial0/0
*Mar
1 00:15:14.851: OSPF: Send hello to 224.0.0.5 area 0 on Serial0/0 from
192.168.12.2
*Mar
1 00:15:14.855: OSPF: End of hello processing
*Mar
1 00:15:14.975: OSPF: Rcv DBD from 1.1.1.1 on Serial0/0 seq 0x4C7 opt 0x52 flag 0x7 len 32 mtu 1500
//收到来自1.1.1.1的DBD包,参数如黄色标注部分,发现来自邻居的DBD包中的RID为1.1.1.1,小于自身RID,则自己为Master,将控制DBD数据包的发送
*Mar
1 00:15:14.979: OSPF: First DBD and we are not
SLAVE
*Mar
1 00:15:14.983: OSPF: Rcv DBD from 1.1.1.1 on Serial0/0 seq 0x1975 opt 0x52 flag 0x2 len 52 mtu 1500 state EXSTART
//与此同时R1收到来自R2的DBD空报文,发现R2的RID比自己的RID大,则认为自己为Slave,向R2发送第二个包含真实LSA的DBD报文,采用的序列号为R2的DBD报文的序列号(0x1975,如上面黄色标注部分)
*Mar
1 00:15:14.987: OSPF: NBR Negotiation Done. We are the MASTER
*Mar
1 00:15:14.987: OSPF: Send DBD to 1.1.1.1 on Serial0/0 seq 0x1976 opt
0x52 flag 0x1 len 32
//DBD交换完成,向R1发送flag为0x1的DBD报文,表明为最后一个DBD报文。序号增加1。
*Mar
1 00:15:15.091: OSPF: Rcv DBD from 1.1.1.1 on Serial0/0 seq 0x1976 opt
0x52 flag 0x0 len 32 mtu 1500 state EXCHANGE
//R1收到R2发送的最后一个DBD报文后,回复同样一个flag为0x0的报文,表明是最后一个,以确认收到。DBD交换完成进入Loading状态
*Mar
1 00:15:15.095: OSPF: Exchange Done with 1.1.1.1 on Serial0/0
*Mar
1 00:15:15.099: OSPF: Send LS REQ to 1.1.1.1 length 12 LSA count 1
//在LSA请求列表存在LSA条目,则向邻居发送LSA Request报文,请求该LSA的详细信息

*Mar
1 00:15:15.199: OSPF: Rcv LS UPD from 1.1.1.1 on Serial0/0 length 76 LSA
count 1
//收到来自邻居的关于1.1.1.1 LSA的详细信息

*Mar
1 00:15:15.203: OSPF: Synchronized with 1.1.1.1 on Serial0/0, state FULL
*Mar
1 00:15:15.207: %OSPF-5-ADJCHG: Process 10, Nbr 1.1.1.1 on Serial0/0
from LOADING to FULL, Loading Done







发表评论 评论 (12 个评论)