【网络协议详解】——OSPF协议(学习笔记)

news2024/11/15 11:26:25

目录

  • 🕒 1. 概述
  • 🕒 2. 相关概念
    • 🕘 2.1 基本思想
    • 🕘 2.2 区域及路由
    • 🕘 2.3 链路状态数据库
      • 🕤 2.3.1 点到点网络
      • 🕤 2.3.2 点到多点网络
      • 🕤 2.3.3 广播网络与非广播多址接入网络
      • 🕤 2.3.4 区域外部网络
      • 🕤 2.3.5 例子
  • 🕒 3. 基本工作原理
    • 🕘 3.1 HELLO 协议
      • 🕤 3.1.1 发现邻居并监测与邻居链路的状态
      • 🕤 3.1.2 DR/BDR 的选举
    • 🕘 3.2 链路状态数据库同步
      • 🕤 3.2.1 交换摘要
      • 🕤 3.2.2 同步信息
      • 🕤 3.2.3 新情况下的同步
      • 🕤 3.2.4 洪泛机制
  • 🕒 4. OSPF的运行状态
  • 🕒 5. 报文格式
    • 🕘 5.1 OSPF 报文
      • 🕤 5.1.1 HELLO 报文
      • 🕤 5.1.2 数据库描述报文
      • 🕤 5.1.3 链路状态请求报文
      • 🕤 5.1.4 链路状态更新报文
      • 🕤 5.1.5 链路状态确认报文
  • 🕒 6. 实验:OSPF配置观察

🕒 1. 概述

开放最短路径优先OSPF(Open Shortest Path First),是为克服RIP的缺点在1989年开发出来的。

  • “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。
  • "最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。

OSPF是一种基于链路状态选路算法的路由协议。

  • 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的"代价"(cost)
    • "代价"的意思是费用、距离、时延、带宽等

思科路由器中OSPF协议计算代价的方法是:100Mb/s除以链路带宽
计算结果小于1的值仍记为1,大于1且有小数的,舍去小数。

使用OSPF的每个路由器都会产生链路状态通告LSA(Link Siate Adverisement),包含以下内容:

  • 直连网络的链路状态信息
  • 邻居路由器的链路状态信息

优点

  • 支持在多条等代价路由之间的负载均衡
  • 支持路由信息交换的认证
  • 可用作大型自治系统的内部路由协议。
  • OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路
  • OSPF不限制网络规模,更新效率高,收敛速度快

标准:

  • RFC 2328:OSPF2
  • RFC 5340:OSPF3,可用于 IPv6 网络

🕒 2. 相关概念

🕘 2.1 基本思想

  • 将互联网络抽象成一个有向加权图(directed weighted graph)。
  • 参与链路状态选路协议的路由器监测所连接网络的链路状态,并将链路状态信息发送给其他路由器,路由器将这些信息存入链路状态数据库LSDB中。
  • 每台路由器根据LSDB构造出当前网络的完整拓扑图。
  • 路由器在拓扑图上计算从自己出发到任一网络的最佳路由(最短路径),从而建立起自己的路由表。
    • 可能发现到达一个目的地址的多条等代价路由。
  • 所有路由器的链路状态数据库都保持同步

在这里插入图片描述

🕘 2.2 区域及路由

在这里插入图片描述

为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若千个更小的范围,叫做区域(Area)。

区域:一组网络和连接到任一网络的路由器接口。

  • 每个区域运行一个独立的链路状态选路算法,区域内部的网络拓扑结构在区域外不可见。

如果一个路由器的多个接口属于不同区域,它要为每个区域都运行一个链路状态选路算法,即OSPF协议实例。
例如图示网络中的R3、R4、R5和R8,都分属于两个区域,因而都要运行两个OSPF协议实例。

  • 每个区域有一个 32 位的编号,可用类似于 IP 地址的点分十进制法表示,也可用一个十进制数表示。
    • 区域 0.0.0.0 是一个特殊的区域:主干区域(backbone area)。
    • 其他区域称为非主干区域(non-backbone area)。
    • 主干区域连通了非主干区域,为非主干区域之间提供传输服务。

所有的非主干区域都要连接到主干区域上。主干区域和非主干区域通常采用星型结构连接:主干区域作为中心节点,非主干区域是边缘节点。

