在互联网世界中,夹杂着复杂的 LAN 和 广域网。然而,再复杂的网络结构中,也需要通过合理的路由将数据发送到目标主机。而决定这个路由的,正是路由控制模块。本章旨在详细介绍路由控制以及实现路由控制功能的相关协议。

路由协议名 下一层协议 方式 适用范围 循环检测
RIP 路由信息协议 UDP 距离向量 域内 IGP 不可以
RIP2 UDP 距离向量 域内 IGP 不可以
OSPF 开放式最短路径优先 IP 链路状态 域内 IGP 可以
BGP 边界网关协议 TCP 路径向量 对外连接 EGP 可以

7.1 路由控制的定义

7.1.1 IP 地址与路由控制

  • 路由控制:路由器根据路由表,将收到的数据包中目标主机的 IP 地址与路由控制表比较,得到下一个应该接收的路由器,将数据包转发到该路由器

7.1.2 静态路由与动态路由

  • 静态路由:事先(管理者手工)设置好路由器和主机,并将路由信息固定
    • 缺点:
      • 需要管理者手工设置,每增加一个新的网络,就要将这个网络信息设置到所有的路由器上,管理者负担大
      • 一旦某个路由器发生故障,基本上无法绕过发生故障的节点,只有在管理员手工设置后才能恢复正常
  • 动态路由:让路由协议在运行过程中自动设置路由控制信息
    • 缺点:路由器要定期交换必要的路由控制信息,而与相邻路由器之间忽发消息,会给网络带来一定程度的负荷

7.1.3 动态路由的基础

动态路由会给相邻路由器发送自己已知的网络连接信息,这些信息又想接力一样依次传递给其它路由器,直至整个网络都了解时,路由控制表便制作完成了,IP 数据包也能倍正确转发了
image.png

7.2 路由控制范围

  • 自治系统 AS(Autonomous System) or 路由选择域(Routing Domain):制定自己的路由策略,并以此为准在一个或多个网络群体中采用的小型单位
    • 例子:区域网络、ISP(互联网服务提供商)
    • AS 内部动态路由采用域内路由协议 IGP,AS 之间采用域间路由协议 EGP

image.png

7.2.1 IGP 与 EGP

第 7 章 路由协议 - 图3

  • 路由协议被分为 EGP 和 IGP 两个层析,根据 EGP 在自治系统之间进行进行路由选择,而根据 IGP 在自治系统内部进行主机识别

7.3 路由算法

第 7 章 路由协议 - 图4

7.3.1 距离向量算法

  • 定义:距离向量算法根据 距离(代价)和 方向 决定目标网络和目标主机位置
  • 路由器之间互换目标网络的方向及其距离信息,并以这些信息为基础制作路由控制表
  • 优点:处理上比较简单
  • 缺点:由于只有距离和方向的信息,当网络构造变得分外复杂时,在获得稳定的路由信息(路由收敛)之前需要消耗一定时间,也极易发生路由循环等问题(该算法每个路由器掌握的信息都不同,不容易判断每个路由器上的信息是否正确)

image.png

7.3.2 链路状态算法

  • 定义:链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择
  • 优点:所有路由器都持有相同信息,网络拓扑都相同,因此只要每个路由器尽快与其他路由器同步路由信息,就能使路由信息达到稳定状态,保证每个路由器上的信息正确。因此,即使网络结构变得复杂,每个路由器也能保证正确的路由信息、进行稳定的路由选择
  • 缺点:从网络代理获取路由信息表的过程相当复杂,尤其是在一个规模巨大又复杂的网络结构中,管理和处理代理信息需要高速 CPU 处理能力和大量的内存

image.png

7.3.3 主要路由协议

路由协议名 下一层协议 方式 适用范围 循环检测
RIP 路由信息协议 UDP 距离向量 域内 IGP 不可以
RIP2 UDP 距离向量 域内 IGP 不可以
OSPF 开放式最短路径优先 IP 链路状态 域内 IGP 可以
EGP(特定协议名,不是与 IGP 区分的那个 EGP),现已不用 IP 距离向量 对外连接 EGP 不可以
BGP 边界网关协议 TCP 路径向量 对外连接 EGP 可以

7.4 RIP 路由信息协议

RIP(Routing Information Protoco),路由信息协议,是距离向量型的一种路由协议,广泛应用于 LAN

7.4.1 广播路由控制信息

  • RIP 每 30s 将自己所知道的路由控制信息向全网广播,传给下一跳
  • 已知的网络信息经过下一条后,将当前信息继续广播,逐跳传播
  • 若连续 6 次(180s)未收到路由信息,则关闭连接

image.png

7.4.2 根据距离向量确定路由

  • RIP 根据距离像向量算法决定路径
  • 距离:单位“跳数”,即经过的路由器个数
  • 根据距离向量生成距离向量表,如果针对同一个网络有多条路径,则选择距离较短的,生成路由控制表

image.png

