摘要
在每个区域内部,每个OSPF路由器都会产生一条一类是LSA描述自身所有接口的链路信息
LSDB=链路状态数据库,通过路由器间的路由信息交换,自治系统内部可以达到信息同步。 注OSPF不会产生环路,因为SPF算法会计算最佳路径,所有不会形成环路
伪节点到达任何根路由的cost都是0 到达任何邻居
开销列表里面只要在一类LSA中查看其他邻居那查看的rou-id就是父节点
每个路由器都会以自己为根,去计算SPF算法 只要开销最小的就是最优路由
每台路由器以自己为中心,在OSPF区域内先构建路,在填充水泥,怎么去走
描述接口类型
在1类LSA中,使用4种Link-type描述接口的链路状态信息
①Link-type : StubNet 用于描述直连的网络号,
Link-id : 用于描述直连的网络前缀
Date : 用于描述网络掩码信息
Metric : 用于描述路由器自身去往该网络开销值
②Link-type : P2P 用于 描述直连链路上网络类型为P2P或者P2MP的邻居
Link-id :用于描述P2P网络上邻居的Rid
Date :用于描述自身连接P2P邻居的接口IP地址
Metric : 用于描述该路由器去往该网段的开销值
③ Link-Type : Transnet 用于描述直连链路上的网络类型为广播或者NBMA的邻居
Link-id : 用于描述伪节点的Router-id,使用的是DR的接口IP地址充当
Date : 用于描述自身去往伪节点的接口IP地址
Metric :用于描述自身到达伪节点的cost值
④ Link-Type : V-link 用于描述虚链路上的邻居
Link-id : 用于描述虚链路邻居Router-id
Date : 用于描述自身去往虚链路邻居的IP 地址
Metric :用于描述自身去往虚链路邻居的cost值
一类LSA链路信息
二类LSA
3类LSA
4类LSA
5类LSA
7类LSA
Type 2 :OSPF默认引入的外部路由类型为2,当路由器计算type2的外部路由时,不会计算OSPF内部的cost,只计算ASBR到达目标网络的cost
使用场景 :当不在意,OSPF内部的次优路径问题可以使用type2
当在意OSPF内部次优路径问题时需要使用type1
如果在数据库中存在相同目的的5类LSA且tpye不一致时,优先使用type1优于type2
Type1:
Type 1 OSPF引入外部路由时,可以通过命令更改Type类型,当路由器计算type1的外部路由时,会同时计算OSPF内部的cost+ASBR到达网络目的的cost
1类路由器只要接口宣告进了OSPF,那么这个接口就会产生链路状态,然后通过1类LSA在本区域内进行泛洪和同步。反过来说:1类LSA是用来描述路由器自身直连链路状态和自身邻居信息的,他还会标记一些路由器的角色
2类当网络类型为广播或者NBMA的时候,那么邻居的描述就会用伪节点来描述。伪节点的信息是通过2类LSA来描述的2类LSA除了描述伪节点邻居信息,同时也描述了叶子信息
3类用来描述遇见路由信息的LSA,由ABR路由器产生。ABR会将直连区域内1类和2类LSA计算出的路由信息转换成3类LSA传递到其他直连区域
- 当网络类型为广播或者NBMA时,DR会产生2类LSA,来描述伪节点信息。
2类LSA既描述了路由信息,也描述了网络信息
以上:当一个OSFP区域建立邻居完毕,并且LSA泛洪完毕之后,所有路由器产生的 1类LSA,和广播网络产生的2类LSA,将会在该区域内进行泛洪和同步, (所有该区域的路由器都会同步这个区域内所有的1类LSA和2类LSA)。
- 1类LSA和2类LSA作为链路状态,在一个区域内进行泛洪,泛洪结束后,每个路由器都会以自己为根,计算出最短路径树(等于那条路走的时间最短)
OSPF域间路由计算
-
- 骨干区域只能有一个
- 非骨干区域必须与骨干区域相连(但是有虚链路的话可以多区域通告)
- 多区域的时候,必须有骨干区域
- 区域编号0,为骨干区域
区域编号非0,就是非骨干区域
- 每个区域都会维护一个独立的LSDB=链路状态数据库 ,区域内的1类和2类不会传递到其他区域,那么每个区域都会维护自己独立的SPF树
1类LSA和2类LS只会在自己区域内泛洪
注 :ABR会去计算两个区域内的SPF树
记住,区域的划分是基于接口在那个区域就是那个区域,比如路由器1口在0区域就是区域0,2口在1区域就是区域1
在路由器宣告了环回接口,那么这个环回接口就会产生链路状态,通过1类LSA在区域1内进行泛洪和同步,那么路由器ABR同步到区域1内的所有1类和2类LSA后 会计算区域1的SPF树,根据这棵SPF树计算出所有的最优路由后,ABR路由器,会将区域1内所有计算出的最优路由转换成3类LSA在区域0内进行泛洪同步
区域0也会计算最优路由,也会被转成3类LSA在区域1泛洪
在区域内计算SPF树的时候,3类LSA会认为ABR节点的叶子信息
3类LSA传递的是路由信息,不是链路状态。(在OSPF中,只有1类和2类被看做链路状态,3类LSA是路由信息)
由于3类LSA被看做是叶子信息,所以在一个区域内的SPF树来说,3类LSA增加和减少对于SPF没有任何影响。
3类LSA由于是路由信息,所有具有矢量特征,需要注意一点!只有在ABR上这条叶子信息
加路由表后才会被转成3类LSA传递到其他区域
环回接口=虚拟接口
缺省路由
缺省路由又称为默认路由,是一种特殊的静态路由,目的地址与掩码配置为全零(0.0.0.0 0.0.0.0)。当路由表中的所有路由都选择失败的时候,为使得报文有最终的一个发送地,将使用缺省路由。配置为ip route-static 0.0.0.0 0.0.0.0 x.x.x.x 作用就是所有路由都往这下一跳走
缺省路由通常用相同的处理方式把报文指向另一个路由器。如果有其他路由匹配,则按照该路由规则转发相应的报文,否则该报文将被转发到该路由器的缺省路由。这个过程不断重复,直到一个数据包被传递到目的地。设备的缺省路由通常被也称为默认网关,它经常提供如数据包过滤,防火墙或代理服务器等功能
多区域
多区域情况下,可以建立自身为ABR只要某个多区域没有连接在骨干区域的路由器就可以设置为ABR
命令是环回接口里面ospf en1 are
a0
区域路由器类型
BDR=备用指定路由器
BDR的作用就是当DR的状态处于down的时候,BDR就会重新和其他路由器建立邻接关系,来代替DR传输路由器中的信息。
DR=指定路由器
DR的作用是:
在一个区域内有多个路由器,就会选举DR,DR的作用就是用来给其他邻居建立通信,让其他路由器减少自己不必要的路由走向,如果区域内的多个路由器都相互学习的话会占用很多的网络带宽,所有这时候就需要一个DR=指定路由器,来指定流量想传输到那个路由器。
ASBR=自治系统边界路由器 注 :5类LSA是ASBR来产生转发的
ASBR的理解: 注:生成4类LSA的只能是ABR,因为只有ABR才能转换ASBR的1类LSA
1. 当OSPF路由器使用了import-route以后,那么路由器就会在自己的1类LSA置为ASBR
不论它是否引入了外部路由
- 路由器在Import-route命令敲完后,就会在区域触发更新自己的1类LSA,置位ASBR
- 当ABR收到这条ASBR置位信息的1类LSA后,由于自身是ABR,那么他就会根据这条ASBR置位产生的1类LSA生产一条4类LSA,给ABR,在其他直连区域内进行传递
- 如果自身不是ABR角色,那么就不具备生产4类LSA能力
- 生成目的是:是为了,让其他区域路由器计算5类LSA的时候,可以找到谁是ASBR负责来转发该5类LSA
- 所有4类LSA被理解为,ASBR的介绍人
- 当ABR收到了4类LSA后,会将4类LSA的通告中换成自己,在其他直连区域进行传递目的是为了让其他区域路由器计算出5类LSA
ABR=区域边界路由器 如果ABR不在骨干区域有活动接口就不是ABR
定义:当路由器连接了多个区域,且在骨干区域有一个活动接口
功能:
1,将直连区域内通过一类和二类计算出的最优路由,转换成其他区域的3类LSA,虚拟也算
2,将骨干区域的3类LSA转换成其他区域的3类LSA,但是通告者改变成ABR
一旦路由器满足ABR条件,就会在1类LSA中设为ABR,来通告其他路由自己是ABR角色(虚拟建立)
如果在OSPF进程中只创建了区域0,但是区域0中没有宣告任何活动接口,那么路由器亦然会在1类LSA中设为ABR,但是不干ABR的工作
非骨干区域的1类和2类被计算出的路由,只能被转换到骨干区域为3类,然后在通过骨干区域的3类转换到其他的非骨干区域 注:因为骨干区域才能吧1类和2类的路由信息转换出去
防环原则:
OSPF防环机制,所有不同区域的路由只能通过ABR来实现,ABR是连接到骨干区域的
所有在区域设计规定上,所有非骨干区域要连接到骨干区域。区域间的通讯需要通过骨干区域
1,ABR不会将非骨干区域的三类LSA转换到骨干区域
2,ABR在骨干区域有邻居的时候,不会计算非骨干区域的3类LSA
3,如果ABR在骨干区域没有邻居,那么就会计算非骨干区域的3类LSA
OSPF中一类不论什么cost值,一类永远优于三类
当执行引入动作后,路由表中的路由就会以5类的形式存放在LSDB中,并在整个OSPF域内传递
虚链路:
- 虚链路属于区域0的逻辑链路 逻辑链路等于=虚拟链路没有物理层的路传输层
- 虚链路只能穿越1个非骨干区域
- 虚链路不能穿越特殊区域 nass和Stub这种就是特殊区域
Vlink在配置的时候,需要指对方的Router-id,而非路由器的接口IP
1. 当穿越的区域存在多条冗余路径时,Vlik会自己选择最优路径的接口IP地址作为收发报文的接口,
它是如何来计算最优路径呢?
配置了Vlikd的路由器会计算2课SPF树。1课是以自己为根,在穿越区域内计算最短路径树,另一颗是以Vlink端来计算到达自己的最短路径
综上,决定了最优路径的接口ip地址来收发报文
2. 同时由于存在了冗余路径,当线路断的时候,SPF树不会断,从而Vlik不会断
OSPF外部路由
OSPF引入的外部路由优先级默认是150
路由引入命令 import-route
路由引入的前提是必须路由表里面有的路由才能引入,没有的就无法引入!
有4类不一定有5类(做引入动作的时候路由表里没有引入的路由就没有五类),有5类不一定有四类(单区域内直接以一类LSA去寻找ASBR)
1.路由引入会触发两条更新LSU,其中第一条更新了路由器的1类其中的ASBR职位,来告诉域内小伙伴,我变成了ASBR,我要引入外部路由了
(抓包查看)第二条LSU是更新外部路由(5类LSA)=更新状态为5类LSA
5类LSA的同步和泛洪原则:5类LSA的同步不基于区域的传递原则,是在整个OSPF域中进行泛洪,只和其他路由器建立邻接关系,就会泛洪这条5类LSA
2.所有的外部路由在引入OSPF后,会以5类LSA存在于OSPF数据库中,外部的cost将不再计算,赋予外部路由5类一个新的度量值(cost默认为1)
这个默认开销值就会被认为是ASBR到达目标网络的开销值
OSPF默认路由(重点) 内部默认路由引入都会变成一条5类的LSA在内部泛洪
- 默认路由就是缺省路由默认路由引入都是0.0.0.0 0.0.0.0
- 在OSPF内部去让其他路由去学习就是在外部做一条缺省路由去通告外部网关
- 在连接外部路由的ASBR里配置default-route-advertise (默认这条命令情况下只会去引入路由表里面有的静态路由)
- default-route-advertise always 这条配置是不管你路由表有没有路由它都会去生成一条路由
特殊区域
该图片的意思是抓包查看OSPF邻居建立hello包里面的Options=置位的情况
抓包的信息
NSSA的数据库信息
特殊区域是OSPF优化的一种手段,当路由器无法承载大量的LSA时,会考虑减少LSA数量来优化
在非骨干区域中,又可以分为以下特殊区域
当某个区域设置为Stub区域时,发出的Hello包中,Option字段中的Ebit置位为0,代表该区域没有处理外部路由的能力,简单描述:这个区域无法泛洪和传递5类LSA
由于该区域失去了处理外部路由的能力,因此ABR不在向该区域传递4类LSA
- Stub区域(末节区域)
对于Stub区域的配置
1.Stub区域:在IR 和ABR的区域视图下敲Stub
2.完全Stub区域:在IR的区域视图下敲Stub,在ABR的区域视图下敲stub no-sumay
ABR不会向Stub区域传递4类和5类
ABR会生产一条默认缺省的3类LSA下发到Stub区域里(包含4类5类)Cost默认是1
Stub每个ABR都会产生一条缺省的3类,由于Stub区域没5类和4类LSA就不会知道外部路由的开销值,那么就会有次优路径的风险 解决办法(人为改变)
- 针对Stub区域内的IR路由器接口改变Cost来人为选路
- 在ABR调整3类缺省的种子度量值(就是修改某个ABR的区域里的cost值命令default-cost)
- 在IR路由器针对下一跳修改权重值(就是修改路由器下一跳的等级)命令nexthop x.x.x.x weight 1-254 默认值为255 (权重值修改后无法冗余因为下一跳已经固定了)
- Totally Stub(完全末节区域) 注:1类和2类是没办法优化的
完全Stub区域是在Stub的基础上,将该区域的其他3类明细LSA过滤掉
完全Stub区域内只保留该区域的1类和2类LSA,以及ABR下发的缺省3类LSA
完全Stbu区域继承了Stub区域的所有特性和功能,包括多ABR的次优路径的风险问题,解决方法一致
- NSSA区域(非完全末节区域)
- NSSA区域也是末节区域,也要做LSA的优化
ABR不会向NSSA区域内部传递4类和5类,
ABR会产生一条7类缺省LSA放在LSDB表里,方便NSSA区域路由器访问其他区域引入的外部路由
- NSSA区域引入了外部路由,需要让其他区域路由器访问到这外部路由
2.1 NSSA区域的ABR会将7类LSA转换成5类LSA,传递到其他直连区域,方便其他区域的路由器计算外部路由
2.2 7类LSA只能在NSSA区域内部进行泛洪,不能在其他普通区域传递。
2.3 NSSA区域的ABR具有7类转5类的能力,所有ABR会被置位成ASBR
3. 对于NSSA区域有多ABR的场景
3.1 多ABR时由route-id 大的ASBR来执行7转5的功能
3.2 没有执行7转5的ABR虽然没干ASBR的事,但它还是一台ASBR,当rou-id大的挂掉时,它就来做7转5的功能,相当于备份(冗余)
3.3 多台ABR会同时产生7类缺省,NSSA区域内部的IR路由器对缺省路由进行负载存在次优风险,
次优的解决办法,更改接口Cost, 2.是更改下一跳权重值
3.4 7类LSA的Options 如果有NP就会7转5 N表示NSSA区域。P表示传播
4. 7类LSA的FA地址问题;
4.1 FA地址和5类LSA的FA地址作用相同,都是用来做链路优化的
4.2 7类的FA地址不会为空
如果场景和5类的相似,那FA地址会是外部路由的下一跳
如果和场景5不相同,则取值为路由器最大环回接口地址作为7类的FA地址(环回接口必须宣告进OSPF)
如果没有宣告进OSPF环回接口,则使用第一个UP=(物理活动)接口的IP地址作为7类FA地址
- Totally NSSA(完全非完全末节区域)
- 完全NSSA继承了NSSA的所有特性和优缺点
- 完全NSSA的ABR会生产两条缺省分别是3类和7类的缺省,这种仅在华为存在
路由器会使用3类缺省计算路由
- 完全NSSA会把3类4类5类全部干掉只留下1类2类和缺省的3类还有7类
- 它会留下默认缺省的三类和外部引入的7类还有默认缺省的7类 1 2类是一定存在的
1类2类LSA > 3类 > 外部路由(5类和7类)
外部路由Type1 > type2
OSPF汇总技术
使用CIDR技术:将可以合并的路由条数汇总起来,减少LSDB中的LSA数量。
汇总可以对骨干区域和非骨干区域进行汇总
- 区域间的汇总 (只能在ABR进行)
- 在ABR上,可以针对1类2类LSA计算出的最优路由进行汇总,汇总后以3类LSA将泛洪到其他直连区域
命令在那个区域敲,汇总的就是那个区域的叶子信息。区域1敲就是汇总区域1的叶子信息,叶子就是Stubnet 然后以3类的形式转发到区域0里面 就是一条汇总信息
-
- 只要在LSDB中存在明细,那么汇总后的3类LSA就不会受到印象,当区域中的明细全部消失后,汇总后的3类LSA也会消失
- 关于汇总后的cost问题,会使用明细路由中cost最大值作为汇总后的3类LSA的cost
- 如果存在多台ABR,那么每个ABR都要进行汇总
- 多ABR汇总后的3类LSA会在骨干区域泛洪给另外一台ABR,这时另外一台ABR不会计算这条3类LSA,为了避免环路
- 域外路由汇总(只能在ASBR上进行)
在ASBR针对自身引入外部路由汇总
2.1 针对Type-1的外部路由,汇总后的开销值是所有被汇总路由开销值最大的
2.2 针对Type-2的外部路由,汇总后的开销值是所有被汇总路由开销值最大的+1
2.3 如果引入的明细既然Type1和type2,那么汇总后按照TYPE2进行
2.4 针对NSSA区域的ABR来说,他也是ASBR,也会做7转5的操作,如果需要对NSSA区域传递的外部路由进行汇总,需要在7转5的ABR进行操作
OSPF认证技术
OSPF认证是基于网络安全性的要求而实现的一种加密手段,通过在OSPF报文中增加认证字段对报文进行加密。当本地设备接收到远端设备发送过来的OSPF报文,如果发现认证密码不匹配,则将收到的报文进行丢弃,达到自我保护的目的。
只有认证成功才可以,建立邻居。
区域认证和接口认证只要接口和区域是相同的,互不干扰都可以认证
区域的话是面向所有接口,在该区域进行认证
接口只面向自己所在的区域认证
如果同时存在接口认证和区域认证,接口认证优于区域认证
- 接口认证
- 区域认证