OSPF基础,五种数据包,七类LSA

2023-10-16 23:50

本文主要是介绍OSPF基础,五种数据包,七类LSA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OSPF:开放式最短路径优先协议

无类别链路状态路由协议—组播更新协议:224.0.0.5/6
触发更新、周期更新(30min);跨层封装到网络层–协议号89
协议算法特点: 链路状态型路由协议,SPF算法
基于LSA更新导致更新量很大-----需要为中大型网络服务—周期的维护—结构化部署
结构化部署–区域划分、地址规划
使用范围:IGP

一、数据包—5种基本数据包

HELLO邻居的发现、建立、保活
DBD数据库描述包 – 数据库目录信息
LSR链路状态请求
LSU链路状态更新—携带各种LSA
LSack链路状态确认

二、OSPF的状态机

Down本地一旦发出hello包,进入下一状态
Init初始化本地接收到的hello包中若存在本地的RID,进入下一状态
2way双向通信邻居关系建立标志
条件匹配点到点网络直接进入下一状态;MA网络将进行DR/BDR选举(40S),非DR/BDR间不能进入下一状态;
Exstart预启动使用类hello 的DBD包进行主从关系选举,RID数值大为主,主优先进入 下一状态
Exchange准交换使用真正的DBD进行数据库目录的共享,需要ACK;
Loading 加载使用LSR/LSU/LSack来获取未知的LSA信息;
Full转发邻接关系建立的标志;

三、OSPF的工作过程

启动配置完成后,本地收发hello包,建立邻居关系,生成邻居表;
再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包周期保活即可;
匹配成功者间可以建立邻接(毗邻)关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,当收集完网络中所有的LSA后,生成数据表–LSDB

LSDB建立完成后,本地基于SPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;完成收敛,
收敛完成后–hello包周期保活 30min周期的DBD比对,若不一致将使用LSR/LSU/LSack重新获取

结构突变:

1、新增网段—直连新增网段的设备使用DBD告知邻居,邻居再使用LSR/LSU/LSack来获取

2、断开网段—直连断开网段的设备使用DBD告知邻居,邻居再使用LSR/LSU/LSack来获取

3、无法沟通—dead time 计时到后,邻居关系断开,删除所有从该邻接处学习到的所有LSA信息;

LSA链路状态通告–在不同条件下产生不同的拓扑或路由信息,被分为各种类别;

LSDB链路状态数据库–所有的LSA的集合
OSPF收敛LSA洪泛 LSDB同步

全网唯一
手工;环回接口上最大数值的ip地址;物理接口最大数值;无进程

宣告:1、激活 2、拓扑 3、区域划分

区域划分规则:

1、星型结构------所有非骨干必须直连到骨干区域 区域0为骨干 大于0为非骨干
2、ABR–区域边界路由器

区域划分的意义: 1.减少LSA的数量 2.减少LSA的传播范围
区域的划分是基于接口的(链路的)
区域的标记:使用了32个二进制 1.十进制 2.类似于IP地址 A.B.C.D

区域的分类:

骨干区域: 区域标记为0或0.0.0.0
非骨干区域:区域标记不等于0或0.0.0.0

区域设计原则: 向日葵型网络结构‘

1.OSPF网络中必须存在并唯一的骨干区域(单区域除外)
2.若存在非骨干区域,非骨干区域必须与骨干区域直接相连

OSPF中路由器的角色:
骨干路由器:
非骨干路由器:
ABR:区域边界路由器,能够产生3类LSA的路由器
ASBR:自治系统边界路由器,能够产生5类或7类LSA的路由器

邻居间hello包中必须有4个参数完成一致,否则无法建立邻居关系:
1、hello 和dead time
2、区域ID
3、认证字段
4、末梢区域标记

hello包

启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表:

Hello包:用于邻居的发现、关系的建立和保活
Hello :DBD LSR LSU LSACK
hello: 周期性发送,周期时间10s或30s(根据不同的网络类型默认10s或30s)
目的:建立并维持OSPF 邻居关系(邻居关系建立之后重当保活包功能)

发Hello包,down状态到init(初始化)状态

Hello包目标地址224.0.0.5,所有运行OSPF的路由器都会监听的组播地址,(本地链路组播)
Ttl值为1

