OSPF协议
OSPF(Open Shortest Path First)开放式最短路径优先,是一种链路状态型路由协议,用于在网络中计算最短路径。OSPF协议是基于Dijkstra算法的,使用链路状态信息来计算最短路径。
RIP与OSPF
由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。
如何评判一个动态路由协议的好坏:
选择路径佳
收敛速度快
占用资源少
选路
RIP 根据跳数选路,且可能出现环路。
OSPF 根据拓扑信息选路,选路方法更科学。
收集LSA(拓扑信息)—> 形成有向图 —> 转换为最短路径树 —> 依靠自身的最短路径优先算法计算得出路由。
收敛速度
RIP的计时器周期是300s,而OSPF的计时器周期相较更短。
资源占用
从单个数据包的角度来说OSPF远大于RIP,从整体上来说RIP存在周期更新,因此OSPF和RIP的资源问题都比较严重。
OSPF的版本有:v1、v2(IPv4)、v3(IPv6)
相同点
- OSPFv2和RIPv2都是无类别的动态路由协议(都支持汇总和子网划分) 
- OSPFv2和RIPv2都是通过组播发送自身的数据包(224.0.0.5/224.0.0.6、224.0.0.9) 
- OSPF和RIPv2都支持等开销负载均衡 
不同点
RIP只适用小型网络环境,而OSPF适用中大型网络环境。
OSPF结构化部署的思路
在部署OSPF之前,需要设计网络拓扑结构,包括网络的分段、子网划分、路由器的位置和连接方式等。
OSPF结构化部署的基本思路 — 区域划分
划分OSPF区域
根据网络拓扑结构,将网络划分为多个OSPF区域。每个区域应该包含一个或多个路由器,并且至少有一个区域边界路由器(ABR)来连接不同的区域。
ABR — 区域边界路由器,同时属于两个区域,一个ABR可以同时属于多个区域。
注意:区域内部传递拓扑信息,区域之间依然传递路的是路由信息。
区域划分的原则
- 必须按照星形拓扑结构部署:中间区域(骨干区域)Area 0,非骨干区域必须连接骨干区域。 
- 必须存在ABR,区域间必须使用区域边界路由器来互联,必须有接口属于Area 0,同时可以存在多个ABR。 
区域ID — Area ID (32位二进制构成)
OSPF网络如果存在多个区域 — 多区域OSPF网络
OSPF网络如果只有一个区域 — 单区域OSPF网络
OSPF的数据包
- Hello包 — 用来周期性的发现建立和保活邻居关系。路由器定期发送Hello数据包,以便发现相邻的路由器,并检查邻居的状态是否正常。 - hello时间(10s/30s),dead time 死亡时间(默认情况下是hello时间的4倍) - 路由器ID(Router ID)用来区别和标识不同的OSPF路由器,32位二进制构成。 - 路由器ID具有唯一性,格式统一性。可以手工指定,也可以自动生形成。自动生成RID,首先会检测路由器是否配置环回地址,然后选择环回地址最大的作为自己的RID,如果设备没有配置环回地址,则选择接口IP地址数值最大的作为自己的RID。 
- DBD包 — 链路状态数据库描述包,用来描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。 
- LSR包 — 链路状态请求包,用于向对方请求所需的LSA信息。 
- LSU包 — 链路状态更新报文,用于向对方发送其所需要的LSA。 
- LSACK包 — 用来确认收到了LSA信息。 
OSPF的数据包跨层封装于3层报头,协议号89:

LSA(Link State Advertisement)链路状态通告(具体的每一条拓扑或路由信息)
LSA包含了路由器在其所连接的网络上的链接状态信息,例如网络拓扑、邻居路由器和链路的状态等。路由器通过交换LSA来了解整个网络的拓扑结构,以计算最短路径并构建路由表。
OSPF的状态机
OSPF的状态机指的是,邻居间的邻居关系的不同阶段。
- Down:在这个状态下,OSPF路由器尚未检测到邻居路由器。它会定期发送hello消息,以发现相邻的路由器。一旦接收到hello包就进入下一个状态。