根据作用不同,路由器被划分为 4 种类型:

  • 区域内路由器IR(internal router):所连接的网络都属于同一个区域。如R1,R2,R7,R9,R10。内部路由器只运行一个OSPF协议实例。
  • 主干路由器BBR(backbone router):主干区域中的路由器。如R3,R4,R5,R6,R7,R8
  • 区域边界路由器ABR(area border router):连接到多个区域,且必须连接到主干区域。如R3,R4,R5,R8。为每个连接的区域分别运行一个 OSPF 协议实例。
  • 自治系统边界路由器ASBR(AS border router):与其他自治系统交换路由信息的路由器。如R6

一台路由器可以同时属于多种类型。

虚拟链路

  • 主干区域必须是连续的:所有区域边界路由器都能通过主干区域到达其他区域边界路由器。
  • 若不满足,可配置虚拟链路(virtual link)使主干区域变成连续的。
    • 图示网络中,主干区域中的路由器R3、R4、R6形成一个连通网络,R5、R7、R8形成另一个连通网络,但这两个网络在主干区域中没有连接,因而主干区域是不连续的。但R4和R5都连接到了区域3,它们在区域3中通过N4连接。这时,可以在主干区域中在R4和R5之间配置一条“虚拟链路”,使主干区域变成连续的;虚拟链路实际利用R4和R5在区域3中的物理连接来进行通信。
    • 主干区域将虚拟链路看作是一个点到点链路,其传输代价就是非主干区域中连接虚拟链路两端路由器的路由的代价。

自治系统内的路由分为两个层次:区域内路由和区域间路由

🕘 2.3 链路状态数据库

  • 链路状态选路算法把网络抽象成一个有向加权图
  • OSPF 的链路状态数据库是有向加权图在路由器中的表示
    • OSPF 为每个区域运行一个独立的链路状态选路算法;
    • 路由器的一个链路状态数据库描述了所属区域的网络拓扑结构。

使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。

OSPF 支持 5 种网络类型:

  • 点到点网络(point-to-point):看作两条有向边。
  • 虚拟链路(virtual link):也看作一个点到点网络。
  • 点到多点网络(point-to-multipoint):看作一组点到点网络。
  • 广播网络(broadcast)
  • 非广播多址接入网络(Non-Broadcast Multi-Access,NBMA)

🕤 2.3.1 点到点网络

在这里插入图片描述
图示网络中,路由器RT1和RT2通过点到点网络连接。在链路状态数据库中,可以表示为RT1连接到RT2、RT2连接到RT1两条链路。图中的‘X’表示连接关系及其传输代价。

点到点网络的两个接口可以不用分配IP地址,如果分配了IP地址,OSPF就在链路状态数据库中增加相应的“末端链路”(stub link)。这里末端链路实际上表示的就是点到点网络上的对方。

🕤 2.3.2 点到多点网络

在这里插入图片描述
OSPF可以把非广播网络当作点到多点网络或非广播多址接入网络。区别是点到多点网络中,并非每对节点间都能直接通信(即有连接关系);而非广播多址接入网络中,每对节点都可以直接通信,但不支持在所有节点之间的广播通信。

图示网络中,四台路由器连接到点到多点网络N2上。链路状态数据库表示了它们之间的连接关系:RT3、RT6与所有路由器都有连接;RT4和RT5不与对方连接,但与其余路由器有连接。路由器与点到多点网络的连接接口也被OSPF表示成末端链路。

🕤 2.3.3 广播网络与非广播多址接入网络

  • OSPF 在非广播多址接入 (NBMA) 网络上模拟广播网络的行为。
  • 广播网络和 NBMA :抽象成伪节点(pseudo node)。

在这里插入图片描述
图示网络被抽象成伪节点N2。在链路状态数据库中,路由器都连接到伪节点N2,N2也连接到各路由器。这里有一点需要注意,从路由器到伪节点的传输代价是网络的传输代价,但从伪节点到路由器的传输代价则是 0。原因是在广播网络上,所有节点都是可以直接通信的,并不需要伪节点的转发。

🕤 2.3.4 区域外部网络

概念:可看作连接到区域边界路由器的一个末端网络

  • 边的权重为区域边界路由器到网络的传输代价。

在这里插入图片描述
对于区域外部的网络,区域边界路由器将到这些网络的路由汇总后注入到所属区域的OSPF协议实例中。对OSPF来说,这些外部网络可以看作是连接到区域边界路由器上的一个末端网络(stub-network),在链路状态数据库中也可用一个伪节点表示。

🕤 2.3.5 例子

这里是从RFC 2328中摘录的一个例子。左侧是某个OSPF区域抽象所得的有向加权图,右侧是相应的链路状态数据库。其中‘RT’表示路由器,‘N’表示网络,‘H’表示主机。列上的数字表示链路的传输代价。

