OSPF:开放式最短路径优先协议
有区域水平分割,无接口水平分割
无类别链路状态型路由协议:邻居间基于拓扑信息进行交互,更新量很大;故为了能在中大型复杂网络中工作,需要结构化部署----良好的IP地址规划 区域划分
更新方式---触发更新--224.0.0.5/6 周期更新--30min
1.OSPF的数据包类型--- 跨层封装于3层报头 协议号89
hello---周期收发,用于邻居的发现、关系的建立、周期的保活---10s或30s
DBD---数据库描述包 用于携带数据库目录
LSR---链路状态请求 基于本地未知的LSA信息进行查询
LSU---链路状态更新 用于传递具体的LSA信息
LSack---链路状态确认 可靠性,确认包
LSA---链路状态通告 --- 具体的每一条的拓扑或路由信息
2.OSPF的状态机---邻居间的邻居关系的不同阶段
Down 一旦收到hello包就进入下一状态
Init 初始化 一旦接收到的hello包中,本地我方RouterId进入下一状态
2way双向通讯 邻居1关系建立的标志
条件:点到点直接进入下一状态;MA网络进行DR/BDR选举,非DR/BDR之间不能进入下一状态;
选举规则:
先比较参选接口的优先级,0-255,大优;默认为1;若优先级相同,比较参选接口的RID,数值大优;
通过修改接口优先级,可以干涉选举;
interface g0/0/0
ospf dr-priority 2
注意:该选举是非抢占性;因此在修改优先级后,需要手工重启所有参选设备的ospf进程;
0为退出参选,不用重启;
Extart 预启动 使用不携带数据库目录信息的DBD包进行主从关系的选举,RID数值大为主,优先进入下一状态 ---排序(避免同时更新,导致网络拥塞)
Exchange准交换 使用携带目录信息的DBD包进行交互
Loading 加载 查看完其他邻接发送过来的DBD后,基于当中本地未知的LSA信息,使用LSR查询,对端使用LSU来共享这些LSA信息,本地收到后需要ACK确认;;---邻接间的数据库一致;
Full 转发 邻接关系建立的标志
3.OSPF的工作过程
启动配置完成后,邻居间组播收发hello包,获取对端的RID,建立邻居关系,生成邻居表;
邻居关系建立后,关注条件;条件不匹配的邻居间将维持邻居关系,仅hello包周期保活即可;
条件匹配:可以建立邻接(毗邻)关系
将使用DBD、LSR、LSU、LSack来进行交互、共享、同步数据库,获取未知的LSA信息;最终将生成与邻接一致的数据库表;
当数据库表同步完成后,本地使用SPF算法,将数据库表转换为有向图,再将有向图计算成为最短路径树,然后以本地为起点,计算到达所有未知网段的最短路径,然后将这些路由加载于本地的路由表中;收敛完成。
收敛完成后,仅hello每10秒周期保活邻居、邻接关系;再每1800s周期和邻居对比数据库;
拓扑结构突变:
1)新增网段---直连新增网段的设备,将直接使用LSU告知本地所有邻接,进行触发更新,再扩散到全网;需要邻接关系确认该更新包;
2)断开网段---直连断开网段的设备,将直接使用LSU告知本地所有邻接,进行触发更新,再扩散到全网;需要邻接关系确认该更新包;
3)无法沟通(无法直接知晓,不能触发更新)---存在dead time,默认为hello time的4倍;dead time到时时,将断开邻接关系,删除信息;
4.OSPF的基础配置补充
宣告配置完成后,邻居间周期组播收发hello包,建立邻居关系;生成邻居表;
OSPF协议的hello包为周期收发;邻居间的hello包中必须完全一致的参数;否则无法建立邻居关系
hello、dead time;区域编号;认证字段;末梢区域标记;在华为设备中邻居间hello包还将携带邻接接口的IP地址的子网掩码,也必须一致;
display ospf peer 查看邻居表
display ospf peer brief 查看邻居简表
邻居关系建立后,邻居间进行条件的匹配;匹配失败维持邻居关系,仅hello包周期保活;匹配成功,可以建立邻接关系;使用DBD/LSR/LSU/LSack来获取本地未知的LSA信息;实现邻接关系间设备的数据库一致;
display ospf lsdb 查看数据库表
DBD包:DBD包中携带接口的MTU值,要求两端接口MTU一致,否则将卡在Exstart状态机;华为设备默认不携带MTU值
interface g0/0/0
ospf mtu-enable 两端直连接口均需开启
DBD包中的描述位:
I为1表示本地发出的第一个DBD
M为0表示本地发出的最后一个DBD
MS为1表示本地为主,为0表示本地为从
DBD使用序列号来进行隐性确认从基于主的序列号进行
当邻接关系间数据库同步完成后,本地基于数据库中的所有LSA;生成 有向图-->最短路径数-->将本地作为起点,计算到达所有未知网段的最短路径,然后将其加载到路由表中;
在华为设备中,默认优先级为10;使用cost作为度量;
cost=开销值=参考带宽/接口带宽
默认参考带宽100M;cost值向上取整数;故当接口带宽大于参考带宽时cost值为1;可能导致选路不佳;可以手工修改默认的参考带宽;
ospf 1
bandwidth-reference 1000 单位为M
切记,一旦修改,全网设备需一致;
ospf协议默认将选择cost值之和最小的路径,为最短路径加表;
5.OSPF的接口网络类型---ospf协议在不同网络类型的接口上,不同的工作方式
display ospf interface g0/0/1 查看ospf协议在接口具体的工作方式名称
interface :12.1.1.1(GigabitEthernet0/0/1)
Cost:1 State:BDR Type:Broadcast;
接口类型 | OSPF的工作方式 |
Loopback | 华为显示p2p,实为环回专用工作方式 无hello包 以32位主机路由传递 |
点到点类型(HDLC/PPP/GRE) | p2p ‘hello time’10s 不选DR,邻居直接建立为邻接 |
BMA(以太网) | Broadcast ‘hello time’10s 选DR/BDR 非DR/BDR之间仅建立邻居关系 |
NBMA(MGRE) | 默认和普通GRE一样接口工作方式为p2p,该工作方式在华为设备上仅和最先收到的hello包建立邻居关系; |
故在MGRE环境下需要手工修改接口的工作方式;
[r1-Tunnel0/0/0]ospf network-type broadcast
注意:p2p和broadcast 两种工作方式的 hello time均为10 s,故可以建立邻居关系,但在DR选举上不同,故无法正常交流LSA;
切记:邻居间ospf接口的工作方式必须一致,才能正常建邻和正常收敛;
若将MGRE下所有接口的工作方式修改为broadcast,需要关注拓扑结构;
1)全连网状结构:可以正常工作,正常选举DR/BDR
2)非全连---管理员手工合理安排DR位置
3)星型结构---仅中心站点为DR,无BDR