静态路由和动态路由

最优路径

image.png

当网络中有多条路径可以从发送端到达接收端时,路由器需要负责为数据选择一条最优路径,并负责转发。路由器中有一张路由表,最优路径的选择需要依靠路由表

路由器获得路由表的三种方法:1、直连 2、静态 3、动态

image.png

最佳路径的选择因素和顺序:

  1. 目标匹配
  2. 掩码(掩码越小,目标所在网络越精确)
  3. pre(优先级,数字越小越优先)
  4. cost(跳数,到达目标地址需要经过的路由器数量)
  5. 负载均衡

静态路由(pre 为 60)

静态路由是指由管理员手动配置和维护的路由,主要是指在路由表中,需要人工配置和工信的路由地址。

image.png

举例:PC1 需要和 PC2 建立通信,R1、R2、R3的路由表如何配置?

  • R1 与 R2 之间可以互相通信,R2 和 R3 之间可以互相通信,但是 R1 和 R3 之间目前无法建立通信。PC1 发给 PC2 的数据包需要经过 R1 发出,此时数据包中的目标 IP 指向 PC2,但是 R1 并不知道 PC2 的 IP 在哪个网络号中?因为 R1 的路由表中只有 R2 的网络号。
  • 所以需要给 R1 的路由表中增加 R3 的网络号,并且还需要给 R3 的路由表添加 R1 的网络号,这样 R3 才能响应 R1,此时 PC1 发出的信息才能到达 PC2,通过这种方式在路由表添加的路由被称为静态路由

动态路由 RIP(pre 为 100)

动态路由协议分为两大类:

  • 基于距离矢量算法的协议(RIP);
  • 基于链路状态算法的协议(OSPF)。


    image.png

    举例:RIP 如何实现 PC1 和 PC2 的通信?

RIP 学习路由的实现原理

  1. R1 通过广播方式向 R2 发送数据包,R2 通过接收 R1 的数据包获得了:目标 1.0.0.0/24 的下一跳(NextHop)是 R1。
  2. 同理 R2 向 R1、R3 广播,R1 获得了:目标 23.0.0.0/24 的下一跳(NextHop)是 R2,R3 获得了: 目标 12.0.0.0/24、1.0.0.0/24 的下一跳(NextHop)是 R2。
  3. RIP 通过周期性(30s)更新路由。当 R3 向 R2 广播时, R2 的路由表增加了目标 30.0.0.0/24 的下一跳(NextHop)是 R3 的路由记录。当 R2 下一个次向 R1 广播时, R1 也获得了目标 30.0.0.0/24 的下一跳(NextHop)是 R2 的路由记录。

RIP 开销(cost) 计算的实现原理

RIP 使用跳数来衡量开销。在路由学习过程中,同时进行跳数的累加,跳数最大值为 15,超过15即为不可达。比如 R1 与 PC1 直连,所以 R1 前往 1.0.0.0 的跳数为 0,R2 在学习 R1 路由时,R2 前往 1.0.0.0 的跳数 +1,R3 在学习 R2 路由时,R3 前往 1.0.0.0 的跳数在 R2 的基础上再次 +1,此时 R3 前往 1.0.0.0 的开销(cost) 为 2。

RIP 运行过程

路由器运行 RIP 后,会发送路由更新请求,收到请求的路由器会发送自己的 RIP 路由进行响应。网络稳定后,路由器会周期性(30s)发送路由更新信息。所有的过程都是自动完成。从开始到稳定这段时间,别称为收敛时间。如果连续 180s R2 都没有向 R1 发送 RIP 数据包进行更新路由,那么通往 R2 的路由就在 R1 路由表中变为失效状态

RIP 版本差异

RIP 分为两个版本:RIPv1 和 RIPv2。RIPv1 诞生时间比子网掩码早,所以不支持子网掩码。运行 RIPv1 版本会存在以下问题:R1 的目标地址是:1.0.0.0/24,R2 学习 R1 路由时就会变成: 目标 1.0.0.0 的下一跳(NextHop)是 R1,如果 R3 的目标地址是:1.0.1.0/24,R2 学习路由时变成了:目标 1.0.0.0 的下一跳(NextHop)是 R3,这种情况下就会产生路由冲突。RIPv2 支持子网掩码,不会出现这个问题。此外,RIPv1 不支持认证,RIPv2 支持明文认证和 MD5 加密认证。

RIP 环路解决方案

  • 水平分割:路由器某个接口学习到的路由,不会再从该接口发回给邻居路由器。R2 从 R1 学习到的路由不会再广播发回 R1,但是可以发给 R3。水平分割是默认开启。
  • 毒性反转:路由器的某个接口学到路由后,立即将这条路由的跳数设置为16(跳数最大为15,16即为不可达),将设置为 16 的这条路由信息再原路转发给邻居路由器。R2 从 R1 学习到的路由,传递给 R3 时跳数正常累加,传递给 R1 时跳数变为 16。毒性逆转优先级高于水平分割,如果接口上同时开启水平分割和毒性反转,优先选择毒性反转。
  • 触发更新:触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文。比如 R1 路由上面的 1.0.0.2/24 终端被撤掉后,R1 立即知会 R2。

RIP 协议采用的 UDP 协议通信,所以不需要应答,通过周期性保证接收端收到信息。

动态路由 OSPF+

