一、OSPF的基本概念

1、OSPF的定义:

OSPF——开放的最短路径优先协议,属于链路状态路由协议。

它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。
每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。

2.png

2、OSPF的分类

AS是指由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。

(1)、按自治系统分为

IGP:内部网关路由协议,运行在AS内部的路由协议,主要解决AS内部的选路问题,发现、计算路由。
主要: RIP1/RIP2、OSPF、 ISIS、 EIGRP (思科私有协议)
EGP:外部网关路由协议,运行在AS与As之间的路由协议,他解决As之间选路问题。
通常: BGP

(2)、按协议类型分类

距离矢量路由协议: RIP1/2、 BGP (路径矢量协议)、EIGRP ( 高级距离矢量协议)

路由器对全网拓扑不完全了解。是“传说的路由”。

链路状态路由协议: OSPF、 ISIS

路由器对全网拓扑完全了解。是“传信的路由”。
1.png
::: hljs-center

OSPF的分类

:::

3、OSPE工作过程

  • 1、建立邻居表
  • 2、形成链路状态数据库
  • 3、形成路由表

1、启动配置完成后,本地收发hello包,建立邻居关系,生成邻居表;
2、再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包保活即可;
3、匹配成功者之间建立邻接关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,当收集完网络中所有的LSA后,生成数据表--LSDB
4、LSDB建立完成后,本地基于OSPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中,完成收敛。
++收敛完成后--hello包周期保活--30分钟周期的BDB比对,若不一致将会使用LSR/LSU/LSack重新获取++

3.png
::: hljs-center

OSPE工作过程

:::

==建立邻接关系--学习链路状态信息--->链路状态数据库--Dij kstra算法--->最短路径树--->路由表==

4、区域ID

  • 十进制数表示
  • IP地址格式表示

二、OSPF区域

1、OSPF区域的概念

  • 为了适应大型的网络,OSPF在AS内划分多个区域
  • 每个OSPF路由器只维护所在区域的完整链路状态信息
    4.1.png
    ::: hljs-center

OSPF区域

:::

2、区域的类型

1.简单整体来看可分为这两种:

骨干区域(area0):有且只有一个,必须连接所有非骨干区域。负责区域间路由信息传播
非骨干区域:根据实际情况划分,必须连接area0,主要用来连接终端用户和资源。
非骨干区域分为==标准区域==,==末梢区域(stub)==,==完全末梢(Totally stubby)区域==,==非纯末梢区域(NSSA)==。

3、Router ID

  • OSPF区域内唯一标识路由器的IP地址

    Router ID选取规则:

  • 选取路由器loopback接口上数值最高的IP地址
  • 如果没有loopback接口,在物理端口中选取IP地址最高的
  • 也可以使用router-id命令指定Router ID

    4、DR和BDR

    (1)、DR和BDR

    当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,这时候需要一个路由器和所有的路由器互换LSA,减少LSA的数量,那么这个路由器被称为DR;在选DR的时候,也会选出一个作为备份,称为BDR;最后其他路由器(DRothers)只和DR和BDR形成邻接关系。

7.1.png

::: hljs-center

DR

:::

(2)、DR和BDR的选举

DR和BDR的两种选举方法

==自动选举DR和BDR==

  • 网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR。

==手工选择DR和BDR==

  • 优先级范围是0 ~ 255,数值越大,优先级越高,默认为1;
  • 如果优先级相同,则需要比较Router ID;
  • 如果路由器的优先级被设置为0,它将不参与DR和BDR的选举。

Snipaste_20211103_185906.png
::: hljs-center

DR和BDR的选举

:::

==DR和BDR选举规则==
邻居发现完成后,开始选举
(1)、先比较路由器优先级(默认都是1),高的做DR,次高BDR;
(2)、优先级相同,比较RID(router-id),高的是DR。
RID可以人为指定(不会受地址变动的影响);或设备最大的环回口ip;或物理接口ip地址最大的。

OSPF中使用==224.0.0.5==和==224.0.0.6==作为组播地址,选举时DR和BDRS时,大家都是用组播地址224.0.0.5发送Hello包(这个时候路由器都认为自己是DR),当DR和BDR选出来后,DR和BDR使用224.0.0.5发送,其他路由器使用224.0.0.6发送。