在这里插入图片描述
OSPF 路由器在有向加权图上计算一个以自己为根(root)的最短路径树,并据此建立自己的路由表。

在这里插入图片描述

🕒 3. 基本工作原理

在这里插入图片描述

  • 相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系
  • 建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器
  • 收到数据库描述报文后,若发现自己缺少其中某些链路状态项目,则会发送链路状态请求报文(LSR)。
  • 对方收到链路状态请求报文后,则会将其所缺少的链路状态项目的详细信息封装在链路状态更新报文(LSU)中发送回去
  • 收到链路状态更新报文后,将这些信息添加到自己的链路状态数据库中,随后发回链路状态确认报文(LSACK)

🕘 3.1 HELLO 协议

🕤 3.1.1 发现邻居并监测与邻居链路的状态

  • OSPF 路由器定期向所有邻居路由器发送 HELLO 报文。

  • 报文中包含了最近一段时间内发送过 HELLO 报文的邻居路由器。

    • 路由器用其标识符表示。
    • 发送周期为10
    • 40秒未收到来自邻居路由器的 HELLO 报文,则认为该邻居路由器不可达
  • 如果路由器在邻居发送的 HELLO 报文中发现了自己的标识符,就表明这两个邻居路由器之间建立了双向通信链路

    • 每个路由器都会建立一张邻居表。
      在这里插入图片描述

OSPF 路由器的两种关系:

  • 邻居关系(neighboring):连接到同一个网络,能建立双向通信链路。
  • 邻接关系(adjacent):可交换网络的链路状态。
    • 建立双向通信链路后,由 OSPF 协议确定。
  • 并非所有的邻居路由器之间都要建立邻接关系
    • 广播网络或 NBMA 网络上,DR/BDR 与其他路由器之间有邻接关系;
    • 其他路由器之间不需要邻接关系。

邻居关系的建立:
在这里插入图片描述

HELLO 协议在不同类型网络上的工作过程不同:

  • 点到点网络、虚拟链路:路由器向对方发送 HELLO 报文;
  • 点到多点网络:路由器仅向能直接通信的邻居发送 HELLO 报文;
  • 广播网络:每台路由器定期组播发送 HELLO 报文;
  • NBMA 网络:需要配置后 HELLO 协议才能正常工作。

🕤 3.1.2 DR/BDR 的选举

广播网络或 NBMA 网络上每台路由器都清楚网络的链路状态。

若每台路由器都发送网络的链路状态,会有很多重复发送。OSPF 协议规定:

  • 广播网络或 NBMA 网络上选举一个指定路由器(Designated Router,DR)和一个备份指定路由器(Backup Designated Router,BDR);
  • 只有 DR 能代表该网络发送网络的链路状态
  • DR 发生故障后,BDR 就变成 DR。

当路由器连接到广播网络或 NBMA 网络上的接口启动时:

  • 检查该网络上是否已存在 DR 和 BDR:存在就接受
  • 否则,比较自己和其他路由器的优先级:
    • 优先级最高的路由器成为 DR;优先级次高的路由器成为 BDR
    • 若两个路由器的优先级相同,标识符(ID)更大的胜出

在这里插入图片描述

  • 优先级:0-255,默认值是1
  • DR和BDR一旦选定,即使OSPF区域内新增优先级更高的路由器,DR和BDR也不重新选举

在这里插入图片描述

🕘 3.2 链路状态数据库同步

OSPF 邻接路由器之间的链路状态数据库同步大体上可分为三步:

  • 双方交换各自的链路状态数据库摘要
  • 向对方请求链路状态并更新自己的数据库;
  • 若有链路的状态发生变化,更新自己的数据库,并通知对方

🕤 3.2.1 交换摘要

OSPF 路由器定期与邻接路由器交换链路状态数据库摘要:

  • 数据库摘要用一组数据库描述报文描述
  • 每个数据库描述报文包含一组链路状态通告(LSA)的首部
  • LSA 首部有其唯一标识及新旧标记。

🕤 3.2.2 同步信息

发送和接收数据库描述报文的过程称为“数据库交换过程” ,其中:

  • 若路由器发现邻接路由器某些链路的状态更新,或自己没有,就向对方发送链路状态请求报文;
  • 邻接路由器发送链路状态更新报文进行响应。

两个邻接路由器的链路状态数据库达同步后,称它们之间建立了完全邻接关系(fully adjacent)。

