一:OSPF包的类型:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
包:用来建立和维持邻居关系;
:用来检验路由器之间的数据库并进行同步的;
(LSR):链路状态请求;
(LSU):“特定”链路之间的请求记录;
(LSAck):确认包;
二:解释为何需要ACK包
包也是包含在IP数据分组中的,使用的协议号是89,而不是运用的传输层的TCP或者UDP,所以没有一定的可靠性,但是OSPF又要求使用可靠的传输,所以就有了LSAck包的出现。【这些与EIGRP非常的相似。EIGRP也是直接封装在IP分组中的,使用的协议号是88。没有使用TCP或者UDP,也就随之有了ACK包。】
三:OSPF邻接过程
、 初始化状态:其中一个路由器A发送一个HELLO,我是A,有人吗?这个时候B收到后,就将这个信息保存在一个邻居“列表”【而不是邻接关系数据库】中。然后回应,我是路由器B,我能看的到你路由器A。这个时候呢,A接收到B的回应信息以后呢,也将这个信息保存着在自己的一个邻居“列表”中。这个过程是一个瞬时状态.
、Two-way state:而双方都知道对方的存在的时候,他们就算是进入了另外一种状态:Two-way state。【这是一个持久的状态】
、Exstart state(交换初始化状态):这是一个双方都争取DR的一个过程。A说他够格,B说他够格。其实就是一个DR与BDR的选举过程:先是比较它们的优先级【默认的优先级都是1】,如果优先级相同的话,就开始比较它们的RID【RID大的那个就是DR;如果存在环回接口的话,那环回接口的IP地址就是RID。如果没有的话,那就是接口中IP地址最大的那个IP就是RID】。这也是一个瞬间的状态。
、Exchange state (交换状态):双方向对方发送一个DBD(数据库状态描述),里面包含的是自己本身的链路状态数据库的摘要信息。并且双方正确收到以后,给对方返回一个LSAck进行确认!这也是一个瞬间状态!
、Loading state (加载状态):通过对方发送来的那个DBD,与自己的LSDB进行比较。如果是缺少什么条目的话,就用LSR(链路状态请求)向对方索要,然后对方发送一个LSU,其中包含我们所需要的条目。正确收到LSU后,再发送一个LSAck进行确认!【这是一个瞬间状态】
、Full state(完全邻接状态):经过加载状态,将所需要的条目都补充完全了后,就到了完全邻接的状态了。邻居关系正式成立,并投入使用!【持久状态】
注:在这些过程中,只有【双向状态】与【完全邻接状态】是持久状态,其他的都是瞬间状态!
四:路由信息的维持
当网络稳定的时候,突然一个链路出现了故障,那么发现这个故障的路由器就会生成一个LSA,这个LSA不是发送给他的所有的邻居,而是发送给DR,然后用DR来管理“LSA的洪泛”,由DR来发送给其他的邻居路由器,邻居路由器接受了以后,更新自己的LSDB,然后复制出一个拷贝,发送给下面的邻居。
转载于:https://blog.51cto.com/justim/268989