5、OSPF的度量值为COST

  • 公式=10^8/BW (BW————接口带宽)
  • 最短路径是基于接口指定的代价(cost) 计算的
接口类型 代价(10^8/BW)
Fast Ethernet 1
Ethernet 10
电话线56K 1785

6、OSPF的数据包类型

OSPF数据包:

  • 承载在IP数据包内,使用协议号89
++==OSPF的五大包类型==++
OSPF的包类型 描述
Hello包 用于发现和维持邻居关系,选举DR和BDR
数据库描述包(DBD) 用于向邻居发送摘要信息以同步链路状态数据库
链路状态请求包(LSR) 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息
链路状态更新包(LSU) 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA
链路状态确认包(LSAck) 确认已经收到DBD/ LSU,每个LSA需要被分别确认

7、OSPF的七个状态

(1)、ospf的七个状态

状态 作用
down状态 初始化,没有来自邻居的Hello包
init状态 收到第一个Hello包,但没发出去,建立了自己的邻居表
2 Way状态 双向建立会话,邻居表都建立完成
Exstart状态 建立主从关系
Exchange状态 交换摘要信息,到确认信息收到
Loading状态 加载详细信息
full状态 完全连接,计算最短路径,并载入路由表

(2)、OSPF的启动过程

  • OSPF启动的第一个阶段是使用Hello报文建立双向通信的过程,此过程包含down状态、init状态、2 Way状态三个状态;
  • OSPF启动的第二个阶段是建立完全邻接关系。

8、OSPF的4个网络类型

网络类型 说明
点到点网络(Point-to-Point)1 自动发现邻居,不需DR/BDR、组播224.0.0.5
广播多路访问网络(Broadcast MultiAccess,BMA) 自动发现邻居、选DR/BDR、组播224.0.0.5、224.0.0.6
非广播多路访问网络(None Broadcast MultiAccess,NBMA) 手工指定邻居、选DR/BDR、单播(AMT使用)
点到多点网络(Point-to-Multipoint) (星型结构) 自动发现邻居,不需DR/BDR、组播224.0.0.5

9、OSPF基本配置命令

[R1]ospf 1 router-id 1.1.1.1
创建ospf进程,配置Router ID
[R1-ospf-1]area 0
创建区域0,区域0为骨干区域
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
宣告直连路由,使用反掩码
[R1-ospf-1-area-0.0.0.0]network 192.168.10.0 0.0.0.255

查看命令
display ospf 1 peer brief ————————查看OSPF邻居表的简要信息
display ospf 1 peer —————————查看OSPF邻居表的详细信息
display ospf 1 brief ————————查看本地设备上的OSPF 1 的相关信息
display ip routing-table ————————查看路由表中的OSPF路由(确定路由器的类型和属性)

10、OSPF实验案例

Snipaste_20211105_083509.png

==R1具体配置==

<Huawei>sys
[Huawei]sys R1
[R1]un in en
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.10.1 24 
[R1-GigabitEthernet0/0/0]undo shutdown 
[R1-GigabitEthernet0/0/0]q
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 12.0.0.1 24
[R1-GigabitEthernet0/0/1]un sh

配置回环地址:
[R1]int LoopBack 0
[R1-LoopBack0]ip add 1.1.1.1 32
[R1-LoopBack0]q

[R1]ospf 1  (创建ospf进程,配置Router ID)
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0  (宣告直连路由)
[R1-ospf-1-area-0.0.0.0]network 192.168.10.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]q

[R1]dis ip routing-table   (查看路由表中的OSPF路由)

r11.png
r12.png
r13.png

==R2具体配置==

<Huawei>sys
[Huawei]sys R2
[R2]un in en
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 12.0.0.2 24
[R2-GigabitEthernet0/0/0]un sh
[R2-GigabitEthernet0/0/0]q