在这里插入图片描述

🕤 3.2.3 新情况下的同步

路由器监测其所有链路,若有链路的状态发生改变:

  • 更新自己的链路状态数据库;
  • 向邻接路由器发送链路状态更新报文,通知变化的链路状态。

🕤 3.2.4 洪泛机制

OSPF 协议定义了一种可靠的洪泛(reliable flooding)机制,用于在 OSPF 路由域中快速扩散链路状态的变化。

  • 可靠是指收到链路状态更新报文后要发送确认,收到重复的更新报文无需再次转发,但要发送一次确认。

  • 路由器接收到链路状态更新报文后,逐个检查其中的 LSA:

    • 若 LSA 的状态更新,或本地不存在,就用 LSA 更新自己的数据库;
    • 同时,在某些接口上继续发送该 LSA,称为“洪泛” 。
      • 注意:路由器并不是直接发送接收的链路状态更新报文,而是发送根据自己的数据库生成的链路状态更新报文
  • 通过各路由器洪泛法发送封装有自己LSA的LSU报文,各路由器的LSDB最终达到一致

  • 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各种到达其他各路由器的最短路径,即构建各自的路由表。

在这里插入图片描述

例子:
在这里插入图片描述

我们通过一个例子来理解OSPF如何实现网络中所有路由器的链路状态数据库同步。

  • 假设RT8新加入网络,连接到广播网络N6上;N6的指定路由器是RT10。
  • 首先RT8和RT10通过发送链路状态数据库描述报文交换各自的数据库摘要,并通过发送链路状态请求报文和链路状态更新报文实现两者数据库的同步。这时,网络中只有RT8和RT10具有完整的链路状态数据库。
  • 然后,RT10再把发生变化的链路状态,包括广播网络N6、路由器RT8以及网络N7的链路状态,洪泛给自己的邻接路由器;
  • 而邻接路由器在更新自己的数据库后,再次洪泛这些变化的链路状态。
  • 这个过程持续进行,最终所有路由器都将获得变化的链路状态,此时它们的数据库也会达到同步状态。
  • 这个例子是在一个区域中洪泛的情形,也没有考虑虚拟链路。在整个自治系统中,AS-外部LSA在除末端区域接口和虚拟链路接口外的所有接口上洪泛,其他类型的LSA则在各自所属区域的接口上进行洪泛。

🕒 4. OSPF的运行状态

在这里插入图片描述

  • Down:此状态还没有与其他路由器交换信息。首先从其ospf接口向外发送hello报文。
  • Init:表明收到了Hello包,但是2-Way通信仍然没有建立起来。
  • two-way:双向会话建立,而RID彼此出现在对方的邻居列表中。
  • ExStart:信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,一般情况下, 路由器ID大的成为Master。
  • Exchange:信息交换状态,本地路由器和邻居交换一个或多个DBD报文。
  • Loading:信息加载状态,收到DBD后,将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则向对方发送一个LSR,用于请求新的LSA 。
  • Full:完全邻接状态,邻接间的链路状态数据库同步完成。

在这里插入图片描述

🕒 5. 报文格式

🕘 5.1 OSPF 报文

在这里插入图片描述

  • OSPF 协议使用 IP 报文发送报文,其协议编号是 89,发往组播地址224.0.0.5
  • 即使在广播型网络上,OSPF 也尽可能采用组播方式发送报文。

OSPF 报文24字节的固定首部:
在这里插入图片描述

  • 版本”,占``1字节,指明OSPF协议的版本号。对OSPF2协议设置为2
  • 类型”,也占1个字节,指明了报文的类型。OSPF 协议定义了 5 种类型报文。
  • 分组长度”,占2字节,指明整个OSPF报文(包括首部)的长度,单位是字节
  • 路由器标识符”,占4字节,是报文发送方路由器的标识符。每个运行OSPF协议的路由器都有一个32位的标识符,在自治系统中唯一地标识了该路由器。
  • 区域标识符”,占4字节,是OSPF报文所属区域的标识符。OSPF报文只在某个特定的区域中发送。如主干区域就是0.0.0.0
  • 校验和”,占2字节,是整个OSPF报文(除8字节认证数据外)的校验值。计算方法与IP首部校验和相同。
  • 认证类型”,占2字节,指定了要使用的认证机制,包括:不进行认证(0),简单的密码认证(1),加密认证(2)。
  • 认证数据”,占8字节。
    • OSPF协议的认证可基于接口进行,即可以为每个路由器接口独立地配置认证机制。

