动态路由
{Back to Index}

Table of Contents

1 动态路由的特点 1

  • 自适应

    自动适应网络状态的变化

  • 分布式

    路由器之间交换彼此信息

  • 分层次

    将网络划分为多个较小的自治系统 AS (Autonomous System) ,例如 ISP 就是一种 AS ,在 AS 内部和之间分别进行路由选择。

    as-1.png

    Figure 1: 自治系统内/间的路由

    as-2.png

    Figure 2: 自治系统内/间的路由协议

as-3.png

Figure 3: 各自治系统内部使用路由协议可以不同

2 路由器结构

structure.png

Figure 4: 路由器结构

3 常见路由选择协议

protocol.png

Figure 5: 常见路由选择协议

3.1 RIP 2

RIP 是一种基于 距离矢量 算法的协议,使用跳数作为度量 (Metric) 来衡量到达目的网络的距离。

  • 默认情况下,路由器到与它直接相连网络的跳数为 0 ,因此距离为 0
  • 路由器到与它非直连网络的距离等于中间所经过路由器的数量
  • 距离的取值范围是 0~15 ,大于等于 16 的距离被定义为无穷大,即目的网络不可达
  • RIP 协议 无法从根本上避免路由环路问题

rip_intro.png

Figure 6: RIP 协议

3.1.1 基本工作原理

  • 启动了 RIP 的接口将发送 RIP 请求报文,收到 RIP 请求报文的路由器,若已经启动了 RIP ,则会发回 RIP 响应报文
  • RIP 报文封装在 UDP 用户数据报中,发送和接收端口号都为 520
  • 封装有 RIP 报文的 UDP 用户数据报封装在 IP 数据报中,目的 IP 为 255.255.255.255

rip_basic.png

Figure 7: RIP 基本工作原理示意图

3.1.2 路由条目更新规则

  • 若收到的某路由条目不存在于路由表中,则直接在路由表中添加该路由条目,即发现了新网络
  • 若路由表中已有到达相同目的网络的路由表条目,则按以下两种情况作相应处理:
    • 若来自相同下一跳路由器,则进行更新,因为这是到达该目的网络且下一跳相同的最新路由信息
    • 若来自不同下一跳路由器,则需要比较距离:
      • 若新路由条目中距离小于原路由条目中的距离,则进行更新,因为新路由更有优势
      • 若新路由条目中距离等于原路由条目中的距离,则添加新路由条目,以便 等价负载均衡
      • 若新路由条目中距离大于原路由条目中的距离,则不更新,因为新路由没有优势

rip_rule.png

Figure 8: 路由条目更新规则举例

3.2 OSPF 3

  • OSPF 是基于 链路状态 的算法
  • OSPF 从算法上保证了 不会产生路由环路
  • OSPF 不限制网络规模,更新效率高,收敛速度快
  • OSPF 分组使用 IP 数据报进行封装,协议号为 89 ,组播地址为 224.0.0.5 和 224.0.0.6
  • OSPF 默认管理距离为 110 ,可手动修改

3.2.1 邻居关系

OSPF 路由器之间通过 Hello 分组建立和维护邻居关系。

  • Hello 分组发往组播地址 224.0.0.5
  • 发送周期为 10 秒
  • 40 秒未收到来自邻居路由器的 Hello 分组,则认为该邻居路由器不可达

ospf_neighbor.png

Figure 9: 邻居表

3.2.2 链路状态通告(LSA)

每个路由器都会产生链路状态通告 LSA ,LSA 中包含以下内容:

  • 直连网络的链路状态信息
  • 邻居路由器的链路状态信息

LSA 被封装在链路状态更新分组 LSU 中,并采用洪泛法发送 LSU 。每个路由器都有一个链路状态数据库 LSDB ,用于存储 LSA ,通过各路由器洪泛发送封装有自己 LSA 的 LSU 分组, 各路由器的 LSDB 最终将达到一致

ospf_lsa.png

Figure 10: LSA 内容

ospf_spf.png

Figure 11: 基于 LSDB 进行 SPF 计算

3.2.3 OSPF 五种分组类型

ospf_kind.png

Figure 12: 分组类型及作用

3.2.4 减少邻居关系数量提高性能

  • 选举指定路由器 DR 和备用的指定路由器 BDR
  • 所有的非 DR/BDR 只与 DR/BDR 建立邻居关系
  • 非 DR/BDR 之间通过 DR/BDR 交换信息

ospf_neighbor_opt.png

Figure 13: 多路访问网络中路由器邻居关系的优化

3.2.5 划分区域

为了使 OSPF 用于很大规模的网络,OSPF 支持划分区域的机制。

如下图所示的网络拓扑,图中路由器都属于同一个自治系统。在该自治系统内,所有路由器执行基于 OSPF 的内部网关协议。

OSPF 可以将该自治系统划分为四个更小的区域,每个区域都有一个 32 位的 区域标识符 (可用点分十进制表示)。 主干区域的标识符必须为 0 (0.0.0.0) ,用于连通其他区域。划分区域的好处在于将洪泛控制在一个较小的范围,而不是整个自治系统,以减少网络上的通信量。

如果路由器的所有接口都在同一区域内,该路由器称为 区域内路由器 。为了使本区域和其他区域连通,每个区域都会有一个 区域边界路由器 ,它的一个接口连接自身区域,另一个接口连接主干区域。主干区域内的路由器称为 主干路由器 ,在主干区域内,要有一个路由器用于与其他自治系统交换路由信息,这个路由器称为 自治系统边界路由器

图中的路由器 R3 会向本自治系统发送区域 0, 2, 3 的 LSA ,向主干区域发送区域 1 的 LSA 。

ospf_domains.png

Figure 14: OSPF 划分区域

3.3 BGP 4

BGP 存在的意义在于:

  • 在不同 AS 内,度量路由的“代价” (距离,贷款,费用等)可能不同,因此对于 AS 之间的路由选择,使用“代价”作为度量来寻找最佳路由就显得不够公平
  • AS 之间的路由必须考虑相关策略因素,如政治,经济,安全等
  • BGP 的原则只是 尽量 寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由

3.3.1 BGP 发言人

  • 在配置 BGP 时,每个 AS 的管理员要选择至少一个路由器(通常是边界路由器)作为该 AS 的 BGP 发言人
  • 不同 AS 的 BGP 发言人要交换路由信息,首先要 建立 TCP 连接 ,端口号为 179
    • 在此 TCP 连接上交换 BGP 报文以建立 BGP 会话
    • 利用 BGP 会话交换路由信息(如增加新的路由,撤销过时路由,以及报告出错的情况)
  • BGP 发言人除了运行 BGP 外,还必须运行自己所在 AS 所使用的的 IGP ,如 OSPF 或 RIP
  • BGP 发言人交换网络可达性信息(要达到某个网络所要经过的一系列自治系统)
  • 当 BGP 发言人相互交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由,即 构造出树形结构,不存在回路的自治系统连通图

bgp_speaker.png

Figure 15: BGP 发言人

bgp_speaker_2.png

Figure 16: BGP 适用于多级结构的互联网

Footnotes:

Author: Hao Ruan (ruanhao1116@gmail.com)

Created: 2020-11-15 Sun 16:25

Updated: 2021-08-17 Tue 11:23

Emacs 27.1 (Org mode 9.3)