网络层——AS 内路由选择协议
禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!
在开始阅读之前,请先阅读博客——网络层——路由选择算法。
RIP 协议
跳数
RIP 协议是分布式的基于 DV 算法的路由选择协议,下面我们分析一下 RIP 协议在 DV 算法的基础上提出怎样的封装。首先 RIP 协议中的距离得到了定义,从一路由器到直接连接的网络的距离定义为 1,到非直接连接的网络距离定义为所经过的路由器数量加 1。由于这个定义,RIP 协议的“距离”也称之为“跳数”。
最大度量
在前一篇博客我们提到的无穷计数的问题,毒性逆转能够完全解决无穷计数的问题吗?答案是否定的,因为当网络规模增大,涉及到了 3 个及以上的更多节点的环路,毒性逆转将不能探测到故障。对于这个问题,RIP 协议提供了解法——定义最大度量。RIP 协议允许一条路径最多只能包含 15 个服务器,若距离等于或大于 16 时将直接不可达。出现无穷计数时,路由器之间相互传播错误的信息会使最短距离增长到 16,这就到达了最大度量,就可以规避故障链路了。
但是这也引发了新的问题,要是 2 个路由器之间的距离本身就超过 16 呢?这没有办法,也会被认为是不可达的,因此 RIP 协议无法适用于较大的互联网。
周期性广播
路由器之间将按照固定的时间间隔交换路由信息,同时当网络拓扑发生变化时也会及时通告拓扑变化之后的路由信息。
- RIP 协议的其他内容,和 DV 算法差别不大,这里不再重复描述。
自治系统
对于路由选择算法来说,我们忽略了很多细节,把复杂的网络抽象成图结构来描述虽然形象,但是这是一种理想化的说法。在实践中往往不会使用图结构加使用统一的路由选择算法的同质路由器去进行说明,主要体现在以下 2 个方面:
- 规模:当今因特网由数亿台主机组成,这种规模的主机存储路由信息需要大量内存。对于所有路由器之间的广播连通性和链路开销的更新,无疑需要占用很多的资源和很大的负担,对于 LS 算法的计算负担极其大,DV 算法更是无法收敛。因此就必须采取一些措施,来缩小计算和存储路由信息的规模。
- 管理自制:因特网是 ISP 网络,其中每个 ISP 都有自己的路由网络,因此因特网也可以认为是“网络之网络”。一般来说一个 ISP 总是倾向于按照自己的想法去运行路由器,而且对外保留隐私,隐藏内部的网络结构。因此对于一个组织不仅希望能够按自己的意愿管理网络,也要满足和其他网络进行通信的需求。
针对这 2 个问题,可以使用自治系统(AS)来解决,也就是聚合多个处在相同的管理之下的路由器为一个区域,通常来说一个 ISP 中的路由器及其互联的链路构成一个 AS。对于不同的 AS 内的路由器可以运行不同的 AS 内部路由协议,反之相同 AS 中的路由器运行相同的路由选择算法并且拥有彼此的信息。
OSPF 协议
开放最短路径优先
开放最短路径优先(OSPF) 协议被广泛用于因特网 AS 内部路由选择,开放指的是路由选择协议规范是公众可用的,而并非属于某一厂家(例如 Cisco 的 EIGRP 协议到近期才变为开放)。OSPF 协议是一种链路状态协议,它使用洪泛链路状态信息和
Dijkstra 算法实现,下面看一些 OSPF 协议的具体实现方式:
链路状态数据库
运载 OSPF 协议的所有路由器最终会建立一个链路状态数据库,这个数据库包含 3 张表来协同工作:
- 邻居表:邻居表之间通过问候报文联系,确认相邻拓扑是否正常;
- 链路状态表:通过交换邻居表,形成完整的网络拓扑图,该表在 AS 内的所有路由器是一致的;
- 计算路由表:运载 Dijkstra 算法,获得最佳路径。
接下来我们来看一下路由器和邻居之间,是怎么通过这 3 张表进行工作的。
洪泛法
由于需要让所有的路由器得到自己的路由信息,因此需要向 AS 内的所有相邻路由器发送信息。实现这个功能的是洪泛法,路由器通过所有输出端口向相邻路由器发送信息,而每一个相邻路由器再把信息发送给相邻的路由器,最终 AS 内的所有路由器都会得到这个路由信息。
同时 OSPF 协议的洪泛法是可靠地,因为对于任何路由器,收到其他路由器发来的分组之后需要发送 ACK,这就可以保证路由信息的传递正确。
链路权重
最佳路径的计算是按照链路权重来计算的,链路钻中可以反映开销、距离、时延和带宽。这些信息的配置并非是协议自行生成的,而是通过网络管理员进行配置的。也就是说 OSPF 并不不强制使用的链路权重的设置策略,而是让网络管理员自己决定度量的方式,它提供了一种机制来为路由器确定最低开销路径的选择。
触发式更新
路由表的更新并非是周期性的,而是当链路状态发生变化时,路由器才向所有的路由器使用洪泛法发送信息。由于这种方式,使得链路状态表更新很快,使得最低开销路径的收敛速度加快,同时也可以保证 AS 内的所有路由器的链路状态表一致。
OSPF 数据报
字段
分组类型
- Hello:发现、维持邻居路由器的可达性;
- 数据库描述:向邻居给出自己的链路状态数据库中,所有链路状态项目的摘要信息;
- 链路状态请求:向邻居请求发送某些链路状态的详细信息;
- 链路状态更新:使用洪泛法对全网更新链路状态;
- ASK:对更新分组的确认。
报文承载
OSPF 报文由 IP 协议承载,而不是使用 UDP 协议,此时的 IP 数据报的协议字段为 89。OSPF 报文的篇幅很小,这就可以加快数据报的传输速度。
协议优势
安全性
OSPF 协议能够鉴别 OSPF 路由器之间的交换,仅有收到信任的路由器可以参与 AS 内的 OSPF 协议,因此可以防范入侵者将不正确的信息注入路由表中。可以使用简单鉴别或 MD5 鉴别实现,可以验证分组的真实性。
多条相同开销路径
当到达某目的地的多条路径具有相同的开销时,OSPF 协议允许使用多条路径,这就使得转发数据报时无需令单一路径承载所有流量。
单播、多播路由综合支持
多播 OSPF(MPSPF)利用现有链路数据库,提供了 OSPF 的简单拓展,提供了多播路由的选择。
支持单个 AS 中的层次结构
OSPF 协议支持大规模 AS 分层,一个 OSPF 自治系统能工层次化地配置多个区域。每个区域都运行自己的 OSPF 链路状态路由选择算法,区域内的每台路由器都向区域内的所有其他路由器广播链路状态。在层次结构的区域划分中,上层区域为主干区域,可以用来连接其他下层区域。主干区域的路由器叫主干路由器,而与其它区域通信则使用区域边界路由器。
为划分区域提供支持,可以使得洪泛法交换链路状态信息的范围缩小的某一个区域中,这样可以减少 OSPF 协议在整个网络中的通信量。
参考资料
《计算机网络(第七版)》 谢希仁 著,电子工业出版社
《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社