OSPF:开放式最短路径优先协议

一、ospf特点和rip的区别:
ospf是无类别链路状态IGP协议,rip是距离矢量协议。
ospf本身支持无类别路由,rip1不支持,rip2支持。
ospf本身没有环路,rip有环路需要靠各种防环机制来避免。
ospf收敛快,rip收敛慢
ospf靠ip组播路由,rip1广播,rip2组播。
ospf支持协议认证,rip不支持认证。
ospf发送的报文未经过加工,rip路径加工过准确度低

二、OSPF的5种数据包类型:

OSPF什么时候出现环路 ospf会出现环路吗_OSPF

1、hello 包
动配置完成后,检查版本号-区域-认证方式-认证密码 一致才可建立邻居,生成邻居表;

2、DBD包 -数据库描述包
成为邻居后,要经过条件匹配,看是否进入邻接状态。
进入邻接关系后,邻接的双方发送DBD包来确认双方信息库的摘要,然后查缺补漏,使用三类LSA报文,使双方LSDB同步。

3、LSR链路状态请求
4、LSU链路状态更新
5、LSack 链路状态确认
三、OSPF的状态机
Down:一旦本地发出ospf的hello包进入下一个状态
Init初始化:接收到的hello包中存在本地的RID,进入下一状态
2way双向通信:邻居关系建立的标志;
条件匹配:点到点直接进入下一状态;MA网络进行DR/BDR选举(40s),非DR/BDR间不进入下一状态
Exstart预启动:使用类似hello 的DBD包来进行主从关系选举,RID数值大为主,优先进入
下一状态;
Exchange准交换:使用真实的DBD包来共享数据库目录;
Loading加载:使用LSR/LSU/LSack来获取未知的LSA信息;
Full转发:邻接关系建立的标志
四、OSPF的工作过程
1、启动配置完成后,邻居间组播(224.0.0.5)使用hello包,建立邻居关系,生成邻居表;
2、邻居表生成后,基于邻居表中的各个邻居,进行条件的匹配;匹配失败将维持邻居关系,
仅hello包周期保活即可;
条件匹配成功者间将建立邻接关系,邻接关系间将使用DBD来共享本地的数据库摘要;邻接关系间可以通过识别摘要,来请求本地未知的LSA信息;请求时使用LSR,对端使用LSU来分享这些LSA信息;
当获取到网络中所有的LSA后,本地数据库建立完成,LSDB同步结束;数据库表可查看;
3、默认OSPF协议通过本地的数据库,启用SPF最短路径选路规则,计算本地到达所有未知网段的最佳路径,然后将其加载于路由表中;
收敛完成—hello包周期保活 邻接关系间每30min周期进行DBD的比对,若一致继续保持安静;
4、结构突变
【1】新增网段—直连新增网段的设备,使用DBD包来告知本地所有邻居;
【2】断开网段—直连断开网段的设备,使用DBD包来告知本地所有邻居;
【3】无法沟通—dead time到时时,断开邻居关系,是否能够重建关注hello包;
5当LSDB同步完成,本地将使用spf选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;

五、术语
LSA:
链路状态通告,在不同环境下产生不同类别的LSA;可以是拓扑也或者是路由条目;

LSDB:
链路状态数据库—所有LSA的集合

LSA洪泛:
LSDB同步-----OSPF收敛的称呼

BR:
一台路由器上所以接口都在area0

IR
一台路由器上所以接口都在同一个普通区域

ABR
一个接口在区域0一个接口在普通区域

ABSR
连接不同自治系统的路由器

邻居:
neighbor,直接相连的设备都是ospf则是邻居

邻接:
点到点网络之间建立邻接关系
以太网有条件有选择的建立邻接
NBMA 手动指定邻居和邻接
DR/BDR选举规则:
1、先必须优先级,默认1;数值大优 若优先级为0,标识不参选
2、优先级一致比较RID,数值大优

