TCP/IP 协议族 - 单播路由选择协议 笔记

Apr 28, 2016


引言

静态路由表还是动态路由表

静态路由表是人工设置的表项,但是如果链路出现故障时,就全完了。所以现在一般是动态路由表。

路由选择协议

分为域内路由选择域间路由选择

域内和域间路由选择

因为互联网太庞大,仅使用一种路由选择协议还无法处理所有路由器的路由表任务,因此,互联网需要划分成多个自治系统。 在自治系统内部的路由选择称为域内路由选择

域内路由选择协议包括:

  • 距离向量(RIP)
  • 链路状态(OSPF)

域间:

  • 路径向量(BGP)

距离向量路由选择

Bellman-Ford 算法

看图论。

距离向量路由选择算法

当一个记录到达是:

  1. 如果相应的表项找到了,需要分两种情况:
  • 如果这个记录的代价加上 1 之后小于路由表中的代价,修改。
  • 如果下一跳是相同的,说明有一部分网络发生变化,就算距离变大也不能忽略这个数值,修改。
  1. 如果没有表项,添加。

计数到无穷大

考虑这么一种情况: A ——– B ——— C

如果 B 和 C 之间的网络断了,B 能马上反馈给 A,那么什么事没有。

如果 A 在收到 B 反馈之前发送了自己的路由表,B 收到这个更新,以为 A 找到了一条通向 C 的路,就更新了,然后发给 A,A 又以为 B 周围的环境变化了,就更新了这条线路,然后又发给 B,直到最后无穷大。

解决办法

  1. 定义无穷大。把无穷大定义为 16.
  2. 分割范围。只发送路由表的一部分。比如结点 B 认为到达 C 的路径要经过 A,就不要往 A 发了,因为 A 已经知道了。
  3. 用分割范围的话,当 A 收到 B 给他的,删除了 C 的路由表时,A 不知道是因为分割范围而删了,还是真的是到不了了,这时候就要使用毒性逆转策略。B 仍然可以通知 A 信息,不过把距离标为 16.

三结点的不稳定性

假设 A 发现到达 X 没路了,就发送给 B 和 C,而发送给 C 的包丢了,C 还一直以为到 X 有路。过一段时间,C 发送自己的路由表,然后骗了 B,B 再发路由表,就骗了 A。

RIP

报文格式

请求和响应

计时器

定期计时器

该计时器控制更新报文的定期发送,一般使用 25~35 之间的一个随机数,为了避免互联网过载。

截止期计时器

该计时器管理路由的有效性,长度为 180s。如果 180s 内没更新路由,就标记为 16.

无用信息收集计时器

当一条路由信息变为无效时,并不马上清除路由,而是保留 120s,之后才删除。 这是为了让邻站在某个路由被彻底清除之前了解该路由是无效的。

RIP

链路状态选择

  1. 每个结点创建一个有关链路状态的分组,成为 LSP。
  2. 洪泛。
  3. 为每个结点形成一个最短路径树
  4. 基于这个树形成路由表。

OSPF

开放最短路径优先,是一种基于链路状态路由选择的域内路由选择协议。

区域

它把一个自治系统划分为若干区域,在一个区域内使用洪泛法传送路由选择信息。在一个区域的边界,有特殊的路由器称为区域边界路由器,它们把有关本区域的信息汇总起来,发送到其他区域。

BGP

边界网关协议,是一个使用路径向量路由选择的域间路由选择协议。

这两个协议的具体部分就先跳过了,书上讲的比较复杂。