OSPF理论总结与实验

第1章 OSPF[1] 

本章阐述了OSPF协议的特征、术语,OSPF的路由器类型、网络类型、区域类型、LSA类型,OSPF报文的具体内容及作用,描述了OSPF的邻居关系,通过实例让读者掌握OSPF在各种场景中的配置。

本章包含以下内容:

  1. OSPF的基本概念
  2. 配置单区域的OSPF
  3. 配置OSPF的网络类型
  4. 配置多区域OSPF

1.1 OSPF概述

开放式最短路径优先(Open Shortest Path First,OSPF)是IETF(The Internet Engineering Task Force, 国际互联网工程任务组)开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。目前,针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用的是OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。[2] 

1.1.1 OSPF特征

  1. OSPF把自治系统(Autonomous System,AS)[3] 划分成逻辑意义上的一个或多个区域。
  2. OSPF通过LSA(Link State Advertisement)[4] 的形式发布路由。
  3. OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一。
  4. OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。

1.1.2 OSPF术语

  1. Router ID:用于在自治系统中唯一标识一台运行OSPF的路由器,每台运行OSPF的路由器都有一个Router ID。
  2. 链路:路由器的接口。
  3. 链路状态:对接口及接口与相邻路由器的关系的描述。例如接口的信息包括接口的IP地址、掩码、所连接的网络的类型、连接的邻居等。所有这些链路状态的集合形成链路状态数据库。
  4. COST:OSPF使用COST作为路由器的度量值,
  1. 每一个激活OSPF的接口都有一个COST值。OSPF接口COST=100M/接口带宽[5] ,其中100M为OSPF的参考带宽(reference-bandwidth[6] )。
  2. 一条OSPF路由的cost由该路由从路由的起源一路到达本地的所有入接口cost值的总和。
  1. 区域:共享链路状态信息的一组路由器。在同一个区域内的路由器有相同的链路状态数据库。
  2. 自治系统:采用同一种路由协议交换路由信息的路由器及其网络构成一个自治系统
  3. LSA:用来描述路由器和链路的状态,LSA包含的信息有路由器接口的状态和所形成的邻接状态,不同类型的LSA的功能不同。
  4. 邻居:如果两台路由器共享一条公共数据链路,并且能够协商Hello数据包中所指定的一些参数,它们就开成邻居关系。
  5. 邻接:相互交换LSA的OSPF邻居关系建立的关系。
  6. DR[7] (Designated Router):指定路由器。
  7. BDR(Backup Designated Router):备份指定路由器。

1.1.3 OSPF路由器类型

OSPF的路由器类型如图1-1所示。

                             图1-1路由器类型

  1. Backbone Router(骨干路由器)[8] :至少有一个接口属于骨干区域。
  2. Internal Router(区域内路由器):所有接口都属于同一个OSPF区域
  3. ABR(Area Border Router,区域边界路由器)[9] :可以同时属于两个以上的区域,但其中一个必须是骨干区域。
  4. ASBR(AS Boundary Router,自治系统边界路由器):只要一台OSPF设备引入了外部路由的信息,它就成为ASBR。

1.1.4 OSPF网络类型

OSPF的网络类型见表1-1

                          表1-1 OSPF的网络类型

网络类型

链路层协议

选择DR

Hello间隔/s

Dead间隔[10] /s

邻居

P2P

PPP、HDLC

10

40

自动发现

广播

Ethernet

10

40

自动发现

NBMA

帧中继

30

120

管理员配置

P2MP

管理员配置

30

120

自动发现

                                           

1.1.5 OSPF区域类型

OSPF的区域类型包括普通区域、Stub区域、NSSA区域,见表2-1所示。

                          表1-2 OSPF的区域类型

区域类型

作用

骨干区域

骨干区域是连接所有其他OSPF区域的中央区域,通常用area 0表示

标准区域

标准区域是最通用的区域,它传输区域内、区域间路由和外部路由

STUB区域

拒绝4、5类LSA

自动下发一条3类的LSA的默认路由[11] 

Totally STUB区域

拒绝3、4、5类LSA

自动下发一条3类的LSA的默认路由

NSSA

拒绝4、5类LSA,引入7类LSA

自动下发一条7类的LSA的默认路由

Totally NSSA

拒绝3、4、5类LSA,引入7类LSA

