OSPF报文格式分析
- 格式:doc
- 大小:191.00 KB
- 文档页数:8
Ospf知识点总结与案例分析一、知识点总结1.OSPF报文有哪些?报文的作用?报文hello建立、维护和保持邻居关系DD 数据库摘要描述选举主从LSR 请求所需要的LSA,只携带了LSA的头部信息LSU 更新请求的LSA,携带了完整LSA信息LSACK 对收到的LSA做确认①影响邻居关系建立?OSPF头部:Router ID不冲突、区域ID一致、认证类型、数据一致Hello报文:网络掩码一致(P2P除外)、option选项、hello和dead时间一致、邻居列表有自己的router id②领接关系建立失败?双方开启协商MTU,如果从大主小,从卡在exchange,主卡在exstart,如果从小主大,主从都卡在exstart状态2.OSPF状态机有哪些?状态机的作用?down状态,开启了ospf,未收到对方的hello报文init状态,收到对方的hello报文,不包含自己的router id2-way状态,收到对方hello报文,包含自己的router id,邻居建立成功的标识Exstart状态,双方首包发送DD报文,进行主从关系选举,携带序列号、I、M、MS,进行比较选出主从Exchange,从以主的序列号进行发送DD,进行数据库摘要描述,主收到后,序列号+1,也会给从发送DD数据库摘要,从收到后要给予回复,从永远会比主多发一个回复给予确认Loading状态,进行实际的LSR、LSU、LSACK的交互FUll状态,SPF算法进行路径最优计算状态机作用,标识ospf协商的工作阶段,方便后续排错3.DR BDR 作用?DR作用,避免出现LSA的过度泛洪,减小LSDB数据库大小BDR作用,BDR是DR可靠,当DR出现故障时,BDR能够成为DR的角色DR选举:优先级高的为DR,优先级相同,router id大的优先4.OSPF的网络类型有哪些?broadcast广播P2P点到点NBMA 非广播多路访问P2MP 点到多点这些网络类型的作用是什么?区分二层链路,更好的构建拓扑信息5.OSPF防环原则和LSA头部和分类区域内1/2LSA 通过SPF怎么防环?//说明过程根据spf算法,以自己为根算出最短路径树,不出现环路区域间3/4LSA 通过ABR水平割防环?区域设计防环?3类lsa传递的路由信息,从非骨干区域接收的路由只接收不计算非骨干区域必须和骨干区域相连接3类描述的是区域间的路由信息,而4类描述的是asbr的cost 信息区域外5/7LSA 通过3/4防环。
实验2 OSPF协议实验1.查看R2的OSPF的邻接信息,写出其命令和显示的结果:答:2.将R1的router id 更改为3.3.3.3,写出其命令。
显示OSPF的概要信息,查看此更改是否生效。
如果没有生效,如何使其生效?答:没有生效,需要重启OSPF协议:让reset ospf processdis ospf brief3.6.1 OSPF协议报文格式3.分析截获的报文,可以看到OSPF的五种协议报文,请写出这五种协议报文的名称。
并选择一条Hello报文,写出整个报文的结构(OSPF首部及Hello报文体)。
答:OSPF头部:Byte1:版本号 2Byte2:报文类型1(Hello)Byte3-4:报文长度48Byte5-8:发送者RouterID 2.2.2.2Byte9-12:区域信息0.0.0.0Byte13-16:校验和0xf290Byte17-18:Auth Type NullByte19-24:Auth Data noneHello报文体:Byte1-4:子网掩码255.255.255.0Byte5-6:报文周期10Byte7:报文选项 EByte8:优先级 1Byte9-12:Dead Interval 40Byte13-16:DR地址0.0.0.0Byte17-20:BDR地址0.0.0.0Byte21-24:ActiveNeighbor 3.3.3.34.分析OSPF协议的头部,OSPF协议中Router ID的作用是什么?它是如何产生的?用来唯一确定自治区域内的一台路由器。
答:可以手动设定,若没有指定,会自动选择路由器回环接口中最大IP地址为Router ID 5.分析截获的一条LSUpdate报文,写出该报文的首部,并写出该报文中有几条LSA?以及相应LSA的种类。
答:OSPF头部:Byte1:版本号 2Byte2:报文类型4(LS Update)Byte3-4:报文长度64Byte5-8:发送者RouterID 2.2.2.2Byte9-12:区域信息0.0.0.0Byte13-16:校验和0x0868Byte17-18:Auth Type NullByte19-24:Auth Data none该报文中有1条LSA,种类为Router-LSA3.6.2 链路状态信息交互过程6.结合截获的报文和DD报文中的字段(MS,I,M),写出DD主从关系的协商过程和协商结果。
PROFIBUS-DP站点可分为主站和从站,开发从站设备要比开发主站设备容易得多,因为从站只需要响应来自主站的请求即可。
从站接收总线上的每条报文,如果与自己无关,则忽略不处理,如果是发给自己的则按照下图给出的状态机进行响应。
该状态机中有四个状态:1、Power_On(上电)状态在上电后从站进入Power_On状态,在这个状态下从站首先需要进行初始化,设置各项参数如站地址和报文缓冲区等等。
2、Wait-Prm(等待参数化)状态初始化完毕后,从站进入Wait-Prm状态,等待来自一个主站的Set_Prm报文。
通俗地讲,参数化相当于一个主站告诉一个从站,你是属于我的,同时也指定了从站的一些运行参数。
主站只对被它参数化的从站进行数据轮询。
3、Wait_Cfg(等待组态)状态在进行正确的参数化后,从站进入Wait_Cfg状态,等待Check_Cfg报文。
Check_Cfg 报文规定输入和输出字节数,也就是主站和从站每次交换的数据量。
4、Date_Exchange(数据交换)状态当进行正确的参数化和组态后,从站进入Date_Exchange状态,这个时候从站才可以和主站进行正常的数据交换。
下面是我从一个PROFIBUS-DP网络中采集下来的部分报文数据,该网络中有一站地址为1的主站和站地址为3的从站。
我结合有关报文解释一下从站3的工作机制。
(报文数据为16进制)......(从站已经完成初始化)......10 03 01 49 4D 16(该报文为主站1发给从站3的请求帧,查询从站3的FDL状态,即从站3是否“活着”。
)10 01 03 00 04 16(该报文为从站3对主站1的应答帧,告诉主站1“我活着呢”。
).....68 05 05 68 83 81 6D 3C 3E EB 16(该报文为主站1发给从站3的请求帧,读取查询从站3的诊断报文,以获取从站3的进一步信息。
)68 0B 0B 68 81 83 08 3E 3C 02 05 00 FF 00 08 94 16(该报文为从站3对主站1的应答帧,其中包含6个字节的诊断数据:02 05 00 FF 00 08,具体含义可参阅协议,其中第四字节为FF表明从站3尚未被任何主站所参数化。
OSPF报文格式分析OSPF(Open Shortest Path First)是一种开放式的最短路径优先(SPF)路由协议,用于在网络中计算最短路径并进行路由选择。
OSPF报文格式定义了在OSPF中用于交换信息的数据包结构。
1. OSPF报文头(OSPF Header):该部分长度为24个字节,包含了OSPF报文的基本信息,如版本号、报文类型、报文长度等。
2. OSPF Hello报文(Hello Packet):Hello报文用于网络中的邻居发现和建立OSPF邻居关系。
其长度为44个字节,包含了发送者的路由器ID、OSPF区域ID以及其他邻居信息。
3. OSPF数据库描述报文(Database Description Packet):该报文用于交换邻居路由器的链路状态数据库(LSDB)的摘要信息。
其长度不定,根据需要而变化。
4. OSPF连通性状态请求报文(Link State Request Packet):该报文用于向邻居请求链路状态信息。
其长度不定,根据需要而变化。
5. OSPF连通性状态更新报文(Link State Update Packet):该报文用于向邻居更新链路状态信息。
其长度不定,根据需要而变化。
6. OSPF连通性状态确认报文(Link State Acknowledgement Packet):该报文用于确认其他OSPF报文的接收情况。
其长度不定,根据需要而变化。
以上是OSPF报文格式的主要部分。
其中,OSPF头部信息在每个报文中都会出现,用于标识报文类型和报文长度等信息。
根据OSPF的设计原则,不同的功能对应不同类型的报文,如Hello报文用于邻居发现,Database Description报文用于数据库同步等。
OSPF报文的格式设计考虑了网络性能和可扩展性的因素。
通过在报文中包含必要的标识和描述信息,OSPF路由器能够根据收到的报文类型和内容做出适当的响应,从而保证网络的正常运行。
要理解OSPF路由协议的工作原理,特别是路由更新机制,首先就要对它的各种报文格式有一个全面的了解。
OSPF报文主要有5种:Hello报文、DD (Database Description,数据库描述)报文、LSR (LinkState Request,链路状态请求)报文、LSU(LinkState Update,链路状态更新)报文和LSAck(LinkState Acknowledgment,链路状态应答)报文。
它们各自在OSPF路由更新中所担当的用途不一样,报文格式也存在比较大的差别。
9.2 OSPF报头及各种报文格式OSPF报文直接封装为IP协议报文,因为OSPF是专为TCP/IP网络而设计的路由协议。
以上所说到的五种OSPF报文使用相同的OSPF报头格式,如图9-9所示。
图9-9 OSPF协议报头格式l Version版本字段,占1个字节,指出所采用的OSPF协议版本号,目前最高版本为OSPF v4,即值为4(对应二进制就是0100)。
l Packet Type报文类型字段,标识对应报文的类型。
前面说了OSPF有5种报文,分别是:Hello报文、DD报文、LSR报文、LSU报文、LSAck报文。
具体将在下面各小节介绍。
l Packet Length:包长度字段,占2个字节。
它是指整个报文(包括OSPF报头部分和后面各报文内容部分)的字节长度。
l Router ID:路由器ID字段,占4个字节,指定发送报文的源路由器ID。
l Area ID:区域ID字段,占4个字节,指定发送报文的路由器所对应的OSPF区域号。
l Checksum:校验和字段,占2个字节,是对整个报文(包括OSPF报头和各报文具体内容,但不包括下面的Authentication字段)的校验和,用于对端路由器校验报文的完整性和正确性。
l AuType:认证类型字段,占2个字节,指定所采用的认证类型,0为不认证,1为进行简单认证,2采用MD5方式认证。
OSPF协议包含的五种报⽂简述OSPF使⽤5种不同的报⽂类型。
每种类型⽤于⽀持不同的,专门的⽹络功能。
这5种类型是:·HELLO报⽂(类型1 )。
·数据库描述报⽂(类型2 )。
·链路-状态请求报⽂(类型3 )。
·链路-状态更新报⽂(类型4 )。
·链路-状态应答报⽂(类型5 )。
⼀、HELLO报⽂OSPF包含⼀个⽤于建⽴和维护相邻站点之间关系的协议( HELLO协议)。
这些关系称为连接性。
连接性是OSPF交换路由数据的基础。
通过这个协议和报⽂类型, OSPF节点能发现区中的其他OSPF节点。
它的名字表明了其含义,HELLO协议在可能的相邻路由器之间建⽴通信。
HELLO协议使⽤特别的⼦报⽂结构,这个结构附加到标准2 4字节的OSPF头后⾯。
这些结构共同构成HELLO报⽂。
OSPF⽹络中的所有路由器必须遵守⼀定的规则,这个规则在整个⽹络中要⼀致。
这些规则包括:⽹络掩码。
HELLO报⽂⼴播的间隔。
⽹络中的其他路由器认为⼀个没有反应的路由器为死节点的时间(路由器死时间间隔)。
OSPF中的所有路由器对这些参数必须使⽤相同值,否则⽹络可能不会正常⼯作。
这些参数通过HELLO报⽂进⾏交换。
它们⼀起构成相邻节点之间通信的基础。
它们要确保在不同⽹络的路由器之间不形成相邻关系(连接性),并且⽹络中的所有成员要对多久彼此联系⼀次成达共识。
HELLO报⽂也包括最近已与其联系过的其他路由器列表(使⽤它们⾃⼰惟⼀的路由器I D )。
这个N e i g h b o r (相邻者)域使邻居发现过程成为可能。
HELLO报⽂还包括⼏个其他的域,如Designated Router(指定路由器)、Backup Designated Router(备份指定路由器)和其他⼀些域。
这些域对于维护连接性,⽀持OSPF⽹络的稳定周期和收敛都是有⽤的。
⼆、DD报⽂当OSPF中的两个路由器初始化连接时要交换数据库描述(DD)报⽂。
OSPF的报文格式OSPF报文直接封装为IP报文协议报文,协议号为89。
一个比较完整的OSPF报文(以LSU报文为例)结构如图8所示。
1. OSPF报文头OSPF有五种报文类型,它们有相同的报文头。
如图9所示。
主要字段的解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ Version:OSPF的版本号。
对于OSPFv2来说,其值为2。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Type:OSPF报文的类型。
数值从1到5,分别对应Hello报文、DD报文、LSR报文、L SU报文和LSAck报文。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Packet length:OSPF报文的总长度,包括报文头在内,单位为字节。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Router ID:始发该LSA的路由器的ID。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Area ID:始发LSA的路由器所在的区域ID。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Checksum:对整个报文的校验和。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ AuType:验证类型。
可分为不验证、简单(明文)口令验证和MD5验证,其值分别为0、1、2。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Authentication:其数值根据验证类型而定。
当验证类型为0时未作定义,为1时此字段为密码信息,类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。
说明:MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。
2. Hello报文(Hello Packet)最常用的一种报文,周期性的发送给邻居路由器用来维持邻居关系以及DR/BDR的选举,内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。
Hello报文格式如图10所示。
主要字段解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ Network Mask:发送Hello报文的接口所在网络的掩码,如果相邻两台路由器的网络掩码不同,则不能建立邻居关系。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ HelloInterval:发送Hello报文的时间间隔。
如果相邻两台路由器的Hello间隔时间不同,则不能建立邻居关系。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Rtr Pri:路由器优先级。
如果设置为0,则该路由器接口不能成为DR/BDR。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ RouterDeadInterval:失效时间。
如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。
如果相邻两台路由器的失效时间不同,则不能建立邻居关系。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Designated Router:指定路由器的接口的IP地址。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Backup Designated Router:备份指定路由器的接口的IP地址。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Neighbor:邻居路由器的Router ID。
3. DD报文(Database Description Packet)两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的H eader(LSA的Header可以唯一标识一条LSA)。
LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。
DD报文格式如图11所示。
主要字段的解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ Interface MTU:在不分片的情况下,此接口最大可发出的IP报文长度。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ I(Initial):当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ M(More):当连续发送多个DD报文时,如果这是最后一个DD报文,则置为0。
否则置为1,表示后面还有其他的DD报文。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主(M aster)从(Slave)关系,Router ID大的一方会成为Master。
当值为1时表示发送方为Maste r。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ DD Sequence Number:DD报文序列号,由Master方规定起始序列号,每发送一个DD 报文序列号加1,Slave方使用Master的序列号作为确认。
主从双方利用序列号来保证DD报文传输的可靠性和完整性。
4. LSR报文(Link State Request Packet)两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。
内容包括所需要的LSA的摘要。
LSR报文格式如图12所示。
图12 LS R报文格式主要字段解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ LS type:LSA的类型号。
例如Type1表示Router LSA。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link State ID:链路状态标识,根据LSA的类型而定。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Advertising Router:产生此LSA的路由器的Router ID。
5. LSU报文(Link State Update Packet)LSU报文用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。
LSU报文格式如图13所示。
图13 LSU 报文格式主要字段解释如下:Number of LSAs:该报文包含的LSA的数量。
LSAs:该报文包含的所有LSA。
6. LSAck报文(Link State Acknowledgment Packet)LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。
一个LSAck 报文可对多个LSA进行确认。
报文格式如图14所示。
图14 LSAc k报文格式主要字段解释如下:LSA Headers:该报文包含的LSA头部。
7. LSA头格式所有的LSA都有相同的报文头,其格式如图15所示。
图15 LSA 的头格式主要字段的解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ LS age:LSA产生后所经过的时间,以秒为单位。
LSA在本路由器的链路状态数据库(L SDB)中会随时间老化(每秒钟加1),但在网络的传输过程中却不会。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ LS type:LSA的类型。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link State ID:具体数值根据LSA的类型而定。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Advertising Router:始发LSA的路由器的ID。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ LS sequence number:LSA的序列号,其他路由器根据这个值可以判断哪个LSA是最新的。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ LS checksum:除了LS age字段外,关于LSA的全部信息的校验和。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ length:LSA的总长度,包括LSA Header,以字节为单位。
LSA类型(1) Router LSA图16 Rout er LSA格式主要字段的解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link State ID:产生此LSA的路由器的Router ID。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ V(Virtual Link):如果产生此LSA的路由器是虚连接的端点,则置为1。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ E(External):如果产生此LSA的路由器是ASBR,则置为1。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ B(Border):如果产生此LSA的路由器是ABR,则置为1。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ # links:LSA中所描述的链路信息的数量,包括路由器上处于某区域中的所有链路和接口。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link ID:链路标识,具体的数值根据链路类型而定。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link Data:链路数据,具体的数值根据链路类型而定。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Type:链路类型,取值为1表示通过点对点链路与另一路由器相连,取值为2表示连接到传送网络,取值为3表示连接到Stub网络,取值为4表示虚连接。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ #TOS:描述链路的不同方式的数量。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ metric:链路的开销。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ TOS:服务类型。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ TOS metric:指定服务类型的链路的开销。
(2) Network LSANetwork LSA由广播网或NBMA网络中的DR发出,LSA中记录了这一网段上所有路由器的Router ID。
图17 Netw ork LSA格式主要字段的解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link State ID:DR的IP地址。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Network Mask:广播网或NBMA网络地址的掩码。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Attached Router:连接在同一个网段上的所有与DR形成了完全邻接关系的路由器的R outer ID,也包括DR自身的Router ID。
(3) Summary LSANetwork Summary LSA(Type3 LSA)和ASBR Summary LSA(Type4 LSA)除Link State ID字段有所不同外,有着相同的格式,它们都是由ABR产生。
图18 Summ ary LSA格式主要字段的解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link State ID:对于Type3 LSA来说,它是所通告的区域外的网络地址;对于Type4来说,它是所通告区域外的ASBR的Router ID。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Network Mask:Type3 LSA的网络地址掩码。
对于Type4 LSA来说没有意义,设置为0.0.0.0。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ metric:到目的地址的路由开销。
说明:Type3的LSA可以用来通告缺省路由,此时Link State ID和Network Mask都设置为0.0.0.0。
(4) AS External LSA由ASBR产生,描述到AS外部的路由信息。
图19 AS E xternal LSA格式主要字段的解释如下:●∙∙∙∙∙∙∙∙∙∙∙∙∙ Link State ID:所要通告的其他外部AS的目的地址,如果通告的是一条缺省路由,那么链路状态ID(Link State ID)和网络掩码(Network Mask)字段都将设置为0.0.0.0。
●∙∙∙∙∙∙∙∙∙∙∙∙∙ Network Mask:所通告的目的地址的掩码。