7.4.3 RIP 中路由变更时的处理

  • RIP 的基本行为可归纳为 2 点:

    • 将自己所知道的路由信息定期进行广播
    • 一旦认为网络被断开,数据将无法流过此路由器,其他路由器也就可以得知网络已经断开
  • 无限计数问题:以上两种方式存在无限计数的问题,如下图所示

    • 路由器 A 将网络 A 的连接信息发给路由器 B,路由器 B 有在此基础上 +1 跳发给路由器 A 和 C
    • 此时网络 A 故障,路由器 A 察觉到自己与网络 A 的连接已被断开,但是路由器 A 收到路由器 B 的消息,误认为还能通过路由器 B 发送给 网络 A ,距离 +1 跳发给路由器 B
    • …… 无限计数

image.png

  • 无限计数问题的两种解决方法
    • 最长距离不超过 16。因此即使发生无限计数问题,也可从时间上控制
    • 水平分割:规定路由器不再把所收到的路有消息原路返回给发送端

image.png

  • 但是水平分割对于带有环路的网络是不适用的,无限计数问题任然存在

image.png

  • 2 种解决办法:
    • 毒性逆转:当网络中发生链路被断开时,不是不再发送这个消息,而是将这个无法通信的消息传播出去,即发送一个距离 16 的消息
    • 触发更新:当路由信息发生变化时,不等待 30s,而是立刻发送出去

image.png

  • 然而,即使使用了上述方法,当网络环境复杂,具有众多环路时,路由信息要到达一个稳定的状态是需要花一段时间的,为了解决这个问题,必须明确掌握网络结构,了解究竟哪个链路断开后再进行路由控制。为此,可以采用 OSPF

7.4.3 RIP2

RIP2 与 RIP 的工作机制基本相同,但有几个新特点:

  • 使用多播
    • RIP 中路由器之间采用广播的形式交换路由信息,在 RIP2 中改用多播形式,不仅减少了网络流量,还缩小了对无关主机的影响
  • 支持子网掩码
    • 与 OSPF 类似,RIP2 支持在其交换的路由信息中加入子网掩码信息,而 RIP 不支持
  • 路由选择域
    • 与 OSPF 类似,在同一个网络中可以使用逻辑上独立的多个 RIP
  • 外部路由标志
    • 通常用于把从 BGP 等获得的路由控制信息通过 RIP 传递给 AS 内
  • 身份验证密钥
    • 与OSPF一样,RIP 包中携带密码。只有在自己能识别这个密码时才接受数据,否则忽略这个包

7.5 OSPF 开放式最短路径优先

OSPF(Open Shortest Path First),开放式最短路径优先,是一种链路状态型的路由协议。

  • 由于采用链路状态类型,因此即使网络中有环路,也能进行稳定的路由控制
  • OSPF 支持子网掩码,在 RIP 中无法实现的可变长度子网构造的网络路由控制成为现实
  • 引入“区域”概念,将一个自制网络(AS)划分为若干个更小的范围,可以减少路由协议之间不必要的交换,减少网络流量
  • OSPF 可以针对 IP 首部 中的区分服务(TOS)字段,生成多个路由控制表

7.5.1 OSPF 是链路状态型路由协议

  • 路由器之间交换链路状态生成网络拓扑信息,再根据这个拓扑信息生成路由控制表。每个路由器都掌握完整的网络拓扑信息

image.png
image.png

  • 代价/网络权重:OSPF 为每条链路赋予一个权重,也称代价
  • 路由选择:OSPF 选择权重/代价最小的路径作为最终路由(区别于 RIP,RIP 是选择途经路由器个数最少的路径)

image.png

7.5.2 OSPF 基础知识

  • 相邻路由器:连接到同一个链路的路由器
  • 在简单网络中,相邻路由器之间交换路由信息;在复杂网络中,不需要在所有相邻路由器之间都进行控制信息的交换,而是确定一个指定路由器,以它为中心交换路由信息

  • 5 种不同作用的 OSPF 包 | 类型 | 包名 | 功能 | | —- | —- | —- | | 1 | 问候(HELLO) | 确认相邻路由器、确定指定路由器(确认连接) | | 2 | 数据库描述(Database Description) | 链路状态数据库的摘要信息 | | 3 | 链路状态请求(Link State Request) | 请求从数据库中获取链路状态信息 | | 4 | 链路状态更新(Link Srate Update) | 更新链路状态数据库中的链路状态信息 | | 5 | 链路状态确认应答(Link State Acknowledgement) | 链路状态信息更新的确认应答 |

  • 通过发送问候包确认是否连接

  • 每个路由器为了同步路由控制信息,通过数据库描述包相互发送路由摘要信息和版本信息
  • 路由版本较老,则首先发送一个链路状态请求包,请求路由控制信息
  • 然后由链路状态更新包接收路由状态信息
  • 最后通过链路状态确认包通知大家本地已经接收到路由控制信息

7.5.3 OSPF 工作原理

  • OSPF 根据表示网络结构的链路状态数据库,采用 Dijkstra 算法(最短路径优先算法),生成路由控制表
  • 优点:相比距离向量,上述过程生成的路由控制表更加清晰,不易混淆,还可以有效降低无限循环问题的发生
  • 缺点:当网络规模逐渐增大,最短路径优先算法的处理时间也在变长,对 CPU 和内存的消耗也越大