自动下发一条3类和7类的LSA的默认路由

                                           

1.1.6 OSPF LSA类型

LSA是OSPF进行路由计算的关键依据,OSPF的LSU报文可以携带多种不同类型的LSA,各种类型的LSA拥有相同的报文头部。报文格式见表1-3。

                      表1-3 LSA的报文头部格式

LS Age

Options

LS type

Link State ID

Advertising Router

LS sequence number[12] 

LS checksum[13] 

length[14] 

以下是对报文头部的解释。

  • LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒。LSA的最大年龄是3600s,每隔1800s更新一次。[15] 
  • Options(可选项):每一个bit都对应了OSPF所支持的某种特性。
  • LS type(链路状态类型):指示本LSA的类型。
  • Link State ID(链路状态ID):不同的LSA,对该字段的定义不同。
  • Advertising Router(通告路由器):产生该LSA的路由器的Router ID。
  • LS Sequence Number(链路状态序列号):当LSA每次有新的实例产生时,序列号就会增加。序列号范围是从0X80000001至0X7FFFFFFF,序列号越大代表越新。[16] 
  • LS Checksum(校验和):用于保证数据的完整性和准确性。
  • Length:是一个包含LSA头部在内的LSA的总长度值。

OSPF中对路由信息的描述都是封装在链路状态通告LSA(Link State Advertisement)中发布出去的,常用的LSA见表1-4。

                           表1-4 LSA的类型

LSA类型

LSA作用

Router

每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。

Network

由DR产生,描述本网段的链路状态,在所属的区域内传播。

Network-summary

由ABR产生,描述区域内某个网段的路由,并通告给其它区域

ASBR-summary

由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。

AS-external

由ASBR产生,描述到AS外部的路由,通告到所有的区域

NSSA

由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。

                                                     

1.1.7 OSPF数据报文类型

OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文,见表1-5。

                        表1-5 OSPF报文类型

报文类型

作用

Hello

周期性发送,用来发现和维持OSPF邻居关系

DD

描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。

LSR

用于向对方请求所需的LSA。

设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。

LSU

用于向对方发送其所需要的LSA。

LSA

用来对收到的LSA进行确认。

                                                         

1.1.8 路由类型

AS区域内和区域间路由描述的是AS内部的网络结构,AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为Type1和Type2两类。见表1-6

                          表1-6 OSPF路由类型

路由类型

含义

Intra Area

区域内路由。

Inter Area

区域间路由。

Type1

  1. 这类路由的可信程度高一些。
  2. 到第一类外部路由的开销=本路由器到相应的ASBR的开销+ASBR到该路由目的地址的开销。
  3. 存在多个ASBR时,每条路径的开销值分别按照“第一类外部路由的开销=本路由器到相应的ASBR的开销+ASBR到该路由目的地址的开销”计算,得到的开销值用于路由选路。

Type2

  1. 这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。
  2. 所以,OSPF计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。
  3. 存在多个ASBR时,先比较引入路由的开销值,选取开销值最小的ASBR路径进行路由引入。如果引入路由的开销值相同,再比较本路由器到相应的ASBR的开销值,选取开销值最小的路径进行路由引入。无论选择哪条路径引入路由,第二类外部路由的开销都等于ASBR到该路由目的地址的开销。

                                                     

1.1.9 OSPF 邻居关系

  1. Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
  2. Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。
  3. Init:收到Hello报文后状态为Init。
  4. 2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
  5. Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。
  6. Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange。
  7. Loading:DD报文交换完成即Exchange done,此时状态为Loading。
  8. Full:LSR重传列表为空,此时状态为Full。

1.2 OSPF的基本配置

1.2.1实验1:配置单区域OSPF[17] 

1.实验目的

  1. 实现单区域OSPF的配置
  2. 描述OSPF在多路访问网络中邻居关系建立的过程

2.实验拓扑

单区域的OSPF实验拓扑如图1-2所示。

                          图1-2 配置单区域OSPF

3.实验步骤

  1. IP地址的配置[18] 

R1的配置

<Huawei>system-view

[Huawei]undo info-center enable

[Huawei]sysname R1

[R1]interface g0/0/0

[R1-GigabitEthernet0/0/0]ip address 12.1.1.1 24

[R1-GigabitEthernet0/0/0]quit

[R1]interface LoopBack 0

[R1-LoopBack0]ip address 1.1.1.1 24

