OSPF (开放式最短路径优先)路由协议是被广泛使用的一种链路状态动态路由协议。
OSPF 路由协议是专为 IP 网络开发的路由协议,具有以下优点:
? OSPF 采用组播方式收发报文,节约网络带宽,减少网络开销;
? 适用大规模网络,可同时支持几百台运行 OSPF 协议的路由器;
? 快速收敛:当网络拓扑变化时,各路由器能够立即同步更新路由表,保障网络不中断;
? 采用最小生成树路由算法,保证不会产生路由环路;(而 RIP 路由协议有可能产生环路);
? 支持区域划分,对于大规模网络可划分为多个 OSPF 自治系统,便于管理和性能提升;
? 支持到同一目的网络的多条等值路径,实现负载均衡;
? 支持路由协议认证和报文加密,具有更高安全性;
? 支持可变长子网掩码、路由聚合(减小路由表规模,提高路由效率),适应复杂网络。
三方面:
1、收敛速度快 2、选择路径佳(前提防环) 3、占用资源少
一、OSPF的数据包 – 5种
文章图片
hello包 – 组播收发,用于邻居、邻接关系的发现、建立、周期保活
DBD – 数据库描述包-- 本地LSDB(链路状态数据库)目录
LSR—链路状态请求 – 用于询问对端本地未知的LSA信息
LSU-- 链路状态更新 – 用于共享具体的每一条LSA信息
LSack 链路状态确认 – 确认包
OSPF的数据包是跨层封装于3层报头后方 ,协议号89
文章图片
二、OSPF的状态机 – 两台OSPF路由器间不同关系的阶段 Down : 一旦接收到对端的hello包进入下一个状态
Init 初始化 : 若接收到的hello包中存在本地的RID,那么进入下一个状态机
2way :双向通讯 邻居关系建立的标志
条件:点到点网络直接进入下一个状态机;MA网络进行DR/BDR选举,非DR/BDR之间不能进入下一个状态机;
Exstart预启动 :使用不携带数据库目录信息的DBD包,进行主从关系的选举,RID数值大为主,优先进入下一个状态机
exchange准交换 :使用携带数据库目录信息的DBD包,进行目录共享,需要ACK确认
loading加载 :接收到其他邻接的目录信息后,和本地进行比对,若本地存在未知的LSA信息,将使用LSR询问对端,对端使用LSU来更新这些LSA信息,直至双方数据库一致;LSU需要ACK确认;
Full 转发 标志着邻接关系已经建立。
三、OSPF的工作过程 路由器上启动OSPF协议后,直连的邻居间,开始组播收发hello包,hello包中将存储本地已知邻居的RID,在双方RID均已知的情况下,建立邻居关系,生成邻居表;
邻居关系建立后,邻居间将进行条件匹配,匹配失败将停留为邻居关系,仅hello周期保活即可;匹配成功者间将进行邻接关系的建立;
邻接关系间的路由器,将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息;使得同一区域内所有路由器的数据库完全一致;---- 数据库表;
当本地数据库完成同步后,将数据库–>有向图–>树型结构图–>将本地到达所有未知网段的最短路径加载于本地路由表中;
收敛完成,仅hello包周期保活即可;正常每30min,邻接关系间再进行一次DBD的对比,若一致及正常;若不一致将马上进行同步。
四、配置 OSPF 路由协议 1.在交换机配置 OSPF 路由
(1)指定进程号、router-id
[Switch]ospf 1 router-id 192.168.1.1
其中 router-id 必须唯一,用设备上某个接口 IP 表示。
(2)指定 OPSF 区域号
[Switch-ospf-1]area 0
(3)指定本地直连网络及其反掩码(255.255.255.255-网络掩码 )
[Switch-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[Switch-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[Switch-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255
2.在R配置 OSPF 路由
[r1]ospf 1 router-id 1.1.1.1 启动时,定义进程号,仅具有本地意义;建议配置RID;
RID格式为ipv4地址,且需要全网唯一; 手工配置–环回接口上取最大数值的ip地址—物理接口上最大ip地址的数值
宣告:1、区域划分 2、接口激活协议 3、传递接口信息
[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 12.1.1.0 0.0.0.255
区域划分规则:
1、星型结构 – 区域0为骨干 大于0为非骨干 非骨干区域必须直连骨干区域
2、ABR–区域边界路由器 两个区域间必须依靠ABR连接
启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表:
hello包 – 组播收发 周期发送 – hello time 10s 或30s dead time 为hello time 4倍
文章图片
邻居间hello包中有一些参数必须完全一致,否则无法建立邻居关系;
Hello 和dead time 、区域ID、认证参数、末梢区域标记;另外在华为的设备中OSPF要求邻居间接口上配置的ip地址,其掩码长度必须一致;
[r2]display ospf peer 查看邻居表
[r2]display ospf peer brief 查看邻居关系简报
当邻居关系建立后,邻居间进行条件匹配,匹配失败,将保持为邻居关系;匹配成功,将建立为邻接关系,邻接关系将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息,同步生成数据库表—LSDB 链路状态数据库
[r2]display ospf lsdb 查看数据库表
数据库表同步完成后,邻接间的互动完成,仅hello包保活;之后本地基于本地的数据库表;
转换为有向图,再转换为树形结构,最终将本地到达所有未知网段的最短路径,加载于本地的路由表中:
display ip routing-table protocol ospf
默认ospf协议在华为设备中,优先级为10;度量为cost值
cost值=开销值= 参考带宽/接口带宽 默认参考带宽为100M
ospf协议将cost值之和最小定义为最佳路径,加载于本地路由表中
若接口带宽大于参考带宽,cost值为1,将可能导致选路不佳;可以修改默认的参考带宽
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
切记:一旦修改,整个网络所有ospf路由器需要一致;
五、关于OSPF协议从邻居建立成为邻接的条件 根据网络类型决定
在点到点网络中,所有的邻居关系必然成为邻接关系
在MA网络中从邻居到邻接前将利用一个周期的dead time;进行DR/BDR选举;
先比较这些参选接口的优先级,默认1,取值范围0-255;越大越好,0标识不参选;
DR优先级最大,BDR次大;选举非抢占,故若希望干涉选举,需要重启ospf进程,或者将非DR/BDR修改为0;
[r2]interface GigabitEthernet 0/0/1
[r2-GigabitEthernet0/0/1]ospf dr-priority 3 修改优先级
重启进程
reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
非DR/BDR间为邻居关系;
六、OSPF的接口网络类型 — OSPF协议在不同的网络类型,其工作的方式不同 [r1]display ospf interface GigabitEthernet 0/0/1
OSPF Process 1 with Router ID 1.1.1.1
Interfaces
Interface: 12.1.1.1 (GigabitEthernet0/0/1)
Cost: 1 State: DR Type: Broadcast MTU: 1500
网络类型 ospf接口网络类型
LoopBack P2P(LoopBack) 无hello 环回使用32位主机路由
点到点 (PPP/HDLC/GRE)P2P 10s hello time 不选DR/BDR
BMA (以太网) Broadcast 10s hello time 选DR/BDR
NBMA (MGRE) P2P
在tunnel接口上,ospf的默认工作方式为P2P,这种工作方式,只能建立一个邻居关系,故在MGRE环境中将无法正常工作;
修改接口的默认工作方式:
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ospf network-type ?
broadcast Specify OSPF broadcast network
nbma Specify OSPF NBMA network
p2mp Specify OSPF point-to-multipoint network
p2p Specify OSPF point-to-point network
切记:一个网段中所有接口的ospf工作方式必须一致;否则将无法建立邻居关系,或者因为不同工作方式的hello time一样,错误建邻,无法收敛
七、关于OSPF的不规则区域问题 1、远离骨干的非骨干
2、不连续骨干
解决方案:
1、tunnel 在骨干区域与非法ABR间建立一条隧道,之后将该隧道链路宣告到OSPF协议中
缺点:
1)周期的hello与更新,包括触发更新,将一致占用中间穿越区域;
2)选路不佳
【#|HCIP---OSPF协议总结】2、OSPF的虚链路
由非法ABR设备,通过直连区域的合法ABR进行授权,来转发路由
由于没有新增链路,故不存在选路不佳问题
[r2]ospf 1
[r2-ospf-1]area 1 两台ABR间的直连区域(同时处于该区域)
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 对端ABR的RID
[r2]display ospf vlink
缺点:虚链路上的两台ABR间的周期资源占用问题;
1)在思科中,取消两台设备的周期行为,hello、更新均收发一次;–不可靠
2)在华为中,保留周期–占资源
3、多进程双向重发布;
ospf多进程:一台路由器上的多个进程,每个进程拥有自己的数据库,独立计算路由条目,且计算所有不共享;最终将所有最佳路径加载于同一张路由表内;
路由器的一个接口只能工作在一个进程中;
可用于解决不规则区域,将不规则位置工作不同的进程中,实现分开,之后利用重发布技术来共享路由表; 解决了选路不佳和资源占用的问题
[r4]ospf 1
[r4-ospf-1]import-route ospf 2
[r4-ospf-1]q
[r4]ospf 2
[r4-ospf-2]import-route ospf 1
八、 OSPF的数据库表 display ospf lsdb 查看LSDB目录
ospf协议在不同的条件环境下,将使用不同类别的LSA来传输拓扑或路由信息;
display ospf lsdb router 2.2.2.2 具体查看某条LSA信息
类别名 link-id(页面)
所有类别LSA均携带的信息
Type : Router 类别名 此处为1类
Ls id : 2.2.2.2 link-id 在目录中的页码号
Adv rtr : 2.2.2.2 通告者,该条LSA发出起源设备的RID
Ls age : 1255 老化时间,正常1800s周期归0,触发归0;最大老化3609s
Len : 48 长度
Options : ABR E
seq# : 80000016 序列号
chksum : 0x4baa 校验和码
LSA类别 传播范围 通告者 携带信息
LSA1 Router 单区域,本地所在区域 单区域内的所有路由器 本地直连拓扑
LSA2 Network 单区域,本地所在区域 DR 单个MA网段的拓扑
LSA3summary 整个OSPF域 ABR 域间路由条目
LSA4 asbr 除ASBR所在区域外的 与ASBR在一个区域 ASBR所在位置
整个ospf域 直连区域0的ABR
ASBR所在区域基于1类获取ASBR位置
LSA5 ase 整个OSPF域 ASBR 域外路由条目
LSA7 nssa 单个NSSA区域 ASBR 域外路由条目
LSA类别 link-id 通告者
LSA1 Router 通告者的RID 单区域内的所有路由器
LSA2 Network DR接口的ip地址 每个MA网段内的DR
LSA3summary 域间路由的目标网络号 ABR,在经过下一台ABR时,修改
LSA4 asbr ASBR的RID ABR,在经过下一台ABR时,修改
LSA5 ase 域外路由的目标网络号 ASBR
LSA7 nssa 域外路由的目标网络号 ASBR
九、 OSPF优化–减少LSA的更新量 1、汇总 — 减少骨干区域的路由条目数量
2、特殊区域-- 减少非骨干区域的路由条目数量
【1】汇总–OSPF协议不支持接口汇总,在一个区域内,邻接间传递的是拓扑信息,不能进行汇总;故只能在交互路由的边界设备进行汇总
1)域间路由汇总–在区域间的ABR上,交互区域间路由条目时进行汇总配置
[r2]ospf 1
[r2-ospf-1]area 1 本地通过该区域1/2类LSA计算所得路由,可以汇总后传递给其他区域
[r2-ospf-1-area-0.0.0.1]abr-summary 3.3.0.0 255.255.252.0
2)域外路由汇总—ASBR在将外部的路由条目通过重发布协议,共享到OSPF协议中时;
可以进行汇总
[r4]ospf 1
[r4-ospf-1]asbr-summary 99.1.0.0 255.255.252.0
【2】 特殊区域 – 用于减少各个非骨干区域的LSA数量
不能为骨干区域,不能配置虚链路
[1] 同时不能存在ASBR
1)末梢区域–拒绝4/5类的LSA;由该区域连接骨干区域的ABR向该区域发布一条3类的缺省
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]stub
注:该区域内的所有路由器均需配置该命令
2)完全末梢区域 在末梢区域的基础上,进一步拒绝3类的LSA;仅保留一条3类的缺省路由
先将整个区域所有路由器配置为末梢区域;然后仅再在连接骨干区域的ABR上配置完全即可
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]stub no-summary
[2] 存在ASBR
1)NSSA 非完全末梢区域 – 该区域将拒绝4/5类LSA,由该区域连接骨干区域的ABR向该区域发布一条7类的缺省路由;该区域内的ASBR导入域外路由时,基于7类导入,之后通过该区域连接骨干的ABR传递到骨干区域时,转换为5类进入骨干区域;
NSSA设计的重点,不是减少该区域内ASBR产生的域外路由,而是网络中其他部分的ASBR产生的域外路由;
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]nssa 本区域内部所有设备均需配置
2)完成NSSA — 在NSSA的基础上,进一步拒绝3类LSA的进入,由该区域连接骨干区域的ABR向该区域发布一条3类的缺省
先将该区域配置为NSSA区域,之后仅在该区域连接骨干的ABR上配置完全即可
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]nssa no-summary
切记:NSSA和完全NSSA的工作环境,需要考虑ISP(运营商)所在位置,否则可能导致环路出现
十、OSPF的扩展配置 1、认证
【1】接口认证
1)接口明文
r1(config)#interface ethernet 0/0
r1(config-if)#ip ospf authentication 开启明文认证需求,开启后本地所有ospf数据包中认证类型字段被修改,邻居间若不一致将不能建立邻居关系
r1(config-if)#ip ospf authentication-key cisco123 配置明文密码
2)接口密文
r6(config)#int s0/1
r6(config-if)#ip ospf authentication message-digest 开启秘文认证需求,开启后本地所有ospf数据包中认证类型字段被修改,邻居间若不一致将不能建立邻居关系
r6(config-if)#ip ospf message-digest-key 1 md5 cisco123
【2】区域认证
例:在R1上开启关于区域0的明文或密文认证;然后仅仅只是将R1上所有属于区域0的接口,认证类型字段修改,相当于在R1上所有区域0接口配置明文或密文认证需求;但每个接口的秘钥还是需要逐一配置;
r12(config)#router ospf 1
r12(config-router)#area 2 authentication 明文
r12(config-router)#area 2 authentication message-digest 密文
【3】虚链路认证
r1(config)#router ospf 1
r1(config-router)#area 1 virtual-link 4.4.4.4 authentication
r1(config-router)#area 1 virtual-link 4.4.4.4 authentication-key cisco
r1(config-router)#area 1 virtual-link 4.4.4.4 authentication message-digest
r1(config-router)#area 1 virtual-link 4.4.4.4 message-digest-key 1 md5 cisco123
2、被动接口
r1(config)#router ospf 1
r1(config-router)#passive-interface ethernet 0/1
3、加快收敛—邻居间直连接口hello和dead 必须完全一致
r7(config)#interface s0/1
r7(config-if)#ip ospf hello-interval 5
r7(config-if)#ip ospf dead-interval 20
注:修改本端的hello time本端的dead time自动4倍关系匹配;
4、缺省
3类缺省—通过特殊区域自动产生;
末梢、完全末梢、完全NSSA自动产生;
5类缺省—本地路由表中必须已经存在缺省路由,通过什么方式产生的无所谓;
之后,可以使用专用指令将其重发布到OSPF协议中
r9(config)#router ospf 2
r9(config-router)#default-information originate
默认进入路由为类型2,OE2;度量为1;
类型1:在内部传递时不叠加内部度量;
类型2:在内部叠加度量; 默认
若网络中存在多台边界路由器,均进行重发布行为,建议修改为类型1;
r9(config-router)#default-information originate metric-type 1
r9(config-router)#default-information originate always 强制向内网发布缺省路由信息;
7类缺省–ASBR上通过其他协议学习到的缺省导入OSPF,同时所导入区域为NSSA区域;
r12(config)#router ospf 1
r12(config-router)#area 2 nssa default-information-originate
注:若一台设备同时学习多种缺省; 内部优于外部 3类优于5/7类;
若5类和7类相遇,先比度量,小优;若度量一致那么5类优于7类;
推荐阅读
- #|题目-Android基础
- 2022虎符|2022虎符网络安全CTF部分wp(1)
- 网络基础知识讲座之11:互联网的管理架构
- #|MATlab--建模篇
- 网络设备再运用,小模块发挥大作用
- 用访问控制下文完成网络单向访问
- 网络应用技巧 用注册表强化网上邻居
- 计算机网络(王道考研)|3.4计算机网络(局域网基本概念和体系结构 以太网 )
- pytorch|pytorch时空数据处理3——ConvLSTM介绍及应用