计算机网络-路由算法
开始之前理解如下概念:
-
自治系统AS
-
路由协议收敛
// 自治系统中所有结点都能得到正确的路由选择信息的过程(路由表与网络拓扑信息保持一致)
分层次的路由选择协议
OSPF将一个自治系统再划分为若干个区域,泛洪法交换链路状态信息的范围局限于一个区域。在一个区域的路由器只知道本区域的完整网络拓扑结构,而不知道其他区域的网络拓扑情况。
路由算法
距离-向量路由算法
以RIP(路由信息协议)为例
RIP要注意的几个点:
-
协议规定仅和相邻路由器周期性交换本路由器的路由表
-
RIP报文本质是UDP数据报
-
路由表内容是<目的网络,距离,下一跳> 距离值16代表不可达
-
可达时距离最大为15,此时该路由到目的网络之间有14个路由器
-
路由表更新的原则是找出到目的网络的最短距离
-
路由表的初始状态(目的网络:距离为“1”的网络)和最终状态(目的网络:自治系统的所有网络)
-
不知道整个网络的拓扑结构信息,可以很快收敛
-
坏消息传播的慢(可能导致路由回路),出现故障时
-
易错点,容易把距离搞错。路由器到直接连接的网络的距离定义为1
基础算法(Bellman-Ford算法)
// 提示先修改RIP报文(把“下一跳路由器”的字段修改为C,并把“距离”字段加1)
链路状态路由算法
以OSPF(开放最短路径优先)为例
OSPF要注意的几个点:
-
协议规定和自治系统中(区域)的所有路由器在链路状态发生变化时使用泛洪法发送与本路由器相邻的所有路由器的链路状态
-
OSPF报文本质是IP数据报
-
链路状态<相邻的路由器,该链路的代价> 代价是人为规定的
-
OSPF报文的五种类型
-
OSPF最终要建议一个全网同步的链路数据库
-
可快速收敛
-
泛洪法是可靠的,收到更新分组后要发送确认(ACK报文)
基础算法(Dijkstra最短路径算法)
在拿到完整的拓扑结构时就可以利用Dijkstra算法求解。
边界网关协议BGP
路径向量路由选择协议
BGP要注意:
-
选择至少一个路由器作为该自治系统的“BGP发言人”(往往是BGP边界路由器)
-
“BGP发言人”之间交换可达性信息(路径向量)
-
BGP报文实质是TCP报文
-
邻站开始交谈时先发送OPEN报文,邻站用KEEPALIVE报文响应。UPDATE报文一次只能增加一条,可以撤销多条。