- Init:在这个状态下,OSPF路由器已经检测到邻居路由器,并发送了hello消息,但还没有收到相应的hello消息。这个状态只是一个短暂的状态,一旦收到相应的hello消息,即收到的hello包中若存在自身的RID,就进入到下一个状态。 
- 2-Way:在这个状态下,OSPF路由器已经收到相应的hello消息,标志着邻居关系的建立,建立了双向通信。在这个状态下,路由器可以开始交换LSA消息。 - 点到点网络直接进入下一个状态机。MA网络进行DR/BDR选举(默认一个dead time)非DR/BDR间不能进入下一状态。 

- Exstart:在这个状态下,使用不携带数据库目录信息的DBD包进行主从关系的选举,两个相邻的OSPF路由器开始协商建立邻居关系(主从关系)。路由器会选择一个作为Master(主),另一个作为Slave(从)。RID数值大为主,优先进入下一个状态。 
- Exchange:在这个状态下,交换DD(数据库描述)消息,以确定彼此的LSA数据库中哪些LSA需要更新。这个过程称为LSA同步。 

- Loading:在这个状态下,查看完其他邻居发送过来的DBD后,基于当中本地未知的LSA信息,使用LSR查询,对端使用LSU来共享这些LSA信息,本地收到后需要ACK确认(邻接间的数据库一致)。 
- Full状:在这个状态下,邻居路由器已经完成了LSA同步,并且它们的LSA数据库是相同的。在这个状态下,标志着邻接关系的建立,并且只有达到邻接状态才能真正共享LSA信息。 
OSPF的工作过程
- 建立邻居关系:启动配置完成后,邻居间组播 224.0.0.5 周期性的发送hello包,hello包中将携带自己本地的RID,获取对端的RID,建立邻居关系,生成邻居表。 
- 建立邻接关系:邻居关系建立后,关注条件:条件不匹配的邻居间,将维持邻居关系,仅hello包周期保活即可。条件匹配可以建立邻接关系。 - 条件匹配是一种基于路由器接口的属性和目标网络的属性来选择最佳路径的方法。 - 指定一台路由器和其他OSPF网络设备建立邻接关系,其他的设备仅保持邻居关系选举规则,OSPF网络首先会选择优先级数值大的作为指定路由器。当优先级数值一致,会选择接口IP地址大的作为指定路由器。 - DR — 指定路由器 - BDR — 备份指定路由器,和其他设备建立邻接关系,当DR失效时顶替DR的工作。 - DRother — 其他路由器 - OSPF的条件匹配一定是非抢占的 
- 同步数据库表:将使用DBD/LSR/LSU/LSack来进行交互、共享,同步数据库,获取未知的LSA信息。最终生成与邻接一致的数据库表。 
- 完成收敛:当数据库表同步完成后,本地使用SPF算法,将数据库表转换为有向图,再将有向图计算成为最短路径树,然后以本地为起点,计算到达所有未知网段的最短路径,然后将这些路由加载于本地的路由表中,收敛完成。 - 收敛完成后,将使用hello包周期保活,每30min进行周期更新。 
拓扑结构突变:
- 新增网段:直连新增网段的设备,使用LSU直接向本地所有邻接进行触发更新,对端需要确认。 
- 断开网段:直连断开网段的设备,使用LSU直接向本地所有邻接进行触发更新,对端需要确认。 
- 无法沟通(没有周期的hello包):dead time 倒计时,可以正常地被每一个新的hello包打断,当倒计时归0时断开邻居关系,删除该邻接共享的信息。 
OSPF的基础配置
启动时可以定义进程号,仅具有本地意义,默认为1,指定路由器ID(建议手工指定RID)
[r1]ospf 1 router-id 1.1.1.1
选择对应的区域
[r1-ospf-1]area 0
范围宣告(相当于宣告一个网段)
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255
精准宣告(仅宣告单个个IP地址)
[r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0
反掩码:连续的0和1构成(32位二进制),0代表不可变,1代表可变
宣告配置全部完成后,邻居间周期组播收发hello包,建立邻居关系,生成邻居表。
OSPF协议的hello包为周期收发:

注:邻居间hello包中必须包含完全一致的参数,否则无法建立邻居关系。
包括5方面(图中 * 号标注的字段):
- Hello and dead intervals(hello 和 dead 时间)
- Area ID(区域编号)
- Authentication password(认证字段)
- Stub area flag(末梢区域标记)
- 在华为设备中邻居间hello包还将携带建邻的接口IP地址子网掩码,也必须和邻居一致
删除宣告的指令
[r1-ospf-1-area-0.0.0.0]undo network 192.168.1.1 0.0.0.0
查看邻居表
<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
----------------------------------------------------------------------------
查看数据库表,链路状态数据库
<r1>display ospf lsdb
DBD包:DBD包中携带接口的MTU值,要求两端接口MTU一致,否则将卡在exstart状态机。(华为设备默认不携带MTU值)
[r1]interface g0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable  两端直连接口均需开启
DBD包中的描述位:
- I 为1表示本地发出的第一个DBD
- M 为0表示本地发出的最后一个DBD
- MS 为1表示本地为主,为0表示本地为从DBD使用序列号来进行隐性确认,从基于主的序列号进行
当邻接关系间数据库同步完成后,本地基于数据库中的所有LSA,生成有向图 --> 最短路径树 --> 将本地作为起点,计算到达所有未知网段的最短路径,然后将其加载到路由表中。
在华为设备中,默认的优先级为10,使用Cost作为度量
Cost = 开销值 = 参考带宽 / 接口带宽
默认参考带宽100M,Cost值向上取整数。故当接口带宽大于参考带宽时,Cost值为1,可能导致选路不佳,可以手工修改默认的参考带宽:
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
 INTEGER<1-2147483648>  The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
注意:一旦修改,全网所有设备需一致
OSPF协议默认将选择Cost值之和最小的路径,为最短路径加表。
更改DR选举的优先级,数值越大的为主设备,当优先级数值为0,意味着该路由器放弃DR和BDR的选举。
[r1-GigabitEthernet0/0/0]ospf dr-priority 2
OSFP邻居关系建立成为邻接关系的条件
从邻居关系建立成为邻接关系,关注网络类型:点到点/MA
- 在点到点网络中,邻居直接全部建立为邻接关系,无需选举。 
- 在MA网络中若两两间均建立邻接关系,将可能出现大量的重复更新。距离矢量路由协议可以使用接口水平分割来解决,但由于OSPF协议邻接需要数据库比对,故不能设计接口水平分割,只能进行DR/BDR选举来解决。所有非DR/BDR之间为邻居关系,不进行数据库同步。 
选举规则:
1、先比较参选接口优先级,默认1。(为0标识不参选)
2、若优先级相同,比较参选设备的RID数值。
放弃选举:
[r1]int g0/0/1
[r1-GigabitEthernet0/0/1]ospf dr-priority 0
OSPF的接口网络类型
OSPF的接口网络类型是指,OSPF协议在不同网络类型的接口上不同的工作方式。
查看OSPF协议在接口具体的工作方式名称:
[r1]display ospf interface g0/0/1
 Interface: 12.1.1.1 (GigabitEthernet0/0/1)
 Cost: 1    State: BDR    Type: Broadcast ;
不同接口类型对应不同OSPF工作方式:
| 接口类型 | 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  Specify OSPF broadcast network
nbma    Specify OSPF NBMA network
p2mp    Specify OSPF point-to-multipoint network
p2p     Specify OSPF point-to-point network
注:p2p和broadcast两种工作方式的hello time均为10s,故可以建立邻居关系,但在DR选举上不同,故无法正常交流LSA
邻居间ospf接口工作方式必须一致,才能正常建邻和正常收敛
若将MGRE下所有接口的工作方式修改为broadcast,需要关注拓扑结构:
- 全连网状结构:可以正常工作,正常选举DR/BDR 
- 非全连:管理员手工合理安排DR位置 
- 星型结构:仅中心站点为DR,无BDR 
OSPF的不规则区域
OSPF中区域划分要求:1、区域划分按星型拓扑划分 2、区域之间必须存在ABR
1. 远离骨干的非骨干区域
在远离骨干的非骨干区域中,area2和area1间的ABR由于没有连接到骨干区域,被称为非法ABR,非法ABR可以收集所连区域的LSA,但不能传播路由信息,导致area2和其他区域间不能通信。

2. 不连续骨干
在不连续骨干区域中,由于区域水平分割的存在,area1可以学到两个骨干区域的路由信息,但不能将学到的路由信息传播到另一个区域,导致两个骨干区域之间不能互通。

解决方案
1. tunnel点到点GRE
使用vpn连接不规则区域,在合法与非法ABR间建立隧道,然后将其宣告于OSPF协议中。
缺点:
- 周期和触发信息对中间穿越区域造成资源占用 
- 选路不佳 
2. OSPF虚链路
由合法ABR,给同一区域的非法ARB进行授权,之后非法ABR将能够进行区域间路由共享。
[r2]ospf 1
[r2-ospf-1]area 1 两台ABR均存在的区域
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 对端ABR的RID,两台ABR均需配置
优点:没有新的数据链路出现,故选路正常
缺点:两台ABR之间的周期信息,依然对中间区域造成影响,增加延时
思科:取消两台ABR间所有的周期信息,仅存在触发更新(不可靠)
华为:保留所有的周期信息,对中间区域资源占用严重
3. 多进程双向重发布(推荐)
多进程:一台路由器上允许存在多个OSPF进程,每个进程运行独立的接口(一个接口只能宣告在一个进程中),存在独立的邻居,生成独立的数据库,且数据库间不做共享,仅将所有数据库计算所得的路由加载于同一路由表中。
可以将非法ABR上不同区域宣告在不同的OSPF进程,造成独立的协议。之后使用重发布进行,将该非法ABR转换为ASBR(自治系统AS的边界路由器,类似于协议的边界)进行协议间路由条目共享即可。
不存在选路不佳问题,不存在周期资源占用和不可靠问题。
双向重发布:
[r4]ospf 1
[r4-ospf-1]import-route ospf 2  进程1导入进程2的路由
[r4-ospf-1]q
[r4]ospf 2
[r4-ospf-2]import-route ospf 1  进程2导入进程1的路由
OSPF的数据库表
查看数据库目录:
<r1>display ospf lsdb  链路状态数据库,各种LSA构成
OSPF的数据库是由大量的LSA(链路状态通告)组成,每一条LSA携带具体的拓扑或者路由信息,不同环境下将产生不同类别的LSA。
<r1>display ospf lsdb network 12.1.1.1  查看具体的一条LSA信息
                       类别名   link-id
无论哪类LSA,均存在以下基本参数:
- Type:类型名,此处为1类
- Ls id:link-id该条目在目录中的编号(页码号)
- Adv rtr:通告者,该条LSA的更新源设备的RID
- Ls age:老化时间,周期1800s刷新,触发马上刷新,最大老化3609s
- Len:数据包长度
- seq# :序列号 更新后变化
- chksum:校验码号 更新后变化
数据库表中不同类型:
| 类型名 | 传播范围 | 通告者 | 携带信息 | link-ID | 
|---|---|---|---|---|
| 1/Router | 单区域 | 该区域的每台路由器 | 本地直连拓扑 | 通告者RID | 
| 2/Network | 单区域 | 单网段内的DR | 单个MA网络内的拓扑 | DR在该网段接口的IP地址 | 
| 3/Summary | 整个OSPF域 | ABR在经过下一台ABR,修改为新的ABR | 域间路由 | 域间路由的目标网络号 | 
| 4/Asbr | 除ASBR所在区域外 | 除ASBR所在区域外的整个OSPF域(ASBR所在区域使用1类告知位置) | ASBR位置 | ASBR的RID | 
| 5/Ase | 整个OSPF域 | ASBR | 域外路由 | 域外路由的目标网络号 | 
| 7/Nssa | 单个NSSA区域内 | ASBR | 域外路由 | 域外路由的目标网络号 | 
优化OSPF的LSA(减少LSA的更新量)
1. 手工汇总(减少骨干区域的LSA)
域间路由汇总:只能在区域间传递3类LSA时,进行手工的路由汇总
在ABR上配置
[r1]ospf 1
[r1-ospf-1]area  2  本地通过该区域的1/2LSA拓扑计算所得路由才能汇总
[r1-ospf-1-area-0.0.0.2]abr-summary 5.5.4.0 255.255.254.0
域外路由汇总:当ASBR将其他协议产生的路由条目重发布进入OSPF域时,可以进行汇总配置
[r4]ospf 1
[r4-ospf-1]asbr-summary 99.1.0.0 255.255.252.0
2. 特殊区域(减少非骨干区域的LSA)
条件:不能是骨干区域,不能存在虚链路
不能存在ASBR
- 末梢区域: 该区域拒绝,外部进入的4/5LSA。由该区域连接骨干的ABR,向内部产生一条3类的缺省路由。
[r5]ospf 1
[r5-ospf-1]area  2  该区域内所有路由器均需配置
[r5-ospf-1-area-0.0.0.2]stub
- 完全末梢区域: 在末梢区域的基础上,仅一步拒绝3类LSA的进入。仅保留一条3类缺省的进入。 - 先将该区域配置为末梢区域,然后仅在ABR上配置完全末梢即可: 
[r1]ospf 1
[r1-ospf-1]area  2
[r1-ospf-1-area-0.0.0.2]stub no-summary
存在ASBR
- NSSA非完全末梢区域: 该区域拒绝4/5LSA。 - 本地ASBR产生的域外路由,使用7类在本NSSA区域传递,通过ABR进入骨干区域,被转换成5类。由该区域连接骨干的ABR向内部发送一条7类缺省。其存在的价值,是为了让该区域拒绝其他区域的,ASBR产生的4/5类LSA进入。 
[r4]ospf 1
[r4-ospf-1]area  1
[r4-ospf-1-area-0.0.0.1]nssa
- 完全NSSA: 在普通NSSA的基础上,进一步拒绝3类LSA进入该区域,由该区域连接骨干的ABR向内部发布一条3类缺省 - 先将区域配置为NSSA,然后仅在连接骨干的ABR上,定义完全即可: 
[r3]ospf 1
[r3-ospf-1]area  1
[r3-ospf-1-area-0.0.0.1]nssa  no-summary
OSPF的扩展配置
手工认证
1. 接口认证:直连的邻居间,设定认证口令,进行身份核实,同时对双方交互的数据进行加密保护
[r9-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456
邻居间认证模式、编号、密码必须完全一致
2. 区域认证:实际在该设备上所有属于同一区域的接口进行了接口认证配置(批量操作命令)
[r1]ospf 1 
[r1-ospf-1]area  1 
[r1-ospf-1-area-0.0.0.1]authentication-mode md5 1 cipher 123456
3. 虚链路认证
[r1-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 md5 1 cipher 123456
加快收敛
ospf的hello time 默认为10s或30s。dead time 为hello time 的4倍。邻居间hello、dead time 必须完全一致,否则无法建立邻居关系
修改本端的hello time(不易修改的过小),本端的dead time自动4倍关系匹配。
r2-GigabitEthernet0/0/0]ospf timer hello 10
沉默接口
仅接收不发送路由协议信息,配置于被宣告的连接用户终端接口,不能配置于连接邻居的骨干接口,否则无法建立邻居关系。
[r5]ospf 1 
[r5-ospf-1]silent-interface GigabitEthernet 0/0/2
缺省路由
自动产生缺省: 3类、5类、7类
3类缺省 —— 特殊区域产生: 末梢、完全末梢、完全NSSA, 这三种特殊区域在配置完成后,连接骨干区域的ABR将向该区域发布3类缺省。
5类缺省 —— 为手工配置产生。
7类缺省 —— 特殊区域产生: NSSA、完全NSSA均产生,但完全NSSA也产生3类缺省,3类优于7类。
手工配置缺省:5类
将本地路由表中无论何种来源产生的缺省路由,重发布到本地的OSPF进程2中,让其他与本地进程2在一个OSPF域中的路由器,产生5类缺省,指向R9。
[r9]ospf 2 
[r9-ospf-2]default-route-advertise
注:以上命令若本地路由表中没有缺省,将无效。
[r9]ospf 1 
[r9-ospf-1]default-route-advertise always
该指令为本地强制向邻接发送5类缺省路由,无论本地路由表是否存在缺省。
<r10>display ospf routing  查看本地接收和发送的所有ospf路由信息
5和7类的LSA路由会存在一个类型1、类型2的区别:
- 类型2(默认)仅显示种子(起始)度量
- 类型1显示整段路径的总度量
[r9-ospf-2]default-route-advertise type 1  重发布缺省时,修改为类型1
类型2的路由,虽然仅显示起始度量,但实际选路时依然基于总度量选择。
类型1优于类型2。
总结:无论类型1还是类型2,在选路均基于实际本地到达ASBR的距离来选路。因为重发布将清除原有协议的度量,故OSPF默认的选路规则将可能选中非最佳路径。通过修改重发布过程中修改度量类型为1,实现快速人工干预。
OSPF的缺省注意事项:由于OSPF的特殊区域可以自动产生缺省路由指向骨干0区域,故ISP在网络中的位置将决定,网络是否会因为缺省路由产生环路。若ISP连接骨干区域,那么所有的非骨干可以正常定义为各种特殊区域。若ISP处于某个非骨干,或非骨干连接的其他协议,那么对应的该非骨干区域不能配置为任何特殊区域,必须手工进行优化管理。
补充
在OSPF的标准文档RFC2328中,附录E描述了OSPF在某种特定的环境下会产生路由计算错误,从而给组网应用带来隐患。
link-id相同的问题:若一台ABR将两条3类LSA导入其他区域,或者一台ASBR将两条5/7类导入OSFP域,同时这两条LSA的link-id会相同。
假设:短掩码网段先进入,link-id正常显示,长掩码进入时link-id加反掩码
20.1.0.0/16 --link-id  20.1.0.0  
20.1.0.0/24 --link-id  20.1.0.255
若长掩码先进入,再短掩码进入时,长掩码的信息被刷新为反掩码。
OSPF选路规则
1. AD无关的一种情况
r2(config)#router ospf 1 
r2(config-router)#distance 109 1.1.1.1 0.0.0.0
本地从RID为1.1.1.1的设备处学习到路由条目,管理距离修改109。
一台路由器从两个OSPF邻居处学习到了两条相同的路由时,仅比较度量值,不关注管理距离。因为仅针对一台邻居进行管理距离修改的结果是要么两台都被改,要么修改失败。关注IOS版本,有时修改RID大路由器管理距离生效,有时需要修改RID小的设备。
2. AD无关的第二种情况
OIA与OIA路由相遇,到达相同目标的两条3类路由,这两条路由均通过非骨干传递,仅关注Cost值,不关注管理距离。
若一条通过骨干区域传递,另一条同过非骨干区域传递(非骨干传递的路由无效)
OSPF的区域水平分割:区域标号为A的3类LSA,不能回到区域A。
3.OE与OE
E为5类,N为7类,默认所有重发布进入路由条目均为类型2,类型2在路由表中Cost值不会显示沿途的累加,仅显示起始度量。
两条均为OE2或者均为N2,起始度量相同,关注沿途的累加度量 (OE2路由在表中度量默认不显示内部度量,仅显示起始度量)
两条均为OE2或者均为N2,起始度量不同,优先起始度量小的路径。
注:以上设计是便于管理员快速干涉选路。
OE1路由仅比较总度量(起始度量 + 沿途累加),仅修改起始度量不一定能干涉选路,必须在修改后使得总度量产生区别才能干涉选路。
总结:
- 拓扑优于路由,1/2类LSA计算所得路由优于3/4/5/7类计算所得 
- 内部优于外部,3类优于4/5/7类 
- 类型1优于类型2 E1优于E2,N1优于N2,E1优于N2,N1优于E2 
- E1与N1相遇,或E2与N2相遇,先比总度量(起始+沿途)小优,度量一致5类优于7类 
- 重发布进入ospf的路由条目,无论5或7类LSA,均存在一个类型号。默认为类型2,类型2路由仅显示起始度量。修改为类型1后将显示实际总度量。 
- 类型2虽然仅显示起始度量,但在选路时,实际比较的是总度量。 
SFP算法 – OSPF防环机制
1、在同一个区域每台路由具有一致的LSDB
2、每台路由器以自己为根计算到达每个目标的最短路径(最小Cost值)
3、必须区域划分
1)域间汇总减少路由条目数量
2)汇总路由是在所有明细路由均消失后才删除,网络更稳定
3)区域划分后不同类别的LSA传播范围不同,控制更新量
过程:基于本地LSDB(1/2类LSA)生成,生成有向图,基于有向图来进行最短路径树生成最短路径树,关注本地LINK-ID的LSA开始,基于该LSA内提及到点到点或传输网络信息,加载小Cost到树形结构中,再查看link-id递归到下一条信息,基于所有点到点和传输网络信息生成最短路径树主干,然后用树中每台设备的末梢网络信息补充路由表,完成收敛。
若有错误,欢迎指正!o( ̄▽ ̄)ブ
OSPF协议的更多相关文章
- 动态选路、RIP协议&&OSPF协议详解
		动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ... 