自治系统:
使用同一种路由协议的一组路由器

RouterID:
在ospf自治系统里标识唯一一台路由器。可以自己配置一个随意编号,如果不配将随据抽取一个数值较大的IP地址。

度量:
cost值=开销值=参考带宽/接口带宽
默认参考带宽为100M;优先cost值之和最小的路径;
注:当接口带宽大于参考带宽时,度量值为1;可能导致选路不佳;可以修改所有OSPF设备的参考带宽

接口类型
网络类型 OSPF的接口网络类型 工作方式
环回-LOOPBACK LOOPBACK 无hello包,主机路由发送
点到点–PPP/HDLC/GRE POINT_TO_POINT hello time10s;自动建邻,不选DR/BDR
BMA–以太网 BROADCAST hello time10s;自动建邻,选DR/BDR
NBMA–帧中继、MGRE POINT_TO_MULTIPOINT hello time30s;自动建邻,不选DR

OSPF的数据库表
数据表为LSDB,是各种类别的LSA信息集合;LSA在不同条件下产生,路由信息或者拓扑信息;使用不同的类别来区分了不同条件的LSA信息;
所有类别的LSA信息,均存在以下参数

认证:
Hello报文里附带认证信息
接口下:ospf authentication-mode simple plain 123456
区域设置下: ospf authentication-mode 1【编号必须一致】 simple plain 123456
如果区域0做了认证 所有Vlink也必须做
1
2
3
4
六、区域
区域划分的规则:
1、星型结构—骨干区域0;非骨干大于0;非骨干必须直连骨干区域;
2、必须存在ABR–区域边界路由器
解决OSPF的不规则区域
OSPF协议的规则区域-星型结构,非骨干区域必须连接骨干区域;
否则该非骨干区域的ABR不能进行区域间路由共享;
解决方法:
1、tunnel 在两台ABR上建立隧道,然后将其宣告到OSPF协议中;
缺点:对周期、触发更新和保活流量对中间区域存在资源占用,选路不佳;
2、OSPF虚链路–在两台ABR上进行虚链路的建立,之后让骨干区域ABR对非法ABR进行授权;使得非法ABR可以进行路由共享;
3、多进程双向重发布
(1)多进程—一台设备上同时运行多个进程时,不同进程存在各自的RID和数据库;当从各自邻居处学习到了信息后,存储在自己的数据库中,数据不共享;仅将计算所得路由加载到同一张路由表中; 若将一个接口同时宣告于多个进程,仅最先宣告进行工作;
(2)双向重发布–两种协议或两个进程间,进行路由条目的双向共享;
解决不规则区域时,将处于不规则点的ABR不同接口宣告到不同进程,最后使用双向重发布来实现路由共享—选路正常,无周期信息,可靠和稳定的;

特殊区域
减少非骨干区域的LSA --所有特殊区域配置,需要该区域每台设备均配置(否则不能建邻)不能是骨干区域,不能存在虚链路;
末梢区域–该区域拒绝4/5的LSA;
完全末梢区域—在末梢区域的基础上,进一步拒绝3类LSA,仅保留一条3类缺省;
先将该区域定义为末梢区域,然后仅在ABR上定义完全即可;
NSSA非完全末梢区域–该区域拒绝4/5的LSA;为避免环路产生,不自动产生缺省;在管理员确定了网络无环的情况下手工添加缺省路由;本区域的ASBR产生的域外路由使用7类标记,离开本区域进入骨干时,转换回5类,进行转换的ABR成为新的ASBR;
NSSA的意义在于拒绝从网络中其他区域的ASBR产生的4/5类LSA信息;
完全NSSA非完全末梢区域–在NSSA区域的基础,进一步拒绝3类LSA;自动产生3类缺省;但使用时,应该考虑是否会产生环路;

