OSPF : 开放式最短路径优先协议
一.OSPF 特点
1.使用范围:IGP
2.协议算法特点: 链路状态型路由协议(LS),SPF算法 -无环
3.协议是否传递网络掩码:传递网络掩码
4.协议封装:基于IP协议封装,协议号为 89 (不可靠,ospf有确认重传)
5.传递信息称作LSA,LSA 链路状态通告,包含路由信息和拓扑信息。
路由LSA:描述本路由器上接口的路由信息
拓扑LSA:描述路由器之间的连接状态
6.更新方式: 触发更新+30分钟的周期更新
7.更新地址: 组播和单播更新,组播地址: 224.0.0.5(ALL SPF router可接收) 224.0.0.6 (ALL DR(BDR) router可接收)
8.支持路由认证
9.支持手工汇总 (针对路由信息)
10.支持区域划分
11.OSPF 比较消耗设备资源,思科中一个路由器上最多支持31个OSPF 进程
二.OSPF 区域
区域划分的意义: 1.减少LSA的数量 2.减少LSA的传播范围
区域的划分是基于接口的(链路的)
区域的标记:使用了32个二进制 1.十进制 2.类似于IP地址 A.B.C.D
区域的分类:
骨干区域: 区域标记为0或0.0.0.0
非骨干区域:区域标记不等于0或0.0.0.0
区域设计原则: 向日葵型网络结构
1.OSPF网络中必须存在唯一的骨干区域(单区域除外,单区域可以为任意区域)
2.若存在非骨干区域,非骨干区域必须与骨干区域直接相连
OSPF中路由器的角色:
骨干路由器:一个路由器的所有接口都在区域0 中
非骨干路由器:一个路由器的所有接口都在一个区域中,且不是区域0
ABR:区域边界路由器,能够产生3类LSA的路由器
ASBR:自治系统边界路由器,能够产生5类或7类LSA的路由器
三.OSPF 消息数据包
HELLO: 周期性发送,周期时间10s或30s(根据不同的网络类型默认10s或30s)
目的:建立并维持OSPF 邻居关系(邻居关系建立之后充当保活包功能)在大多数终止邻居时也用(保活原因:触发更新只有网络改变时发送报文,若更新完成后一方突然死机,另一方却还以为它还在,造成网络问题)
DBD:数据库描述数据包;
I当发送连续多个DBD报文时,如果这是第一个DBD报文,则置为1,否则置为0
M 当发送连续多个DBD报文时,如果这是最后一个DBD报文,则置为0。否则置为1,表示后面还有其他的DBD报文
MS 当两台OSPF路由器交换DBD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为主。当值为1时表示发送方为主
1.主从选举DBD: 比较双方的router-id ,router-id大的一方为主(master ),小的一方为从 (slave);主用于控制LSA的交互
(DBD通过序列号隐式确认)
2.携带LSA头部信息的DBD
LSR: 链路状态请求,按照DBD中报文的未知LSA头部进行请求。(通过LSU确认)
LSU:链路状态更新,携带LSA信息。 (通过lsack确认)
LSACK:链路状态确认 (隐式确认,未收到时会重发LAU)
只有 hello 包不用被确认,周期发送可以保证可靠性
四.OSPF 邻居状态机制
Down、 init 、 attempt(过渡) 、 two-way 、 exstart 、 exchange 、loading 、full
Down:最初的状态,或是建立邻居、邻接关系失败后的状态
Init:初始化状态,一旦接收到hello报文,进入初始化状态。
Two-way:双向通信状态(邻居状态),接收到包含自己router-id 的对方hello报文。
邻居关系建立条件:
1.认证: 认证类型 (不认证=0 明文认证=1 MD5=2) 认证数据
2.hello时间,dead时间必须相同,只有ospf需要
3.特殊区域标识(E(外部路由位)=1 ; N(NSSA外部路由位)=0 P=0)
4.MA网络中,网络掩码必须一致 (不能选DR,BDR,不能产生2类LSA)
ospf邻居建立过程:
R1------------R2
ospf中宣告后,激活接口,就会发送hello包,当R1发送hello后,并且收到对方的hello包(此时没有自己的routeID)就会从down状态进入init状态,当R2接收到R1的hello包,且 条件匹配,便会发送包含R1的R-ID的hello包,其中,当R1收到此数据包,就会从init进入 Two-way状态,同样,R2收到hello包,便会进入init,收到的hello中有自己的R-ID 就会进入two-way,邻居关系建立完成。
邻居状态下(two-way): MA的网络中会选举DR(指定路由器) BDR(备份指定路由器)
DR选举: 1.比较接口优先级 (范围:0-255,默认优先级为1 ,越大越优)
2.比较各自的router-id,越大越优
注意:
1.DR抢占是关闭的
2.DR是一个接口概念
3.优先级范围0-255,数字为0代表不参与选举
4.先 选举BDR ,再升级为DR
选举DR的作用,减少las数量,和重复性。
主从选举的作用:主控制最多只有一个包被确认,防止双方发送LSA过多,从而造成一些LSA不能被确认而一直在重传。
主从选举:发生在exstart状态, 通过双方的router-id进行比较,router-id大的一方为主。 发送的 主从选举DBD(单播),DBD中包含了MTU值,可以使用命令 激活传递MTU值的功能,若双方的MTU值不同则卡在exstart 状态(MTU主要作用是防止多个数据同时传输时,小数据被遏制。通过MTU轮询,使不同数据都能发送。携带三层MTU)。 选举成功后,通过序列号进行隐式确认, 从会将自己的序列号改成和主的相同
BDR与DRother之间不发送LSA,因为BDR与DR建立邻接关系后LSA会同步,DR与DRother之间LSA也会同步,所以BDR与DRother建立邻接关系时不会再发送LSA.
Exstart—预启动状态,一旦开始发送主从DBD,则进入预启动状态。
Exchange —预交换,主从选举完成,则发送携带LSA头部信息的DBD,进入预交换状态,会发送LSR 数据包。(但是没有LSU)
Loading —加载状态,一旦发送LSU数据包,进入了加载状态,进行大量LSA的学习。
Full —邻接状态。双方LSA同步(双方LSA全部学习,双方请求列表和重传列表均清空)
五、LSA种类
1类LSA:router -LSA
功能: 产生本路由器针对某个区域的路由信息和拓扑信息
传播范围:本区域内传输
linkstate ID : 产生者的router-id
ADV router: 产生者的router-id
特性: 在单个区域中分别产生一条1类LSA,若存在MA网络,1类LSA不完整,需要配合二类 LSA生成路由信息以及拓扑信息。
1.stubnet(末节网络) ------路由信息
2.transnet(传输网络 仅限于MA网络)----拓扑信息
3.point-to-point —拓扑信息
4.virtual link (虚链路)—拓扑信息
不同类型中link-ID与data含义:
stubnet 网络号 网络掩码
transnet DR的IP地址 自己的接口地址
point-to-point 对方的R-ID 自己的接口地址
virtual link 对端的Router ID 自己到达对方的接口地址
2类LSA ,network LSA ,网络LSA
功能: 用于在MA网络中,描述本网络路由器的数量以及本MA网络的网络掩码
传播范围:只能在本区域之内传输,终止于ABR
linkstate ID:DR接口的IP地址
ADV router:DR所在路由器的router-ID
特性: 只会出现在MA网络,用于补充1类LSA(1.MA网络的掩码 2.MA网络路由器的数量)
3类LSA :summary LSA 汇总LSA
功能:用于在区域之间传递路由信息
linkstate-id :传递路由的网络号
ADV router:默认为所在区域ABR的router-id
特性: 在穿越不同区域时,有其他的ABR重新产生(ADV router 是变化的)
4类LSA: summary ASBR LSA
功能:除了ASBR所在区域外,用于通告ASBR位置
linkstate id:ASBR的router-id
ADV router: 默认ASBR所在区域的ABR的 router-id
特点:在穿越不同区域时,由新的ABR重新产生。(与3类LSA一致)