- OSPF协议详解
		CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ... 
- 学习总结---OSPF协议
		总结: 1.ospf协议报文不会泛洪扩散,而是逐级路由器处理后,再从所有ospf启用端口发送出去,也就是说,只能从邻居接收到ospf报文,报文的源ip是邻居的ip地址,目的ip是组播ip. 2.开启o ... 
- OSPF协议之详细图解
		OSPF是一种基于SPF算法的链路状态路由协议. 上图是在一个OSPF区域里面添入一台新的路由器的时候,OSPF协议的工作过程,如果你能非常详细的叙述出这张图的话,基本上OSPF协议的工作过程你就掌握 ... 
- OSPF协议总结
		总结: 1.ospf协议报文不会泛洪扩散,而是逐级路由器处理后,再从所有ospf启用端口发送出去,也就是说,只能从邻居接收到ospf报文,报文的源ip是邻居的ip地址,目的ip是组播ip. 2.开启o ... 
- OSPF协议介绍及配置 (下)
		4.特殊区域详解 为了让我们的讲解更加的通俗易懂,我们看上面这个拓扑,这是一个根据客户业务逻辑结构所涉及的OSPF网络,共有三个区域(实际上远远不止),骨干区域area0为一级行及二级行所部署,*** ... 
- OSPF协议介绍及配置 (上)
		OSPF协议介绍及配置 (上) 一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加 ... 