image.png
  • RIP 基于路径矢量的路由协议存在一个问题:R1 只知道前往 30.0.0.0/24 应该发给 R2,并且会经过 2 跳,但是 R1 的视角中并不能感受到 R3 的存在,甚至 R1 无法确认 2 跳是否正确。而链路状态路由协议从本质上解决了这个问题。
  • OSPF 是一种可靠的路由协议,要求在路由器之间传递链路状态通告之前,需要先建立 OSPF 邻居管理。路由器之间会发送一个 hello 报文用于发现直连链路上的其他 OSPF 路由器,再经过一系列的 OSPF 消息交互最终建立起全毗邻的邻居关系,OSPF 路由器的邻居信息显示在邻居表中。
  • 每个路由器都会拥有一个 Router-ID(ID 可以手动配置,或者自动选择环回口最大的IP,或者自动选择物理口最大的IP),并将自己的直连接口和邻居路由器保存在一个链路状态通告(LSA)中。然后 OSPF 采用链路状态数据库(LSDB)来存储当前路由器获得的所有 LSA。最后,基于 LSDB 通过 SPF(Dijksstra算法--拓扑图中最短路径优先算法)计算而得出 OSPF 路由表。Router-ID 发生更改后,需要重启 OSPF。

举例:R1 将自己的 LSA1 发给 R2,R2 不仅将自己的 LSA2 发给 R3,同时还会将自己接收到的 LSA1 发送给 R3。来回往复,R1 也会获得 LSA2 和 LSA3。最后,每个路由器不仅能感知到其它路由器的存在,而且知道谁和谁是邻居。

OSPF 报文类型

  1. Hello 报文:建立和维护 OSPF 邻居关系,并保活。Hello 报文是一种组播报文,报文中最重要的信息是 Router-ID。组播的目标地址是:224.0.0.5。没有确认机制,周期性(10s)的向外发送,其目的:1、让邻居发现当前路由器 2、让邻居知道当前路由器在保持工作(保活机制)。如果连续 40s 没有收到邻居发来的 Hello 报文,就认为该邻居路由器不再工作。
  2. DD 报文:链路状态数据库描述信息(描述 LSDB 中 LSA 头部信息)。DD 报文信息最重要的功能是传递当前路由器 LSDB 中 LSA 的版本信息,通过比对版本信息确认当前需要请求更新哪些 LSA。
  3. LSR:链路状态请求。向 OSPF 邻居请求链路状态信息。
  4. LSU:链路状态更新(包含一条或多条 LSA)。
  5. LSAck:对 LSU 中的 LSA 进行确认。

举例:R1 路由器上当前有 LSA1、LSA2、LSA3,R2 路由器上面有 LSA2、LSA4。

  1. 当 R1 和 R2 互相发送 DD 报文之后,R1 发现自身需要获取 R2 的 LSA4,R2 发现自身需要 R1 的 LSA1 和 LSA3。
  2. R1 向 R2 发送 LSR 报文请求获取 LSA4,R2 向 R1 发送 LSR 报文请求获取 LSA1 和 LSA3。
  3. R1 接收 R2 的 LSR 报文请求后,响应 LSU 报文(该报文携带 R2 所需的 LSA1 和 LSA3),R2 同理。
  4. R2 收到 R1 发送 LSA 报文后,需要回复 LSAck 报文,表示接收成功。

DR 和 BDR

背景和目的

image.png
  • 在图中这样一个网络中,R1、R2、R3、R4 互为邻居,如果它们的网关来回往复两两建立 OSPF 邻居关系,这就意味着,网络中共有 n(n-1)/2 个 OSPF 邻居关系,维护如此多的邻居关系不仅仅额外消耗设备资源,更是增加了网络中 LSA 的泛洪数量。
  • 可以通过指定一个路由器(DR)上的接口,比如指定 R1 为 DR,R1 接收其它所有路由器的 LSA,收集完整后再泛洪给其它路由器,从而减少来回往复所消耗的资源。BDR 是 DR 的备份,并在当前 DR 发生故障时接替其成为 DR。每个广播域中药指定一个 DR 和 一个 BDR。
  • 所有的 OSPF 路由器的接口都会侦听发往 224.0.0.5 这个组播地址的报文,所有 DR/BDR 都会侦听发往 224.0.0.6 这个组播地址的报文。假设网络已经完成了 OSPF 收敛,现在突然 R3 下面的一个网络号与 R3 断开连接时:
  1. 路由器 R3 发往 224.0.0.6 以此通知 DR 和 BDR;
  2. DR 向 组播地址 224.0.0.5 发送更新以通知其它路由器;
  3. 路由器收到包含变化后的 LSA 的 LSU 后,更新自己的 LSDB,或一段时间(SPF 延迟),对更新的链路状态数据执行 SPF 算法。必要时更新路由表。

DR 的制定规则

拥有最高 OSPF 接口优先级的路由器会被选为 DR,如果优先级相等(默认都为 1),具有最高的 OSPF Router-ID 的路由器会被选为 DR。接口优先级默认为 1,可以调整,取值范围为 0~255,数值越大约优先。

OSPF 区域划分

一个 OSPF 区域中可能包括着多个广播域。每个区域都会维护者一个 LSDB。在诸多区域中会选出一个骨干区域——Area0,其它的区域都必须和 Area0 相连。连接 Area0 和 其它区域的交换机被称为 ABR,ABR 上同时维护着 Area0 的 LSDB 和 相连区域的 LSDB。这样 area0 内的路由器就不用存储其它区域的 LSDB,其它区域也不用存储 area0 的 LSDB。

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。