5类LSA: 外部LSA
功能: 用于在整个OSPF中传递外部路由(原本不属于OSPF域)
5类LSA有两种类型: 类型1 类型2(重发布过程中修改)
linkstate id :传递外部路由的网络号
ADV router : 产生该LSA的 router-id (产生本LSA的ASBR的router-id )
传播范围:在整个OSPF域中传输

7类LSA : NSSA LSA
范围:只能在本NSSA区域内
功能: 在NSSA区域中,传递外部路由。
7类LSA有两种类型: 类型1 类型2(重发布过程中修改)
linkstate id :传递路由网络号
ADV router:产生该LSA的 router-id
特性:默认为类型2 ,度量值为1 。 携带了FA地址(转发地址)
六、特殊区域
作用:在一些非骨干中,由于路由器性能不好,所以需要保护,减 少LSA,防止信息过多。
1. stub 区域, 末节区域
1.不得出现 4 5类LSA ,stub区域不能进行重发布,不能存在 ASBR
2.区域边界ABR会自动产生3类缺省LSA,保证stub区域路由器与外网保持通信。( 默认metric值为1,可以改)
3.stub区域不能使用虚链路
4.stub区域不能为骨干区域
5.若设置stub区域,存在该区域的所有路由器都必须设置(LSA中特 殊区域标识相同)
2 totally-stub 完全末节区域: 在stub区域基础上,由ABR过滤所有的3类LSA,只保留3类缺省LSA ;
3 NSSA区域:(not so stub area) 非完全末节区域
在一些区域为了保护路由器,不想出现4,5类LSA,但是自己又连接其他协议,需要传递其路由信息时,以7类替代。这样就避免其他区域的4,5类LSA进入。 LSA中可选项N位标识是否支持7类LSA 0不允许 1允许 E是否支持5类LSA 0不允许 1允许
1.过滤4 5 类LSA
2.边界ABR自动产生7类缺省LSA (默认度量值为1)
3.允许进行重发布(允许出现ASBR),产生7类LSA
在NSSA区域边界进行重发布,边界ASBR会产生七类LSA,在传递到区域0时,由ABR将七类转成五类,此ABR也是ASBR,并且因其他区域重发布的路由无法进入此区域,所以此路由器会产生七类缺省。
注意:
只能7转5,不能5转7,7转5的路由器也是ASBR
1.7类LSA 只能出现本NSSA区域
2 5类、7类、7转5 .默认携带FA地址,外部路由metric计算,包括路径的逻辑加表都是 以FA地址为准,若FA地址不可达,则路径不能加表。没有FA地址的时候找ADV-Router
3.同时会产生4类LSA(在其他的非area 0 ),默认该4类LSA没有意义 (除非接收到的5类LSA 不携带FA地址,此时使用4类LSA计算外部路由度量值)
4 totally nssa完全的非完全的末节区域:
在NSSA区域的基础上继续过滤3类LSA,产生3类缺省LSA的。
七、LSA的汇总
3类LSA汇总:
位置: 产生该3类LSA 的路由器上 ,明细路由所在区域
度量值:所有明细路由中metric最大的
此方法可以改变LSA的度量值
5类LSA 汇总:
位置:产生该LSA的ASBR上