OSPF 协议定义了 5 种类型报文:

报文类型名称英文用途
1HELLO 报文Hello发现邻居并监测与邻居链路的状态;
选举网络的指定路由器和备份指定路由器
2数据库描述报文Database Description(DBD)与邻接路由器交换链路状态数据库摘要
3链路状态请求报文Link State Request (LSR)向邻接路由器请求具体的链路状态
4链路状态更新报文Link State Update (LSU)向邻接路由器发送具体的链路状态
5链路状态确认报文Link State Acknowledgement (LSACK)对接收到的链路状态通告进行确认,以实现可靠的链路状态传输

🕤 5.1.1 HELLO 报文

OSPF 路由器周期性在所有接口(包括虚拟链路)上发送 HELLO 报文。

在这里插入图片描述

  • 网络掩码”是报文发送接口所连接网络的地址掩码,该接口的地址在报文首部中的“路由器标识符”字段中。
  • HELLO报文间隔”字段占2字节,用于指定路由器发送 HELLO 报文的间隔时间,单位是
  • 选项”字段占1字节,用于OSPF路由器交换各自的能力等级。
  • 路由器优先级”字段占1个字节,用于在广播网络或非广播多址接入网络上选举指定路由器和备份指定路由器。如果为 0,表明发送方路由器不参加选举。
  • 路由器故障间隔”字段占4字节,指明在确认对方路由器发生故障前应等待的时间,单位是秒。
  • 如果是广播网络或非广播多址接入网络,“指定路由器”和“备份指定路由器”字段分别是发送方路由器认为的网络当前的指定路由器和备份指定路由器的IP地址。全0地址表示网络上还没有指定路由器和备份指定路由器。
  • 邻居路由器”列表给出了最近一段时间内从其接收到有效HELLO报文的邻居路由器的标识符。“最近一段时间”是指“路由器故障间隔”字段指明的时间。

🕤 5.1.2 数据库描述报文

数据库描述报文描述了链路状态数据库的摘要信息。

在这里插入图片描述

  • 接口MTU”字段指明了报文发送接口所连接网络的最大传输单元。如果是虚拟链路则设置成 0。
  • 选项”字段用于OSPF路由器之间交换各自的能力等级。
  • I”标志,即初始(Init)标志。如果设置为1,表明本报文是描述链路状态数据库摘要的第一个数据库描述报文。
  • M” 标志,即更多(More)标志。如果设置为 1,表明后续还有其他数据库描述报文。
  • MS” 标志,即主(Master)、从(Slaver)标志。若设置为 1,表明本路由器在数据库交换过程中是主方,否则是从方。
  • 数据库描述序号”字段占4字节,用于对描述链路状态数据库摘要的一组数据库描述报文进行编号。第一个报文中该字段是一个随机数,后续报文的序号在随机数的基础上顺序递增。
  • 报文的剩余部分是一组链路状态通告(LSA)首部,即链路状态数据库的摘要信息,表明了本地数据库中有哪些链路状态及其新旧程度。

🕤 5.1.3 链路状态请求报文

链路状态请求报文用于向邻接路由器请求特定链路的状态。

在这里插入图片描述

  • 链路类型”、“链路状态标识符”和“通告路由器”三个字段共同在OSPF路由域中唯一地标识了一条链路。
  • 通过重复这三个字段,链路状态请求报文指定了一组要请求其状态的链路。

🕤 5.1.4 链路状态更新报文

链路状态更新报文用于向邻接路由器发送特定链路的状态。
在这里插入图片描述

  • LSA数量”指明了报文中包含的链路状态通告的数量。
  • 剩余部分则是一系列链路状态通告,每个链路状态通告描述了一组链路的状态信息。

🕤 5.1.5 链路状态确认报文

链路状态确认报文用于对接收到的链路状态通告(LSA)进行确认。
在这里插入图片描述

  • 包含一系列LSA首部。

🕒 6. 实验:OSPF配置观察

在这里插入图片描述

设备名端口ip地址掩码区域ID
R1f0/0192.168.2.1255.255.255.010
f0/1192.168.1.1255.255.255.00
R2f0/1192.168.1.2255.255.255.00
f0/0192.168.3.2255.255.255.020
R3f0/0192.168.2.3255.255.255.010
R4f0/0192.168.2.4255.255.255.010
R5f0/0192.168.2.5255.255.255.010
R6f0/0192.168.3.6255.255.255.020
f0/1192.168.4.6255.255.255.020
R7f0/1192.168.4.7255.255.255.020

