工作过程
启动OSPF配置之后,OSPF会向本地所有激活OSPF的接口发送hello包,以组播
224.0.0.5(所有运行OSPFV2协议的设备监听的地址)的形式发送。hello包中将携带本
地的RID及本地已知邻居的RID,之后,将收集到的邻居关系,记录在本地的一张表
中 --- 邻居表。
邻居关系建立完成后,将进行条件匹配,失败则停留在邻居关系,仅使用hello包进行保
活。
匹配成功,则开始建立邻接关系。首先使用未携带数据的DBD包进行主从关系选举,之
后,使用携带数据的DBD包共享数据库摘要信息。之后,使用LSR/LSU/LSACK获取未知
的LSA信息,完成本地的数据库建立。 --- LSDB链路状态数据库 --- 数据库表。
最后,将基于本地收集到的LSA信息,生成有向图和最短路径树,计算到达未知网段的路
由信息。将计算的路由信息收集到本地的路由表中。
收敛完成后,OSPF依然需要每隔10S进行周期保活;每隔30min进行周期更新。
OSPF的基本配置
1,启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1
[r1-ospf-1]
2,创建区域
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
3,宣告
1,激活接口 --- 只有激活的接口才可以收发OSPF的数据包
2,发布路由 --- 只有激活接口所对应的直连网段的路由信息才能被发布
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255--- 反掩码 --- 由连续的0和连续的
1组成,0所对应位不可变,1所对应位可变
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 --- 精准宣告
OSPF的数据包
1,hello包 --- 周期性的发现,建立以及保活邻居关系
hello时间 --- 10S --- BMA环境下
Dead time --- 4倍的hello时间
RID --- 32位二进制构成 --- 1,全网唯一;2,格式统一
1,手工配置 --- 只需满足以上两点要求即可
2,自动生成 --- 首先现在环回接口的IP地址中进行选择,如果环回接口的IP地址
存在多个,则在这些地址中选择数值最大的作为RID,如果没有环回接口,则在自
己物理接口中选择数值最大的IP地址作为RID。
2,DBD包 --- 数据库描述报文 ---- 携带数据库的摘要信息 ---LSDB -- 链路状态数据库
3,LSR包 --- 链路状态请求报文 --- 基于DBD包,请求未知的LSA信息
4,LSU包 --- 链路状态更新报文 --- 真正携带LSA信息的数据包
5,LSAck包 --- 链路状态确认报文 --- 确认包
OSPF协议存在30min一次的周期更新。
ospf状态机
1.down: 未启动协议,一旦启动OSPF协议后,进行hello的收发,进入下一状态;
2.Init(初始化):在此状态下,路由器已经从邻居收到了Hello报文,若自己的Router ID不在所收到的Hello报文的邻居表中,表示尚未与邻居建立双向通讯关系,若收到了携带了自己的RID的hello包,则和对方一起进入下一状态;
3.two-way(双向通信):邻居关系建立的标志;此时进行条件匹配,若成功,RID大的优先进入下一状态;若失败,则保持邻居关系,hello包10s周期保活即可;
条件匹配:点到点网络直接进入下一状态;MA网络将进行DR/BDR选举 选举DR:
1.比较接口的优先级(0-255),越大越优
2.比较router-id ,越大越优。 注意:DR是接口概念,DR不能抢占,若优先级为0,视为放弃选举
4.Exstart(预启动):使用假的dbd包进行主从选举,RID数值大的优先进入下一状态。
使用类似hello 的DBD进行主从关系选举,route-id数值大为主;优先进入下一状态;若MTU不一样的话,就停留在这个状态,MTU在OSI中是2层或3层 2层的大于3层
主从选举的目的: 在下一状态时,被选举为主路由器的优先将自己的LSDB发送出去
5.Exchange(准交换):使用真正的DBD包进行数据库目录的共享,共享的是LSDB;(交换完成后需要用LSAck包进行确认)
6.Loading (加载):使用LSR/LSU/LSack来获取未知的LSA信息(共享拓扑图)
7.Full(转发):邻接(毗邻)关系建立的标志