7类LSA 汇总:
位置: 产生该LSA的ASBR上

7转5过程中汇总:
位置:7转5 的ASBR 上

八、OSPF的网络类型
1.P2P
物理接口:HDLC(高级数据链路控制协议) PPP (点对点协议) .GRE MGRE(不能建立邻居,可以将ospf的接口类型改为)
hello时间:10s
死亡时间:40S
是否选举DR:不选举
是否自动建立邻居:自动建立
华为中环回接口的cost为0,接口类型为p-2-p,学习的路由掩码为32位。
华为:若必须学习24位路由,可以将接口类型改为broadcast (此时选DR,而环回接口就此一人,必回成为DR,会产生hello包,可以将接口改为被动接口,减少资源消耗,优化机制)
华为MGRE中ospf的接口网络类型为P-2-P,所以hub只能和一个spoke建立邻居 ,需要更改。
2.BMA
物理接口:以太网
hello时间:10 s
是否选举DR:选举
是否自动建立邻居:是
华为中MGRE中运行ospf协议,tunnel接口修改为BMA时,只需要控制DR位置,不能出现BDR,标准hub-spoke中,spoke之间不能通信,
所以还需要手工映射。
华为中spoke之间可以互相通信,但是还要控制DR位置,不能出现BDR原因:
ospf中只有DR和DRother之间进行LSA学习,如果spoke成为DR,因为spoke没有开启伪广播,所以不会向其他spoke发包学习LSA,只会向hub发包学习LSA。若开启spoke的伪广播,则MGRE无意义。
3.NBMA
物理接口:FR-帧中继(物理接口、多点子接口) ATM-异步传输网络
hello时间:30s 120
是否选举DR:选举DR
是否自动建立邻居:否(没有组播)
华为中tunnel接口不能配置ospf网络类型成为NBMA
4.P2MP
物理接口:无
hello时间:30s
是否选举DR:不选举
是否自动建立邻居:自动
特点:将物理接口IP地址以32位主机路由的形式以距离矢量的方式传递进入OSPF

华为:MGRE中运行ospf协议,tunnel接口修改为P2MP时,可以自动建立邻居,不选举DR,BDR,会将物理接口IP地址以32位主机路由的形式以距离矢量的方式传递,这样spoke之间学习的路由会递归到该主机路由,从而不需要进行手工映射。
九、LSA的比较
域内优于域间
域间优于域外
类型1 优于类型2
类型1之间比较仅仅关注总度量值
类型2之间先比较种子度量值再比较沿途累加度量值
十、OSPF不规则区域
1.存在多个area 0
2.非骨干没有直接挂靠在骨干区域之上
解决方法:
1.OSPF 双进程重发布
2.virtual link —虚链路
以两个区域边界的两个路由器为节点,建立通信,单播通信
注意:
1.虚链路只能穿越一个区域 (做虚链路的两个路由器通信只经过一个区域)
2.穿越的区域不能为特殊区域
3.虚链路的两端必须至少存在一个ABR
4.虚链路属于area 0 (只能延伸area0)
5.虚链路是基于路由器完成的(在被穿越的区域配置virtual link命令)
虚链路建立的邻居关系在邻居表不可见
3.Tunnel 隧道方式