距离矢量的路由状态协议是根据邻居路由器的路由更新直接更新路由并且需要邻居路由器进行周期性的更新。
区别于距离矢量协议,链路状态协议需要路由器:
1. 每台路由器与邻居路由器之间建立邻接关系
2. 路由器向每个邻居路由器发送链路状态通告LSA。路由器会对每条连接的链路生成一个LSA,LSA用于标识这条链路,链路状态,路由器接口到链路的代价度量值等等。每个邻居收到通告之后将依次它的邻居赚翻(洪泛)这些通告
3. 每台路由器在数据库中保存收到的LSA的备份,如果所有路由器在正常,所有路由器的数据库应该相同
4. 得到完整的拓扑数据库(链路状态库)后,使用Dijkstara算法对网络图进行计算得到每台路由器的最短路径,输入到路由表中。
Hello数据包是建立邻居关系的关键:
1. 包含一个路由器的ID和发送数据包的网络地址,子网掩码,Hello间隔等信息
2. 作为监视邻居关系的握手信号。典型的Hello数据包交换间隔为10ms,死亡周期是4倍交换间隔。
链路状态泛洪扩散:当路由器收到LSA后会立刻向其他邻居路由器转发,相比起距离矢量在转发路由更新之前必须自己运行算法并更新自身的路由表,在网络拓扑改变时链路状态协议的收敛速度远远快于距离矢量协议。
链路状态数据库:
把LSA作为一连串记录保存下来, 通告路由器的ID,连接的网络和邻居路由器以及网络和邻居相关联的代价。