当前位置:文档之家› 路由协议(RIP,OSPF和BGP)

路由协议(RIP,OSPF和BGP)

《TCP/IP协议族》(英文版)第13章

路由协议(RIP,OSPF和BGP)

所谓“互联网络”(internet)是指由路由器连接而成的多个网络的组合体。当数据报从一个源端传送到一个目标端时,可能需要通过很多个路由器才到达与目标网络连接的路由器。

路由器的作用是从一个网络中接收数据包(packet,分组),然后将它传送给另一个网络。一个路由器通常与几个网络连接,这样,当它收到一个数据包时,应该将数据包转发给哪个网络呢?路由器是按最佳化原则进行判定:哪个可用的路径是最佳路径?

人们用metric来表示通过某个网络时所指定的“成本”(cost,代价)。一个特定路由的总metric,等于包含了该路由的多个网络的metric之和。路由器根据最短(最小)的metric 来选择路由。

分配给每个网络的metric取决于协议的类型。某些简单的协议,如“路由信息协议”(RIP),将每个网络同等处理,即通过每个网络的cost是一样的,或者说都是一个“跳数”(one hop count)。所以如果一个数据包通过10个网络才到达目标端,其总cost就是10个“跳数”。

其他协议,如“开放最短路径优先协议”(OSPF),则允许管理员根据所需的服务类型,为通过一个网络指定cost。通过某个网络的路由可以具有不同的cost(metric)。例如,如果所需的服务类型是“最大吞吐量”(throughput),一条卫星链路就比一条光纤链路具有更低的metric。另一方面,如果所需的服务类型是“最小延迟”,一条光纤链路就比一条卫星链路具有更低的metric。OSPF允许每个路由器根据所需的服务类型拥有几个路由表。

其他协议定义metric的方法则完全不同。在“边缘网关协议”(BGP)中,评定的标准是可以由管理员设置的所谓“策略”(policy)。“策略”定义了应该选择的是哪个路径。

不管metric是如何确定的,路由器在准备转发数据包时,都必须使用路由表。路由表应为数据包规定最佳路径。不过,路由表可以是静态的,也可以是动态的。“静态路由表”是那种不经常变化的路由表。而“动态路由表”是那种当互联网络中的某处出现变化时能自动更新的路由表。今天,互联网络需要的是动态路由表。这种路由表要求互联网络出现变化时即被尽快更新。例如,当某个路由关闭(down)时,需要进行更新;而当一个更好的路由建立后,也需要进行更新。

各种路由协议都是为了动态路由表的需要而制定的。一个路由协议是一组规则和程序的组合,用于使互联网络中的路由器们相互告知有关的变化情况。它使路由器们共享它们所掌握的互联网络或相邻路由器的情况。这种信息的共享使得旧金山市的某个路由器可以知道德克萨斯州的网络出现故障了。路由协议还包含了将从其他路由器接收的信息综合起来的处理程序。

13.1 内部和外部路由

今天,一个互联网络可能很大,以致一个路由协议无法完成为所有路由器更新路由表的任务。为此,需要将一个互联网络分为若干“自治系统”(autonomous systems,AS)。一个“自治系统”是指由同一个管理员管理的一组网络和路由器。自治系统内部的路由称为“内部路由”,自治系统之间的路由称为“外部路由”。每个自治系统都可以选择一个内部路由协议来处理该自治系统内部的路由。但是,自治系统之间的路由通常只能使用一个外部路由协议来处理。

现在使用的内部和外部路由协议很多。本章只介绍最常用的几种。下面讨论两个内部路由协议(RIP和OSPF)和一个外部路由协议(BGP)。

RIP和OSPF可用于自治系统内部路由表的更新。BGP可用于为连接自治系统的各个路由器进行路由表更新。

图13.2中,路由器R1,R2,R3和R4使用一个内部路由协议和一个外部路由协议。其他路由器只使用内部路由协议。细实线表示使用内部路由协议的各路由器间的通信连接。虚线则表示使用外部路由协议的各路由器间的通信连接。

