路由简介
什么是路由?
假设机器 A 和机器 B 都连接到互联网。机器 A 想要向机器 B 发送消息,但这两台机器并不直接相连。机器 A 如何知道该将消息发送到哪里,才能让消息最终到达机器 B?消息会通过网络中的哪些路径到达目的地机器 B?在本单元中,我们将学习路由来解答这些问题。

首先,我们会构建一个互联网模型,以便将路由问题定义为一个明确的问题。我们还会了解路由问题的答案是什么样的,以及什么样的答案才是有效且良好的。
接下来,我们会看看几种不同类型的路由协议,这些协议可用于生成路由问题的答案。我们还会了解寻址协议如何使我们的路由协议能够扩展到整个互联网。
最后,我们将简要了解用于实现这些路由协议的实际硬件。
域间路由和域内路由
一种可能的路由策略是构建一个包含世界上每一台机器的互联网模型,并设计一个单一的大型路由协议,使我们能够将数据包发送到世界任何地方。然而,由于互联网的规模,这在实践中是不可行的。
相反,我们会利用互联网是 “网络的网络” 这一事实。换句话说,互联网由许多本地网络组成。每个本地网络都实现了自己的路由协议,该协议规定了如何仅在该本地网络内发送数据包。然后,我们可以将所有这些本地网络连接起来,并在所有本地网络之间实现一个路由协议,规定如何在不同的本地网络之间发送数据包。

本地网络并不都是相同的。例如,它们的规模可能不同:有些网络的机器可能比其他网络多。或者,机器可能分布在更广泛的物理区域(例如,整个加州大学伯克利分校校园),或者更小的区域(例如,你的家)。网络在需要支持的带宽、允许的故障率、可用的支持人员数量、基础设施的使用年限、可用于建设和维护的资金等方面也可能存在差异。
由于每个网络都有自己的结构和需求,不同的本地网络可能会选择使用不同的路由协议。一种数据包路由策略在一个网络上可能有效,但在另一个网络上可能无效。
在 “网络的网络” 模型中,我们可以让各个本地网络为其内部的数据包选择路由策略。每个运营商都可以选择最适合自己的协议。用于在本地网络内路由数据包的协议称为域内路由协议,或内部网关协议(IGPs)。现实世界中的例子包括 OSPF(开放式最短路径优先)和 IS-IS(中间系统到中间系统)。

相比之下,用于在不同网络之间路由数据包的协议称为域间路由协议,或外部网关协议(EGPs)。为了支持在不同本地网络之间发送数据包,每个网络都需要同意使用相同的协议来在彼此之间路由数据包。如果不同的网络使用不同的域间协议,就无法保证整个互联网能够以一致的方式连接起来。如果一个运营商只实现了协议 X,而另一个运营商只实现了协议 Y,那么这两个本地网络如何交换消息就不明确了。
由于每个网络都必须同意使用相同的域间协议,因此在互联网上大规模实现的协议只有一个,即 BGP(边界网关协议)。

这种内部和外部网关协议的模型便于理解,但在实践中,它们之间并不总是有明确的区分。例如,BGP 有时除了在不同网络之间使用外,也会在本地网络内部使用。
无论协议是在网络内部部署,还是在所有网络之间部署,我们都可以通过查看底层算法的作用来对路由协议进行额外分类。特别是,我们将研究距离向量协议、链路状态协议和路径向量协议(每种类型的更多内容将在后面介绍)。
(注:文档部分内容可能由 AI 生成)