[ 网络协议篇 ] IGP 详解之 OSPF 详解--- OSPF协议报文 && 链路状态通告 详解
Posted _PowerShell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 网络协议篇 ] IGP 详解之 OSPF 详解--- OSPF协议报文 && 链路状态通告 详解相关的知识,希望对你有一定的参考价值。
🍬 博主介绍
- 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
- ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
- 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
- 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
- 🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
ospf 是当前用的最多的 IGP 路由协议
走网络方向的兄弟们,ospf 是必须掌握的
同时,ospf 的内容很多,之前已经写了两篇了,接下来还会有几篇,欢迎持续关注和订阅哦
可能由于能力有限,不会写的特别全面,但对于网络工作来说,应该是够用了
目录
4. LS Sequence Number & LS age
一、ospf报文拥有统一的头部
每个报文里面都有OSPF头部,长度为24byte,其字段有:
1.版本(version):对于ospfv2,该字段值为2. Ospfv3针对ipv6
2.类型(Type):表示该报文的类型,其对应关系为:1-hello;2-DD;3-LSR;4-LSU;5-LSACK。
3.报文长度(packet length):整个报文的长度(字节数)。
4.源路由器ID(router identification):产生这条报文的路由 器的ospf router-id
(router ID不能一样)
5.区域ID(area identification):该报文所属的区域ID,32bit(统一区域才能发送)
6.校验和(checksum):校验报文的有效性。
7.认证类型(Authentication type):使用的认证类型。(MD5 明文 等等)
8.认证数据(Authentication data):用于报文认证的数据。(可有多个)
明文 一个Authentication 就解决了
明文 多个Authentication 因为还有kid 密码的具体内容
二、验证合法ospf报文头部:
版本一致,区域id一致,认证类型一致
认证过程是在建立邻居的时候认证的
1. 认证模式
ospf authentication-mode ?可以查看认证模式(五种)
hmac-md5 Use HMAC-MD5algorithm
keychain Keychain authentication mode
md5 Use MD5 algorithm
null Use null authentication
simple simple authentication mode
1. 接口认证:
接口视图下:ospf authentication-mode simple plain Huawei(同一条链路的两个接口都需要认证) 认证模式 明文 在本路由器上以明文型式显示 Huawei
配置实例:两边核心配置是一样的,这里只演示了RTA
[RTA] router id 1.1.1.1[RTA]ospf [RTA-ospf-1] area 1 [RTA-ospf-1-area-0.0.0.1] network 1.1.1.1 0.0.0.0 [RTA-ospf-1-area-0.0.0.1] network 10.1.1.0 0.0.0.3 [RTA] interface Ethernet 0/0 [RTA-Ethernet0/0] ospf authentication-mode simple plain huawei
2. 区域认证:
区域下:要求区域下所有的路由器都做相同认证
配置差不多,这里就不演示了
三、报文类型及格式
ospf协议基于ip运行,采用IP封装,ip报文头部中对应的协议号为89.
多数情况下,ospf报文使用组播地址作为目的IP地址。
Hello p2p和广播(间隔10s dead40s) NBMA和P2MP(30s 120s)
DD(LSA头部信息)
LSR(请求 LSA)
LSU(正真的LSA(路由+拓扑))
LSACK(确认)
1. Hello报文:
用于发现直连链路上的邻居,以及维护邻居关系。携带一些参数,这些参数会被检查,参数互相匹配才能建立邻居关系。
1.网络掩码(network mask):发送该报文的接口的网络掩码。
2.Hello间隔(hello interval):周期性发送hello报文的间隔。P2P和BMA网络中缺省为10s,NBMA和P2MP网络中缺省为30s。
3.可选项(options):8比特位,每个比特位都用于指示该路由器的某个特性,路由器通过设置相应的比特位来通告自己支持某种特性或拥有某种能力,会直接影响到ospf邻接关系对的建立。
4.路由器优先级(router priority):路由器优先级,也叫DR 优先级,用于DR和BDR的选举。华为数通设备上缺省为1。
5.路由器失效时间(router dead interval):在邻居路由器被视为失效之前,需等待收到对方hello报文的时间。缺省为hello interval的4倍。
6.指定路由器(Designated router):网络中DR的接口IP地址,若为0.0.0.0,表示没有DR或者DR还未选举出来。
7.备份指定路由器(backup Designated router):网络中BDR的接口IP地址,若为0.0.0.0,表示没有BDR或者BDR还未选举出来。
8.邻居(Neighbor):直连链路上的有效邻居,该字段表示邻居的router id,如果有多个邻居,则包含多个邻居字段。
2. DD报文:
DD报文用于描述LSDB,确定主从关系(master/slave),携带LSA的头部数据。用于协商主从关系的DD报文不携带任何的LSA头部信息。master路由器主导整个LSDB的描述过程。
1.接口最大传输单元(interface maximum transmission unit):接口的MTU,在部分华为设备中,缺省时接口发送的DD报文中,无论该接口实际的MTU值为多少,该字段的值都为0。
2.可选项(options):路由器支持的ospf可选项。
3.I位(Initial bit):初始化位,当该DD报文用于选举主从关系时该比特位置为1,选举完成后,该比特位置为0。
4.M位(More bit):该比特位为1时表示后面还有更多的DD报文,为0时表示这是最后一个DD报文。
5.MS位(Master bit):master路由器发送的DD中该字段为1,slave路由器发送的则为0。
6.DD序列号(DD sequence number):DD报文的序列号,在DD报文交互的过程中,DD序列号被逐次加1,确 保DD报文传输的有序和可靠性。
7.LSA头部(LSA header):LSA头部信息,可能包含一条或多条LSA头部信息。
3. LSR报文
交互DD报文之后,路由器已经知晓了邻居有哪些LSA,然后就发送LSA向邻居请求所需的LSA完整信息。
1.链路状态类型(link-state ID):指示本条LSA的类型,1-router LSA;2-network LSA;3-network summary LSA;4-ASBR summary LSA;5-AS external LSA。
2.链路状态标识(link-state ID):LSA 的标识,不同的LSA对该字段的定义不同。
3.通告路由器(advertising router):产生该LSA的路由器的 Router id。
4. LSU报文
LSU用于向邻居发送完整的LSA信息,其中只有两个字段,一个是LSA个数,另一个是详细的LSA信息。
5. LSACK报文
LSACK用于对收到的LSA进行确认,里面包含了路由器所确认的LSA头部。
6. 报文交互过程
路由器的接口一旦激活ospf,就会开始发送hello报文,来发现直连链路上的OSPF邻居,
然后开始发送DD报文,其中包括了LSA头部摘要,
通过DD的交互之后路由器知道了对方拥有的LSA,于是就发送LSR请求对方完整的LSA,
对方收到LSR后就把LSA放在LSU中进行回应,
最后发送LSACK对收到的LSU进行确认,维护ospf,更新机制的可靠性。
四、LSA头部
LSA的生存时间(3600s):(路由器AB都正常的情况下这个LSA不会老化掉)
OSPF的机制是定时更新(30分钟 1800秒)(发送LSA给你更新)
链路down掉之后 永远刷新不了LSA LSA生存时间就会到3600(会被删除)
如果A上另外一个邻居down了
就会触发更新 就会立马通告给B (让B把这条路由删掉)
利用3类和五类LSA:就是把该路由的LSA的age时间置为3600s
B收到age为3600秒 就认为这个路由不可达了 就会删除
Rip撤销(删除)路由:meteic置为16跳就撤销了
Options:是否是一个特殊区域,nssa有没有置为等等信息
下面三个字段用来唯一标识一条LSA(通过这三个信息来辨别LSA)
LS type:OSPF有几种LSA类型(五种)
Link State ID:(不同类型LSA 就有不同类型的Link ID)
Advertising Router:通告路由器(就是通告这条路有的一个router id)
LS sequence number:序列号 用来标明是否是一个更新的LSA
一共有四个字节0x8000 0000到0x7FFF FFFF(负的最小值一直涨到正的最大值)
如果AB特别稳定,一直3分钟更新一次,有可能Seq用完了 那么就会重启ospf进程
用完要100多年(没有一个设备能跑十几年)
Seq和age用来标识一个更新的LSA(先比较LS seq 在比较age age越小越新)
LS checksum:校验和
Length:LSA长度
五、LSA(链路状态通告信息) type
谁生成的,描述了什么信息,在哪里泛洪
运行链路状态路由协议的路由器,会产生用于描述自己直连接口状况的链路状态信息并将其通告出去。路由器将网络中泛洪的链路状态信息都收集并存入链路状态数据库(LSDB)中,LSDB可视为对整个网络拓扑结构及网段信息的描绘,LSDB同步后,所有路由器对整个网络有一致认知。
LSU报文用于链路状态更新,该报文包含多个LSA,而且是LS完整数据。OSPF定义多种类型的LSA,但是这些LSA都拥有相同的头部。
1. LSA类型:
1类 所有路由器产生 描述链路状态信息
2类由NBMA和广播产生 (作用:计算区域间路由)描述网络中路由器的列表 区域内泛洪
3类LSA由区域边界路由器(ABR)产生,描述AS内部本区域外部 某一网段的路由信息,在LSA所属区域泛洪
本区域路由在另以区域泛洪, 经过一个ABR后要重新生成
5类LSA:自治系统边界路由器(ASBR)产生:描述了AS外部的一段路由信息,在整个AS内部泛洪
较特殊:不管通告到哪里 五类的信息不会做任何改变(导致找不到ASBR 引出4类LSA)
4类LSA:ABR产生,描述到达某一ASBR的路由信息在ABR所连接的区域内泛洪,(ASBR所在区域除外) ASBR所在区域没有4类LSA
作用:描述怎么去往ASBR
(三类通告的不是链路状态信息 不会描述ASBR在什么位置 只会显示你的 路由怎么走 不会描述router id是谁)五类携带:去往外部一定要找到router id 三类搞不定)
2. LSA包含:路由信息和拓扑信息
1.每个运行OSPF的路由器都会泛洪自身的LSA信息,(我和那个路由器相连,我要把那个网段通告给相应的设备)
2.最后每个路由器形成一个统一的LSDB(同区域完全一样)
3.每个路由器都以自己为根去计算(SPF算法)到达每一个分支节点的最短路径
4.计算路由,加载到路由表
3. Link State ID
Link State lD是该LSA所描述链路的标识
4. LS Sequence Number & LS age
查看LSDB数据库
序列号越大越新 序列号同 age
Router代表一类的LSA 自己产生的
5. 比较LSA
1、比较LSA实例的序列号,大的优先
2、序列号相同,再比校验和,大的优先
3、校验和也相同,再比老化时间,如果有一条LSA拥有大小为最大生存时间(3600S) 的老化时间,则最优
4、如果LSA的老化时间之间的差别多于15分钟,则老化时间小的优先
5、如果以上条件都比不出来,则认为这些LSA相同
六、专栏分享
每个专栏都在持续更新中~~~
以上是关于[ 网络协议篇 ] IGP 详解之 OSPF 详解--- OSPF协议报文 && 链路状态通告 详解的主要内容,如果未能解决你的问题,请参考以下文章