[R1-LoopBack0]quit

R2的配置

<Huawei>system-view

[Huawei]undo info-center enable

[Huawei]sysname R2

[R2]interface g0/0/1

[R2-GigabitEthernet0/0/1]ip address 12.1.1.2 24

[R2-GigabitEthernet0/0/1]quit

[R2]interface g0/0/0

[R2-GigabitEthernet0/0/0]ip address 23.1.1.2 24

[R2-GigabitEthernet0/0/0]quit

[R2]interface LoopBack 0

[R2-LoopBack0]ip address 2.2.2.2 24

[R2-LoopBack0]quit

R3的配置

<Huawei>system-view

[Huawei]undo info-center enable

[Huawei]sysname R3

[R3]interface g0/0/1

[R3-GigabitEthernet0/0/1]ip address 23.1.1.3 24

[R3-GigabitEthernet0/0/1]quit

[R3]interface LoopBack 0

[R3-LoopBack0]ip address 3.3.3.3 32

[R3-LoopBack0]quit

  1. 运行OSPF[19] 

R1的配置

[R1]ospf router-id 1.1.1.1   //启用OSPF,设置它的ROUTER-ID 1.1.1.1

[R1-ospf-1]area 0  //区域0

[R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255  //宣告网络12.1.1.0

[R1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255  //宣告网络1.1.1.0

[R1-ospf-1-area-0.0.0.0]quit

R2的配置

[R2]ospf router-id 2.2.2.2

[R2-ospf-1]area 0

[R2-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]network 2.2.2.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]quit

R3的配置

[R3]ospf router-id 3.3.3.3

[R3-ospf-1]are

[R3-ospf-1]area 0

[R3-ospf-1-area-0.0.0.0]net

[R3-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

[R3-ospf-1-area-0.0.0.0]net

[R3-ospf-1-area-0.0.0.0]network 3.3.3.0 0.0.0.255

[R3-ospf-1-area-0.0.0.0]quit

【技术要点1】进程ID

OSPF的进程ID的编号范围为1-65535,只在本地有效,不同路由器的进程ID号可以不同

【技术要点2】Router ID

  1. Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。
  2. Router ID选举规则如下:[20] 
  • 手动配置OSPF路由器的Router ID(建议手动配置)
  • 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
  • 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID

4.实验调试

  1. [21] 在R1上查看当前设备所有激活OSPF的接口信息

<R1>display ospf interface all

         OSPF Process 1 with Router ID 1.1.1.1  //OSPF的进程为1,router-id为1.1.1.1

                 Interfaces

 Area: 0.0.0.0          (MPLS TE not enabled)   //OSPF的区域为0

 Interface: 12.1.1.1 (GigabitEthernet0/0/0)

 Cost: 1       State: DR        Type: Broadcast    MTU: 1500 

 Priority: 1  //g0/0/0的开销为1,它是DR,网络类型为广播,MTU为1500,优选级为1

 Designated Router: 12.1.1.1   //DR为12.1.1.1

 Backup Designated Router: 12.1.1.2  //BDR为12.1.1.2

 Timers: Hello 10 , Dead 40 , Poll  120 , Retransmit 5 , Transmit Delay 1

 Interface: 1.1.1.1 (LoopBack0)

 Cost: 0       State: P-2-P     Type: P2P       MTU: 1500 

 Timers: Hello 10 , Dead 40 , Poll  120 , Retransmit 5 , Transmit Delay 1

  1. [22] 在R1上查看当前设备的邻居状态

<R1>display ospf peer

         OSPF Process 1 with Router ID 1.1.1.1

                 Neighbors

 Area 0.0.0.0 interface 12.1.1.1(GigabitEthernet0/0/0)'s neighbors

 Router ID: 2.2.2.2          Address: 12.1.1.2       

   State: Full  Mode:Nbr is  Master  Priority: 1  //邻居状态为full,邻居为Master

   DR: 12.1.1.1  BDR: 12.1.1.2  MTU: 0   

   Dead timer due in 34  sec

   Retrans timer interval: 5

   Neighbor is up for 00:29:56    

   Authentication Sequence: [ 0 ]

  1. 在R1上查看当前设备的LSDB

<R1>display ospf lsdb

         OSPF Process 1 with Router ID 1.1.1.1

                 Link State Database

                         Area: 0.0.0.0

 Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric

 Router    2.2.2.2         2.2.2.2            109  60    8000000A       1

 Router    1.1.1.1         1.1.1.1            169  48    80000007       1

 Router    3.3.3.3         3.3.3.3            114  48    80000005       1

 Network   23.1.1.2        2.2.2.2            109  32    80000003       0

 Network   12.1.1.1        1.1.1.1            169  32    80000003       0

  1. 在R1上查看当前设备的OSPF路由表

<R1>display ospf routing

         OSPF Process 1 with Router ID 1.1.1.1

                  Routing Tables

 Routing for Network

 Destination        Cost  Type       NextHop         AdvRouter       Area

 1.1.1.1/32         0     Stub       1.1.1.1         1.1.1.1         0.0.0.0

 12.1.1.0/24        1     Transit    12.1.1.1        1.1.1.1         0.0.0.0

 2.2.2.2/32         1     Stub       12.1.1.2        2.2.2.2         0.0.0.0

 3.3.3.3/32         2     Stub       12.1.1.2        3.3.3.3         0.0.0.0

 23.1.1.0/24        2     Transit    12.1.1.2        2.2.2.2         0.0.0.0

 Total Nets: 5 

 Intra Area: 5  Inter Area: 0  ASE: 0  NSSA: 0

  1. 在R1上开启以下命令,观察OSPF的状态机

<R1>terminal debugging   //使能终端显示Debug信息功能

<R1>terminal monitor   //使能终端显示信息中心发送信息的功能

<R1>debugging ospf event  //用来查看OSPF协议工作过程中的所有事件

<R1>debugging ospf packet  //用来查看OSPF协议工作过程中的所有的报文

<R1>system-view 

[R1]interface g0/0/0

[R1-GigabitEthernet0/0/0]shutdown

[R1-GigabitEthernet0/0/0]quit

[R1]interface g0/0/0

[R1-GigabitEthernet0/0/0]undo shutdown

[R1-GigabitEthernet0/0/0]quit

[R1]info-center enable

Sep  2 2022 15:13:00-08:00 R1 %%01IFPDT/4/IF_STATE(l)[0]:Interface GigabitEthernet0/0/0 has turned into UP state.

[R1]

Sep  2 2022 15:13:00-08:00 R1 %%01IFNET/4/LINK_STATE(l)[1]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state.

[R1]

[R1]

Sep  2 2022 15:13:00.191.7-08:00 R1 RM/6/RMDEBUG:

 FileID: 0xd017802c Line: 1295 Level: 0x20

  OSPF 1: Intf 12.1.1.1 Rcv InterfaceUp State Down -> Waiting. 

//接口UP后,OSPF状态从Down进入到Waiting状态。[23] 

[R1]

Sep  2 2022 15:13:00.191.8-08:00 R1 RM/6/RMDEBUG:

 FileID: 0xd0178025 Line: 559 Level: 0x20

 OSPF 1: SEND Packet. Interface: GigabitEthernet0/0/0

[R1]

Sep  2 2022 15:13:00.191.9-08:00 R1 RM/6/RMDEBUG:  Source Address: 12.1.1.1

[R1]

Sep  2 2022 15:13:00.191.10-08:00 R1 RM/6/RMDEBUG:  Destination Address: 224.0.0.5

[R1]

[R1]

Sep  2 2022 15:13:00.191.11-08:00 R1 RM/6/RMDEBUG:  Ver# 2, Type: 1 (Hello)

[R1]

Sep  2 2022 15:13:00.191.12-08:00 R1 RM/6/RMDEBUG:  Length: 44, Router: 1.1.1.1

[R1]

Sep  2 2022 15:13:00.191.13-08:00 R1 RM/6/RMDEBUG:  Area: 0.0.0.0, Chksum: fa9c

[R1]

Sep  2 2022 15:13:00.191.14-08:00 R1 RM/6/RMDEBUG:  AuType: 00

[R1]

Sep  2 2022 15:13:00.191.15-08:00 R1 RM/6/RMDEBUG:  Key(ascii): * * * * * * * *

[R1]

Sep  2 2022 15:13:00.191.16-08:00 R1 RM/6/RMDEBUG:  Net Mask: 255.255.255.0

[R1]

Sep  2 2022 15:13:00.191.17-08:00 R1 RM/6/RMDEBUG:  Hello Int: 10, Option: _E_

[R1]

Sep  2 2022 15:13:00.191.18-08:00 R1 RM/6/RMDEBUG:  Rtr Priority: 1, Dead Int: 40

[R1]

Sep  2 2022 15:13:00.191.19-08:00 R1 RM/6/RMDEBUG:  DR: 0.0.0.0

[R1]

Sep  2 2022 15:13:00.191.20-08:00 R1 RM/6/RMDEBUG:  BDR: 0.0.0.0

[R1]

Sep  2 2022 15:13:00.191.21-08:00 R1 RM/6/RMDEBUG:  # Attached Neighbors: 0

[R1]

Sep  2 2022 15:13:00.191.22-08:00 R1 RM/6/RMDEBUG: 

[R1]

Sep  2 2022 15:13:00.191.23-08:00 R1 RM/6/RMDEBUG:

 FileID: 0xd017802c Line: 1409 Level: 0x20

  OSPF 1 Send Hello Interface Up on 12.1.1.1 //R1在接口上发送Hello包

[R1]

Sep  2 2022 15:13:00.641.1-08:00 R1 RM/6/RMDEBUG:

 FileID: 0xd0178024 Line: 2236 Level: 0x20

 OSPF 1: RECV Packet. Interface: GigabitEthernet0/0/0

[R1]

Sep  2 2022 15:13:00.641.2-08:00 R1 RM/6/RMDEBUG:  Source Address: 12.1.1.2

[R1]

Sep  2 2022 15:13:00.641.3-08:00 R1 RM/6/RMDEBUG:  Destination Address: 224.0.0.5

[R1]

Sep  2 2022 15:13:00-08:00 R1 %%01OSPF/4/NBR_CHANGE_E(l)[2]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.1.12, NeighborEvent=HelloReceived, NeighborPreviousState=Down, NeighborCurrentState=Init)

//从邻居收到Hello包,状态从Down进入到Init

[R1]

Sep  2 2022 15:13:00.641.5-08:00 R1 RM/6/RMDEBUG:  Ver# 2, Type: 1 (Hello)

[R1]

Sep  2 2022 15:13:00.641.6-08:00 R1 RM/6/RMDEBUG:  Length: 44, Router: 2.2.2.2

[R1]

Sep  2 2022 15:13:00.641.7-08:00 R1 RM/6/RMDEBUG:  Area: 0.0.0.0, Chksum: f89a

[R1]

Sep  2 2022 15:13:00.641.8-08:00 R1 RM/6/RMDEBUG:  AuType: 00

[R1]

Sep  2 2022 15:13:00.641.9-08:00 R1 RM/6/RMDEBUG:  Key(ascii): * * * * * * * *

[R1]

Sep  2 2022 15:13:00.641.10-08:00 R1 RM/6/RMDEBUG:  Net Mask: 255.255.255.0

[R1]

Sep  2 2022 15:13:00.641.11-08:00 R1 RM/6/RMDEBUG:  Hello Int: 10, Option: _E_

[R1]

Sep  2 2022 15:13:00.641.12-08:00 R1 RM/6/RMDEBUG:  Rtr Priority: 1, Dead Int: 40

[R1]

Sep  2 2022 15:13:00.641.13-08:00 R1 RM/6/RMDEBUG:  DR: 0.0.0.0

[R1]

Sep  2 2022 15:13:00.641.14-08:00 R1 RM/6/RMDEBUG:  BDR: 0.0.0.0

[R1]

Sep  2 2022 15:13:00.641.15-08:00 R1 RM/6/RMDEBUG:  # Attached Neighbors: 0

[R1]

Sep  2 2022 15:13:00.641.16-08:00 R1 RM/6/RMDEBUG: 

[R1]

Sep  2 2022 15:13:00.641.17-08:00 R1 RM/6/RMDEBUG:

 FileID: 0xd017802d Line: 1136 Level: 0x20

  OSPF 1: Nbr 12.1.1.2 Rcv HelloReceived State Down -> Init.

[R1]

Sep  2 2022 15:13:10-08:00 R1 %%01OSPF/4/NBR_CHANGE_E(l)[3]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.1.12, NeighborEvent=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=2Way)

