内部网关协议 (IGP) 可以划分为两类:
距离矢量路由协议的运行过程
距离矢量是指以距离和方向构成的矢量来通告路由信息。距离按跳数等度量来定义,方向则是下一跳的路由器或送出接口。距离矢量协议通常使用贝尔曼-福特 (Bellman-Ford) 算法来确定最佳路径。
某些距离矢量协议会定期向所有邻近的路由器发送完整的路由表。在大型网络中,这些路由更新的数据量会愈趋庞大,因而会在链路中产生大规模的通信流量。
尽管贝尔曼-福特算法最终可以累积足够的信息来维护可到达网络的数据库,但路由器无法通过该算法了解网际网络的确切拓扑结构。路由器仅了解从邻近路由器接收到的路由信息。
距离矢量协议将路由器作为通往最终目的地的路径上的路标。路由器唯一了解的远程网络信息就是到该网络的距离(即度量)以及可通过哪条路径或哪个接口到达该网络。距离矢量路由协议并不了解确切的网络拓扑图。
距离矢量协议适用于以下情形:
- 网络结构简单、扁平,不需要特殊的分层设计。
- 管理员没有足够的知识来配置链路状态协议和排查故障。
- 特定类型的网络拓扑结构,如集中星形 (Hub-and-Spoke) 网络。
- 无需关注网络最差情况下的收敛时间。
链路状态路由协议的运行过程
与距离矢量路由协议的运行过程不同,配置了链路状态路由协议的路由器可以获取所有其它路由器的信息来创建网络的“完整视图”(即拓扑结构)。我们继续拿路标来做类比,使用链路状态路由协议就好比是拥有一张完整的网络拓扑图。从源到目的网络的路途中并不需要路标,因为所有链路状态路由器都使用相同的“网络地图”。链路状态路由器使用链路状态信息来创建拓扑图,并在拓扑结构中选择到达所有目的网络的最佳路径。
对于某些距离矢量路由协议,路由器会定期向邻近的路由器发送路由更新信息。但链路状态路由协议不采用这种定期更新机制。在网络完成收敛之后,只在网络拓扑结构发生变化时才发送链路状态更新信息。
链路状态协议适用于以下情形:
- 网络进行了分层设计,大型网络通常如此。
- 管理员对于网络中采用的链路状态路由协议非常熟悉。
- 网络对收敛速度的要求极高。