OSPF的邻居全相连

以前在CCNA看OSPF的时候,总是不算很清楚它邻居建立起来七个状态之间的关系。主要是细节的地方没有搞清楚,看得越多反而越混乱。后来做完实验,觉得大部分地方开始明晰了,但还是有些地方若隐若现,那时候最搞不清楚的是建立邻居全相连(Full Adjacency)关系的七个状态和五种包到底关系怎样。这次看了CCNP之后总算清楚了。

原来这五种包分别是Hello,DBD,LSR,LSU,LSAck。似乎是五种独立的包,实际上它们的header都是一样格式的,其实可以统一叫做OSPF包,OSPF包的header有一个字段叫type,当它等于“1,2,3,4,5”,就分别是这五种包的其中一种了。OSPF包是直接封装在IP包里的,也就是说,OSPF包既不利用TCP,也不利用UDP。这也就好理解为什么会特别有LSAck包了。

知道了这五种包,要理解建立全相连的过程细节也变得容易了。第一阶段,是Hello协议建立two-way关系,利用hello包就可以了,主要是检查大家参数是不是一致,如果发现对方发过来hello包的邻居列表包含自己,随即宣布自己和他进入two-way关系。

第二阶段就是由two-way阶段进化到full adjacency,利用的协议是Exchange交换协议。能不能进化,主要看的是网络类型,如果是点到点,是可以的。但如果是广播型多路网,自己只有和DR和BDR之间才能进化。进化的细节是这样的,首先用DBD(只有简单描述的信息)确定主从关系。然后主方首先发送DBD,从方也发DBD,大家看看有没有自己缺的链路状态,有就发LSR问详细信息,然后用LSU回答。反复沟通,直到大家数据库一致了,就完成进化了。

整个过程也是这样,应该没有说得太抽象吧,可能没有解释一些专业术语,稍微查查就知道了。因为这个过程的目的就是同步数据库,因此这个过程有时也叫同步数据库过程。更好玩的是,最近学了一条命令,是“debug ip ospf packet”,这条命令会把收到的OSPF包的头部信息显示出来,但是用的是缩写形式。

OSPF debug

然而,最近在CCNP里找到这些缩写的解释表,现在我可以实际地感受书上说的整个进化的过程了。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s