//从邻居收到的Hello包,并在Hello包中看到了自己的ROUTER-ID[24] ,状态从Init进到2way

[R1]

Sep  2 2022 15:13:39-08:00 R1 %%01OSPF/4/NBR_CHANGE_E(l)[4]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.1.12, NeighborEvent=AdjOk?, NeighborPreviousState=2Way, NeighborCurrentState=ExStart)

//发送DD报文,进入到ExStart状态

[R1]

Sep  2 2022 15:13:44-08:00 R1 %%01OSPF/4/NBR_CHANGE_E(l)[5]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.1.12, NeighborEvent=NegotiationDone,NeighborPreviousState=ExStart,NeighborCurrentState=Exchange)  //交互DD报文并发送LSR、LSU进入到Exchange

[R1]

Sep  2 2022 15:13:44-08:00 R1 %%01OSPF/4/NBR_CHANGE_E(l)[6]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.1.12, NeighborEvent=ExchangeDone,NeighborPreviousState=Exchange,NeighborCurrentState=Loading)  //交互完毕进入到Loading状态

[R1]

Sep  2 2022 15:13:44-08:00 R1 %%01OSPF/4/NBR_CHANGE_E(l)[7]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.1.12, NeighborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full

)

//LSA同步完成进入Full状态

本文出自作者的华为HCIA-DATACOM认证实验指南


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java代码审计】文件上传篇