七、各种类别的LSA:
在邻接关系建立后,对比DD摘要信息,会发送LSR和LSU信息来更新数据,报文中的type字段吧LSU报文分为了6种,分别是:
LStype1-Router-lsa
每一个路由器都会生成,描述区域内端口链路状态,只能在区域内泛洪。
LStype2-Network-lsa
该lsa包含网络上所有路由器的链路状态,旨在所属区域泛洪。
区域间
LStype3-汇总LSA
由ABR计算前两类lsa得出,描述了一个区域的路由,只会往相邻的另一个区域内泛洪, 不是跨区域的。
LStype4-LSABR-Summary-LSA
由ABR产生,用来描述某区域ASBR的路由信息,在ABR所连接区域除ASBR外的区域中洪范。 ,
LStype5-AS-外部lsa
由ASBR描述,了出AS外的某一段网络的信息,在整个AS内泛洪
LSA7nssa-external

ASBR-在传递出该NSSA区域后,被新的ASBR转换为5类OSPF的区域划分规则:
1、 星型拓扑—非骨干区域需要连接骨干区域
2、 必须存在ABR—区域边界路由器—区域间必须存在一个边界设备

启动配置完成后,邻居间收发hello包,建立邻居关系,生成邻居表:

Hello包携带的参数:

OSPF什么时候出现环路 ospf会出现环路吗_邻接关系_02

OSPF什么时候出现环路 ospf会出现环路吗_链路_03

邻居间在进行邻居关系建立时,hello包有几个参数必须完全一致,否则无法建立邻居关系:
Hello time和dead time 区域ID(ABR) 认证字段 末梢区域标记
华为设备还要求邻居间建立邻居的接口ip地址子网掩码必须一致
[r2]display ospf peer 查看邻居表
[r2]display ospf peer brief 查看邻居表的简表
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information

Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 1.1.1.1 Full
0.0.0.1 GigabitEthernet0/0/1 3.3.3.3 Full

邻居关系建立后,进行条件的匹配;匹配失败将保持为邻居关系,仅hello包周期保活;
匹配成功将可以建立为邻接关系:
首先使用DBD进行主从关系选举,在使用DBD进行数据库目录的交互:
关于DBD包的几个参数:
1、 MTU OSPF协议会在DBD包中携带与邻居直连接口的MTU值;要求邻居的MTU值必须完全一致,否则将卡在exstart状态机;默认华为设备间不检测这个MTU值;
[r1]interface GigabitEthernet 0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable 在于邻居间直连的接口上开启MTU检测;若一端开启,另一端也必须开启;
2、 隐性确认 一台设备使用和另一台设备一样的序列号来确认对端的数据 OSPF中从来对主进行隐性确认;
3、 描述字段 I为1标识本地发出的第一个DBD M为0本地发出的最后一个DBD MS 为1代表主 S为0代表从
五、 OSPF从邻居关系建立为邻接关系的条件
关注网络类型
1、 点到点网络 邻居正常必然成为邻接关系
2、 MA网络中 由于OSPF不支持接口的水平分割;故若两两设备间均为邻接关系,将导致大量的重复更新;因此必须进行DR/BDR选举,DR/BDR使用组播224.0.0.6;
在该网段内的非DR/BDR设备间只能建立为邻居关系;
选举规则:先比较参选接口的优先级0-255 数值大优,为0标识不参选
默认为1;若优先级相同,比较参选设备的RID值,数值大优;
修改接口优先级可以干涉选举:
[r1]interface GigabitEthernet 0/0/1
[r1-GigabitEthernet0/0/1]ospf dr-priority 2 参选接口修改优先级
注:DR选举为非抢占行为;故修改优先级需要重启的OSPF进程
reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y

