第5章 网络层:控制平面
5.1概述
1.计算、维护和安装转发表和流表有两种可能的方法:
-
每路由器控制。每台路由器中都包含转发和路由选择功能。每台路由器有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算转发表的值。
-
逻辑集中式控制。逻辑集中式控制器计算并分发转发表以供每台路由器使用。
5.2路由选择算法
1.根据路由算则算法是集中式还是分散式可分为:
-
集中式路由选择算法用完整的、全局性的网络知识计算出从源到目的地之间的最低开销路径。也就是说,该算法以所有节点之间的连通性及所有链路的开销为输入。这就要求该算法在真正开始计算以前,要以某种方式获得这种信息。具有全局状态信息的算法常被称作链路状态(Link State, LS)算法。
-
在分散式路由选择算法中,路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路的开销的完整信息。相反,每个节点仅有与其之间相连链路的开销知识即可开始工作。然后,通过迭代计算过程以及与相邻节点的信息交换,一个节点逐渐计算出到达某目的节点或一组目的节点的最低开销路径。
根据算法是静态的还是动态的分类:
-
静态路由选择算法中,路由随时间的变化非常缓慢,通常是人工进行调整。
-
动态路由选择算法随着网络流量负载或拓扑发生变化而改变路由选择路径。一个动态算法可周期性地运行或直接相应拓扑或链路开销的变化而运行。虽然动态算法易于对网络的变化做出反应,但也更容易受诸如路由选择循环、路由振荡之类问题的影响。
根据是负载敏感还是负载迟钝分类:
-
负载敏感算法中,链路开销会动态地变化以反应出底层链路得到当前拥塞水平。如果当前拥塞的一条链路与高开销想联系,则路由选择算法趋向于绕开该拥塞链路来选择路由。
-
负载迟钝算法中,某条链路的开销不明确地反应其当前的拥塞水平。
2.在链路状态算法中,网络拓扑和所有的链路开销都是已知的,也就是说可用作LS算法的输入。实际上这是通过让每个节点向网络中所有其他节点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路的标识和开销。这经常有链路状态广播算法来完成。链路状态算法实际上是用Dijkstra算法实现的。
3.距离向量(Distance-Vector, DV)算法是一种迭代的、异步的和分布式的算法。DV算法实际上是用Bellman-Ford算法实现的。在DV算法中,当节点x发现它的直接相连的链路开销变化或从某个邻居接收到一个距离向量的更新时,它就更新距离向量估计值。每个节点等待来自任何邻居的更新,当接收到一个更新时计算它的新距离向量并向它的邻居分布其新距离向量。
4.DV算法会遇到路由选择环路而变得缓慢。对于两个直接相连的节点,可以通过毒性逆转技术加以避免,但是对于3个或以上的节点就无法使用毒性逆转技术检测到。
5.LS算法与DV算法的比较:
-
报文复杂性。LS算法要求每个节点都知道网络中每条链路的开销。这就要求发送O(|N||E|)个报文。而且无论何时一条链路的开销改变时,必须向所有节点发送新的链路开销。DV算法要求在每次迭代时,在两个直接相连邻居之间交换报文。算法收敛所需时间依赖于许多因素。当链路开销改变时,DV算法仅当在新的链路开销导致与该链路相连节点的最低开销路径发生改变时,才传播已改变的链路开销。
-
收敛速度。LS算法的实现是一个要求O(|N||E|)个报文的O(|N|2)算法。DV算法收敛较慢,且在收敛时会遇到路由选择环路。DV算法还会遇到无穷计数问题。
-
健壮性。如果一台路由器发生故障、行为错乱或收到蓄意破坏时,对于LS算法,路由器能够向其连接广播不正确的开销。作为LS广播的一部分,一个节点也可损坏或丢弃它收到的任何LS广播分组。但是一个LS节点仅计算自己的转发表;其他节点也自行执行类似的计算。这就意味着在LS算法下,路由计算在某种程度