在 AS 自治系统内部使用内部网关协议,在多个 AS 自治系统之间使用外部网关协议。

内部网关协议 IGP

路由信息协议 RIP

  • RIP 要求自治系统 AS 内的每一个路由器都要维护从它自己到 AS 内的其他每一个网络的距离记录。这是一组距离,称为“距离向量 D-V”。
  • RIP 是应用层协议,它在传输层使用 UDP
  • RIP 使用跳数作为度量来衡量到达目的网络的距离。
    • 路由器到直连网络的距离为 1
    • 路由器到非直连网络的距离定义为所经过的路由器数+1
    • 距离等于 16 时不可达。因为 RIP 只适用于小型互联网

坏消息传播得慢

RIP 存在“坏消息传播得慢”的问题,又称为路由环路或距离无穷计数问题。

  1. 当路由器 R1 与直连网络 N 断联时,R1 直接设置成 16,通知相邻路由器
  2. R2 计算到 N 的最新距离 L 为在所有邻居中取一个最短的距离然后+1,并不是检测到不可达就直接设置成 16
  3. R1 和 R2 来回通知,距离不断+1,一直到最后距离到 16 时才发现不可达

RIP 的路由表项格式

目的网络距离下一跳

RIP 包含以下三个要点

  1. 和谁交换信息(相邻路由器
  2. 交换什么信息(自己的路由表
  3. 何时交换信息(周期性交换

RIP 的路由条目的更新规则

  1. 路由器发送自己的路由表到相邻路由器的时候,将自己的路由表的每一项的距离+1,下一跳改为自身,然后发送。
  2. 相邻的路由器收到后,按照一定的规则更新自己的路由表:
    1. 到达目的网络,相同的下一跳,是最新的消息,应该更新
    2. 发现了新的网络,添加
    3. 到达目的网络,不同的下一跳,如果新路由更近,就更新
    4. 到达目的网络,不同的下一跳,新旧路由距离一样,则添加,进行等价负载均衡
    5. 到达目的网络,不同的下一跳,新路由更远,则不更新

开放最短路径优先协议 OSPF

“开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。 “最短路径优先”是因为使用了 Dijkstra 最短路径算法。

  • OSPF 是基于链路状态的,使用 SPF 算法计算路由,从算法上保证了不会产生路由环路。
  • OSPF 不限制网络规模,更新效率高,收敛速度快。
  • 链路状态是指路由器都和哪些路由器相邻,以及相应链路的“代价”。
  • OSPF 是网络层协议,直接使用 IP 数据报传送。
  • 每个路由器都有一个链路状态数据库 LSDB(保存全网的拓扑图,全网范围是一致的)
  • OSPF 协议将一个 AS 划分为若干域,有一种特殊的域称为主干区域。域之间通过区域边界路由器互联。
  • AS 中有四类路由器:区域内部路由器、主干路由器、区域边界路由器、自治域边界路由器。

OSPF 的基本工作原理

路由器之间频繁地交换链路状态信息,所有路由器最终都能建立一个链路状态数据库 LSDB,即全网的拓扑结构图。然后每个路由器利用链路状态数据库中的数据,使用 Dijkstra 算法计算自己到达个目的网络地最优路径,构造出自己的路由表。此后,当链路状态发生变化时,每个路由器重新计算到达各目的网络的最优路径,构造出新的路由表。

OSPF 的五种分组类型

  1. 问候分组,用来发现和维持邻站的可达性
  2. 数据库描述分组 DBD,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  3. 链路状态请求分组 LSR,根据自己的 LSDB 中缺少的信息,向对方请求发送某些链路状态项目的详细信息 LSA
  4. 链路状态更新分组 LSU,用洪泛法对全网更新链路状态,它是 OSPF 最核心的部分
  5. 链路状态确认分组 LSACK,对链路更新分组 LSU的确认

两个路由器通常每隔 10 秒要交换一次问候分组,以便知道哪些站可达。若有 40 秒都没有收到某个相邻路由器传来的问候分组,则认为该相邻路由器已不可达,应立即修改链路状态数据库,并重新计算路由表。

外部网关协议 BGP

BGP 只能是力求一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找最佳路由。BGP 采用的是路径向量路由选择协议。BGP 是应用层协议,它是基于 TCP 的。

和内部网关协议不同,BGP 保存一整个路径,不只是下一跳

BGP 的基本工作原理

  1. 在配置 BGP 时,每个 AS 的管理员要选择至少一个路由器作为该自治系统的“BGP 发言人
  2. 不同 AS 的 BGP 发言人要交换路由信息,首先必须建立 TCP 连接,端口号为 179
    1. 在此 TCP 连接上交换 BGP 报文以建立 BGP 会话
    2. 利用 BGP 会话交换路由信息 (例如,增加新的路由、撤销过时的路由以及报告出错的情况等)
    3. BGP 会话的双方彼此称为对方的邻站对等站
  3. BGP 发言人除了运行 BGP 协议外,还必须运行自己所在 AS 的内部网关协议 IGP,例如 RIP 或 OSPF
  4. BGP 发言人交换网络可达性信息
  5. 交换完后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图

BGP 的会话类型

  1. 协议外部会话 eBGP:两个 AS 的边界路由器进行 BGP 会话时
  2. 协议内部会话 iBGP:在同一个 AS 内的路由器进行 BGP 会话时

BGP 的报文类型

  1. 打开报文 OPEN:用来与相邻的 BGP 发言人建立关系初始化通信
  2. 更新报文 UPDATE:用来通告某一路由的信息,以及列出要撤销的多条路由
  3. 保活报文 KEEPALIVE:用来周期性地验证邻站的连通性
  4. 通知报文 NOTIFICATION:用来发送检测到的差错

BGP 的路由选择

按一下优先顺序匹配:

  1. 本地偏好 LOCAL-PREF 值最高的路由要优先选择
  2. 具有 AS 跳数最少的路由
  3. 使用热土豆路由选择算法(根据 内部网关协议 IGP 选择)
  4. 选择路由器中 BGP 标识符数值最小的路由

三种路由协议的比较

协议RIPOSPFBGP
类型内部内部外部
IP 数据报中协议字段的值17896
路由算法距离-向量链路状态路径向量
传递协议UDP (port:520)IPTCP (port:179)
路径选择跳数最少代价最低较好,非最佳
交换结点和本结点相邻的路由器网络中所有路由器和本结点相邻的路由器
交换内容当前本路由器知道的全部信息,即自己的路由表与本路由器相邻的所有路由器的链路状态首次:整个路由表
非首次:有变化的部分