六、ospf的接口网络类型 – ospf的协议在不同网路类型的接口上,其工作方式不同
display ospf interface GigabitEthernet 0/0/1 查看OSPF协议在该接口的工作方式
网络类型 ospf的工作方式
LoopBack 显示P-2-P,实际为环回专用工作方式 无hello包 32位主机路由传递
点到点(串线HDLC/PPP) P-2-P hello time10s 不选DR 自接建立邻居关系
BMA(以太网) Broadcast hello time 10s 选DR/BDR
NBAM(MGRE) 默认接口工作方式为p2p,该工作方式仅允许建立一个邻居关系;
导致在MGRE环境中无法建立所有的邻居关系;
可以通过修改接口的工作方式来解决:
修改所有接口的工作访问broadcast
[r1-Tunnel0/0/0]ospf network-type broadcast
切记:在MGRE环境下,若一个网段的部分接口修改为broadcast,其他依然为点到点;由于建邻的条件匹配,故可以建立邻居关系;但broadcast需要DR,点到点不需要,所以最终不能正常收敛;需要该网段所有节点均为broadcast;

拓扑结构:
中心到站点(轴辐状-星型结构) DR必须定在中心站点,没有BDR
部分网状结构 基于实际环境关注是否固定DR;
全连网状结构 — DR/BDR选举正常
一、 OSPF的不规则区域
1) 远离了骨干的非骨干区域
2) 不连续骨干区域—本地学习到来自区域x的路由后,不得共享到X区域
解决方案:
1、 普通GRE,tunnel 隧道
在合法与非法ABR间使用tunnel建立一条新的逻辑链路;之后将该链路宣告到OSPF协议中
缺点:
1) 周期的OSPF进行需要实际通过中间区域进行传递,大大增加中间区域的资源占用
2) 选路不佳—ospf设备接收到两条去往同一网段的路由时,先关注两条路由获取的区域ID;骨干区域优于非骨干

2、 OSPF的虚链路技术
由合法的ABR对非法ABR进行授权,之后非法ABR可以进行区域间路由共享
[r2]ospf 1
[r2-ospf-1]area 1 进入穿越区域
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 对端ABR的RID;

优点:没有建立新的通道,不存在选路不佳问题;
缺点:1、两台ABR设备间的周期信息,依然对中间照成影响—华为
2、两台ABR设备间不保活,无周期信息;即可不可靠—cisco

3、 多进程双向重发布—最佳方案
重发布:多协议间利用ASBR(自治系统边界路由器、协议边界路由器)
多进程:在一台设备上若同时启动多个OSPF进程,不同的进程将宣告不同的接口,拥有各自的数据库,且不共享;仅将计算所得路由加载于同一张路由表中;

在非法ABR处,将不同区域的接口宣告到不同进程中,形成独立的数据库;之后使用重发布技术来实现路由共享,全网可达;不担心选路问题,资源占用问题;
[r4]ospf 1
[r4-ospf-1]import-route ospf 2
[r4-ospf-1]q
[r4]ospf 2
[r4-ospf-2]import-route ospf 1

OSPF协议在不同的环境下,使用不同类别的LSA来传输路由或拓扑信息;

类别 传播范围 通告者 liink-id 携带信息
1 Router 单区域 该区域每台路由器 通告者的ID 本地直连拓扑
2 Network 单区域 DR DR的接口IP地址 单个MA网段的拓扑
3 summary 整个OSPF的域 ABR 域间路由网络号 域间路由(其他区域的路由)
4 asbr 除ASBR所在区域 ABR ASBR的RID ASBR的位置
整个OSPF的域
ASBR所在区域,通过1类告知位置;通告者为与ASBR在同一区域连接其他区域的ABR
5 External 整个OSPF的域 ASBR 域外路由的网络号 域外路由(重发布进入的路由)

类别 link-id 通告者
1 Router 通告者的RID 该区域的每台路由器
2 network DR的接口ip地址 该网段的DR
3 summary 域间路由网络号 ABR,经过下一台ABR时,修改为新的ABR
4 ASBR ASBR的RID ABR,经过下一台ABR时,修改为新的ABR
5 External 域外路由网络号 ASBR(不变化)