13.2 RIP(路由信息协议)

路由信息协议是一个用于自治系统内部的所谓“内部路由协议”。它是一种非常简单的协议,基于所谓“距离向量路由”(使用Bellman-Ford算法来计算路由表)技术。在本节中,我们首先研究RIP所应用的“距离向量路由”的原理,然后讨论RIP协议本身。

距离向量路由

在“距离向量路由”中,每个路由器都定期地和其相邻的路由器们共享它们对整个互联网络掌握的情况。理解这一算法的工作原理有三个关键,如下:

1、共享整个自治系统的情况每个路由器都和其相邻的路由器们共享它们对整个互联网

络掌握的情况。开始时,一个路由器掌握的情况可能是很少的,便是它知道多少并不重要;它发送它所知道的所有情况。

2、只和相邻的路由器共享每个路由器只向相邻的路由器发送自己掌握的情况。它通过自

己的所有端口发送自己知道的所有情况。

3、定期地共享每个路由器都定期地(如每隔30秒)向相邻的路由器发送自己掌握的情况。

术语“距离向量”起源于定期信息发送,一个报文包含有成对的列表(V,D),这里的V表示目的地(叫做向量),D是到达那个目的地的距离。注意距离向量是以第一人称报告路由的,即我们把一个路由器送来的通告看成它在说:“我可以到达距离为D的目的地V”。(《计算机网络——习题与解析》P183)

路由表

每个路由器都保持一张路由表,表中为路由器知道的每一个目标网络设置一条记录。该记录由目标网络的IP地址、到达目标的最短距离(用“跳数”表示)和下一跳(为了到达最后目标应将数据包转送给它的下一个路由器)三个部分组成。跳数是指数据包到达最后目标所进入的网络数目。

路由表中还含有诸如该记录最后更新时间等其他信息。示例如下:

RIP更新算法

路由表根据收到的RIP响应报文(message)进行更新。以下是RIP所使用的更新算法:

接收:一个RIP响应报文

1.为每个advertised(被发布)的目标增加一个跳数值;

2.对每个advertised的目标重复以下步骤:

1.如果(目标不在路由表中)

1.将advertised的信息添加到路由表中。

2.否则

1.如果(下一跳字段相同)

1.用advertised的记录替换表中的记录

2.否则

1.如果(advertised跳数小于表中的跳数)

1.把它加到路由表中

2.否则

2.什么都不做

3.返回

在图13.3中,一个路由器从路由器C处收到一个RIP报文。该报文列出了目标网络及其相应的跳数。要求更新算法,第一步是将跳数加1,然后将这个更新了的RIP数据包与原来的路由表比较。结果是产生了一个使用到达每个目标最新跳数的路由表。对Net1,因为没有新信息,所以Net1的记录保持不变。

对Net2,表中的信息和报文中的信息确定是同一个“下一跳”(路由器C)。虽然路由表中的跳数(2)小于报文中的跳数(5),按算法还是选择了从报文中接收来的跳数,因为原始的值来自路由器C。这个值现在无效了,因为路由器C正在宣告一个新值。

Net3是一个新增的目标。对Net6,RIP数据包含有一个较低的跳数,于是该值出现在新路由表中。Net8和Net9保留原来的值,因为报文中对应的跳数并无任何改进。

路由表的初始化

将一台路由器刚加入到网络中时,它使用自己的配置文件来初始化自己的路由表。此路由表只含有直接连接的网络和跳数(初始值均为1)。“下一跳”字段则为空白。图13.4表示了一个小自治系统中各初始的路由表。

更新路由表

每个路由表都使用上述的RIP更新算法,根据所接收的RIP报文进行更新。图13.5表示了上面那个自治系统的最新路由表。

RIP报文格式

重复

·命令(8位)规定报文类型:请求(1)响应(2)

·版本(8位)规定RIP版本,此处为版本1(还有版本2)

相关主题