登录站点

用户名

密码

OSPF邻接关系建立过程分析(有图有真相)

热20已有 1096 次阅读  2011-04-01 06:31   标签:  OSPF邻接关系建立 
若以下内容中有错误或表述不精确的地方,还望各位大侠指正!
这次是串行链路,没有DR和BDR的选举,下次将分析多路访问链路中的DR和BDR选举!

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宣告

 注:在两台路由器上开启debug:deubg ip ospf adj  和  debug ip ospf event,带“*”均为debug信息

*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 个评论)

涂鸦板