路由协议和架构/分层路由
分层路由允许将网络划分为自治路由域。路由域是网络中由同一路由协议实例处理的部分。
属于一个域的路由器不知道另一个域的确切拓扑,但它们只知道目标列表及其相关成本(有时是虚构的)→ 一个好的选择是选择跨越边界路由器通往目标域的最佳出口路径。
每个边界路由器都可以看到它所连接的两个域
- 当数据包离开域时,它被称为出口路由器;
- 当数据包进入域时,它被称为入口路由器。
分层路由引入了一条新的规则来处理与域外目标相关的路由
- 内部目标:如果目标在同一个路由域内,则必须使用“内部”路由协议生成的路由信息;
- 外部目标:如果目标在另一个路由域内,则必须将流量转发到最接近的出口路由器,从当前域到目标域,然后后者将负责使用其内部路由信息将数据包传递给目标。
从源到最接近的出口路由器的子路径和从这里到最终目标的子路径分别是最优的,但它们的连接形成的整体路径不是最优的:给定一个目标,路径的第一部分(源-边界路由器)对于远程域中的所有目标都是相同的。
- 动机
- 互操作性:可以互连由不同路由协议处理的域;
- 可见性:ISP 不希望让竞争对手了解其网络的详细信息;
- 可扩展性:网络的范围过大,无法由单个路由协议实例处理,需要进行分区
- 内存:它排除了有关远程域精确拓扑的信息,从而减少了每台路由器需要保存在内存中的信息量;
- 汇总:它允许宣布一个“虚拟”目的地(具有常规成本),将多个“真实”目的地组合在一起(例如,在 IP 网络中,多个网络地址可以聚合到具有更长网络掩码的网络地址中);
- 隔离:如果在某个域内出现故障或添加了新链路,则路由更改不会影响其他域,即远程域路由器中的路由表保持不变→ 瞬变更少,网络更稳定,收敛更快。
- 实现
分层路由可以通过两种方式实现(不相互排斥)
如果从边界路由器开始,无法再通过始终保持在域本身内的路径到达其所有内部目的地,则该域将被分区。
在侧面图形的示例中,由节点 A 发送的数据包尽快退出路由域 A,但一旦它进入域 B,由于边界路由器与节点 I 之间的链路故障,它将无法到达最终目的地 H。实际上,存在一条穿过另一个边界路由器的备用路径通往目的地 H,但无法使用它,因为数据包需要退出域 B 并穿过域 A。
此外,路径可能是非对称的:回复数据包可能会走与查询数据包不同的路径,通过不同的边界路由器→ 数据可能会被接收,但确认它们已接收的 ACK 可能会丢失。
- 解决方案
- 每个域内部的链路可以进行冗余,使其强连通,以避免链路故障导致域被分区;
- OSPF 协议允许手动配置边界路由器之间的一种虚拟隧道,称为虚拟链路。
重分发是运行在边界路由器上的软件过程,它允许将路由信息从一个路由域传输到另一个路由域。
在侧面图形的示例中,在 RIP 域中了解的目的地可以注入到 OSPF 域中,反之亦然。
- 备注
- 重分发命令是单向的→ 可以仅在一个方向上进行选择性重分发(例如,ISP 不接受客户宣布的不可信路由)。
- 重分发也可以在由同一个协议实例处理的域之间执行。
- 通过重分发过程了解的路由可以通过路由协议标记为“外部路由”。
一个域中的路由器将知道更广泛的目标集,即使其中一些目标可能具有“错误”(简化)的拓扑结构:实际上,重分发过程可以
- 保持原始路由的成本,最多由一个系数固定,
- 或者在以下情况下将成本设置为常规值
- 两种协议使用不同的指标:例如,在“跳数”中了解的成本无法转换为使用“延迟”的另一个成本;
- 将具有不同成本的多个目的地聚合到一个汇总路由中。
路由源 | 管理距离 | |
---|---|---|
连接接口 | 0 | |
静态路由 | 1 | |
动态路由 | 外部 BGP | 20 |
内部 EIGRP | 90 | |
IGRP | 100 | |
OSPF | 110 | |
RIP | 120 |
当一个目的地被宣布为两个域都可达时,这两个域由具有不同指标的路由协议处理,边界路由器如何比较成本以确定通往该目的地的最佳路由?每个路由协议都具有由设备制造商预先分配的内在成本→ 路由器始终选择具有最低内在成本的协议(即使所选路由可能不是最佳路由)。