路由选择协议
因特网是全球最大的互联网,它所采取的路由选择协议具有以下三个主要特点:
-
自适应:因特网采用动态路由选择,能较好地适应网络状态的变化。
-
分布式:因特网中的各路由器通过相互间的信息交互,共同完成路由信息的获取和更新。
-
分层次:将整个因特网划分为许多较小的自治系统(AutonomousSystem,AS)在自治系统内部(域内路由选择)和外部(域间路由选择)采用不同类别的路由选择协议,分别进行路由选择。
-
自治系统内部使用内部网关协议
IGP
,自治系统之间使用外部网关协议EGP
-
外部网关协议
EGP
和内部网关协议IGP
只是路由选择协议的分类名称,而不是具体的路由选择协议。 -
外部网关协议和内部网关协议名称中使用的是“网关”这个名词,是因为在因特网早期的
RFC
文档中,没有使用“路由器”而使用的是“网关”这一名词。
动态路由协议
动态路由协议分为距离矢量路由协议和链路状态路由协议。
-
距离矢量路由协议(Distance Vector Routing Protocols):
- 通过向相邻路由器定期通告自己的路由表,逐跳传递路由信息。
- 典型协议:RIP(Routing Information Protocol)。
- 优点:实现简单。
- 缺点:收敛慢,容易产生路由环。
-
链路状态路由协议(Link State Routing Protocols):
- 每个路由器通过广播链路状态信息构建整个网络的拓扑图,使用
Dijkstra
算法计算最短路径。 - 典型协议:OSPF(Open Shortest Path First)、IS-IS(Intermediate System to Intermediate System)。
- 优点:收敛快,路由精确。
- 缺点:实现复杂,资源消耗大。
- 每个路由器通过广播链路状态信息构建整个网络的拓扑图,使用
-
路径矢量路由协议(Path Vector Routing Protocols):
- 主要用于大型互联网络(如互联网),通过通告路径信息,避免路由环。
- 典型协议:BGP(Border Gateway Protocol)。
- 优点:适用于大规模网络,避免路由环。
- 缺点:实现复杂,路由策略灵活。
路由信息协议 RIP
路由信息协议(Routing Information Protocol,RIP),是一种基于距离矢量算法的动态路由协议,主要用于在计算机网络中选择最佳路径,并确保数据包能够正确地从源地址传输到目的地址。
RIP 是内部网关协议中最先得到广泛使用的协议之一,其相关标准文档为 [RFC 1058]
。
-
RIP
要求自治系统AS
内的每一个路由器,都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为距离向量(Distance-Vector,D-V)。 -
RIP 使用跳数(HopCount)作为度量(Metric)来衡量到达目的网络的距离
-
RIP 将路由器到直连网络的距离定义为1.
-
RIP 将路由器到非直连网络的距离定义为所经过的路由器数加1。
-
RIP 允许一条路径最多只能包含15个路由器,距离等于16时相当于不可达。因此RIP只适用于小型互联网。
-
-
RIP 认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由
-
当到达同一目的网络有多条 RIP 距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路径上。
有些厂商的路由器并没有严格按照 RIP 标准文档的规定来实现 RIP。例如思科路由器中的RIP,将路由器到直连网络的距离定义为0,但这并不影响 RIP 的正常运行。
RIP 的重要特点
- 和谁交换信息:仅和相邻路由器交换信息。
-
交换什么信息:路由器自己的路由表,即本路由器到所在自治系统 AS 中各网络的最短 RIP 距离,以及到各网络应经过的下一跳路由器。
-
何时交换信息:周期性交换(例如,每隔约30秒),为了加快RIP的收敛速度,当网络拓扑发生变化时路由器要及时向相邻路由器通告拓扑变化后的路由信息,这称为触发更新。
RIP的基本工作过程
-
路由器刚开始工作时,只知道自己到直连网络的RIP距离为1。
-
每个路由器仅和相邻路由器周期性地交换并更新路由信息。
-
若干次交换和更新后,每个路由器都知道到达本自治系统AS内各网络的最短距离和下一跳路由器,称为收敛。
RIP的距离向量算法
RIP
(Routing Information Protocol)是一种基于距离向量(Distance-Vector)算法的路由协议,主要用于较小的自治系统(AS)内的路由信息交换。RIP
协议使用跳数(hop count)作为路由的度量标准,即数据包从一个网络节点到另一个网络节点所经过的路由器数量。
路由更新:
-
RIP 路由器会周期性地向相邻的路由器发送整个路由表(通常是每30秒一次)。这个过程被称为
路由更新
。 -
若 180秒(默认)没有收到某条路由条目的更新报文,则把该路由条目标记为无效(即把RIP距离设置为 16,表示不可达),若再过一段时间(如120秒)还没有收到该路由条目的更新报文,则将该路由条目从路由表中删除。
-
路由器在发送路由表之前,会将自己的跳数加1,然后将其发送出去。这样,接收到的路由器就能知道到达该网络的路径长度(跳数)。
更新原则:
-
相同的下一跳,最新消息,要更新到达目的网络
-
发现了新的网络,添加
-
到达目的网络,不同的下一跳,新路由优势(度量值更小),要更新
-
到达目的网络,不同的下一跳,新路由劣势(度量值更大),不更新
-
到达目的网络,不同的下一跳,RIP 距离相等,可以等价负载均衡,添加
计算最佳路径:
-
当路由器接收到邻居发来的路由更新时,它会比较新路由与现有路由的度量值(跳数)。
-
如果新路由的度量值更小(即跳数更少),或者当前路由不可达(跳数为无穷大),那么路由器就会更新其路由表,将新路由作为到达该目的地的最佳路径。
-
如果新路由的度量值大于或等于现有路由的度量值,则忽略新路由。
RIP存在的问题
-
收敛速度慢:
-
因为RIP依赖于周期性的路由更新(通常为每30秒一次),而不是立即响应网络变化。RIP协议在检测到网络故障时,需要经过相对较长的时间才能将此信息传送到所有的路由器,并且可能导致故障消息被覆盖。
-
当网络拓扑发生变化时,RIP的收敛时间经常大于5分钟,这在大型或动态变化的网络中可能导致路由选择的不及时和次优。
-
对于规模较大的自治系统 AS,应当使用
OSPF
协议。
-
-
路由环路:由于 RIP 的收敛速度慢,会导致路由环路问题(也称RIP距离无穷计数问题)。这是距离向量算法的一个固有问题。可以采取以下多种措施减少出现该问题的概率或减小该问题带来的危害:
-
限制最大RIP距离为15(16表示不可达)
-
触发更新:当路由表发生变化时就立即发送路由更新报文,而不仅是周期性发送
-
路由毒逆(Split Horizon with Poison Reverse):当路由器向某个接口发送路由更新时,它会从该接口的路由表中删除该路由的条目(即不向发送者发送自己的路由)。
同时,如果路由器从某个接口学习到了一条路由,但后来又从其他接口收到了关于该路由的更新,且跳数增加,那么路由器会向原始接口发送一个跳数为16(即不可达)的路由更新,以告知邻居该路由已失效。 -
水平分割(路由毒逆的简化):让路由器记录收到某个特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送。
-
使用上述措施仍无法彻底解决问题。因为在距离向量算法中,每个路由器都缺少到目的网络整个路径的完整信息,无法判断所选的路由是否出现了环路。
-
跳数限制:RIP 的跳数限制为 15 跳。如果某个网络的跳数超过这个限制,RIP 会认为该网络不可达,从而限制使用 RIP 的自治系统 AS 的规模。
-
开销问题:相邻路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也随之增大。
RIP版本和相关报文的封装
现在较新的 RIP 版本是1998年11月公布的 RIP2 [RFC 2453]
,已经成为因特网标准协议。与 RIP1
相比,RIP2
可以支持变长子网掩码和CIDR。另外,RIP2
还提供简单的鉴别过程并支持多播。
RIP 相关报文使用运输层的用户数据报协议UDP进行封装,使用的UDP端口号为520:
- 从RIP报文封装的角度看,RIP 属于 TCP/IP 体系结构的应用层
- 但 RIP 的核心功能是路由选择,这属于 TCP/IP 体系结构的网际层(网络层)