【Java代码审计】文件上传篇 1.Java常见文件上传方式2.文件上传漏洞修复 1.Java常见文件上传方式 1、通过文件流的方式上传 public static void uploadFile(String targetURL, String filePath) throws IOException {File file new File(filePath);FileInputStream fileInpu…

node.js 启一个前端代理服务

文章目录 前言一、分析技术二、操作步骤2.1、下载依赖2.2、创建一个 serve.js 文件2.3、js 文件中写入以下代码 三、运行&#xff1a; node serve四、结果展示五、总结六、感谢 前言 有时候我们需要做一些基础的页面时&#xff0c;在研发过程中需要代理调用接口避免浏览器跨域…

设计模式——桥接模式(结构型)

引言 桥接模式是一种结构型设计模式&#xff0c; 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构&#xff0c; 从而能在开发时分别使用。 问题 抽象&#xff1f; 实现&#xff1f; 听上去挺吓人&#xff1f; 让我们慢慢来&#xff0c; 先考虑一个简单的…

Docker Swarm编排:构建简单集群

Docker Swarm 是 Docker 官方提供的容器编排工具&#xff0c;通过它可以轻松构建和管理多个 Docker 容器的集群。本文将深入探讨 Docker Swarm 的基础概念、构建集群的步骤&#xff0c;并提供更为丰富和实际的示例代码&#xff0c;帮助大家全面了解如何使用 Docker Swarm 搭建一…

PyQt6 使用Qt Designer实现简单的界面,以及ui文件转py文件

前言&#xff0c;主要通过参考并总结两篇文章中的部分内容&#xff0c;参考文章一 && 参考文章二 Qt 设计师简单例子 一、需求分析二、界面设计三、生成ui文件四、ui文件转py文件1、命令行 执行 uic 生成 py代码2、PyCharm 配置 Pyuic工具2.1 配置Pyuic工具2.2 测试是否…

Linux---查看文件内容命令

1. 查看文件内容命令的使用 命令说明cat查看小型文件more分屏查看大型文件 cat命令的效果图 说明: cat命令结合重定向可以完成多个文件的合并gedit 文件编辑命令&#xff0c;可以查看和编辑文件 more命令的效果图 当查看内容信息过长无法在一屏上显示时&#xff0c;可以使…

C# WPF上位机开发(属性页面的设计)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在软件开发中&#xff0c;属性或者参数设置是很重要的一个部分。这个时候如果不想通过动态添加控件的方法来处理的话&#xff0c;那么可以通过tab控…

Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件(v2.0)

Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件&#xff08;v2.0&#xff09; 前言前提条件相关介绍实验环境上下拼接图片并修改、合并其对应的Labelme标注文件代码实现输出结果 前言 此版代码&#xff0c;相较于Python将已标注的两张图片进行上下拼…

Android通过listview实现输入框自定义提示栏(代替AutoCompleteTextView自动完成文本框)

效果图 背景 本人因为一些需求初次接触android&#xff0c;需要实现一个类似android自带的AutoCompleteTextView&#xff08;自动完成文本框&#xff09;&#xff0c;但和其不同的是通过后端接口直接筛选数据&#xff08;自己的分词处理规则&#xff09;&#xff0c;然后返回前…

虚幻学习笔记17—C++委托(单播)

一、前言 相比“代理”这个名词我更喜欢叫“委托”&#xff0c;虚幻的委托分为三类&#xff0c;分别为单播、多播和动态多播。单播顾名思义就是一次只能绑定一个函数的委托&#xff0c;多播能一次性绑定多个&#xff0c;动态多播即可以在蓝图中进行动态的绑定且可以绑定多个。 …

MySQL进阶2 - 索引

MySQL进阶1 - 索引 1. 索引概述2. 索引结构2.1 二叉树2.2 B-Tree(多路平衡查找树)2.3 BTree2.4 Hash 3. 索引分类4. 索引语法5. SQL性能分析5.1 SQL执行频率5.2 慢查询日志5.3 profile5.4 explain执行计划5.3.1 EXPLAIN执行计划各字段含义&#xff1a; 6. 索引使…

服务器一直掉线怎么回事?

随着网络的高速发展&#xff0c;不管是网站还是游戏&#xff0c;如果遇到服务器卡顿的情况&#xff0c;会造成用户访问网站或进游戏&#xff0c;网站页面长时间无法打开&#xff0c;游戏页面运行卡顿&#xff0c;这样就很容易会造成用户的流失&#xff0c;从而导致业务亏损极大…

Redis设计与实现之跳跃表

目录 一、跳跃表 1、跳跃表的实现 2、跳跃表的应用 3、跳跃表的时间复杂度是什么&#xff1f; 二、跳跃表有哪些应用场景&#xff1f; 三、跳跃表和其他数据结构&#xff08;如数组、链表等&#xff09;相比有什么优点和缺点&#xff1f; 四、Redis的跳跃表支持并发操作吗…

消除非受检警告

在Java中&#xff0c;有一些情况下编译器会生成非受检警告&#xff08;Unchecked Warnings&#xff09;。这些警告通常与泛型、类型转换或原始类型相关。消除这些警告可以提高代码的可读性和安全性。以下是一些常见的非受检警告以及如何消除它们的例子&#xff1a; 1. 泛型类型…

0基础学习VR全景平台篇第128篇:720VR全景拍摄设备推荐

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 本篇教程&#xff0c;小编为大家推荐720VR全景拍摄所需要的设备器材。上节我们提到&#xff0c;理论上任意相机和镜头都能够拍摄全景&#xff0c;但为了标准化制作流程&#xff0…

oracle 锁表解决办法

相关表介绍 V$LOCKED_OBJECT&#xff08;记录锁信息的表&#xff09;v$session&#xff08;记录会话信息的表&#xff09;v$sql&#xff08;记录 sql 执行的表&#xff09;dba_objects&#xff08;用来管理对象&#xff0c;表、库等等&#xff09; 查询锁表的 SID select b.…

t-io 程序执行后,jvm不退出的原因

基于t-io 1.7.3 版本分析源码 1、设定当前时间&#xff0c;每10毫秒执行一次 (非守护线程) 2、对应线程池的核心线程在AioServer启动时全部激活&#xff0c;并且添加空任务到阻塞队列&#xff0c;让核心线程(非守护线程)一直存活

等等Domino 14.0FP1

大家好&#xff0c;才是真的好。 节奏确实太快了&#xff0c;有时候我深感我也追不上。 以前Notes Domino是三年磨一剑&#xff0c;也就说每三年才发一个大版本&#xff0c;从2019年开始&#xff0c;进行了高频提速&#xff0c;居然一年一个大版本&#xff01; 周末&#xf…

使用opencv的Sobel算子实现图像边缘检测

1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题&#xff0c;也是经典的技术难题之一。如何快速、精确地提取图像边缘信息&#xff0c;一直是国内外的研究热点&#xff0c;同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…

Linux--Docker容器(1)

这里写目录标题 简介名词解释作用 指令在本地创建容器的过程&#xff1a;&#xff08;这里以tomcat为例&#xff09;访问容器端口映射目录挂载验证端口映射验证目录挂载 删除镜像多小组访问容器mysql容器 简介 名词解释 Docker镜像&#xff1a;可以将镜像理解为面向对象的类&a…