- OSPF协议介绍及配置
		一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,而对于这个网 ... 
- 静态路由协议和动态路由协议(rip协议和ospf协议)
		一.静态路由协议 1.拓扑图 2.分别是设置各个路由器的ip地址 以R1为例 R1> R1>en //进入全局配置模式 R1#conf t //进入端口 int g0/0 //配置ip地址 ... 
- 路由器配置——OSPF协议(2)
		一.实验目的:使用OSPF协议达到全网互通的效果 二.拓扑图 三.具体步骤配置 (1)R1路由器配置 Router>enableRouter#configure terminalEnter co ... 
随机推荐
- Kubernetes-3:使用kubeadm部署k8s环境及常见报错解决方法
			k8s集群安装 环境说明: k8s-Master-Centos8 ip:192.168.152.53 k8s-Node1-Centos7 ip:192.168.152.253 k8s-Node2-Ce ... 
- Docker学习系列3:常用命令之容器命令
			本文是Docker学习系列教程中的第三篇.前几篇教程如下: 「图文教程」Windows11下安装Docker Desktop 「填坑」在windows系统下安装Docker Desktop后迁移镜像位 ... 
- Innodb 单表索引查询和连接查询效率分析
			一.MySQL查询访问方法 mysql执行查询语句的方式叫做访问方法或访问类型,这些访问类型具体为 const.ref.range.index.all等. 同一个查询语句可以使用多种不同的访问方法来执 ... 