实验步骤:

一、在R1上配置OSPF
(1)启动OSPF路由协议

R1(config)#router ospf 1  

其中1是路由器上的OSPF进程号,进程ID只在路由器内部有效,不同路由器的OSPF进程ID可以相同。通常网络管理员会在整个AS中保持相同的进程ID。

(2)指定直连网段

R1(config-router)#network 192.168.1.0 0.0.0.255 area 0
R1(config-router)#network 192.168.2.0 0.0.0.255 area 10

其中0.0.0.255是通配符掩码,使用网络地址掩码的反码,即为0的位需要匹配,为1的位不需要匹配。

二、在R2上配置OSPF
(1)启动ospf

R2(config)#router ospf 1

(2)指定直连网段

R2(config-router)#network 192.168.1.0 0.0.0.255 area 0
R2(config-router)#network 192.168.3.0 0.0.0.255 area 20

三、在R3上配置OSPF
(1)启动ospf

R3(config)#router ospf 1

(2)指定直连网段

R3(config-router)#network 192.168.2.0 0.0.0.255 area 10

四、在R4,R5,R6(除f0/1口)外进行OSPF配置

注:在本次实验中配置OSPF顺序为R1,R3,R4,R5,R2

五、抓包分析邻居发现及维护过程
(1)在区域10的以太网的任一网络接口启动分组捕获。在wireshark显示过滤器输入“ospf.msg.hello && ip.src==192.168.2.1”
(2)观察产生的数据包
在这里插入图片描述

从分组列表窗口可以看到,R1周期性(约10s)发送HELLO报文,报文的目的地址是所有OSPF路由器组播地址224.0.0.5

选择一个HELLO报文,在分组首部详细信息窗口查看其首部字段值。注意OSPF报文封装在IP分组中。
在这里插入图片描述

查看OSPF报文详细信息,可以看到OSPF报文由三部分组成:OSPF首部(OSPF Header)、HELLO报文(OSPF HELLO Packet)以及本地链路信令数据块(LLS (Local-Link Signaling) Data Block)。

在这里插入图片描述
注:由于优先级相同,则标识符(IP地址)更大者胜出,但由于在实验中,按R1,R3,R4,R5的顺序启动路由器ОSPF进程,因此R1成为指定路由器,而R3成为备份指定路由器。已经选举出来的指定路由器不会再重新选举,除非故障。

六、抓包分析备份指定路由器选举过程
(1)在区域10的以太网的任一网络接口启动分组捕获。在R3中输入以下指令:

R3#clear ip ospf process	# 重启OSPF进程,用来模拟选举过程

(2)在wireshark显示过滤器输入“ospf.msg.hello && ip.addr ==192.168.2.3”

R3的OSPF进程重启后,将首先查询网络上的指定路由器和备份指定路由器。这通过发送(组播)一个指定路由器和备份指定路由器均为0.0.0.0的 HELLO报文实现

在这里插入图片描述
网络中当前的指定路由器收到查询报文后,向查询路由器发送(单播)一个响应HELLO报文,其包含当前的指定路由器和备份指定路由。

在这里插入图片描述

由于原来的备份指定路由器(R3)重启,其余路由器进行了新备份指定路由器选举。路由器从其当前邻居中选择优先级最高或路由器标识符最大(优先级相同时)的路由器作为新备份指定路由器。实验中,在这些路由器中R5的路由器标识符最大(所有路由器的优先级相同,均为1),成为新备份指定路由器。R3向指定路由器发送(单播)一个确认HELLO报文,其中包含R3的当前邻居(R1)。此后,R3将周期性组播发送HELLO报文。

在这里插入图片描述

七、抓包分析指定路由器选举过程
(1)在区域10的以太网的任一网络接口启动分组捕获。在R1中输入以下指令:

R1#clear ip ospf process

(2)在wireshark显示过滤器输入“ospf.msg.hello && ip.addr ==192.168.2.1”

在这里插入图片描述

R1的OSPF重启后﹐首先查询网络中的指定路由器和备份指定路由器。R1发送(组播)一个HELLO报文,其指定路由器和备份指定路由器均为0.0.0.0。网络的所有路由器都向R1发送(单播)一个HELLO报文。由于原指定路由器R1失效,R3和R4认为原备份指定路由器(R5)变为指定路由器,而备份指定路由器仍是R5。

在这里插入图片描述

