当两台路由器已经互相发现并将对方视为邻居时,它们要进行数据库同步过程,即交换和确认数据库信息,直到数据库相同为至;为了执行数据库同步,邻居之间必须建立邻接关系,即这们必须就某些特定的协议参数,如计时器和对可选择能力的支持,达成一致意见。通过使用 Hello数据包建立邻接关系,链路状态协议就可以在受控的方式下交换信息,与距离矢量相比,这种方式仅在配置了路由选择协议的接口上广播更新信息(组播)。
除建立邻接关系外,Hello数据包还可作为监视邻接关系的握手信号。如果在特定的时间内没有从邻接路由器收到Hello数据包,那么就认为邻居路由器不可达,随即邻接关系被解除。典型的Hello数据包交换间隔为10s,典型的死亡周期是交换间隔的4倍。
三、链路状态泛洪扩散(Flooding)
在建立了邻接关系之后,路由器开始发送LSA给每个邻居,同时,每个邻居保存接收到的LSA并依次向它的每个邻居转发,除了发送该LSA的邻居之外,在这里优于距离矢量的一个特点是:LSA几乎是立即被转发的!因此,当网络拓扑发生变化时,链路状态协议的收敛速度要远远快于距离矢量协议。
泛洪扩散过程是链路状态协议中最复杂的一部分,有几种方式可以使泛洪扩散更高效和更可靠,如使用单播和多播地址、校验和以及主动确认,其中有两个过程是极其重要的:排序和老化。
1、序列号
假设这样一种情况:路由器C先从B收到了A发出的一个LSA并保存到自己的拓扑数据库中,接着又通过路由器F收到了同样的这个由A发出的LSA,路由器C发现数据库中已经存在了该LSA(知道是从B收到的),那么路由器C从路由器F接收到的这个LSA是否应该向路由器B转发?答案是不转发!因为路由器B已经收到了这个LSA,由于路由器C从路由器F接收到的LSA的序列号与早先从路由器B接受的LSA序列号相同,所以路由器C也知道这一情况,于是将该LSA丢弃。
当路由器A发送LSA时,在每个拷贝中的序列号都是相同的,此序列号和LSA的其他部分一起被保存在路由器的拓扑数据库中,当路由器收到数据库中已存在的LSA且序列号相同时,路由器将丢弃这些信息;如果信息相同但序列号更大,那么接收的信息和新序列号被保存到数据库中,并且泛洪扩散该LSA。
因为序列号被携带在LSA中的一个固定字段内,所以序列号一定有上限,那么当序列号到达上限时会发生什么呢?
相关推荐