Network Mask:发出数据包的接口的网络掩码;
Hello Interval:接口上发送的Hello包的时间间隔,默认BMA和P2P网络为10S,NBMA网络中是30S;
Options:DN—位MPLS VPN使用,O位—用于Opaque LSA,DC—需按链路上使用,L—接受和转发具有外部属性的LSA的能力,N—是否支持NSSA LSA,MC—MOSPF中使用,E—是否支持五类LSA,MT—MT-OSPF中使用;
Router Priority:接口优先级,用于选举DR/BDR,默认为1;
Router Dead Interval:死亡时间,默认为Hello时间的4倍;
Designated Router:MA网络中DR接口的IP地址,若不存在则为0.0.0.0;
Backup Designated Router:MA网络中的BDR接口的IP地址,若不存在则为0.0.0.0;
Active Neighbor:发出路由器的所有有效邻居的Router-ID

DBD数据包

首部中Type字段为1
功能:描述数据库的目录信息
DBD包:exstart和exchange均出现; exstart状态时,没有携带目录信息,
仅用于主从关系选举;

1、DBD包中携带MTU,强制要求邻接间MTU值必须一致,否则将卡在该状态
2、在exstart状态的DBD时,使用隐型确认;—基于序列号
从使用主的DBD序号来确认主的信息
3、标记位 I 为1标识本地发出的第一个DBD 包
M为0标识本地的发出最后一个DBD包
MS为1标识主,为0标识从

当LSDB同步完成后,本地基于数据库最短选路规则,计算到达所有未知网段的最短路径,然后将其加载到路由表中:

Interface MTU:发送DBD包的路由器接口的MTU值;
Options:同Hello包的Options;
DB Description:Init(I)—发送第一个DBD时置为1,后续为0;More(M)—发送不是最后一个DBD包时置为1,最后一个DBD包置为0;Master(M)—置为1代表时Mater路由器,为0代表是Slave路由器;
DD Sequence:DBD包的序列号;

LSR数据包

首部中Type字段为3
功能:请求在DBD交换过程中发现的本路由器中没有的或已过时的LSA包细节

链路状态请求数据包时OSPF数据包的第3种类型,在部分路由数据库信息“遗失”或“过时”的情况下发送。LSR数据包用来重新取回“遗失”的路由数据库中的精确信息。DBD交换过程完毕后,邻居双方(主/从路由器)还会互发LSR数据包,请求对方发送DBD交换过程中通告过的LSA。

LS Type:指出LSA的类型;
Link State ID:LSA描述的内容
Advertising Router:包含生成LSA的路由器的Router-ID。

LSU数据包

首部中Type字段为4
功能:用于LSA的洪泛和响应LSR

链路状态更新数据包是OSPF数据包第4种类型,OSPF路由器会发此类数据包来实施LSA的泛洪。单个LSU数据包内会包含多条LSA。OSPF路由器也会发送LSU数据包,来回应(邻居路由器发出的)LSU数据包。以泛洪方式发出的LSA由LSA确认数据包进行确认。只要有一条未经确认的LSA,(OSPF路由器就会)每隔重传间隔时间重传一次。

LSA:1.LSA 类型 2.link-ID 链路标识符 3.ADV router 产生路由器

Number of LSAs:数据包内的LSA的数量;
LSA:携带的LSA;

LSAck数据包

首部中Type字段为5
功能:对LSU的确认

链路状态确认数据包是OSPF数据包的第5种类型,用来对每条LSA进行确认。OSPF路由器也会发送LSack数据包,来应答LSU数据包。可用单个LSack数据包一次性确认收到的多条LSA。LSack数据包负责LSU数据包的可靠传输。

链路状态确认数据包以组播的方式发送。若(发送LSack数据包的)路由器为DR/BDR,则IP包头的组播目的IP地址为224.0.0.5(所有SPF路由器地址)。否则,LSack数据包IP包头的组播目的IP地址为226.0.0.6(DR/BDR地址)。

包内是确认的LSA;

各类LSA:

1类LSA:router -LSA

功能: 产生本路由器针对某个区域的路由信息和拓信息
传播范围:本区域内传输
Link ID : 产生者的router-id
ADV router: 产生者的router-id
特性: 在单个区域中分别产生一条1类LSA,若存在MA网络,1类LSA不完整,需要配合二类
LSA生成路由信息以及拓扑信息。
1类LSA 内容类型: 1.stubnet(末节网络) 2.transnet(传输网络 仅限于MA网络) 3.point to-point 4.virtual link (虚链路)

