一、OSPF的五种报文
类型 | 报文名称 | 报文描述 |
---|---|---|
1 | hello | 发现、建立、周期保活邻居、邻接关系 |
2 | DD(Database Description,数据库描述) | LSDB中LSA的头部信息(并非完整的LSA信息),也就是本地的数据库的目录(摘要) |
3 | LSR(Link State Request,链路状态请求) | 基于对端发送的DD报文中的未知信息(未知的LSA)向OSPF邻居进行查询 |
4 | LSU (Link State Update,链路状态更新) | 用于答复对端的LSR,携带各种的LSA。 |
5 | LSAck (Link State Acknowledgment,链路状态确认) | 对从LSU中获取到的LSA进行确认 |
OSPF的报文头部(24byte):
Hello报文:
DD报文:
LSR报文:
LSU报文:
LSAck报文:
二、OSPF的七种状态机:
状态机名称 | 状态机描述 |
---|---|
Down(失效) | 该状态还没有进行hello包的收发,一旦进行hello的收发,则进入下一状态 |
Init(初始化) | 接收到的hello包中并不存在本地的route-id,但是会将发送该hello包的邻居置为init状态,此时双方并没有建立双向通信,随着双方互相收发hello包,于是才会进入下一状态 |
2-way(双向通信) | 接收到的hello包中存在本地的route-id,则双方就会进入2-way双向通信状态。该状态也是OSPF最稳定的状态之一,它标志着邻居关系的建立,同时也是邻接关系建立的基础 |
Exstart(预启动) | 使用类似hello的DD报文进行主从关系(Master/Slave)选举,route-id数值大为主,优先进入下一状态。此时的DD报文是空的。 |
Exchange(准交换) | 使用真正的DD报文进行数据库目录的共享 |
Loading (加载) | 使用LSR、LSU、LSAck去获取未知的LSA信息(LSDB同步) |
Full(全毗邻) | 邻接关系建立的标志,此时不再进行LSDB的同步 |
三、OSPF的工作过程
224.0.0.5:指的是所有OSPF路由器所使用的组播地址;
224.0.0.6:指的是所有OSPF DR路由器所使用的组播地址。
(1)在启动宣告配置之后,OSPF路由器会使用组播224.0.0.5进行OSPF hello包的收发;若接收到的hello包中存在本地的route-id,则建立邻居关系,生成邻居表;
之后基于表中所有的邻居进行条件的匹配,匹配失败则将维持邻居关系,仅hello包周期保活即可;
(2)匹配成功者之间可以建立邻接关系;邻居间使用DD数据包进行数据库目录的比对;之后使用LSR查询目录中未知的LSA信息,对端使用LSU来携带传递LSA,最终需要LSAck进行接收确认;
当本地收集到区域内所有设备的LSA信息后,生成LSDB—链路状态数据库表;
(3)本地基于LSDB启用SPF算法,计算到达所有未知网段的最短路径,然后将其加载到路由表内;
全部0条评论
快来发表一下你的评论吧 !