一、路由算法
路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的。从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可以分为如下两大类。
1.静态路由与动态路由
①静态路由算法(非自适应路由算法)
- 由网络管理员手工配置的路由信息。
静态路由特点:
- 当网络的拓扑结构或链路的状态发生变化时,需手工修改路由表中的静态路由信息。
- 它不能及时适应网络状态的变化,对于简单的小型网络,可以采用静态路由。
②动态路由算法(自适应路由算法)
- 相互连接的路由器之间彼此交换信息,按照一定的算法优化出路由表。
动态路由特点:
- 这些路由信息会在一定时间间隙里不断更新,以随时获得最优的寻路效果。
- 常用的动态路由算法还可以分为两类:距离-向量路由算法、链路状态路由选择算法。
2.链路状态(LS)算法
它属于全局式路由选择算法,即要求每个参与该算法的结点都具有完全的网络拓扑信息,最终使用Dijstra算法得到源点到各个结点的最短路径。
算法的运行过程:
- 主动测试所有邻接结点的状态。
- 定期地将链路状态传播给所有其他结点(或称路由结点)。
算法伪代码:
Initialization: N'={u} for all nodes v if v is a neighbor of u then D(V)= c(u, v) else D(v)=∞ Loop find w not in N'such that D(w) is a minimum add w to N' update D(v) for each neighbor v of w and not in N' ; D(V)=min (D(v) , D(W)+c(w, v) ) /* new cost to v is either old cost to v or knownleast path cost to w plus cost from w to v*/ until N'= N
基本特征:
- 向本自治系统中所有路由器发送信息使用的方法是洪泛。
- 发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信
息。 - 只有当链路状态发生变化时,路由器才向所有路由器发送此信息。
3.距离向量(DV)算法
它属于分散式路由选择算法,每个路由表都有三个数据,<目的网络N,距离d,下一跳路由器地址X>
算法的运行过程:
1.对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有“距离”字段的值加1。
2.对修改后的RIP报文中的每个项目。首先,当原来的路由表中没有目的网络N时,把该项目添加到路由表中。
3.当原来的路由表中有目的网络N,且下一跳路由器的地址是X时,用收到的项目替换原路由表中的项目。
4.当原来的路由表中有目的网络N,且下一跳路由器的地址不是X时,如果收到的项目中的距离d小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做。
5.运行完上面三条之后,如果180秒(RIP默认超时时间)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为16(距离为16表示不可达)。
6.返回。
算法伪代码:
Initialization: for all destinations y in N: Dx(y)= c(x, y)/* if y is not a neighbor then c(x, y)=∞*/ for each neighbor w Dw(y)= ? for all destinations y in N for each neighbor w send distance vector Dx = [Dx(y) : y in N] to w Loop wait (until I see a link cost change to some neighbor w or until I receive a distance vector from some neighbor w) for each y in N: Dx(y) =minv{c (x, V)+ Dv(y)} if Dx(y) changed for any destination y send distance vector Dx = [Dx(y) : y in N] to all neighbors forever
距离-向量算法的实质是通过迭代计算每个路由器的代价,得到目标路由的最小代价
二、层次路由与自治系统
当网络规模扩大时,路由器的路由表成比例地增大。这会消耗路由器缓冲区空间,还需要用更多CPU时间,用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行。
层次路由方法
- 因特网将整个互联网划分为较小的自治系统(一个自治系统中包含很多局域网),每个自治系统内部有自己的路由选择协议。
- 如果两个自治系统需要通信,则需要自治系统之间的协议来屏蔽掉这些差异,在下一个部分会介绍响应的路由协议。
自治系统(Autonomous System,AS):
- 单一技术管理下的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。
注:
一个自治系统内的所有网络都由一个行政单位管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的。
三、路由协议
1.自治系统内部的路由选择
路由信息协议(RIP)
路由信息协议(Routing Information Protocol,RIP)是内部网关协议(IGP)中最先得到广泛应用的协议。RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。
该协议的规定及工作原理:
1.网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录。
2.距离也称跳数(Hop Count),规定从一个路由器到直接连接网络的距离(跳数)为1。而
每经过一个路由器,距离(跳数)加1。
RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径。
3.RIP 允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离等于16时,它表示网络不可达。可见
4.RIP只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上,减少网络拥塞的可能性。
5.RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)。
6.在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相同。
RIP协议缺点:
1.RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)。
2.路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。
网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),俗称3.“坏消息传得慢”,使更新过程的收敛时间长。
RIP协议特点:
- 仅和相邻路由器交换信息。
路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表。 - 按固定的时间间隔交换路由信息,如每隔30秒。
开放最短路径优先(OSPF)协议
开放最短路径优先(OSPF)协议是使用分布式链路状态路由算法的典型代表,也是内部网关协议(IGP)的一种。
OSPF与RIP相比有以下4点主要区别:
1.OSPF向本自治系统中的所有路由器发送信息,这里使用的方法是洪泛法。而RIP仅向自己相邻的几个路由器发送信息。
2.发送的信息是与本路由器相邻的所有路由器的链路状态,这些信息说明本路由器和哪些路由器相邻及该链路的“度量”(或代价)。而在RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表。
3.只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛得快。不会出现 RIP“坏消息传得慢”的问题。而在 RIP 中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息。
4.OSPF是网络层协议,它不使用UDP或TCP,而直接用IP数据报传送(其IP数据报首部的协议字段为89)。而RIP是应用层协议,它在传输层使用UDP。
OSPF协议的工作原理:
1.各路由器之间频繁的交换链路状态信息,从而构建一个大的数据库,存储全网的拓扑结构,并且同步到每个路由器上。
2.每个路由器根据这个拓扑图,使用Dijstra算法计算总自己到各个网络的最优路径。
3.当链路状态发生变化时,每个路由器重新计算各目的网络的最优路径,构建新的网络表。
注:虽然使用Dijkstra算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储“下一跳”。
为使OSPF能够用于规模很大的网络,OSPF 将一个自治系统再划分为若千更小的范围,称为区域。
划分区域的好处:将洪泛法的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。
在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。这些区域也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。
2.ISP之间的路由选择
边界网关协议(BGP)
边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用于互联网的网关之间。
BGP的工作原理:
1.每个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的“BGP发言人”。
2.一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接。然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息。
3.当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由。
4.每个BGP发言人除必须运行BGP外,还必须运行该AS所用的内部网关协议,如 OSPF或RIP。BGP所交换的网络可达性信息就是要到达某个网络(用网络前缀表示)所要经过的一系列AS。
BGP的特点:
1.BGP交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少很多。
2.每个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
3.BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
4.在BGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
3.三种路由协议的比较
协议 | RIP | OSPF | BGP |
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好 |
交换结点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 和本结点相邻的路由器 |
交换内容 | 当前本路由器知道的全部信息 | 与自己相邻的所有路由器的链路状态 | 首次为整个路由表,之后是变化的部分 |