如果说距离矢量路由协议像是公路上的路标,那么链路状态路由协议就像是一张地图----它拥有整个网络的情况。链路状态路由协议又叫做:shortest path first 或者 distributed database 协议。常见的包括OSPF和IS-I S。  

   ###距离矢量路由协议分享其知道的所有信息,但只对其邻居分享;链路状态路由协议只分享与其直连的连接,但会将此信息共享给路由区域内的所有路由器。距离矢量路由协议容易产生环路和无限循环包,所以采用水平分割、路由毒化、保持时间来避免此类事件发生;链路状态路由协议更容易避免此类情况。更重要的是,距离矢量路由协议是发布路由,如果一条重要链路有所更改,意味着发布许多条路由;链路状态路由协议在遇到链路更改时,仅仅发布链路更改通知,而不是传播所有相关路由。一句话,两者的区别是是否自己独立计算路由。

   链路状态路由协议有以下特点

  1. 每个路由器与其邻居建立邻接关系;
  2. 每个路由器发送link state advertisement (LSA),一个LSA从路由器的每个接口发出,表明链路,链路的状态,路由器接口到这个链路的metric和所有可能与这条链路相连的邻居。每个接收到LSA的邻居又将这些LSA转发给他们自己的邻居。
  3. 每个路由器将其收到的所有LSA存放在其database中。如果一切正常,所有路由器的数据库应该是相同的。
  4. 完成了的topological database 或者叫 link state database,描述了从某个路由器出发到各个网络的一棵树,然后形成路由表。
  5. 形成邻居关系,以hello包维持。
  6. 使用Router ID表明路由器在网络内的唯一身份。

   链路状态泛洪 Link state flooding:

  1. 邻接关系建立以后,路由器开始发送LSA泛洪。每一个收到的LSA会直接从其他出口发出给邻居,使得链路状态路由协议收敛非常快。而距离矢量路由协议,对收到的update需要先自己处理,然后在定期发送,所以收敛很慢。在泛洪过程中,最重要的两个过程是sequencing和aging。
  2.   Sequence Numbers. 路由器在其发出的LSA中包含顺序号,当路由器收到包含相同路由的LSA时,它会检查顺序号的大小,如果大于其topological database内路由的顺序号,就以大的为准,如果收到的LSA顺序号小于等于database内顺序号,则丢弃。这样防止LSA的无限循环扩散。
  3. sequence number space,分为linear sequence number space (IS-IS), circular sequence number 和 Lollipop-shaped sequence number space (前两者的结合)。
  4. Aging。当LSA生成时,路由器设定aging为零,LSA发布出去过后,每个路由器都增加age。
  5. MaxAgeDiff。当路由器收到多个拥有相同sequence number不同的aging的同一LSA时,如果aging的差别不超过MaxAgeDiff,则路由器认为这些差别是正常网络延迟产生的,将保留原来的LSA;如果aging超过MaxAgeDiff,则路由器选用最新的LSA,并且将这个LSA分发出去。一个典型的MaxAgeDiff是15分钟(OSPF)。
  6. Maximum age。LSA的age在link state database中是持续增加的,当增加到Maximum age时,此LSA的age设定成Maximum age并分发出去,然后从database内删除。OSPF的maximum age为1小时。
  7. Link state refresh time。必须有一种机制使得LSA在到达Maximum age之前重设,否则所有LSA终究会被删除掉。当Link state refresh time到达时,路由器会分发出新的LSA给所有邻居,使得邻居重设Maximum age。OSPF设定为30分钟。

Link state database 链路状态数据库:

  1. Link state database又叫topological database,用于存储LSA。
  2. sequence number 和 age主要用于管理LSA的分发;路由器ID、与其相连的网段和邻居则是用于最短路径计算。
  3. LSA主要包含两种类型的信息:Router link information 和 Stub network information。 路由链路信息描述了一个路由器的邻居(Router ID,Neighbor ID, cost), 其中cost 是到邻居的链路的cost;末端网络信息描述了一个路由器连接的末端网络(不与邻居相连的网络)(Router ID,Network ID, cost)。
  4. SPF算法先计算出到各个路由器的最短路径,然后再将末端网络添加到这些路由器上。
  5. cost是以路由器出口方向的接口cost为准。

Area 区域:

    区域是一组路由器组成的内部网络,使用区域主要基于以下考虑:

  1. 跟距离矢量协议比较,路由器需要更大内存;
  2. 复杂的算法需要更多CPU处理时间;
  3. 传播LSA需要更多带宽,特别是在不稳定网络里。