ospf协议的数据包
基本概念:
ospf数据包是由多重封装构成的,解析一个ospf数据包就像给洋葱剥皮一样,
首先ospf数据包是封装在ip包头里面的,它的协议号是89,ttl值设置为1,所以ospf的数据包永远不可能穿越邻居路由器。
一个完整的ospf数据包是由ospf包头+ospf数据构成的,那么ospf的数据又分为5种类型。
ospf packet header format
ospf协议报头:
所有ospf的报文都有一个相同的报头,这个报头长度为20字节,可在特权模式下用debug ip ospf packet这条命令查看,这条命令只能查看接受到的信息,不能查看发送出去的ospf信息。
ospf packet types
5种报文的第一种:
hello包
hello包是ospf协议的第一种类型,其他4中类型的报文要想运转,必须首先依靠hello包建立邻居关系,hello包还有一个作用在ma网络环境中选举dr/bdr.
网络掩码-标识ospf运行接口的网络掩码,只在ma网络中检查
hello间隔-表示发送2个hello报文之间相隔多少s,在ma和p-t-p网络中是没10s发送一次。
修改hello间隔命令:
接口模式下:ip ospf hello-interval(1-65535)
hello死亡间隔-表示邻居在多少s后宣告死亡,默认是hello间隔的4倍
修改hello死亡间隔命令
接口模式下:ip ospf dead-interval(1-65535)
优先级-用于在ma下选举dr/bdr,默认为1,可在接口模式下用:
ip ospf priority(0-255)修改
指定路由器-ma环境下才有的,点到点没有必要选择dr,所有为0.0.0.0
备份指定路由器-ma环境下才有的,是dr的备份而已
选项-表示路由器支持的可选特性。
邻居id-包含每个邻居的rid,当一台路由器从邻居的hello数据包里看到自己的rid时,那么two-way状态形成。
2、dbd(链路状态数据库描述)
ospf报文的第2种类型,dbd用于邻居转到建立邻接时,选举主/从,并且交换lsa的头部,当我看到lsa头部字段的时候,我才知道dbd的好处。
主路由器发送序列号,从路由器相同的序列号进行确认,这也被称为隐式确认,而现实确认是发送ack
显示确认--ack确认
隐式确认--序列号
i位:初始位
m:后继位
ms:主/从位
链路状态请求lsr:
ospf报文的第三种类型,它的作用是请求自己lsdb中没有,或者是过期的lsa.
链路状态更新lsu:
ospf报文的第四种,链路状态更新有2个作用,一个是回复lsp请求,一个是实现区域的泛红,多个lsa被包含在一个lsu里面,并且lsu是可靠的,需要一个lsack来确认,如果没收到确认,它将每隔5s重传一次
链路状态确认lsack
最后一种ospf报文,用于对lsa的确认,多个lsa也可以在一个lsack中被确认,这保证了ospf报文的可靠性。