- ZEGO 即构科技首发适配鸿蒙系统的 Express SDK 1.0 版本
			 2019年8月,华为在开发者大会上正式发布鸿蒙系统. HarmonyOS 鸿蒙系统是一款"面向未来".面向全场景(移动办公.运动健康.社交通信.媒体娱乐等)的分布式操作系统.在 ... 
- 『面试题』WEB前端面试专题-Promise相关
			题目一 const promise = new Promise((resolve, reject) => { console.log(1); resolve(); console.log(2); ... 
- Angular 18+ 高级教程 – 大杂烩
			前言 本篇记入一些 Angular 的小东西. Angular 废弃 API 列表 Docs – Deprecated APIs and features Using Tailwind CSS wit ... 
- Flutter 这一年:2022 亮点时刻
			回看 2022,展望 Flutter Forward 2022 年,我们非常兴奋的看到 Flutter 社区持续发展壮大,也因此让更多人体验到了令人难以置信的体验.每天有超过 1000 款使用 Flu ... 
- C# 裁剪PDF页面
			在处理PDF文档时,有时需要精确地裁剪页面以适应特定需求,比如去除广告.背景信息或者仅仅是为了简化文档内容.本文将介绍如何使用免费.NET控件通过C#实现裁剪PDF页面. 免费库 Free Spire ... 
- async/await和Grand Central Dispatch代码切换
			很多iOS开发开始学习结构化并发时已经用过了很多年Grand Central Dispatch,虽然从思想上二者区别很大,但是利用熟悉的东西去理解新的事物有助于提升学习理解的效率,接下来是这Grand ... 
- 课时04:了解HTTP网络协议
			什么是HTTP协议 HTTP(HyperText Transfer Protocol)叫超文本传输协议,它是web服务器和客户端直接进行数据传输的规则,是一个无状态的应用层协议. HTTP协议工作原理 ... 
