hwyzw 发表于 2025-3-3 12:14:41

深入解析OSPF链路类型与网络类型:从RFC定义到Cisco实现

    OSPF 链路类型包含 3 种,分别是点到点、广播型以及 NBMA。在这 3 种链路类型之上扩展出了 5 种网络类型,它们是点到点、广播、NBMA、点到多点以及虚链路。其中,虚链路比较特殊,它不针对特定的链路,而 NBMA 链路则对应着 NBMA 和点到多点这两种网络类型。

    以上是关于 RFC 的定义。在 Cisco 路由器的实现方面,我们需要记住有 3 种链路类型会扩展出 8 种网络类型。其中,NBMA 链路对应 5 种网络类型。也就是说,在 RFC 的定义基础上又新增了 3 种类型。

    首先分析一下3种链路类型的特点:

    一个网络中只有 2 个接口,采用 HDLC 或 PPP 进行封装,无需进行寻址操作,其地址字段固定为 FF 。

    广播型多路访问,目前指的是以太网链路。以太网链路涉及 IP 和 Mac 。通过 ARP 可以实现二层和三层的映射。

    NBMA 网络中可以存在多台设备,在物理上链路是共享的,通过二层虚链路(VC)来建立逻辑上的连接。

    NBMA 网络具备广播能力。只是广播是针对每一条 VC 进行发送的。正因如此,在不是 Full-Mesh 的 NBMA 拓扑中,一台路由器发送的广播或组播分组,有可能无法到达其他所有路由器。

    在点到点链路上运行 OSPF 时没必要选举 DR,因为其是两点一线的简单情况;在 NBMA 网络中运行 OSPF 时,由于是多路访问,DR 可以存在,通过调整为手动发现邻居能防止过多的 Hello 开销。

    下面具体分析一下RFC中定义的5种网络类型:

    点到点采用串行封装 HDLC 或 PPP。OSPF 能够自动检测接口类型,当发现封装模式为 PPP 或 HDLC 时,就会认为是点到点。OSPF 数据包会使用 224.0.0.5 进行发送。它只知道对端是谁,而不知道 DR 是什么东西。OSPF 的 hello 间隔为 10s,失效时间为 40s。

    广播型选举 DR/BDR,能够自动发现邻居。其 Hello 间隔为 10 秒,失效时间为 40 秒。在这里对比一下,NBMA 类型的 Hello 间隔为 30 秒,Dead 间隔为 120 秒。

    NBMA 思科路由器在 NBMA 网络上实现的路由器类型有 5 种,对这些类型的区分较为复杂。

    NBMA网络上实现的5种网络类型

    这 5 种类型在形式上有差异,具体表现为:其一,是否进行选举 DR;其二,是否能够自动发现邻居;其三,更新时间有所不同。

    https://img2.baidu.com/it/u=3082613896,2319271038&fm=253&fmt=JPEG&app=138&f=JPEG?w=761&h=500

    这 5 种类型在应用上存在差异。其一,NBMA 拓扑是否为 Full-Mesh 有所不同;其二,NBMA 接口是否处于同一 IP 子网存在差异;其三,Frame-Relay 在定义 Map 时对广播的支持情况不同,也就是是否添加了关键字存在差异。

    OSPF 在默认情况下无法通过 NBMA 接口自动与邻居建立邻接关系。RFC 2328 为 OSPF 在 NBMA 拓扑中的运行规定了两种模式,分别是 NBMA 模式和点到多点模式。这两种模式所对应的接口模式分别为:

    ip ospfnon- / point-to-

    在 Non- 模式下会模仿 OSPF 在广播型链路中的运行情况。这种模式通常在 Full-Mesh 或类似 Full-Mesh 的情况下使用。如果不是 Full-Mesh 的情况,就必须手动进行 DR/BDR 的选举。路由器的接口处于同一 IP 子网内,需要手动指定邻居,并且要进行 DR/BDR 的选举,而且选举出的 DR/BDR 必须与在 VC 上直连。

    在 Point-to- 模式下,将 NBMA 视为一系列点到点的集合。这种模式通常用于 Hub-and-Spoke 或 Mesh 网络。在该模式下,接口处于同一 IP 子网,会使用 OSPF 组播来自动发现邻居,并且不会选举 DR/BDR。

    对应的命令分别为:广播模式对应相应命令,点到多点非广播模式对应相应命令,点到点模式对应相应命令。

    ip ospf ;属于点到非点类型;属于点到点类型。

    如果说 non-在模仿广播型链路,那么就是把 NBMA 完全当作广播型链路,会使用 OSPF 组播 Hello 来自动发现邻居,而不是像 non-那样为每个 PVC 提供一个 LSA 拷贝。这种模式应用的前提是 NMBA 拓扑为 Full-Mesh,并且在 FR Map 中使用了关键字。

    如果在 VC 上未启用组播和广播功能,也就是在定义 Map 时未使用关键字,那么就需要应用 point-to-non-相应的功能来取消组播 hello 功能,并用手动配置邻居来替代。

    如果链路中包含多个子网,那么就必须用到 Point-to-Point 类型,并且一定会用到子接口。子接口有两种模式,分别是点到点和点到多点。点到多点子接口的配置方式与主接口相同,而点到点子接口则有所不同:

   /0/0.2

    使用帧中继协议并配置 IP 地址为 20.1.1.1 以及子网掩码为 255.255.255.0

    Frame-relay 采用 ANSI 的 LMI 类型,支持 IP 和 OSPF 协议,且为点到点连接。

    在点到点的帧中继映射中,将 IP 地址 20.1.1.2 映射到 105 。

    ip 为 10.1.1.1 且子网掩码为 255.255.255.0 ,同时进行了 frame-relay map 操作,将 ip 20.1.1.3 映射为 106

    https://img1.baidu.com/it/u=2475222618,509117006&fm=253&fmt=JPEG&app=120&f=JPEG?w=500&h=1107

    frame-relay -dlci 101 表示相关的帧中继配置,其中 frame-relay map 用于映射 IP 地址,将 20.1.1.4 映射到 107 。

    若子接口采用 point-to-point 模式,那就表明此子接口对应的子网中仅有一台路由器,也就是该 IP 子网只有两个节点;而当使用其他模式时,就意味着这个子接口对应着多条 VC,IP 子网内的路由器数量多于两台。通过进行配置,就能明白为何说点到多点是点到点链路的集合。

    最初创建子接口是为了解决在 NBMA 上运行距离矢量协议所引发的水平分割问题。也就是说,从一个接口接收到的路由信息不会再从这个接口发送出去。并且,这个接口自身可能与多个邻居相连,这就阻碍了网络中路由信息的传递。而子接口是物理接口在逻辑上的划分,能够很好地解决水平分割带来的问题。

    虚链路可被视为点到点的一种特殊配置。在虚链路上,OSPF 数据包是以单播形式进行发送的。它并不在意物理链路属于何种类型。关键之处在于虚链路的两端能够实现互通。

    NBMA有5种运行模式,

    RFC定义了两种:NBMA非广播和点到多点

    cisco还支持3种:点到多点非广播,广播,点到点

    最后总结一下:

    “Point-to 系列”(包含 to-point、to-、to- 等)都不需要进行选举 DR/BDR。在 Hub-and-Spoke 这种星型拓扑结构里,建议采用“Point-to 系列”模式。

    凡是“系列”(包含 non- 这种情况),不管是否添加 non ,只要是“系列”的形式,不管数量多少,都类似于广播型链路,并且需要选举 DR/BDR 。

    凡是“系列”的情况(包含“non-”“point-to-”等),一个“non”就意味着废除广播以及组播的能力,并且只能手动去指定邻居。

    在 Full-Mesh 的拓扑结构中才能够应用 non- 或 模式,这种配置相对比较简单。然而,如果出现链路中断的情况,就有可能找不到 DR,进而导致路由信息丢失。

    在 Hub-Spoke 拓扑中,若运行 non-模式,需在 hub 位置配置命令,同时将 Spoke 接口的优先级都设置为 0 ,以使其不参与 DR/BDR 选举。而若配置为点到多点模式,命令则可大大简化。

    如果一个 NBMA 链路中有多个 IP 子网,那么网络类型必定是 point-to-point 且会应用子接口。接着看 IP 子网内的接口,若多于两个,就使用点到多点子接口,这是因为点到点子接口仅能容纳一个 DLCI。

    如果在配置 FR Map 时没有添加关键字,那么就只能使用“non-系列”,这里的“non-系列”具体指的是 non-和 point-to-这两种网络类型。
页: [1]
查看完整版本: 深入解析OSPF链路类型与网络类型:从RFC定义到Cisco实现