安庆饭店怎么取名字:CCNP实验:OSPF的五种类型数据包(1)

来源:百度文库 编辑:中财网 时间:2024/04/29 19:28:52

CCNP实验:OSPF的五种类型数据包(1)

(2011-05-23 23:14:40) 转载标签:

杂谈

分类: Cisco-CCNP

OSPF的数据包格式:

根据OSFP数据包type字段数值的不同,OSPF数据包类型分为五种,不同的type,后面Data的内容则不同。

路由表的形成与这五种数据包的交互息息相关:

type=1 Hello数据包

type=2 数据库描述包

type=3 链路状态请求包

type=4 链路状态更新包

type=5 链路状态确认包

结合GNS3 + Wireshark 来学习这五种类型数据包在邻接关系建立过程中所发挥的作用。

简单的拓扑

以R1和R2的链路为例,看R1的s0/0和R2的s0/0如何建立邻接关系的。

关于邻接关系:

(1)邻居和邻接是不同的;(邻接关系要求链路状态数据库同步)
(2)点到点链路可以形成fully状态的邻接关系;

(2)对于MA型链路,DR和BDR可以形成full状态的邻接关系,其他路由器是双向two-way状态的邻接关系。(对于MA型链路,形成full状态的邻接关系代价太高,选举DR,BDR可以简化邻接关系,减少LSA洪泛)

 

上面的例子是点到点链路。

上面是wireshark在R1的s0/0上抓包的结果。从第14包hello开始到第38包LS确认,然后后面就是每隔10S的互发Helllo包来维持邻接关系,一直到链路状态发生变化为止。

一,Hello数据包

message type字段为1。

Hello数据包是用来建立和维护邻接关系的,为了形成邻接关系,Hello数据包所携带的一些参数必须和它的邻居保持一致,否则对方收到会丢弃。

用来协商的参数包括:掩码、hello时间间隔(默认10s),死亡时间间隔(默认四倍hello间隔)、还有可选字段等。

此外,Hello数据包还会携带源路由器的ID,如果没有换回口,则选IP最大的;区域ID,认证字段,路由器优先级,DR和BDR等内容,当有邻居的时候,还会携带邻居字段。

(hello数据包会维持init和two way两个状态,当收到对方的hello包里的邻居字段里没有自己时,则为init状态,当发现对方的hello包里的邻居字段里有自己时,则进入two way状态,标志邻居关系建立,即可以发送数据库描述数据包了)(如果是MA网络,在two way状态下要选举DR和BDR)

下面是通过一些debug得出的信息:

*Mar  1 00:06:15.483: OSPF: Drop packet (interface Serial0/0 down or dampened)
R1#
*Mar  1 00:06:23.599: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
*Mar  1 00:06:23.623: OSPF: Interface Serial0/0 going Up (接口up)
*Mar  1 00:06:23.623: OSPF: Send hello to 224.0.0.5 area 0 on Serial0/0 from 10.0.0.1
*Mar  1 00:06:23.739: OSPF: rcv. v:2 t:1 l:48 rid:2.2.2.2 (type=1)
      aid:0.0.0.0 chk:E580 aut:0 auk: from Serial0/0
*Mar  1 00:06:23.739: OSPF: Rcv hello from 2.2.2.2 area 0 from Serial0/0 10.0.0.2
*Mar  1 00:06:23.743: OSPF: 2 Way Communication to 2.2.2.2 on Serial0/0, state 2WAY
*Mar  1 00:06:23.747: OSPF: Send DBD to 2.2.2.2 on Serial0/0 seq 0x5BC opt 0x52 flag 0x7 len 32
*Mar  1 00:06:23.747: OSPF: Send immediate hello to nbr 2.2.2.2, src address 10.0.0.2, on Serial0/0
*Mar  1 00:06:23.747: OSPF: Send hello to 224.0.0.5 area 0 on Serial0/0 from 10.0.0.1
*Mar  1 00:06:23.747: OSPF: End of hello processing
*Mar  1 00:06:23.767: OSPF: rcv. v:2 t:2 l:32 rid:2.2.2.2
      aid:0.0.0.0 chk:9CD6 aut:0 auk: from Serial0/0

二,数据库描述数据包

当两个邻居建立通过Hello确认双方参数匹配时,则进入建立邻接关系阶段,此时会互发三种类型的OSPF数据包:数据库描述数据包,链路状态请求包和链路状态更新包。首先是链路状态数据库的描述,它是描述始发路由器数据库中一些或者全部的LSA信息(通过LSA Header字段),以便接收路由器能够确定所收到的LSA在其数据库中是否已经有一个匹配的LSA。如果没有,接下来就是更新请求。

以此例来分析DB描述的发送关系。

hello包协商完以后,DB的第一轮交互是选举Master和Slave

DB描述位: init表示是第一包,More置1表明还有后续的数据包,MS置1表示竞争Master,主路由器。

Master的选取只取决于路由器ID,ID大的为Master,这里很显然R2的ID大,所以经过第一轮的DB,可以得知R2是Master,而R1是Slave。

接下来双发互发本方的LSA的头,即列出本方LSA数据库里的部分信息,供对方比对参考,以完成同步链路数据库的目的。

debug的相关输出:

R1#71: OSPF: Rcv DBD from 2.2.2.2 on Serial0/0 seq 0x520 opt 0x52 flag 0x7 len 32  mtu 1500 state EXSTART
*Mar  1 00:06:23.775: OSPF: NBR Negotiation Done. We are the SLAVE
*Mar  1 00:06:23.779: OSPF: Send DBD to 2.2.2.2 on Serial0/0 seq 0x520 opt 0x52 flag 0x2 len 72
*Mar  1 00:06:23.815: OSPF: rcv. v:2 t:2 l:72 rid:2.2.2.2
      aid:0.0.0.0 chk:3693 aut:0 auk: from Serial0/0
*Mar  1 00:06:23.819: OSPF: Rcv DBD from 2.2.2.2 on Serial0/0 seq 0x521 opt 0x52 flag 0x3 len 72  mtu 1500 state EXCHANGE
*Mar  1 00:06:23.823: OSPF: Send DBD to 2.2.2.2 on Serial0/0 seq 0x521 opt 0x52 flag 0x0 len 32
*Mar  1 00:06:23.847: OSPF: rcv. v:2 t:2 l:32 rid:2.2.2.2
      aid:0.0.0.0 chk:9CDA aut:0 auk: from Serial0/0
*Mar  1 00:06:23.851: OSPF: rcv. v:2 t:3 l:36 rid:2.2.2.2
      aid:0.0.0.0 chk:F5CF aut:0 auk: from Serial0/0
*Mar  1 00:06:23.859: OSPF: Rcv DBD from 2.2.2.2 on Serial0/0 seq 0x522 opt 0x52 flag 0x1 len 32  mtu 1500 state EXCHANGE
*Mar  1 00:06:23.859: OSPF: Exchange Done with 2

 

flag=0x0和ox1分别代表slave和master的DB包结束了。

分享 分享到新浪Qing

1

阅读(170) 评论 (0) 收藏(0) 转载(1) 打印举报