7.5.4 将区域分层话进行细分管理

  • 起因:上面提到了链路状态型路由协议的一个潜在问题:当网络规模越来越大时,表示链路状态的拓扑数据库也越变越大,路由控制信息的计算也越来越困难。为了减少计算负荷,OSPF 引入了“区域”的概念
  • 区域:将连接在一起的网络和主机划分成小组,使一个自治系统(AS)内有多个区域
    • 主干区域:具有多个区域的自治系统必须有一个主干区域,其他所有区域必须与主干区域相连
    • 边界路由器:连接其他区域与主干区域的路由器
    • 内部路由器:区域内部的路由器
    • 主干路由器:只与主干区域内连接的路由器
    • AS 边界路由器:与外部相连接的路由器
  • 每个区域的路由器都持有本区域网络拓扑的数据库,但只能从区域边界路由器获知区域之外的路径(距离)信息。即,内部路由器只了解区域内部的链路状态信息,并在该信息的基础上计算出路由控制表,有效减少路由控制信息,减轻处理负担

image.png

  • 末端区域:如果一个区域只有一个区域边界路由器,则该称为末端区域,该边界路由器将成为默认路径发送路由信息

image.png

7.6 BGP 边界网关协议

BGP(Border Gateway Protocol),边界网关协议,属于外部网关协议(EGP),连接不同的自治系统。

7.6.1 BGP 与 AS 号

  • AS 编号:将每个自治系统分配一个 16 比特的 AS 编号,BGP 根据 AS 编号进行相应的路由控制

image.png

7.6.2 BGP 是路径向量协议

  • BGP 扬声器:根据 BGP 交换路由控制信息的路由器
  • AS 路径信息访问列表:BGP 中数据包到达目标网络时,会生成的一个中途经过所有 AS 的编号列表
    • 若针对同一个目标地址有多条路径,BGP 会从 AS 路径信息访问列表中选择一个较短的路由
  • 路由选择的度量标准: | 协议名 | 路由选择的度量标准 | | —- | —- | | RIP | 路由器个数(网络跳数) | | OSPF | 每个子网的成本/权重/代价(网络带宽) | | BGP | AS (一般选择 AS 数最少的路径,但要遵循各个 AS 之间签订的合约进行更细粒度的路由选择) |

  • BGP 是路径向量型协议

    • AS 路径信息访问列表中不仅包含转发方向和距离,还包含了途径所有 AS 的编号,所以 BGP 不是一个距离向量型协议
    • BGP 对网络构造仅用一元化表示,因此也不是链路状态型路由
    • 优点:
      • 路径向量型协议能检测出环路,避免了无限计数的问题,令网络更容易进入一个稳定的状态
      • 还支持策略路由,即在发送数据包时,可以选择或指定所要通过的 AS

image.png

7.7 MPLS 多协议标记交换技术

MLPS(Multi Protocol Label Switching),多协议标记交换技术。

转发 IP 数据包的过程中,除了使用路由技术外,还是用标记交换技术

  • 路由技术基于 IP 地址中最长匹配原则进行转发
  • 标记交换技术对每个 IP 包设定一个叫作“标记”的值,根据这个标记“标记”进行转发

image.png

  • MPLS 的“标记”不像 MAC 地址直接对应到硬件设备,因此不需要具备以太网或 ATM 等数据链路层协议的作用,而只需关注它与下面一层 IP 层之间的功能或协议即可
  • 基于标记的转发通常无法在路由器上进行,因此 MPLS 无法被整个互联网采用,转发处理方式也与 IP 网有所不同

image.png

7.7.1 MPLS 的网络基本动作

  • LSR(Label Switching Router),标记交换路由器:MPLS 网络中实现 MPLS 功能的路由器
  • LER(Label Edge Router),标记边缘路由器:MPLS 在 LER 上对数据包进行追加标记和删除标记的操作

  • MPLS 三个基本的转发操作:Push、Swap、Pop

image.png

  • LSP(Label Switch Path),标记交换路径
    • 点对点 LSP:一对一连接
    • 合并 LSP:一对多绑定
  • 扩展 LSP 的两种方式:
    • 采用标记分配协议 LDP:通过 LSR 向自己邻接的 LSR 分配 MPLS 标记
    • 由路由协议载着标记信息进行交互
  • LSP 属于单方向通路,若要双向通信则需要两个 LSP

image.png

7.7.2 MPLS 的优点

  • 转发速度快
    • MPLS 采用固定长度的标记信息,使得处理更简单,可通过高效的硬件实现转发。而路由器转发 IP 数据包时,首先要对目标地址和路由控制表中可变长的网络地址进行比较,再从中选择最长匹配的路径进行转发
    • MPLS 只需设置必要的基础信息即可,所需处理的数据量也大幅减少。而互联网中的主干路由器需要保存大量的路由表才能进行处理
    • 除了 IPv4、IPv6,MPLS 针对其他协议仍能实现告诉转发
  • 利用标记生成虚拟路径,并在虚拟路径上实现 IP 等数据包的通信
    • 因此,基于尽力而为的 IP 网也能基于 MPLS 提高通信质量控制、带宽保证和 VPN 等功能