R5发送的HELLO报文如图所示。R5是原备份指定路由器,当原指定路由器(R1)失效后,R5将成为新的指定路由器,并从其当前的邻居中选择优先级最高或路由器标识符最大(优先级相同时)的路由器(R4)作为新的备份指定路由器。

在这里插入图片描述

R1收到R5、R4、R3 发送的响应HELLO报文后,分别向各自发送(单播)确认HELLO报文。
在这里插入图片描述

八、抓包分析链路状态数据库同步过程

(1)先后在R6的f0/1口和R7的f0/1口启动ospf路由协议。在R6和R7中输入以下指令:

R6(config)#router ospf 1
R6(config)#network 192.168.4.0 0.0.0.255 area 20

R7(config)#router ospf 1
R7(config)#network 192.168.4.0 0.0.0.255 area 20

(2)在R6和R7、R2和R6、R1和R2、R1和SW1间抓包,在wireshark显示过滤器输入“ospf && not ospf.msg.hello”

在这里插入图片描述

数据库描述报文有两种:空数据库描述报文和包含LSA首部信息的数据库描述报文。当两个路由器相互收到HELLO Seen报文(即路由器包含在HELLO报文中的邻居字段列表中)之后,它们开始互相发送空数据库描述报文。

空数据库描述报文用来确定通信过程中的主从关系。通常以路由器标识符较大的路由器作为主方。

在这里插入图片描述

主从关系确立后,从方使用主方的序号(6047)向主方发送第一个包含若干LSA首部信息的数据库描述报文;
在这里插入图片描述
在这里插入图片描述

主方在收到从方的数据库描述报文后发送自己的序号加1的数据库描述报文(包含LSA首部信息),作为对收到从方报文的确认。如果还有更多的链路状态,从方、主方将继续发送数据库描述报文。

在这里插入图片描述

在这个交换过程中,只有主方可以更改序号,从机使用主方确定的序号。

交换完数据库描述报文后,R7与R6相互请求其缺失的链路状态信息。这通过发送链路状态请求和链路状态更新报文实现。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

R7和 R6之间链路的更新会在区域20中进行洪泛。可以看到R6与R7都在组播。

在这里插入图片描述

区域20中R6和R7间链路状态的更新将被在区域0和区域10中通知。在区域0中,路由器R2以网络摘要LSA方式通知该链路状态的更新,即网络192.168.4.0。在区域10中,区域边界路由器R1组播发送网络摘要。

在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式开发常用的几招调试方法

嵌入式系统调试时相对比较麻烦一些,特别是在定位一些疑难问题时,调试手段就显得非常重要。废话不多说,直接上方法。 方法一:利用特殊文件名字的文件存在与否来触发调试代码是否运行。比如有些特殊状况下,我们需要保存一…

文心一言 VS 讯飞星火 VS chatgpt (30)-- 算法导论5.2 2题

二、在 HIRE-ASSISTANT 中,假设应聘者以随机顺序出现,你正好雇用两次的概率是多少? 文心一言: 我们可以先计算出在HIRE-ASSISTANT中,雇佣一个应聘者的概率为3/4,然后计算出雇佣两次应聘者的概率为3/4 * 3…

教你用Appium搭建Android自动化测试框架(详细教程)

如题,本文附有仓库地址以及代码,目录如下: 1.下载安装appium 2.配置并使用appium 3.配置工程 一、下载安装appium 下载appium-desktop的mac版本,我选择用1.17.1版本,最新的版本1.22.0,拆分一个桌面应用…

k-means算法超级详解-转载

这是搬运的 一、 实验准备 1.1 实验概述 所谓聚类算法是指将一堆没有标签的数据自动划分成几类的方法,属于无监督学习方法,这个方法要保证同一类的数据有相似的特征。根据样本之间的距离或者说是相似性(亲疏性),把越…

牛郎织女的幸福生活(活锁)

从前,有一对夫妻,男的叫牛郎,女的叫织女,他们很好地传承了中华民族的谦让美德,每次吃饭时都会优先考虑对方,如果对方饿的话,就让给对方吃,等对方吃饱了自己才吃,这种美德…

SpringBoot整合OSS文件上传

一、注册阿里云账号并开通OSS服务 1、登录阿里云账号 2、创建一个bucket 3、创建子用户 对自用户分配权限,打开操作OSS的全部权限(也可根据业务需求进行更改) 4、配置上传跨域规则 任何来源: *允许方法: POST任何请求头Headers: * 二、…

pytorch实现图像分类任务-手写数字识别(一)

