【TCP/IP详解 卷一:协议】第十章 动态选路协议

更为详细的RIP博客解析:

RIP理论

距离向量算法的简介:

RIP协议V-D算法的介绍

10.1 引言

静态选路修改路由表的三种方法

  • (1)主机设置时,默认的路由表项
  • (2)ICMP重定向报文(默认路由错误)
  • (3)route命令

在上述方法都不成功的情况下,使用动态选路。

10.2 动态选路

当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。

要点

  • 动态选路 用 选路策略(由路由守护程序执行) 影响路由表的表项。
  • 路由守护程序 决定了 把哪些路由 增添到路由表中 或者 删除。
  • 路由器之间通信的方法:动态选路协议。
  • 动态选路协议 运行在 路由守护程序。

在 路由守护程序 上运行的 动态选路协议 中,最重要的是 IGP协议(Interior Gateway Protocol),即内部网关协议。

动态选路协议 有很多种,比如 IGP 和 EGP。

Internet 是以一组自治系统(AS)的方式组织的。每个自治系统可以选择 在该自治系统下(即 同一自治系统下) 各个路由器之间的 动态选路协议。这种协议(自治系统选择的,在其内部执行的) 称为 内部网关协议(IGP) 或者叫做 域内选路协议。

  • 最常使用的 IGP 是 选路信息协议 RIP。 一种新的 IGP 是 开放最短路径优先 OSPF协议,它正在逐步取代 RIP。还有一种比较老的,以及被取代的 IGP:HELLO。

不同自治系统之间 路由器上 运行的 动态选路协议 是 外部网关协议(EGP) 或者是 域内选路协议 中的 分隔选路协议。

  • 边界网关协议(BGP) 意在取代 EGP。

10.3 Unix选路守护程序

Unix系统上常常运行名为 routed 路由守护程序。另一个程序是 gated,动态路由协议 IGP 和 EGP,都支持它。

10.4 RIP:选路信息协议 用于路由器之间的通信

摘:RIP(Routing Information Protocol 路由信息协议)是一种简单的IGP。RIP是一个国际标准协议,所有的路由器厂商都支持它。RIP是 应用层协议 工作在 UDP的520端口 上,所有的 RIP数据包的源端口 和 目的端口的端口号 都是520。RIP 使用 距离矢量算法,当数据包通过一个路由器是一跳。RIP初始化时会从每个参与工作的接口上发送请求报文,该数据包向所有的RIP路由器请求一份对方完整的路由表,该请求以广播或点到点的形式发送到直连路由器。

10.4.1 RIP报文格式

【TCP/IP详解 卷一:协议】第十章 动态选路协议

命令字段:1 为请求,表示要求其他系统发送全部或部分路由表。2为应答,包含发送者全部或部分路由表。3和4舍弃不用。5 为轮询,6为轮询表项。

版本字段:通常为1,第二版 RIP为2。

度量:RIP的度量以跳计算。

RIP 报文最多可以通告25条路由。上限25 保证总长度为 25 × 20 + 4 = 504 < 512 bit。因此,发送整个路由表,需要多个RIP报文。

10.4.3 度量

RIP 所使用的度量是以跳(hop)来计数的。

如果相邻路由器通告它与其他网络路由的跳数为1,那么我们与那个网络的度量就是2。

所有直接相连接口的跳数为1。

最大的跳数为15。这意味着 RIP 只能在 主机间最大跳数值为15的AS 内使用。

跳数为16,代表无穷大,意味着没有到达的路由。

10.4.2 正常运行

(1)初始化:启动一个路由守护程序的时候,它先判断启动了哪些接口,并在接口上发送一个请求报文,要求其他路由器发送完整路由表。

  • 如果是点对点链路 那么该请求 就是发送给其他终点的。
  • 如果网络支持广播的话,那么这种请求就是以广播形式发送的。
  • 之前有提到,目的UDP端口号为520,这是其他路由器的路由守护程序端口号。

(2)接收到请求:

如果是刚才提到的特殊请求(要求发送路由表),那么路由器就将完整的路由表发送给请求者。

如果不是,处理请求中的每一个表项:

  • 如果在自己的路由表中发现 某一个表项指明的路由,那么就将度量指定为我们的值。
  • 如果没有发现,指定为16。

通常来说,在主机设置的过程中,就已经计算好各个路由的度量了。

(3)接收到响应:使响应生效,根据响应报文中的度量,可能会更新路由表。

(4)定期路由更新:每过30s,所有或者部分路由器 会把 它的完整路由表 发送给相邻路由器。可以是广播形式的(比如在以太网上面)。或者是发送给点对点链路的其他终点的。

10.4.4 问题

(1)RIP无法区分非0部分是一个子网号,还是一个主机地址。

(2)在链路或者路由器发送故障的时候,需要很长的一段时间才能稳定下来。

(3)采用跳数作为度量,最大跳数为15,限制了可以使用RIP的网络的大小。

包括RIP在内的V-D算法路径刷新协议,都有一个严重的缺陷,即“慢收敛”(slow convergence)问题,又叫“计数到无穷”(count to infinity)。如果出现环路,直到路径长度达到16,也就是说要经过7番来回(至少30×7秒),路径回路才能被解除,这就是所谓的慢收敛问题。

解决方法:

主要的解决方法有水平分割(split horizon)法和带触发更新的毒性逆转 (Posion Reverse with Triggered updates) 法。水平分割法的原理是:当网关从某个网络接口发送RIP路径刷新报文时,其中不能包含从该接口获得的路径信息。毒性逆转法的原理是:某路径崩溃后,最早广播此路径的网关将原路径继续保存在若干刷新报文中,但是指明路径为无限长。为了加强毒性逆转的效果,最好同时使用触发更新技术:一旦检测到路径崩溃,立即广播路径刷新报文,而不必等待下一个广播周期。

