OSPF(open shortest path Fist0)是IETF组织开发的一个基于链路状态的内部网关协议,具有收敛快、路由无环、可扩展等优点。
适用范围:IGP
类型:链路状态型动态路由协议
算法:i-SPF算法-SPF-dijkstra(对SPF算法的改进,使其更适合路由协议)
封装:基于IP封装,协议号为89—跨层封装在IP数据包中
版本:OSPFV2—IPV4、OSPFV3—IPV6
更新方式:组播或单播—224.0.0.5/224.0.0.6
触发更新/周期更新—周期更新时间是30min
区域划分:OSPF需要合理规划IP地址和区域划分
—目的:减少lsa数量、减少lsa传播范围、减少对资源的消耗
—原因:OSPF需要消耗大量的路由器资源
metric计算:OSPF使用cost计算metric
cost=参考带宽/链路实际带宽
每条路由信息的metric值=该条路径上每段链路的cost值的总和
类似与IP地址形式
作用:
1、标识路由器在OSPF区域内的属性
2、区分不同LSA的始发路由器
优先级:
1、手工指定
2、最大环回接口
3、最大物理IP地址
OSPF中计算路径的参数属性
作用:表示一条路由的路径开销
计算方法:
1、接口cost值=接口参考带宽/接口实际带宽
2、路由cost值=路由经过的所有出向接口的cost值相加
cost常用来干涉选路
LSA是指接口的状态信息,包括IP地址,子网掩码,网络类型,cost等。OSPF中传递的不是路由信息,而是LSA,各个路由器通过收集各个路由器发出的LSA,计算出网络的拓扑图,从而选择去各个目的网段的最佳路径,LSA在网络中始终是原始信息,不可改变。
常用类型:1、2、3、4、5、7类
OSPF是基于链路状态的,因此区域的划分是以链路为基础的,即一段链路只能属于一个OSFP区域。
目的:减少lsa数量、减少lsa传播范围、减少对资源的消耗
原因:OSPF需要消耗大量的路由器资源
划分:
1.骨干域:区域0,必须存在并且唯一,作为OSPF的核心区域,所有的域间、域外路由通过区域0转发,常规区域(非骨干域)间不能传递路由。
注:严格意义上,骨干域内必须存在邻居关系,否则会有成环的风险。
2.非骨干域:非0区域,可以存在多个,但必须与骨干域邻接
3.特殊区域:由非骨干区域而来,在非骨干的区域上的减少lsa传递的数量
命名:区域id的命令采用整数数字,或IP地址形式
OSPF基于链路划分了骨干域和非骨干域,路由在不同的位置担任不同的角色,起着不同的作用。
ABR:区域边界路由器,位于骨干域和非骨干域的交接处,可以产生3类LSA,承担与骨干域的LSA交换及域间流量的进出口
ASBR:自治系统边界路由器,位于OSPF网络与其它网络的交接处,可以产生5类、7类LSA,承担与其它的网络的通信及将其它网络的路由信息引入的作用。
作用:
1、解决骨干域断裂的问题
2、解决不规则区域问题
在MA网络中,如果每个接口之间都建立邻接关系,那么将导致重复更新,OSPF是链路状态协议,没有接口的水平分割,所以需要指定一个主路由器,负责和其它设备交换信息
DR:主路由器
BDR:备份路由器
选举规则:
1、比较接口优先级-大优
P2P网络中接口的优先级为0,不参与选举,因此可将DRouter的接口优先级修改为0,DRouther和DR建立邻接关系,DRouther之间建立邻居关系,即Two-way状态
判断网络类型,是基于设备接口的二层封装技术来进行的
1、P2P:点到点通信网络,二层封装为ppp或hdlc,没有物理寻址,不需要选举DR/DBR,支持广播(PPP)
2、MA:多路访问 ,在一个网段内的节点数量不限制,支持广播,自动选举DR/BDR(以太网)
3、NBMA:非广播型多路技术,在一个MA网络中没有广播机制,需要手动指定邻居,不支持伪广播
广播:广播是发送一个报文,该报文在广播域内传递给所有设备
伪广播:通过单播的形式给每一个设备发送一个报文
4、MP:分支之间不能直接通信,需要绕行总部
【1】hello报文
建立和维护邻居关系
【2】数据库描述包-DBD
携带LSA目录,比对LSA信息,通过LSA头部的三个信息可以区别不同的LSA
~LS Type
~Link State ID
~advertising Router
【3】链路状态请求报文-LSR
向路由器请求特定的LSA
【4】链路状态更新报文-LSU
向请求的路由器发送LSA
【5】链路状态确认报文-LSACK
路由器收到LSA恢复确认
注:由于IP是无连接不可靠的协议,因此报文的发送需要确认,OSPF报文中除hello报文外,其它报文都需要确认
DBD-序列号隐式确认
LSR-LSU
LSU-LSACK
Down → Init → Two-way → Exstart → Exchange → Loading → Full
1、Down:启动状态
OSPF进程刚运行时,路由器没有收到任何数据包,路由器开始发送hello包。
hello包以组播的方式发送,组播地址:224.0.0.5,hello time:10s/dead time 40s
在非广播网络中,不能广播发送hello包,需要手工指定邻居,发送单播hello,进入Attempt状态。
2、Init:初始化状态
路由器收到hello包后进入该状态,并将收到hello包的Router-id加入到自己发送hello包的邻居列表中
3、Two-way:双向通信状态
路由器收到的hello包的邻居列表中包含自己的Router-id,则进入该状态,代表邻居关系建立,建立邻居表,将邻居的Router-id加表
P2P网络:进入下一状态
MA:选举DR/BDR,组播地址:224.0.0.6
4、Exstart:预启动状态
双方邻居关系建立完成以后,通过类hello包的DBD对比,选举主从设备-Master—Slave。主路由器定义DBD序列号,通过序列号的隐式确认,保证传输可靠性
注:如果双方MTU不同,则停在该状态
选举规则:
Router-id较大的成为Master
5、Exchange:准交换状态
双方开始发送DBD数据包,对比LSA信息,确定自己需要的LSA信息
6、Loading:加载状态
使用LSR/LSU/LSack来获取未知的LSA信息
lsr–请求列表-针对每一条发送lsu
lsu–重传列表-对方收到lsu后发送ack确认,如果没收到,则重发
7、full:准发状态
LSA发送完毕,链路状态数据库收敛完毕
附加:Attempt状态:出现在NBMA网络中,NBMA网络没有广播,所以需要手动指定邻居
1、邻居表-peer
路由器在各个激活的OSPF的接口上维护的邻居都列在邻居表中,在邻居关系建立后,将邻居的Router-id加入邻居表中
作用:描述与OSPF建立邻居的路由器及其状态
2、链路状态数据库-LSDB
存储LSA的信息,可以将自己产生及邻居通告的LSA存储在LSDB中,用于计算网络拓扑和生成路由条目,是OSPF运行SPF算法的基础数据
作用:收集LSA的信息,用于SPF算法计算
3、OSPF路由表-Routing
SPF算法对LSDB计算,得到最佳路径,并生成OSPF路由表
作用:提供前往目的网段的最佳路径
1.router-ID必须不同
2.area-ID必须一致
3.认证类型和认证型数据都一致
4.hello时间、dead时间都一致
5.特殊区域标识必须一致
6.若在MA网络中,network mask必须一致
7.必须同时使用单播或组播
1、卡在down状态:OSPF没有运行
2、卡在init状态:没有收到对方的包
3、卡在2-way状态:MA网络没法选举
4、卡在exstart状态:MTU不匹配
5、卡在exchange状态:包交互有问题,发出DBD后没有收到ACK
6、卡在loading状态:LSA加载不完全、包交互有问题
1、增量最短路径优先算法I-SPF
第一次计算全部节点,降低了CPU的占用率,提高网络的收敛速度
2、部分路由计算PRC
只对受影响的路由计算
3、智能定时器
对接口翻滚等带来的接口不稳定,进行智能控制,减少LSA洪泛
初次计算SPF的间隔时间由start-interval参数决定,第n>2次计算SPF时间为hold-interval*2(n-1),当hold到达指定最长时间max-interval时,OSPF计算SPF的时间间隔都是最长时间间隔
1、特定路由优先收敛的技术
可以通过前缀列表将指定路由过滤出来,通过不同的路由配置不同的收敛优先级,达到重要路由先收敛,提高网络可靠性
1、路由器注意到一个链路状态改变了,他会使用组播地址224.0.0.6向ospf dr和bdr发送LSU包,此包中包含LSA更新信息。
LSA | 类型 | 作用 |
---|---|---|
Router-LSA | Type-1 | 每个设备都会产生,描述了设备的链路状态和开销,在所在区域传输 |
Network-LSA | Type-2 | 由DR产生,描述网段的链路状态,在所属区域产生,是对1类的补充 |
Network-summary-LSA | Type-3 | 由ABR产生,描述区域内的网段 ,为域间路由服务 |
ASBR-summary-LSA | Type-4 | 由ABR产生描述到ASBR的路由,通告给非ASBR所在区域,是对5类的补充 |
AS-external-LSA | Type-5 | 由ASBR产生,描述AS外部的路由,通告到所有区域 |
NSSA-LSA | Type-7 | 由ASBR产生,描述AS外部的路由,只在NSSA区域传播 |
Opaque LSA | Type-9/Type-10/Type-11 | 9在网段内传播,10支持TE,11无 |
正常1800s更新一次,最大老化时间是3609s
1、会先比较序列号,序列号越大越优,
2、如果序列号相同,会比较校验值(checksum)越大越优
3、如果校验值也相同,会比较LSA Age时间,是否等于MAX-age时间(3600)
4、如果age时间不等于max-age时间,会比较他们的差值,如果差值大15分钟(900秒),小的优
5、如果age时间不等于max-age时间,会比较他们的差值,如果差值小于15分钟,说明是同一条LSA,忽略其中一条
1、周期更新-1800s
2、触发更新
1)域间路由汇总—将非骨干区域汇总到骨干区域
将3类LSA汇总,减少更新量
2)域外路由汇总—将外部路由汇总为一条导入到OSPF中
将5类LSA汇总,减少更新量
不能是骨干区域,不能存在虚电路
一、不存在ASBR
1、末梢区域 stub
拒绝4/5类的LSA,生成一条3类的缺省指向骨干区域
2、完全末梢区域 Totally stub area
拒绝3/4/5类lsa,仅保留一条3类的缺省
二、存在ASBR
1、Not-So-Stubby Area 非完全末梢区域
拒绝其他区域的ASBR产生的4/5类LSA,本地区域内ASBR产生的5类LSA,以7类在本区域传播,从本区域进入骨干区域时由ABR(新的ASBR)转换为5类,同时自动产生一条7的缺省指向骨干区域
2、 Totally Not-So-Stubby Area
在NSSA的基础上,进一步拒绝3类LSA,生成一条3类缺省指向骨干区域
普通区域:
ASBR上手动配置产生缺省5类,通告到OSPF自治区域外(特殊区域除外)
STub区域:
ABR自动产生一条缺省3类LSA,通告到整个Stub区域内
Totally Stub区域:
ABR会自动产生一条缺省3类LSA,通告到整个Stub区域内
NSSA区域:
ABR自动产生一条缺省LSA,通告到整个NSSA区域内
ASBR手动配置产生一条缺省7类LSA,通告到整个NSSA区域内
Totally NSSA区域:
ABR自动产生一条缺省3类LSA,通告到整个NSSA区域内
1、拓扑优于路由 1/2LSA计算所得路由优于3/4/5/7类计算所得
2、内部优于外部 3类优于4/5/7类
3、AS区域内和区域间描述的是AS内部的结构,AS外部路由则描述的是AS以外的目的地址的路由
OSPF将引入AS外部的路由分为Type1和Type2两类
Type1:
到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到目的网络的开销
Type2:
到第二类外部路由的开销=ASBR到目的网络的开销
在两台的ABR上建立tunnel,然后将其宣告到OSPF协议中
缺点:
1、周期和触发的信息将对中间的穿越区域造成资源的占用;
2、选路不佳
网络中合法的ABR(工作的区域0的ABR),和非法ABR间建立一条虚链路(在OSPF协议中构建,没有新生网段) 由合法ABR授权非法ABR进行区域间路由共享
优点:
没有新生链路,故选路正常
缺点:
设备中依然保留周期的hello包和更新----占用中间区域资源
OSPF多进程,进程号仅具有本地意义,邻居间建立邻居关系时可以使用不同的进程号;
若在一台设备上同时启动多个进程,那么不同进程存在自己的邻居关系,生成不同的数据库(不共享);
最终将所有数据库计算所得路由加载于同一张路由表中;
在解决不规则区域时,可以让非法ABR将不同的OSPF区域工作在不同的OSPF进程中,之后使用双向重发布技术来实现路由共享
域内会有两种LSA-Router和Network,LSDB通过描述一个有向线段图来描述网络拓扑结构
机制:路由器以自己为根构造最短路径树
1、仅考虑路由器和传输网络之间的传输
2、末节网络作为叶子加入树
总结:构造最短路径树
2)因此当一台ABR在非Area0的区域中收到Type-3 LSA时,虽然它会将其装载进LSDB,但是该 路由器不会使用这些Type-3 LSA进行路由计算,当然它更不会将这些Type-3 LSA再注入回Area0中。
总结:区域间水平分割
Type-5 LSA将会被泛洪到整个OSPF域,表面上看,它本身并不具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖Type-1 LSA及Type-4 LSA来实现防环。
总结:依赖4类LSA放环
OSPF可以使用路由策略包括route-policy、filter、filter-policy,filter-lsa-out,access-list,prefix-list
在重发布时配置策略
Filter inport、filter export在ABR上对进入离开本区域的3类LSA过滤
Filter-policy export 对5、7类LSA过滤
通过OSPF filter-LSA-out,匹配除Grace LSA外的所有LSA、3、5、7类LSA,并匹配ACL规定的路由前缀时
通过filter-policy import过滤规则,可以设置OSPF数据库中的域内、域间、域外LSA计算为路由条目时进行过滤
AS区域内和区域间描述的是AS内部的结构,AS外部路由则描述的是AS以外的目的地址的路由
OSPF将引入AS外部的路由分为Type1和Type2两类
Type1:
到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到目的网络的开销
Type2:
到第二类外部路由的开销=ASBR到目的网络的开销
1、域内:10 域外:150 (RIP 100 ISIS 15 静态 60 Eigrp 80 BGP 255)
内部路由优先级要小于其他IGP路由协议
外部路由优先级要大于其他IGP路由协议
外部路由大于内部路由会给路由协议带来水平分割保护机制
附录E — link-id相同的问题
若一台ABR将两条3类LSA导入其他区域;同时这两条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
若长掩码先进入,再短掩码进入时,长掩码的信息被刷新为反掩码;
link-id相同时,短掩码正常显示,长掩码加反掩码
背景:在MPLS-BGP网络中,由于ospf网络之间还有备份网络,回导致路由优先选择备份路径,原因是OSPF的选路规则,域间或域内大于域外
原理:通过两个可以在PE的vr中通信的回环地址,让俩个PE建立ospf的邻居关系,从而不再依赖bgp的v4来传递俩个PE之间的ospf路由。shame-link的建立是的俩个站点之间的ospf拓扑由
CE1(OSPF_PE1(OSPF-PE1)-*PE2(BGP)-*PE2(OSPF)-CE2(OSPF)
到1
CE1 (OSPF)——> PE1 (OSPF) > PE2 (OSPF) - > CE2 (OSPF)
Option字段:
DN-用来避免在MPLS-VPN中环路,当PE向CE发送3类、5类、7类LSA时,需要设置DN位,其他PE收到该LSA时,不能用于计算
N/P-对7类LSA的控制,N=1表示,支持接受7类LSA,N=0表示不支持,P位告诉ABR将7类转为5类
E-支持接受外部LSA,可以接受5类LSA时,该位置位
MT-支持多拓扑OSPF
通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限,OSPF网络中所有的路由器都必须配置相同的上限值
OSPF Datebase Overflow过程:
1、进入该状态,删除自己产生的非缺省外部路由
2、处于该状态中时,不产生非缺省外部路由,丢弃新收到的外部路由并不回复确认报文,如果超限状态定时器超时(5s),检查外部路由数量是否仍然超限,如果超限则重启定时器,没有则退出
3、退出该状态时,路由器删除定时器,产生非缺省外部路由,接受新收到的非缺省外部路由并回复确认报文
FA地址是5、7类LSA特有的
在OSPF引入外部路由时,若产生的五类LSA的FA地址为0.0.0.0,则其他路由器在计算到达该外部网络时,将考虑如何到达ASBR来计算出外部路由的下一跳地址
在OSPF引入外部路由时,若产生的五类LSA的FA地址不为0.0.0.0,则其他路由器在计算到达该外部网络时,将考虑如何到达该FA地址来计算出外部路由的下一跳地址