2类LSA ,network LSA ,网络LSA

功能: 用于在MA网络中,描述本网络路由器的数量以及本MA网络的网络掩码
Link ID:DR接口的IP地址
ADV router:DR所在路由器的router-ID
特性: 只会出现在MA网络,用于补充1类LSA(1.MA网络的掩码 2.MA网络路由器的数量)

3类LSA :summary LSA 汇总LSA

功能:用于在区域之间传递路由信息
link-id :传递路由的网络号
ADV router:默认为所在区域ABR的router-id
特性: 在穿越不同区域时,有其他的ABR重新产生(ADV router 是变化的)

4类LSA: summary ASBR LSA

功能:除了产生5类LSA所在区域,用于通告ASBR位置
Link id:ASBR的router-id
ADV router: 默认ASBR所在区域的ABR的 router-id
特点:在穿越不同区域时,有新的ABR重新产生。(与3类LSA一致)

5类LSA: 外部LSA

功能: 用于在整个OSPF中传递外部路由(原本不属于OSPF域)
5类LSA有两种类型: 类型1 类型2(区别:)
Link id :传递外部路由的网络号
ADV router : 产生该LSA的 router-id
传播范围:在整个OSPF域中传输

7类LSA : NSSA LSA

功能: 在NSSA区域中,传递外部路由。
Link id :传递路由网络号
ADV router:产生该LSA的 router-id

特性:默认为类型2 ,度量值为1 。 携带了FA地址(转发地址)
FA: 转发地址,当5类或7类LSA中携带了FA地址,则计算路径开销值时计算的是当前路由器到达FA地址的开销值之和+种子度量值。(若FA地址不可达,则路由不能加表)

FA 地址:

1.默认7类LSA 产生FA地址,5类LSA不产生的(7转5 的5类LSA 携带FA地址 )

2.7类LSA 产生规则:默认产生的FA地址为产生7类LSA 的ASBR 最大的环回接口地址 ;若连接其他协议的接口也运行了OSPF协议,网络类型为BMA,则产生的7类LSA中FA地址为连接其他接口对应的下一跳地址;若网络类型为P2P,则FA地址依然为环回接口中IP地址最大的

3.5类LSA FA地址规则: 默认不产生,若连接其他协议的接口运行了OSPF 协议并且网络类型为BMA则FA地址为重发布之前路由的下一跳地址,若网络类型为P2P,则不会产生FA地址。

Ls age : 1073
seq# : 80000006
chksum : 0x9dca
组步调计时器:默认5分钟。

LSA中存在3个参数用于LSA的新旧比较
3600s的LSA 都是最优的.

1.序列号
2.校验和
3.LSA老化时间(若以上都相同,LSA age 之差小于15 ,越小越有,若大于15分钟,则无法比较 认为都是最新的。)

数据链路层面:针对不同的物理链路定义不同的封装
局域网封装:Ethernet 2,IEEE802.3
广域网封装:PPP HDLC FR ATM

HDLC:高级数据链路控制协议,默认思科的串行链路封装为HDLC,分为工业标准的HDLC和思科私有的HDLC,两者不同通用,思科私有的HDLC中加入一- 些控制字符,识别上层协议,已经三层的传输方式定义接口封装为HDLC :

PPP:点对 点封装协议,

华为串行链路默认封装为PP,PPP链路 需要建立一条端到端的链路,

PPP 会话建立分为: 1.LCP 2.PP认证3.NCP

LCP:链路控制协议
通过发送LCP数据进行物理链路和封装的确认

PPP认证:
增加PPP会话的安全性,PAPCHAP

NCP:网络控制协议
通过发送NCP针对上层协议进行封装,IPCP 协商,在NCP协商过程中,会自动将自己本端IP地址以路由方式发送给对方,当PPP会话建立之后,会产生到达对方接口IP地址的32位主机路由

PAP : 密码认证协议,
是一种一次性的简单的明文认证

CHAP :质检挑战握手认证协议
通过三次握手的方式进行安全的MD5认证 , 在认证过程中需要发送挑战信息(类似HMAC 密钥化哈希)。

广域网技术:PPP HDLC FR ATM PPPOE PPPOA

这篇关于OSPF基础,五种数据包,七类LSA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221571

相关文章

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]