路由环路:百度百科

10.5 RIP 版本2

RIP-2 对 RIP 的定义进行了扩充,这些扩充并不改变协议本身,而是利用上面RIP报文格式中的 标注为“必须为0” 的协议来传递一些额外的东西。如果RIP协议 忽略这些必须为0的字段,那么RIP 和 RIP-2 可以互相操作。

【TCP/IP详解 卷一:协议】第十章 动态选路协议

  • 版本号为2。
  • 选路域:是一个选路守护程序的标识符,它指出了这个数据报的所有者。
  • 选路标记:支持外部网关协议。
  • 每个表项的子网掩码 应用于相应的IP地址上。
  • 下一站IP地址指明发往目的IP地址的报文应该发往哪里,该字段为0 说明 发往目的地址的报文 应该 发送给 发送RIP报文的系统。
  • RIP-2 提供了一种简单的认证机制。指定一个明文口令。
  • RIP-2 除了广播,还支持多播。

关于RIP-2和RIP的区别,RIP的防环机制,RIPv1 RIPv2 的接收及发送机制,可以参考本篇随笔开头给出的《RIP理论》。

10.6 OSPF 开放最短路径优先

OSPF 是另外的一种 内部网关协议(IGP)。克服了RIP的所有限制。

RIP:采用距离向量法,而 OSPF 采用链路状态协议:路由器不与邻站交换距离信息。每个路由器主动的测试和邻站相连链路的状态,并将这些信息发送给它的其他邻站,而邻站将这些信息传播出去。每个路由器接收这些信息,建立起完整的路由表。>

链路状态协议 相比 距离向量协议 收敛的更快。收敛的意思是,在路由发生变化的时候,比如路由器关闭或者链路故障的时候,可以稳定下来。RIP处理 路由环路 的速度有点慢,也侧面说明了这一点。

OSPF 直接使用 IP,并不使用 TCP 或者 UDP。

其他还有一些优点,参见教材P103。其实根据 RIP的缺点就能够大致的推出 OSPF 的优点。

附:RIP的缺点

RIP的缺点:
1.仅以跳数作为度量值,常常不能计算出最优路径。
2.度量值以16跳为上限,不适合于大的网络。
3.安全性差,接受来自任何设备的路由更新,容易受到恶意的RIP欺骗。(单指RIPv1,RIPv2有密码验证机制)
4.不支持VLSM。(RIP采用子网掩码恢复机制,并不能解决这个问题)
5.收敛慢,RIP采用周期性的更新而不是触发更新。(如抑制计时器也增加了收敛时间)
6.带宽消耗大。RIP需要大量的信息交换:一方面,每个更新报文就每一条路由都包含一个条目,更新报文的大
小相当于一个路由表(其条目数与网间网络数成正比),而且其中的许多条目都是与当前路径刷新无关的;另一
方面,所有网络都参与定期交换信息,要交换的信息量极大。

10.7 BGP 边界网关协议

是一种 外部网关协议,意在取代老的 EGP。

BGP 与其他BGP系统之间交换网络可到达信息(包括数据到达网络所必须经过的 自治系统AS 中的 所有路径)。根据这些信息,构成一幅自治系统连接图。然后根据连接图删除选路环,制定选路策略。

章节还介绍了一些其他的内容:本地流量(信宿IP地址 或者 信源IP地址 所指定的主机在该自治系统中) 和 通过流量。三种自治系统。

BGP 允许使用基于策略的选路。由 自治系统管理员 制订策略,并且 通过配置文件 将策略指定给 BGP。

BGP 与 RIP 和 OSPF 不同的地方在于:选择 TCP 作为传输层协议。

BGP 是一个 距离向量协议。

10.8 CIDR 无类型域间选路

CIDR 是一个防止 Internet 路由表膨胀 的方法,它也称为超网。

基本观点是,采用一种 分配多个IP地址 的方法,使他能够将路由表中的许多表项 总和 成更少的数目。

选路决策 基于 32 bit 的 IP地址和 32 bit 的掩码操作,不管 IP地址 是 A类 还是 B类 还是其他类。

路由表 和 路由算法 必须拓展成为 根据 32bit IP地址 和 32 bit 掩码 做出路由选择

"IP地址有“类”的概念,/8掩码是A类,/16掩码是B类,/24掩码是C类等等。但是/12,/18,/25呢?这就是无类的概念了,CIDR的作用就是支持IP地址的无类规划,把IP的网段规划成更细的方式来表示,这样可以有效的节约IP地址的使用和方便管理。"

2016/8/1

这一块的内容较为晦涩,大概写了一个树形图在外面,归纳一下这几个协议的关系。

目的:改变路由表项

(1)分成静态路由(三种) 和 动态路由

(2)动态路由:路由守护程序 将 选路策略 添加到 路由表项。
* 路由守护程序 运行 动态选路协议(用于路由器之间交流),动态选路协议 反馈信息(度量)到 路由守护程序。 (3)动态选路协议:内部 IGP,外部 EGP,外部 BGP(取代 EGP),新 CIDR。 (4)内部IGP:最主要的 RIP,老的被淘汰的 HELLO,新的 OSPF(取代 RIP)。
上一篇:为什么选择使用Spring Cloud而放弃了Dubbo


下一篇:【Spring源码分析】配置文件读取流程