[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 23.0.0.1 24
[R2-GigabitEthernet0/0/1]un sh
[R2-GigabitEthernet0/0/1]q

[R2]int LoopBack 0
[R2-LoopBack0]ip add 2.2.2.2 32
[R2-LoopBack0]q

[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]q

r21.png
r22.png

==R3具体配置==

<Huawei>sys
[Huawei]sys R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 23.0.0.2 24
[R3-GigabitEthernet0/0/0]un sh
[R3-GigabitEthernet0/0/0]q
[R3]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.20.1 24
[R3-GigabitEthernet0/0/1]un sh
[R3-GigabitEthernet0/0/1]q

[R3]int LoopBack 0
[R3-LoopBack0]ip add 3.3.3.3 32
[R3-LoopBack0]q
[R3]dis ip int b (查看端口IP状态信息)

[R3]ospf 1
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 192.168.20.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]q

r31.png
r32.png
r33.png

二、OSPF多区域

1、OSPF多区域的概念

通常现实中的网络拓扑是非常大型和复杂的,而SPF算法的反复计算,庞大的路由表和拓扑表的维护等都会占用大量的路由器资源,这会降低路由器的运行效率。OSPF协议可以通过划分区域来减小这些不利的影响,也就是说OSPF协议划分多个区域后,每一个区域的路由器只需要了解所在区域的网络路由拓扑,并不需要了解整个网络的路由拓扑,这样就减小了路由表,降低了SPF算法的计算量和LAS的开销。

2、OSPF多区域的生成原因

1)改善网络的可扩展性

2)快速收敛

3、OSPF的通信量

1)域内通信量:就是同一个OSPF区域内的路由器交换数据包的通信量

2)域间通信量:是一个OSPF区域的路由器和另一个OSPF区域的路由器交换数据包时的通信量

3)外部通信量:OSPF区域内的路由器和OSPF区域外或另一个自治区域的路由器交换数据包的通信量

4、OSPF中的路由器的类型

1)内部路由器:路由器只保存本区域的链路状态信息

2)区域边界路由器(ABR):连接区域与其他区域的路由器;将连接区域的链路状态信息总汇后发给区域0,并将其他区域的的链路状态信息发给连接的区域

3)自治系统边界路由器(ASBR):用来连接OSPF区域和外部的路由器;并将外部路由注入到OSPF网络中

六大LSA类型

LSA类型 描述 用途
Type 1 路由器LSA 由区域内的路由器发出的,描述了路由器的的链路状态和花费,传递到整个区域内
Type 2 网络LSA 由区域内的DR发出的,描述了区域内变更信息,传递到整个区域内
Type 3 网络汇总LSA2 ABR发出的,其他区域的汇总链路通告,描述了其他区域内某一网段的路由,区域间传递
Type 4 ASBR汇总LSA ABR发出的,用于通告ASBR信息,确定ASBR的位置,不会出现在ASBR所属区域之内
Type 5 AS外部LSA ASBR发出的,用于通告外部路由,告诉相同AS的路由器通往外部AS的路径,在整个AS中进行泛洪
Type 7 NSSA外部LSA NSSA区域内的ASBR发出的,用于通告本区域连接的外部路由,与Type 5类似,仅在非纯末梢区域内进行泛洪,传递时会被ABR转换为LSA5

三、路由重分发

1、概念

一个单一IP路由协议是管理网络中IP路由的首选方案Cisco IOS能执行多个路由协议,每一个路由协议和该路由协议所服务的网络属于同一个自治系统 Cisco IOS使用路由重分发特性以交换由不同协议创建的路由信息

2、路由重分发的考虑

  • 度量值(跳数)
  • 管理距离(优先级)

3、重分发到OSPF域中路由的路径类型

类型1的外部路径(Type 1 external path, E1)
类型2的外部路径(Type 2 external path, E2)
Snipaste_20211109_225558.png
—主要用于当有2个或以上的ASBR通向同一外部网络时进行选路

四、NSSA区域
1、NSSA区域是OSPF RFC的补遗定义了特殊的LSA类型7 提供类似stub area和totally stubby area的优点 可以包含ASBR
2、OSPF链路状态通告

五、虚链路

1、概念

虚链路是一条通过一个非骨干区域链接到骨干区域的链路,这是一种应急措施,用于本来这个区域连接区域0的ABR损坏。

2、规则与特点

虚链路必须配置在两台ABR路由器之间
传送区域不能是一个末梢网络
虚链路的稳定性取决于其经过的区域的稳定性
虚链路有助于提供逻辑冗余