路由协议分类
路由协议是用于路由器之间交换路由信息的协议。 路由协议由一组处理进程、算法和消息组成,用于交换路由信息,并将其选择的最佳路径添加到路由表中。动态路由协议的用途包括:
发现远程网络
维护最新路由信息
选择通往目的网络的最佳路径
当前路径无法再使用时能够找出新的最佳路径
可以按路由协议的特点将其分为不同的类别。具体而言,路由协议可以按照以下内容分类:
目的 - 内部网关协议 (IGP) 或外部网关协议 (EGP)
操作 - 距离矢量协议、链路状态协议或路径矢量协议
行为 - 有类(传统)或无类协议
例如,IPv4 路由协议分类如下:
RIPv1(传统)- IGP,距离矢量,有类协议
IGRP(传统)- IGP,距离矢量,由思科(12.2 IOS 及后续版本已弃用)开发的有类协议
RIPv2 - IGP,距离矢量,无类协议
EIGRP - IGP,距离矢量,由思科开发的无类协议
OSPF - IGP,链路状态,无类协议
IS-IS - IGP,链路状态,无类协议
BGP - EGP,路径矢量,无类协议
有类路由协议 RIPv1 和 IGRP 是传统协议,仅用于旧的网络。这些路由协议已分别演变为无类路由协议 RIPv2 和 EIGRP。链路状态路由协议本质上是无类协议。
---------------------------------
IGP 和 EGP 路由协议
自治系统 (AS) 是接受统一管理(比如公司或组织)的路由器集合。AS 也称为路由域。AS 的典型示例是公司的内部网络和 ISP 的网络。
由于互联网基于 AS 概念,因此需要两种路由协议:
内部网关协议 (IGP) - 用于在 AS 中实现路由。它也称为 AS 内路由。公司、组织甚至服务提供商,都在各自的内部网络上使用 IGP。IGP 包括 RIP、EIGRP、OSPF 和 IS-IS。
外部网关协议 (EGP) - 用于在 AS 间实现路由。它也称为 AS 间路由。服务提供商和大型企业可以使用 EGP 实现互联。边界网关协议 (BGP) 是目前唯一可行的 EGP,也是互联网使用的官方路由协议。
注:由于 BGP 是唯一可用的 EGP,所以很少使用术语 EGP;大多数工程师实际上只是指 BGP。
图中的示例提供了简单的场景,突出显示了 IGP、BGP 和静态路由的部署。
ISP-1 - 这是一个 AS,它将 IS-IS 用作 IGP。它连接到使用 BGP 的其他自治系统和服务提供商,以便明确控制流量的路由方式。
ISP-2 - 这是一个 AS,它将 OSPF 用作 IGP。它连接到使用 BGP 的其他自治系统和服务提供商,以便明确控制流量的路由方式。
AS-1 - 这是一个大型组织,它将 EIGRP 用作 IGP。由于属于多宿主(例如,连接到两个不同的服务提供商),因此它使用 BGP 明确控制流量如何进入和离开 AS。
AS-2 - 这是一个中型组织,它将 OSPF 用作 IGP。 它也属于多宿主;因此,它使用 BGP 明确控制流量如何进入和离开 AS。
AS-3 - 这是在 AS 中使用较旧路由器的小型组织,它将 RIP 用作 IGP。BGP 不是必需的,因为它属于单宿主(例如,连接到一个服务提供商)。 而是在 AS 与服务提供商之间实施静态路由。
--------------------------------------------------------
距离矢量路由协议
距离矢量意味着通过提供两个特征通告路由:
距离 - 根据度量(如跳数、开销、带宽、延迟等)确定与目的网络的距离。
矢量 - 指定下一跳路由器或送出接口的方向以达到目的地。
例如,在图中,R1 知道到达网络 172.16.3.0/24 的距离是 1 跳,方向是从接口 S0/0/0 到 R2。
使用距离矢量路由协议的路由器并不了解到达目的网络的整条路径。距离矢量协议将路由器作为通往最终目的地的路径上的路标。路由器唯一了解的远程网络信息就是到该网络的距离(即度量)以及可通过哪条路径或哪个接口到达该网络。距离矢量路由协议不会像其他类型的路由协议那样有一张拓扑图。
有四个距离矢量 IPv4 IGP:
RIPv1 - 第一代传统协议
RIPv2 - 简单距离矢量路由协议
IGRP - 第一代思科专有协议(已过时并由 EIGRP 取代)
EIGRP - 距离矢量路由高级版
---------------------------------------------
链路状态路由协议
与距离矢量路由协议的运行过程不同,配置了链路状态路由协议的路由器可以获取所有其他路由器的信息来创建网络的完整视图(即拓扑结构)。
但链路状态路由协议不采用这种定期更新机制。相比之下,启用了 RIP 的路由器定期将更新的路由信息发送给它们的邻居。路由器了解到所有必需网络的相关信息(实现收敛)后,仅在拓扑发生变化时才会发送链路状态更新
链路状态协议适用于以下情形:
网络进行了分层设计(大型网络通常如此)
对网络变化的快速适应至关重要
管理员了解链路状态路由协议的实施和维护
有两个链路状态 IPv4 IGP:
OSPF - 常用的基于标准的路由协议
IS-IS - 常见于提供商网络
-----------------------------------------------------------
有类路由协议
有类路由协议和无类路由协议之间的最大区别是有类路由协议不会在路由更新中发送子网掩码信息。而无类路由协议在路由更新中包含子网掩码信息。
注:仅 RIPv1 和 IGRP 是有类的。所有其他 IPv4 和 IPv6 路由协议都是无类的。有类编址从不是 IPv6 的一部分。
无类路由协议
现代网络不再使用有类 IP 编址,因此子网掩码不能由第一个二进制八位数的值来确定。无类 IPv4 路由协议(RIPv2、EIGRP、OSPF 和 IS-IS)在路由更新中都包括网络地址的子网掩码信息。无类路由协议支持 VLSM 和 CIDR。
---------------------------------------------
----------------------------------------------------
路由协议度量
有的时候,路由协议知道多条通往同一目的地的路径。要选择最佳路径,路由协议必须能够评估和确定可用的路径。这通过使用路由度量来完成。
度量是路由协议基于该路由的有用性分配给不同路由的可衡量的值。在有多条路径指向同一远程网络的情况下,使用路由度量来确定从源到目的地的路径的整个“开销”。路由协议根据开销最低的路由来确定最佳路径。
下面列出了它们使用的一些动态协议以及度量:
路由信息协议 (RIP) - 跳数
开放最短路径优先 (OSPF) - 根据源到目的地的累积带宽计算出的思科成本
增强型内部网关路由协议 (EIGRP) – 最小带宽、延迟、负载和可靠性。
--------------------------------------------
动态路由协议的运行过程
所有路由协议的用途都是:获知远程网络,在拓扑发生变化时快速作出调整。所用的方式由该协议所使用的算法及其运行特点决定。
一般来说,动态路由协议的运行过程如下:
1.路由器通过其接口发送和接收路由消息。
2.路由器与使用同一路由协议的其他路由器共享路由消息和路由信息。
3.路由器通过交换路由信息来了解远程网络。
4.如果路由器检测到拓扑变化,路由协议可以将这一变化告知其他路由器。
---------------------------------------------------------------------
实现收敛
如图所示,当所有路由器都获取了整个网络的完整、准确的信息时,网络已经完成收敛。收敛时间是指路由器共享网络信息、计算最佳路径并更新路由表所花费的时间。网络在完成收敛后才可以正常运行,因此,大部分网络都需要在很短的时间内完成收敛。
收敛过程既具协作性,又具独立性。路由器之间既需要共享路由信息,各个路由器也必须独立计算拓扑结构变化对各自路由所产生的影响。由于路由器独立更新网络信息以与拓扑结构保持一致,所以,也可以说路由器通过收敛来达成一致。
收敛的有关属性包括路由信息的传播速度以及最佳路径的计算方法。传播速度是指网络中的路由器转发路由信息的时间。
可以根据收敛速度来评估路由协议。收敛速度越快,路由协议的性能就越好。通常,RIP 等早期协议收敛缓慢,而 EIGRP 和 OSPF 等现代协议收敛较快。
-----------------
Dijkstra 算法
所有链路状态路由协议应用 Dijkstra 算法来计算最佳路径。Dijkstra 算法通常称为 SPF(最短路径优先)算法。此算法使用每条路径从源到目的地的累计开销来确定路由的总开销。
如图所示,每条路径都标有一个独立的开销值。R2 发送数据包至连接到 R3 的 LAN 的最短路径的开销是 27。每台路由器会自行确定通向拓扑中每个目的地的开销。换句话说,每台路由器都会站在自己的角度计算 SPF 算法并确定开销。
注:本部分的重点是取决于 SPF 树的开销。因此,本部分中的图形显示的不是拓扑的连接,而是 SPF tree 的连接。所有链路用黑色实线表示。
OSPF 区域中的所有路由器都会完成下列链路状态通用路由进程来达到收敛:
-----------------------------------------------------------
链路和链路状态
链路状态路由进程的第一步是,每台路由器了解其自身的链路及其直连网络。当路由器接口配置了 IP 地址和子网掩码后,接口就成为该网络的一部分。
请参考图 1 中的拓扑。为了此讨论,假设之前已配置了 R1,并且与所有邻居完整连接。但是,R1 短时间失去电源,必须重新启动。
在启动期间,R1 加载已保存的启动配置文件。随着先前配置的接口处于活动状态,R1 获知了与其直连的网络。这些直连网络现在是路由表中的条目,与所用的路由协议无关。
与距离矢量协议和静态路由一样,链路状态路由协议也需要下列条件才能了解链路:正确配置接口的 IPv4 地址和子网掩码并将链路设置为活动状态。还有一点与距离矢量协议相同的是:必须将接口包括在一条 network 路由器配置语句中,该接口才能参与链路状态路由进程。
------------------------------------------------------------
创建链路状态数据包
链路状态路由进程的第三步是,每台路由器创建一个链路状态数据包 (LSP),其中包含每个直连链路的状态。
路由器建立相邻关系后,即可创建 LSP,其中包含与该链路相关的链路状态信息。图中显示的来自 R1 的 LSP 简化版包括以下信息:
1.R1;以太网 10.1.0.0/16;开销 2
2.R1 -> R2;串行点对点网络;10.2.0.0/16;开销 20
3.R1 -> R3;串行点对点网络;10.3.0.0/16;开销 5
4.R1 -> R4;串行点对点网络;10.4.0.0/16;开销 20
-----------------------------------------------------------------
将 LSP 泛洪
链路状态路由进程的第四步是,每台路由器将 LSP 泛洪到所有邻居,然后邻居将收到的所有 LSP 存储到数据库。
每台路由器将其链路状态信息泛洪到路由区域内的其它所有链路状态路由器。路由器一旦接收到来自相邻路由器的 LSP,立即将该 LSP 从除接收该 LSP 的接口以外的所有接口发出。此过程在整个路由区域内的所有路由器上形成 LSP 的泛洪效应。
--------------------------------------------------------------------------------
构建链路状态数据库
链路状态路由进程的最后一步是,每台路由器使用数据库构建一个完整的拓扑图,并计算到达每个目的网络的最佳路径。
最终,所有路由器从路由区域中所有其他链路状态路由器接收一个 LSP。这些 LSP 存储在链路状态数据库中。
图中的示例显示了 R1 的链路状态数据库的内容。
经过泛洪传送,R1 已获悉其路由区域内的每台路由器的链路状态信息。请注意,R1 的链路状态数据库中还包括 R1 自己的链路状态信息。
有了完整的链路状态数据库,R1 现在即可使用该数据库和 SPF(最短路径优先)算法来计算通向每个成为 SPF 树的网络的首选路径(即最短路径)。
-------------------------------------------------------------------------
构建 SPF 树
路由区域内的各台路由器都使用链路状态数据库和 SPF 算法构建 SPF 树。
例如,R1 现在可以使用来自所有其他路由器的链路状态信息开始构建网络的 SPF 树。首先,SPF 算法解释各台路由器的 LSP 来确定网络和相关开销。
在图 1 中,R1 确定其直连网络和开销。
在图 2 至图 5 中,R1 持续向 SPF 树添加所有未知网络和相关开销。请注意,R1 忽略了所有它已确定的网络。
SPF 算法然后计算到达各个成为 SPF 树的网络的最短路径,如图 6 所示。R1 现在有链路状态区域的完整拓扑视图。
每台路由器使用来自其它所有路由器的信息独立构建自己的 SPF 树。为确保正确路由,所有路由器上用于创建 SPF 树的链路状态数据库必须相同。
-------------------------------------------------------------
将 OSPF 路由添加到路由表
通过 SPF 算法确定最短路径信息后,可将这些路径添加到路由表中。图中显示了现在已添加到 R1 的 IPv4 路由表的路由。
现代链路状态路由协议设计旨在尽量降低对内存、CPU 和带宽的影响。使用并配置多个区域可减小链路状态数据库。划分多个区域可限制在路由域内泛洪的链路状态信息的数量,并可仅将 LSP 发送给所需的路由器。当拓扑结构发生变化时,仅处于受影响区域的那些路由器会收到 LSP 并运行 SPF 算法。这有助于将不稳定的链路隔离在路由域中的特定区域内。