| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> OSPF理论基础篇-02 -> 正文阅读 |
|
[网络协议]OSPF理论基础篇-02 |
OSPF五种类型报文
①.Hello报文:周期性发送,用来发现和维持OSPF邻居关系,以及进行DR/BDR的选举。 PS:可将Hello理解为进餐厅服务员的欢迎光临和下次再来。 ②.DD(Database Description,数据库描述)报文:描述了本地LSDB(Link State DataBase,链路状态数据库)中每一条LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。 PS:可将DD理解为进入餐厅后查看的菜单 ③.LSR(Link State Request,链路状态请求)报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。 PS:在看完餐单以后看自己有没有没吃过的菜,若没吃过则点这道菜 ④.LSU(Link State Update,链路状态更新)报文:向对方发送其所需要的LSA。 PS:服务员根据点的菜单送上的菜品 ⑤.LSAck(Link State Acknowledgment,链路状态确认)报文:用来对收到的LSA进行确认。 PS:对自己点的菜品进行确认 1、OSPF报文头格式Version: 8位,OSPF 的版本号。2代表OSPFv2,3代表OSPFv3。 Type:8位,OSPF报文的类型。 1为Hello;2为DD;3为LSR;4为LSU;5为LSAck。 Packet length: 16位,OSPF报文的总长度。 Router ID:32位,发送该报文的路由器标识。 Area ID: 32位,发送该报文的路由器所属区域。 Checksum:16位,包含除了认证字段的整个报文的校验和。 AuType: 16位,验证类型如下: Authentication: 64位,其数值根据验证类型而定: 0:不含验证信息;????????1:此字段为明文密码; 查看实际报文交互情况: 可以发现该数据是OSPFv2的hello报文,包长度是44Byte,原路由是1.1.1.1,区域0的交互 ? 2、Hello报文格式Network Mask:32位,发送Hello报文的接口所在网络的掩码。 Hello Interval:16位,发送Hello报文的时间间隔。 Options:8位,可选项,含义同OSPF 头中一致。 Rtr Pri:8位,DR优先级,默认为1,如果为0,则路由器被视为放弃参与DR或BDR的选举。 RouterDeadInterval:32位,邻居失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效,并从邻居表里移除该邻居,从路由表里撤销指向其的路由。 Designated Router:32位,本网段上DR路由器的接口IP地址。 Backup DesignatedRouter:32位,本网段上BDR路由器的接口IP地址。 Neighbor:32位,邻居列表,用 Router ID标识。记录当前路由器已知的链路上所有邻居的RID。 查看Hello报文 可以看出该消息是刚建立OSPF时候抓获的,因为DR和BDR还没有选举出来。 在此需要注意有点,在广播和点到点网络中Hello报文是10s/每次,而在NBMA和P2MP网络中,Hello报文是10s/每次. ? ?3、DD报文格式Interface MTU:16位,表示在不分片的情况下,此接口最大可发出的IP报文长度。华为默认不填充接口实际MTU值,所以值为0。 Options:含义同OSPF头中一致。 I (Initialization)位:1位,当发送连续多个DD报文时,如果这是第一个 DD报文,则置为1,代表同步过程开始。否则置为0。 M (More)位:1位,当发送连续多个DD报文时,如果后续的DD报文中不再有LSA头,则置为0。 M/S (Master/Slave)位:1位,当两台OSPF 路由器交换 DD报文时,首先需要确定双方的主从关系,优先级相同的情况下,RouterID大的一方会成为Master,当值为1时表示发送方为 Master。 DD Sequence Number:32位,DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。 LSA Headers:本LSDB 中 LSA的头。 查看DD报文 可以看出这是一个空的DD报文,该报文中这是第一个DD报文,后续还会有LSA头,DD序列号为245。 ? 4、LSR报文LS type:32位,LSA 的类型号。 Link State ID:32位,根据LSA中的LS Type和 LSA Description在路由域中描述一个LSA。 Advertising Router:32位,产生此LSA的路由器的Router ID。 查看LSR报文 可以看出这是所有OSPF Route都发出的Type 1 的LSA报文,第一个LSA是来自10.10.12.2的,而第二个是来自1.1.1.1的LSA信息。 ? 5、LSU报文Number of LSAs:32位,表示此Update中所包含的LSA的数量。 LSAs:多个完整LSA的内容。 查看LSU报文 ? 6、LSAck报文LSA Headers:LSA头列表,OSPF通过LSA头对收到的完整LSA做确认。一份LSAck可以对多份LSU中的LSA 做确认。? 查看确认 ? OSPF邻居和领接关系一、邻居关系建立过程先查看一段在华为路由器上配置完成OSPF后的syslog ?三步握手 ? Down状态:邻居的初始化,此时双方刚发送Hello报文,两方还互不知道对方。 Init状态:R1收到邻居的Hello报文时,若该Hello报文中的Active Neighbor字域没有包含当前路由器的Router ID 1.1.1.1,则R1中邻居的状态为 Init. Two-Way状态:R1再次收到Hello报文时,此次Hello报文中的Active Neighbor字域中有自己的Router ID 1.1.1.1,这时路由器进入Two-Way状态。 PS:只有A及B的邻居都进入Two-Way 状态,才代表彼此间双向邻居建立起来。 二、领接关系建立过程先查看一段在华为路由器上配置完成OSPF后的syslog ? ExStart?(信息交换初始)状态:该状态下,本地路由器和邻居路由器间互传空DD报文。 ①.确定主/从关系????????②.确定DD的初始序列号????????③.比较接口MTU(可选) 在ExStart 状态下,路由器互相发送的空DD报文中置Ⅰ(Initialize),M (More)及MS (Master/Slave)位。 ?以下是一个空的DD报文,当本地Route和邻居Route互传空DD时,就是Exstart状态 Exchange(信息交换)状态:选举出 Master后,Slave路由器向Master回送 DD报文,其中包含LSDB中的LSA头(LSA summary)列表,并使用Master 的序列号。Master也把自己的LSA头列表用DD发送,序列号增加1,同时,Slave收到后,会回应相同序列号的DD报文。 任何一侧只要还有未传递完的LSA头,Master就一定要产生DD报文并由 Slave回应。Exchange阶段通过这种可靠的DD交互,完成快速交换LSA 头。 查看报文可以发现,Master已选出,此状态即为Exchange状态? ? Loading(信息加载)状态:该状态下,本地路由器将会向它的邻居路由器发送链路状态请求数据包LSReq,以请求本地LSDB中没有的LSA。收到LSReq的报文,路由器会用包含完整的被请求的LSA的LSU 做回应。请求方收到LSU后,如果无误,则LSAck确认该LSU。一份LSAck可同时为多份LSUpdate做确认。 Full(完全邻接)状态:在FULL状态下,邻居路由器之间已完成同步过程,建立起完全邻接关系。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:16:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |