ospf报文类型和格式
ospf基于接口进行划分,邻居想要建立,就必须满足字段验证
字段类型 | 条件 |
version | 版本必须为2 |
router-id | 标识唯一的路由器,不能相同 |
area id | 1. 接受的接口所属的区域id一致 2.接收和所属不一致,但是area为0,则表示虚连接 |
authentication | 验证信息需要一致 |
networkmask | 接收和所属的需要一致,若是p2p或者virtual-link则不需要验证 |
hello interval | 需要保持一致 |
dead interval | 需要保持一致 |
option | 是否接收外部路由,必须和相关区域保持一致 |
数据包类型:
1. hello包:
用于维护邻居关系
主要通过路由器id,所属区域标识
2. DD包
DD包一共会发四个,前两个用来选举主和从,后两个用来交互LSA摘要信息
双方在交互主从信息时会都认为自己时主,但是在比较router-id之后,败的那一方会自动认输,身份改成从,并且序列号会改成和主一样
主从选定后双方开始交互LSA摘要,通过LSA类型,id,宣告者来确定这条LSA
3.LSR
向对方请求对方有,但自己没有的LSA信息,会用过发送摘要的形式请求
4.LSU
LSU里面的LSA信息是详细的
里面比LSR多了flag字段和type字段,flags字段标识了此接口的身份,是否是虚链路,是否是ABR,是否是ASBR
type字段有所属网段,网段掩码,属于哪类LSA等等
5.LSACK
对LSU的确认
LSACK和LSR有点相似,里面也是用LSA摘要的方式来表示
ospf的邻居实际上在hello包交互后就建立完成了,后面实际上是和DR,BDR建立邻接关系
不同的网络类型,报文交互的方式也不同
p2p的报文全是通过组播224.0.0.5发送,因为p2p中只有两个人,所以也不用选举DR,BDR
boardcast的hello包是通过组播224.0.0.5发送,
DD和LSR是通过单播,如果用组播,其他路由器也会收到影响链路资源,
LSU和LSACK是通过组播224.0.0.5和224.0.0.6发送
224.0.0.6是DRother发给DR或BDR的,224.0.0.5是DR和BDR发给DRother的虚连接则是全部通过单播的方式交互
不同类型网络的生存和死亡时间也不同
虚连接的生存死亡时间也是10和40