Pytorch手写数字识别 Minst数据集介绍 Size: 2828 灰度手写数字图像 Num: 训练集 60000 和 测试集 10000,一共70000张图片 Classes: 0,1,2,3,4,5,6,7,8,9 一…

pybullet学习(一)——安装与入门pybullet

PyBullet介绍 PyBullet 基于著名的开源物理引擎 bullet 开发,封装成了 Python 的一个模块,用于机器人仿真和学习。PyBullet 支持加载 URDF、SDF、MJCF 等多种机器人描述文件,并提供正/逆向运动学、正/逆向动力学、碰撞检测、射线相交查询等功…

FreeRTOS多任务系统

FreeRTOS 文章目录 FreeRTOS1 单任务和多任务系统1.1 单任务系统1.2 多任务系统 2 FreeRTOS 任务状态3 FreeRTOS 任务优先级4 Free RTOS 任务调度方式4.1 抢占式调度4.2 时间片调度 5 FreeRTOS 任务控制块6 FreeRTOS 任务栈 1 单任务和多任务系统 1.1 单任务系统 单任务系统的…

手把手教你搭建网站(零基础,不用写代码)

没有前言直接开始正文,搭建一个博客需要服务器,域名,博客程序。 博客程序常用的有wordpress,z-blog,typecho等等,其中wordpress和z-blog最为简单,typecho需要一定的技术含量,这里暂…

17.4:图的拓扑排序

拓扑序一定是有向无环图。 拓扑排序不唯一 拓扑排序方法一: 利用入度为零进行排序 思路:谁的入度为0,谁就是开始节点,将开始节点打印完之后,将开始节点的直接邻居的入度减1,然后重复。 package algorith…

【软件测试】稳定性和可靠性测试在软件开发中的重要性

软件测试的某些方面经常会在那些刚接触流程的人中造成混淆——例如在稳定性和可靠性测试之间划清界限。 两者通常可以互换使用,并且有一个共同的目标,即确保系统可以在选定的时间范围内稳定运行。 在这篇文章中,我们将仔细研究什么是稳定性测…

10年Java开发,准备去腾讯了~

大家好,最近有不少小伙伴在后台留言,又得准备面试了,不知道从何下手! 不论是跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了! 为了帮大家节约时间&a…

chatgpt赋能python:Python分词,助力文本处理和搜索引擎优化

Python分词,助力文本处理和搜索引擎优化 作为一种广泛应用于文本处理的编程语言,Python在分词处理方面也有着得天独厚的优势。Python分词不仅可以帮助我们完成文本处理任务,还能够为搜索引擎优化提供便利。 什么是分词? 分词&a…

集线器与交换机的区别

1.集线器与交换机的区别 笔记来源: 湖科大教书匠:集线器与交换机的区别 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 1.1 集线器 早期总线型以太网的机械连接点不太可靠 使用双绞线和集线器相对可靠 集线器可以在物理层…

计算机网络和因特网概述

一.计算机网络和因特网 计算机网络是指多台计算机通过通信线路或其他连接方式相互连接起来,实现信息交换和共享的系统。而因特网是利用标准化协议互联起来的全球性计算机网络,是计算机网络的一种特殊形式。 1.1 什么是因特网 1.1.1 从具体构成描述 因…

day04——特征处理之特征降维

特征处理之特征降维 一、特征选择Filter(过滤式)1,低方差特征过滤2、相关系数 Embedded (嵌入式) 二、主成分分析(PCA) 特征降维:如果特征本身存在问题或者特征之间相关性较强,对于算法学习预测会影响较大。降维是指在…

设计模式-解释器模式

解释器模式 问题背景解释器模式基本介绍原理类图 使用解释器模式来解决问题UML类图代码示例运行结果 注意事项和细节 问题背景 通过解释器模式来实现一个表达式的加减运算 例如:在我们先输入一个表达式:abc-de,然后输入a,b&#…

layui框架实战案例(22):layui-tab-title的宽度自适应的解决方案

HTML源代码 <div class"layui-card"><div class"layui-card-header">卡片风格</div><div class"layui-card-body"><div class"layui-tab layui-tab-card"><ul class"layui-tab-title">…

酷游SVG-地址路径

说到SVG中最复杂的东西&#xff0c;路径(Path)绝对是一个大魔王&#xff0c;它有太多的commands可以用来定义路径。【娜娜提供酷游地kw9㍠neт地址】透过Path虽然可以绘制效果不错的SVG图形&#xff0c;但是要自己定义一个个坐标点&#xff0c;再去把它们完美的串连在一起&…