偶尔偷懒,经常偶尔
主页
文章导航
← 上一篇
下一篇 →
OSPF
概述
前言
OSPF(OpenShortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(InteriorGateway Protocol)。
OSPF作为基于链路状态的协议,具有收敛快、路由无环、可扩展等优点,成为优秀的内部网关协议被快速接受并广泛使用。
目标
理解OSPF基本原理
提升OSPF排错能力
加强OSPF综合运用能力
概述OSPFv3的工作原理
了解OSPFv3和OSPFv2的区别和变化
掌握OSPFv3的基本配置和常用命令
OSPFv2原理描述
LSA头部信息
除Hello报文外,其它的OSPF报文都携带LSA信息。
LS age:此字段表示LSA已经生存的时间,单位是秒。
Option:该字段指出了部分OSPF域中LSA能够支持的可选性能。
LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种。
Link State ID:根据LSA的不用而不同。
Advertising Router:始发LSA的路由器的ID。
Sequence Number:当LSA每次新的实例产生时,这个序列号就会增加。这个更新可以帮助其他路由器识别最新的LSA实例。
Checksum:关于LSA的全部信息的校验和。因为Age字段,所以校验和会随着老化时间的增大而每次都需要重新进行计算。
Length:是一个包含LSA头部在内的LSA的长度。
LSA类型
Router-LSA (Type1)
每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。
Router-LSA必须描述始发路由器所有接口或链路。
Link State ID:是指始发路由器的路由器ID。
Flag:
V:设置为1时,说明始发路由器是一条或者多条具有完全邻接关系的虚链路的一个端点。
E:当始发路由器是一个ASBR路由器时,该为置为1。
B:当始发路由器是一个ABR路由器时,该为置为1。
Number of links:表明一个LSA所描述的路由器链路数量。
Link Type:
值为1表示为点到点网络,常见的PPP链路需要使用点到点网络描述。
值为2表示连接一个transit网络,有至少两台路由器的广播型网段或NBMA网段就是一种Transit网段。
值为3表示连接stubnet网络,一般该网络上不存在邻居关系,如只有一个出口的以太网或回环接口。
值为4表示虚链路。
Link ID:
Link Type为1时该值表示邻居路由器的路由器ID。
Link Type为2时该值表示DR路由器的接口的IP地址。
Link Type为3时该值表示IP网络或子网地址。
Link Type为4时该值表示邻居路由器的路由器ID。
Link Data:
Link Type为1时该值表示和网络相连的始发路由器接口的IP地址。
Link Type为2时该值表示和网络相连的始发路由器接口的IP地址。
Link Type为3时该值表示网络的子网掩码。
Link Type为4时该值表示始发路由器的虚链路接口的IP地址。
ToS,暂不支持。
Metric:是指一条链路或接口的代价。
Network-LSA (Type2)
由 DR 产生,描述本网段的链路状态,在所属的区域内传播。
Link State ID:是指DR路由器的接口地址。
Network Mask:指定这个网络上使用的地址或者子网的掩码。
Attached router:列出该多路访问网络上与DR形成完全邻接关系且包括DR本身的所有路由器的路由器ID。
Network-summary-LSA (Type3)
由 ABR 产生,描述区域内某个网段的路由,并通告给发布或接收此 LSA的非 Totally STUB 或 NSSA 区域。
Link State ID:表示所通告的网络或子网的IP地址。
Network Mask:表示所通告的网络的子网掩码。
Metric:始发路由器到目的地址的路由的代价。
ASBR-summary-LSA (Type4)
由 ABR 产生,描述到 ASBR 的路由,通告给除 ASBR 所在区域的其他相关区域。
Link State ID:表示所通告的ASBR路由器的路由器ID。
Network Mask:该字段没有实际意义,一般置为0.0.0.0。
Metric:始发路由器到目的地址的路由的代价。
AS-external-LSA (Type5)
由 ASBR 产生,描述到 AS 外部的路由,通告到所有的区域(除了 STUB区域和 NSSA 区域)。
Link State ID:表示所通告的网络或子网的IP地址。
Network Mask:指所通告的网络的子网掩码。
E:用来指定这条路由使用的外部度量的类型。如果该E bit设置为1,那么度量类型就是E2;如果该E bit设置为0,那么度量类型就是E1。
Metric:指路由的代价。由ASBR设定。
Forwarding Address:是指到达所通告的目的地的数据包应该被转发到的地址。如果转发地址是0.0.0.0,那么数据包将被转发到始发ASBR上。
External Route Tag:标记外部路由。
NSSA LSA (Type7)
由 ASBR 产生,描述到 AS 外部的路由,仅在 NSSA 区域内传播。
Forwarding Address
如果所引入外部路由的下一跳在OSPF路由域内,则Forwarding Address直接设置为所引入外部路由的下一跳。
如果所引入外部路由的下一跳不在OSPF路由域内,则Forwarding Address设置为该ASBR上某个OSPF路由域内的Stub网段(例如Loopback0接口)的接口IP地址,有多个Stub网段时选IP地址最大者。
Opaque LSA (Type9/Type10/Type11)
Opaque LSA 提供用于 OSPF 的扩展的通用机制。
Type9 LSA仅在接口所在网段范围内传播。
用于支持 GR 的 Grace LSA就是 Type9 LSA 的一种。
Type10LSA 在区域内传播。
用于支持TE 的 LSA 就是 Type10 LSA 的一种。
Type11LSA 在自治域内传播。
路由类型
AS区域内和区域间路由描述的是 AS内部的网络结构,AS外部路由则描述了应该如何选择到 AS以外目的地址的路由。
OSPF将引入的 AS外部路由分为 Type1和 Type2两类。
按优先级从高到低顺序列出了路由类型
Intra Area
Inter Area
第一类外部路由(Type1 External)
这类路由的可信程度高一些。
计算出的外部路由的开销与自治系统内部的路由开销是相当的。
并且和 OSPF 自身路由的开销具有可比性。
到第一类外部路由的开销=本设备到相应的 ASBR 的开销+ASBR 到该路由目的地址的开销。
第二类外部路由(Type2 External)
这类路由的可信度比较低。
OSPF 协议认为从 ASBR 到自治系统之外的开销远远大于在自治系统之内到达 ASBR 的开销。
OSPF 计算路由开销时只考虑 ASBR 到自治系统之外的开销。
即到第二类外部路由的开销=ASBR 到该路由目的地址的开销。
Option字段
Option字段:
Option可选字段出现在每一个Hello数据包、DD和每个LSA中的。
Option字段允许路由器和其他路由器进行一些可选性能的通信。
Option字段包含信息:
Option字段解释:
DN
用来避免在MPLS VPN中出现环路。
当PE向CE发送3类、5类和7类LSA时需要设置DN位。
其他PE路由器从CE接收到该LSA时,不能够在它的OSPF路由计算中使用该LSA。
O
该字段指出始发路由器支持Opaque LSA(类型9、类型10和类型11)。
DC位
当始发路由器支持按需链路上的OSPF的能力时,该位将被设置。
EA
当始发路由器具有接收和转发External-Attributes-LSA(type8 LSA)的能力时,该位被置位。
N位
只用在Hello数据包中。
N=1表明路由器支持7类LSA。
N=0表明该路由器将不接收和发送NSSA LSA。
P位
只用在NSSA LSA。
该位将告诉NSSA区域的ABR路由器将7类LSA转换为5类LSA。
MC位
当始发路由器支持转发组播数据包的能力时,该位将被置位。
E位
当始发路由器具有接收AS-external-LSA(type5 LSA)的能力时,该位被置位。
在所有5类LSA和始发于骨干区域以及非末节区域的LSA中,该位置为1。
而始发于末节区域的LSA中,该位置为0。
如果Hello报文中该位被置位则表明该接口具有接收和发送5类LSA的能力。
MT位
收敛特性
快速收敛
增量最短路径优先算法I-SPF:
只对受影响的节点进行路由计算;
只第一次计算全部节点。
pI-SPF改进了这个算法,除了第一次计算时需要计算全部节点外,每次只计算受到影响的节点,而最后生成的最短路径树SPT与原来的算法所计算的结果相同,大大降低了CPU的占用率,提高了网络收敛速度。
部分路由计算PRC:
只对发生变化的路由进行重新计算;
根据I-SPF 算出来的SPT 来更新路由。
PRC的原理与I-SPF相同,都是只对发生变化的路由进行重新计算。不同的是,PRC不需要计算节点路径,而是根据I-SPF算出来的SPT来更新路由。
在路由计算中,叶子代表路由,节点则代表路由器。
SPT变化和叶子变化都会引起路由信息的变化,但两者不存在依赖关系,PRC根据SPT或叶子的不同情况进行相应的处理:
SPT变化,PRC处理变化节点上的所有叶子的路由信息。
SPT没有变化,PRC不会处理节点的路由信息。
叶子变化,PRC处理变化的叶子的路由信息。
叶子没有变化,PRC不会处理叶子的路由信息。
智能定时器:
对接口翻动等原因带来的网络不稳定,进行智能控制,减少LSA洪泛。
智能定时器,OSPF智能定时器分别对路由计算、LSA的产生、LSA的接收进行控制,加速网络收敛。
OSPF智能定时器可以通过以下两种方式来加速网络收敛:
在频繁进行路由计算的网络中,OSPF智能定时器根据用户的配置和指数衰减技术动态调整两次路由计算的时间间隔,减少路由计算的次数,从而减少CPU的消耗,待网络拓扑稳定后再进行路由计算。
在不稳定网络中,当路由器由于拓扑的频繁变化需要产生或接收LSA时,OSPF智能定时器可以动态调整时间间隔,在时间间隔之内不产生LSA或对接受到的LSA不进行处理,从而减少整个网络无效LSA的产生和传播
智能定时器对路径计算的作用:
根据本地维护的链路状态数据库LSDB,运行OSPF协议的路由器通过SPF算法计算出以自己为根的最短路径树,并根据这一最短路径树决定到目的网络的下一跳。通过调节SPF的计算间隔,可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。
在特定组网环境下(例如对路由收敛时间要求较高的环境),可以指定以毫秒为单位的时间间隔,用来增加路由计算的频度,从而加快路由的收敛。
当OSPF的链路状态数据库(LSDB)发生改变时,需要重新计算最短路径。如果网络频繁变化,由于不断的计算最短路径,会占用大量系统资源,影响路由器的效率。通过配置智能定时器,设置合理的SPF计算的间隔时间,可以避免占用过多的路由器内存和带宽资源。
使能智能定时器后:
初次计算SPF的间隔时间由start-interval参数指定。
第n(n≥2)次计算SPF的间隔时间为hold-interval×2(n-1)。
当hold-interval×2(n-1)达到指定的最长间隔时间max-interval时,OSPF连续三次计算SPF的时间间隔都是最长间隔时间,之后,再次返回步骤1,按照初始间隔时间start-interval计算SPF。
按优先级收敛
能够让某些特定的路由优先收敛的一种技术。
可以通过IP前缀列表等将特定路由过滤出来,通过对不同的路由配置不同的收敛优先级,达到重要的路由先收敛的目的,提高网络的可靠性。
Database Overflow
通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限。
OSPF网络中所有路由器都必须配置相同的上限值。
这样,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动超限状态定时器(默认超时时间为5秒)。
路由器在定时器超过5秒后自动退出超限状态。
OSPF Database Overflow过程
进入Overflow状态时,路由器删除所有自己产生的非缺省外部路由。
处于Overflow状态中时,路由器不产生非缺省外部路由;丢弃新收到的非缺省外部路由且不回复确认报文;当超限状态定时器超时,检查外部路由数量是否仍然超过上限,如果超限则重启定时器,如果没有则退出超限状态。
退出Overflow状态时,路由器删除超限状态定时器;产生非缺省外部路由;接收新收到的非缺省外部路由并回复确认报文;准备下一次进入超限状态。
缺省路由
不同区域的缺省路由
普通区域:
ASBR上手动配置产生缺省5类LSA,通告到整个OSPF自治域(特殊区域除外)。
Stub区域:
ABR自动产生一条缺省3类LSA,通告到整个Stub区域内。
Totally Stub区域:
ABR会自动产生一条缺省3类LSA,通告到整个Stub区域内。
NSSA区域:
在ABR自动产生一条缺省7类LSA,通告到整个NSSA区域内;
在ASBR手动配置产生一条缺省7类LSA,通告到整个NSSA区域内。
Totally NSSA区域:
ABR自动产生一条缺省3类LSA,通告到整个NSSA区域内。
缺省路由应用
OSPF 缺省路由通常应用于下面两种情况:
由区域边界路由器(ABR)发布 Type3 缺省 Summary LSA,用来指导区域内设备进行区域之间报文的转发。
由自治系统边界路由器(ASBR)发布 Type5 外部缺省 ASE LSA,或者 Type7 外部缺省NSSA LSA,用来指导自治系统(AS)内设备进行自治系统外报文的转发。
缺省路由发布原则
OSPF 路由器只有具有对外的出口时,才能够发布缺省路由 LSA。
如果 OSPF 路由器已经发布了缺省路由 LSA,那么不再学习其它路由器发布的相同类型缺省路由。即路由计算时不再计算其它路由器发布的相同类型的缺省路由LSA,但数据库中存有对应 LSA。
外部缺省路由的发布如果要依赖于其它路由,那么被依赖的路由不能是本 OSPF 路由域内的路由,即不是本进程 OSPF 学习到的路由。因为外部缺省路由的作用是用于指导报文的域外转发,而本 OSPF 路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。
路由过滤
OSPF 支持使用路由策略对路由信息进行过滤。
缺省情况下, OSPF 不进行路由过滤。
路由过滤的应用
路由引入的过滤
OSPF可以引入其它路由协议学习到的路由。
在引入时可以通过配置路由策略来过滤路由,只引入满足条件的路由。
可以在OSPF 路由表中被发布出去。
路由视图下的LSA过滤:
3类LSA学习、发布的过滤;
通过filter import、filter export命令在 ABR上对进入或离开本区域的3型LSA 进行过滤。
该配置只在ABR上有效(只有ABR才能发布3型LSA)。
5、7类LSA生成的过滤。
OSPF 引入外部路由后会生成5、7型LSA。
可以通过filter-policy export来对5、7型LSA的生成进行过滤。
该过滤规则只在 ASBR 上配置才有效。
接口视图下的LSA过滤
通过ospf filter-lsa-out命令, 匹配除Grace LSA外的所有LSA、3、5、7型LSA,并匹配ACL规定的路由前缀时,实现LSA的通告过滤。
路由计算的过滤:
OSPF对数据库中的LSA计算为路由条目时进行过滤;
只对通过SPF算法计算出来的路由是否放置到路由表有效,产生该路由的LSA仍然会在OSPF自治系统内扩散。
通过filter-policy import过滤规则,可以设置 OSPF对数据库中的区域内、区域间、外部LSA计算为路由条目时进行过滤。 该过滤只作用于路由表项的添加与否,即只有通过过滤的路由才被添加到本地路由表中,产生该路由的LSA仍然会在OSPF自治系统内扩散。
路由策略
route-policy
filter
filter-policy
filter-lsa-out,
访问控制列表(access-list)
地址前缀列表(prefix-list)
OSPF与IS-IS比较
基本特点
相同点
均为IGP协议,且应用广泛。
均支持IP环境。
均采用分层设计和分区域设计。
不同点
OSPF仅支持IP;IS-IS既支持IP,又支持CLNP;。
OSPF支持的网络类型丰富;IS-IS仅支持两种网络类型。
OSPF支持虚连接;IS-IS虽然有类似功能,但是多数厂商不支持。
OSPF工作在IP之上;IS-IS工作在数据链路层之上。
OSPF基于接口划分区域;IS-IS基于设备划分区域。
相关解释
OSPF支持的网络类型有P2P网络、P2MP网络、NBMA网络和广播网络,
IS-IS仅支持P2P网络和广播网络。
OSPF工作在IP之上,协议号为89。
邻接关系特点
相同点
均通过Hello建立和维护邻居关系。
多点访问网络均选举DR/DIS。
不同点
OSPF建立邻居关系条件相对苛刻;IS-IS的要求则相对宽松。
OSPF点对点链路形成邻居关系比较可靠;IS-IS可靠性相对较弱。
OSPF邻居关系不分层次;IS-IS邻居关系分两个层次。
OSPF处理DR/BDR和IS-IS处理DIS方式不同。
相关解释
OSPF建立邻居需要检查Hello报文中的掩码、认证、hello/dead时间间隔、区域等信息。
而IS-IS形成邻居关系条件比较宽松。
OSPF P2P链路建立邻居关系需要三次握手。
IS-IS则不要三次握手,但是华为设备缺省情况下使能IS-IS P2P网络三次握手功能,以保证邻居建立的可靠性。
IS-IS邻居关系分为层1和层2。
OSPF依据优先级和router-id选举DR/BDR,且选举结束后,不可抢占。
在OSPF中,所有DRother与DR/BDR形成完全邻接关系,DRother间形成2-way即不完全邻接关系。
OSPF中,如果优先级为0,则表示该路由器不参与DR/BDR选举。
IS-IS选举DIS依据优先级和MAC地址,可以抢占。
在IS-IS中,所有路由器均形成邻接关系。
IS-IS中,如果优先级为0,则表示该路由器也会参与DIS选举,只是优先级比较低。
数据库同步特点
相同点
不同点
OSPF LSA种类繁多。
IS-IS LSP种类较少。
OSPF与IS-IS数据库同步过程不同。
OSPF LSA生存时间从零递增。
IS-IS LSP生存时间从最大值递减。
相关解释
IS-IS LSP种类较少,但是扩展性较强,主要通过LSP携带的TLV字段进行功能扩展。
其他特点
相同点
均使用SPF算法计算路由。
无环路,收敛快,支持大规模网络部署。
不同点
OSPF开销类型较为简单;IS-IS开销类型相对较复杂。
OSPF支持按需拨号网络;IS-IS无此特性。
相关解释
pOSPF开销是基于带宽的。
IS-IS理论上开销类型分为四种,包括缺省开销、时延开销、代价开销、差错开销,但在实现上只采用缺省开销。
OSPFv2故障诊断
全网运行OSPF之后,R1和R2发现不能相互ping对方的网段。
故障排除流程
控制平面
如果邻居关系处于Down状态:
检查物理接口是否正常;
检查掩码、认证、区域ID等是否匹配;
相应接口是否在OSPF中宣告。
如果邻居关系处于Init状态:
如果邻居关系处于2-Way状态:
如果邻居关系处于Exstart状态:
接口下配置ospf mtu-enable的情况下,MTU是否匹配。
默认情况下,OSPF不检查DD报文中的MTU。
如果邻居关系处于Exchange/Loading状态:
如果邻居关系处于Full状态
查看接口网络类型是否一致;
目的网段是否正确network通告;
是否配置了匹配route-policy的外部路由导入过滤;
是否配置了匹配filter-policyexport的5、7型LSA通告过滤;
是否配置了匹配filter-policyimport的本地路由计算过滤;
路由视图下是否配置了区域间LSA过滤;
路由视图下是否配置了3、5、7型LSA的聚合not-advertise;
接口下是否配置了LSA通告过滤;
是否有掩码位更长或协议优先级更高、出接口与OSPF路由不同、由其他路由协议生成的路由条目。
数据平面
互连接口下是否配置了流量过滤
互连接口下是否配置了策略路由
Ping包是否被中间的防火墙丢弃
OSPFv3协议简介
OSPFv3协议介绍
与OSPFv2相比,OSPFv3在工作机制上与OSPFv2基本相同;但为了支持IPv6地址格式,OSPFv3对OSPFv2做了一些改动。
OSPFv3基于OSPFv2基本原理并增强,是一个独立的路由协议。
协议号仍然是89,RouterId仍然是一个32位的无符号整数。
OSPFv3和OSPFv2相同点
网络类型和接口类型。
接口状态机和邻居状态机。
链路状态数据库(LSDB)。
洪泛机制(Floodingmechanism)。
五种协议报文:Hello, DD, LSR, LSU, LSAck。
路由计算基本相同。
OSPFv3与OSPFv2的不同
基于链路的运行
OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一个网段。
OSPFv3的实现是基于链路,一个链路可以划分为多个子网, 节点即使不在同一个子网内, 只要在同一链路上就可以直接通信。
解释说明
IPv6中重点强调了一个“链路(link)”的概念。
在IPv6中,一个链路上可以分配多个IP子网,也就是IPv6前缀。
和IPv4中不同的是,同一个链路上的两个节点即使不具有相同的IPv6前缀,也可以直接通过这个链路通信。这一点极大地改变了OSPF的行为。
OSPFv3是基于链路运行的,而不是以前的基于IP子网的运行。
在OSPFv3中我们更多的是使用“链路”和“前缀”这两个术语。但这两个概念是分离的,没有必然的对应关系。
同一链路上的两个节点不必具有相同的前缀。
所以在讨论路由协议时,OSPFv2的术语“网络”和“子网”在这里应该用“链路”替换掉。
同样,一个OSPF接口现在是连接到一个链路上,而不再是一个IP子网上了。
OSPF协议分组的接收以及Hello分组和LSA的格式也因此做出了相应的修改。
使用链路本地地址
OSPFv3的路由器使用链路本地地址作为发送报文的源地址。
在虚连接上,必须使用全球范围地址或者站点本地地址作为OSPFv3协议报文的源地址。
由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在LinkLSA中。
解释说明
一个路由器可以学习到这个链路上相连的所有其它路由器的链路本地地址,并使用这些链路本地地址作为下一跳来转发报文。
lPv6在RFC2373中定义了链路本地(link-local)地址用于一个单一链路上,其目的是完成邻居发现(neighbor discovery)和自动配置(auto-configuration)等功能。
IPv6路由器不转发源地址为link-local类型的分组。Link-local单播地址范围为IPv6地址范围FE80/10。
链路支持多实例复用
OSPFv3支持在同一链路上运行多个实例,实现链路复用并节约成本 。
Router A、 Router B、 Router C和Router D连接到同一个广播网上,它们共享同一条链路且都能建立邻居关系,通过在Router A的Eth1/1、 Router B的Eth1/1、Router C的Eth1/2上指定实例1、在Router A的Eth1/1、 Router B的Eth1/1、 RouterD的Eth1/3上指定实例2,实现了Router A、 Router B和Router C可以建立邻居关系, Router A、 Router B和Router D可以建立邻居关系。
这是通过在OSPFv3报文头中添加Instance ID字段来实现的。
如果接口配置的Instance ID与接收的OSPF v3报文的Instance ID不匹配,则丢弃该报文,从而无法建立起邻居关系。
通过Router ID 唯一标识邻居
在OSPFv2中,当网络类型为点到点或者通过虚连接与邻居相连时,通过RouterID来标识邻居路由器,当网络类型为广播或NBMA时,通过邻居接口的IP地址来标识邻居路由器。
OSPFv3取消了这种复杂性,无论对于何种网络类型,都是通过RouterID来唯一标识邻居。
认证的变化
验证的变化:
OSPFv3报文头中不再包含AuType和Authentication,而一般依赖IPv6的扩展验证头。
校验和(Checksum)变化:
OSPFv3协议一般自身不再提供认证功能,而是通过使用IPv6提供的安全机制来保证自身报文的合法性。
OSPFv2报文中的认证字段,在OSPFv3报文头中被取消。
Stub区域的支持
由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定, 只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。
报文的不同
Version:版本,对于OSPFv2,该值是2;对于OSPFv3则是3;
Type:1- Hello, 2-DD, 3-LSR, 4-LSU, 5-LSAck;
PacketLength:OSPFv3报文长度,2字节;
RouterID:路由器ID;
AreaID:区域ID;
Checksum:校验和;
InstanceID:链路实例ID,通过判断该字段就可以区分同一链路上运行的不同OSPF实例。实例ID只在本地链路范围内具有意义;
Reserved(保留):保留字段,总是0。
解释说明
与OSPFv2一样, OSPFv3的五种报文都有同样的报文头,只是报文中的字段有些不同。
OSPFv3的LSU和LSAck报文与OSPFv2相比没有什么变化,但OSPFv3的报文头、 Hello、 DD以及LSR报文中的字段与OSPFv2略有不同,报文的改变包括以下几点:
版本号从 2 升级到 3。
报文头的不同:与OSPFv2报文头相比,OSPFv3报文头长度只有16 字节,去掉了认证字段但加了 Instance ID 字段。 Instance ID 字段用来支持在同一条链路上运行多个实例,且只在链路本地范围内有效,如果路由器接收到的Hello报文的 Instance ID 与当前接口配置的 Instance ID 不同,将无法建立邻居关系。
报文变化: Hello报文
Hello 报文的不同:与 OSPFv2 Hello 报文相比, OSPFv3 Hello 报文去掉了网络掩码字段,增加了 Interface ID 字, 用来标识发送该 Hello 报文的接口ID。
Instance ID: 4字节。报文发送者的发送接口标识,仅用来区分同一路由器上的不同接口,不包含地址信息。
Rtr Pri: 1字节。路由器优先级,优先级高者成为DR。
Options: 3字节。 OSPFv3中将Options字段扩展为24位。
在OSPFv2中, Option字段出现在每一个Hello报文、 DD报文以及每一个LSA中。
在 OSPFv3中, Option字段只在 Hello报文、 DD报文、 Router LSA、 NetworkLSA、 Inter Area Router LSA以及Link LSA中出现。
从上图可以看出,与OSPFv2相比, OSPFv3的Option字段增加了R比特、 V比特。
R 比特:用来标识设备是否是具备转发能力的路由器。如果 R 比特置 0,宣告该节点的路由信息将不会参加路由计算,如果当前设备是一个不想转发非本地地址的报文,可以将R 比特置 0。
V6 比特:如果 V6 比特置 0,该路由器或链路也不会参加IPv6路由计算。
E: 如果为0,不支持AS-External-LSA洪泛;
MC: 与多播相关;
N: 是否在NSSA (Not So Stub Area)区域;
DC: 是否支持按需拨号。
Options字段的各位的匹配情况会产生不同影响:
阻止邻居的建立,例如Hello报文中的选项不匹配。
阻止LSA的洪泛,例如E-Bit,如果为0,不洪泛AS-External-LSA。
阻止LSA参加路由计算,例如V6-Bit,如果为0,该Router不参加IPv6路由计算。
Options字段使OSPF路由器能支持可选的能力,并且与其它路由器互相通告其能力。通过这种机制,具有不同能力的路由器可以在一个OSPF路由域中混合工作。
LSA的类型和内容不同
OSPFv2中的LS Type长度为8比特,指定LSA的类型; OSPFv3的LSA Type字段由OSPFv2的8比特扩充为16比特。
U 位:描述了路由器收到一个类型未知的 LSA 时如何处理,取值为 0 表示把类型未知 LSA 当成具有链路本地范围的 LSA 一样处理,取值为 1 表示按照S2/S1 位标识的泛洪范围来处理。
S2/S1 位:共同标识 LSA 的泛洪范围,取值 00 表示 LSA 只在产生该 LSA 的本地链路上泛洪;取值 01 表示 LSA 的泛洪范围为产生该 LSA 的路由器所在区域;取值 10 表示 LSA 将在整个自治系统内进行泛洪;取值 11 保留。
LSA Function Code: LSA 类型编码,描述 LSA 的类型。
LSA类型,支持对未知类型LSA的处理
在OSPFv2中,收到类型未知的LSA将直接丢弃。
U-bit: 指示路由器如何处理无法识别的LSA。
OSPFv3在LSA的LS Type字段中增加了一个U比特位来位标识对未知类型LSA的处理方式:
如果 U 比特置 1,则对于未知类型的 LSA 按照 LSA 中的 LS Type 字段描述的泛洪范围进行泛洪;
如果 U 比特置 0,对于未知类型的 LSA 仅在链路范围内泛洪。
S2/S1,共同标识 LSA 的泛洪范围。
LSA的泛洪范围已经被明确地定义在LSA的LS Type字段,目前,有三种LSA泛洪范围。
链路本地范围(Link-local Scope)。
LSA 只在本地链路上泛洪,不会超出这个范围, Link-LSA(新增)。
区域范围(Area Scope)。
Router-LSA, Network-LSA, Inter-Area-Prefix-LSA, Inter-Area-Router-LSA,Intra-Area-Prefix-LSA(新增)都是区域范围泛洪的 LSA。
自治系统范围(AS Scope)。
LSA 将被泛洪到整个路由域,AS-External-LSA。
LSA类型 – 功能编码 (Function Code)
Link State ID
4字节。
不再包含地址信息,对于不同的LSA类型,该字段的含义如下表,同时提供与OSPFv2中含义的对比。
OSPFv3新增了Link LSA和Intra Area Prefix LSA。
Router LSA 不再包含地址信息,使能 OSPFv3 的路由器为它所连接的每条链路产生单独的 Link LSA,将当前接口的链路本地地址以及路由器在这条链路上的一系列 IPv6 地址信息向该链路上的所有其它路由器通告。
Router LSA 和 Network LSA 中不再包含路由信息,这两类 LSA 中所携带的路由信息由 Intra Area Prefix LSA 来描述,该类 LSA 用来公告一个或多个IPv6 地址前缀。
前缀表示方法的变化:Prefix Option 字段
在OSPFv2中,使用“IP网段+掩码”来表示前缀信息,而且两段信息在不同LSA中的位置还各不相同,结构很不清晰。
在OSPFv3的LSA中,使用专门的三元组(Prefix-Length, PrefixOptions, Prefix)来表示前缀信息。由LSA公告的每个前缀都拥有一个自己的PrefixOptions 字段。
用来表达某个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。
Prefix-Length可变,但必须是32bit(4字节)的整数倍,可用0来填充。因此它的长度可能是0、4、8、12、16字节。
1字节。前缀的bit位长度,对于缺省路由该字段取值为0。
PrefixOptions,1字节。前缀信息的选项,用来描述前缀的某些特殊属性字段
NU位:非单播位;
如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
LA位:本地地址位;
MC位:组播位;
如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
P位:传播位。
如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
Prefix
长度不定,为4字节的倍数。用于表示前缀的IPv6网络地址信息。
Router LSA
Router LSA的变化
每个Router-LSA包含若干链路描述 (link description),每个链路描述都描述了路由器的一个接口信息。
LS Type:0x2001;泛洪范围:区域。
可以使用多个Router-LSA描述信息,通过Link-State ID区分多个不同的Router-LSA。
OSPFv2 Router LSA和OSPFv3 Router LSA
W:用于组播路由;
V:该路由器为虚连接的一端;
E:该路由器为ASBR;
B:该路由器为ABR。
Type:1字节。路由器的该链路的链路类型;
Metric:2字节。数据报文从此接口发出时的cost值;
lInterface ID:4字节。接口ID,用于标识接口,无地址含义。
Neighbor Interface ID:4字节。邻居接口ID。
Neighbor Router ID:4字节。邻居Router ID。
Router-LSA具有区域泛滥范围
用于描述该路由器在某个区域内的所有连接
而且只描述建立了邻接关系的连接(邻居为full状态)。
这意味着Stub类型的链路不在这里描述了(在OSPFv2中用链路类型3描述)。
另外,如果是点到多点链路的话,需要为每个邻居都产生一个描述。
由于每个链路描述的长度固定,因此可以通过LSA头中的LSA长度来确定Router-LSA中的Link数。
一个Router-LSA可以包含多个链路描述(link description)。
同一个路由器可以生成多个Router-LSA,通过Link State ID进行区分。
在SPF计算时,对于同一个路由器产生的多个Router-LSA必须合在一起参与运算。
OSPFv3的Router-LSA中不再包含前缀信息,仅仅描述了拓扑连接情况。
Router LSA举例
display ospfv3 lsdb router
Network LSA
Network LSA的变化
DR产生,区域范围内洪泛;
描述该链路上与DR有FULL关系的所有路由器。
OSPFv2 Network LSA和OSPFv3 Network LSA
Options
3字节。
该字段实际上是该链路上所有路由器的Link-LSA的Options字段的集合,也即是它们的能力集合。
Attached Router
每个路由器4字节。该链路上所有与DR有Full关系的路由器的Router ID。
OSPFv3的Network-LSA具有区域泛滥范围,由DR生成。它的Link State ID为DR的Interface ID,而且将OSPFv2中的掩码字段取消了,所以它不再包含前缀信息,而仅仅描述了拓扑连接情况。
另外,由于其中的Options字段为链路上所有路由器的能力集合,因此DR的能力大小并不会影响其他路由器的LSA传播。
Network LSA举例
display ospfv3 lsdb network
新增Link-LSA
新增Link-LSA
Link-LSA是OSPFv3新增的一种LSA类型。
具有链路泛滥范围。
路由器会为每个启动了OSPFv3的接口产生一个Link-LSA。
Link-LSA的作用
向链路上的其他路由器通告本地链路地址,作为它们的下一跳地址;
向链路上的其他路由器通告本地链路上的所有IPv6前缀;
在广播网络和NBMA网络上为DR提供Options取值。
Link-LSA结构
RtrPri:该路由器在该链路上的优先级(RouterPriority);
Options:描述该路由的能力;
LinkLocal Interface Address:该接口的本地链路地址,用于路由的下一跳计算;
# Prefix:所包含前缀的个数;
其他:Prefix三元组。
Link-LSA举例
display ospfv3 lsdb link 24.0.2.134
Intra-Area-Prefix-LSA
Intra-Area-Prefix-LSA
引入Intra-Area-Prefix-LSA
OSPFv2中,依附于路由器和Stub网络的subnet出现在Router LSA中。
OSPFv2中,依附于Transit网络的subnet出现在Network-LSA中。
OSPFv3中,Router-LSA和Network-LSA不再包含地址信息,所以引入Intra-Area-Prefix-LSA,用于发布区域内路由。
Intra-Area-Prefix-LSA携带区域内IPv6 Prefix信息
依附于路由器的Prefix
依附于Stub网络的Prefix
依附于Transit网络的Prefix
每台路由器或Transit网络可以 产生多个Intra-Area-Prefix-LSA
OSPFv3的Intra-Area-Prefix-LSA具有区域泛滥范围,用于发布区域内前缀信息。
参考Router-LSA
由各路由器分别生成。
用于发布点到点链路的前缀信息以及Stub网络的前缀信息。
参考Network-LSA
由DR生成。
用于发布该链路对应网络上的所有前缀信息。
这些前缀来自链路上所有路由器各自生成的Link-LSA。
但是,Link-LSA中的本地链路地址信息、NU或LA位置1的前缀除外。
Intra-Area-Prefix-LSA报文结构
# Prefixes:LSA中包含的Prefix个数。
ReferencedLink State Type:
=1: 携带的Prefix依附于Router(包括Stub网络);
=2: 携带的Prefix依附于Transit Network。
ReferencedLink State ID:
ReferencedAdvertising Router:
Type 1:依附的路由器Router ID;
Type 2:DR Router ID。
其他:Prefix三元组信息。
Intra-Area-Prefix-LSA 举例
Intra-Area-Prefix-LSA (依附Router)举例
display ospfv3 lsdb intra-prefix
Intra-Area-Prefix-LSA (依附Transit网络)举例
display ospfv3 lsdb intra-prefix
Type-3 LSA的变化 -Inter-Area-Prefix-LSA
Type-3 LSA的变化 – Inter-Area-Prefix-LSA
在OSPFv2中,该类型的LSA称为Type 3 Summary-LSA。
在OSPFv3中,更名为Inter-Area Prefix-LSA,语义更加明确,它描述了其他区域的前缀信息。
边界路由器(ABR)产生的第3类LSA,在Area范围内洪泛;
描述了到本AS内其他区域的路由信息;
每个Inter-Area-Prefix-LSA包含一条地址前缀信息;
该LSA中不包含Link-Local地址信息;
使用32位整数作为Link State ID来区分相同的LSA。
Inter-Area-Prefix-LSA结构
OSPFv2 Type3 Summary LSA和OSPFv3 Inter-Area-Prefix LSA结构
Metric:20bit。表示ABR到达该前缀描述的路由的cost值。
前缀信息:描述前缀的Prefix三元组。
在OSPFv2中,使用LSA头里面的Link State ID字段来表示网络地址,掩码包含在LSA内容里。
OSPFv3的Inter-Area-Prefix-LSA中,LSA头里的Link State ID不再包含前缀信息,仅仅是一个32位的编号,用于区分同一路由器产生的不同LSA,所有前缀均通过Prefix三元组来描述。
Inter-Area-Prefix-LSA具有区域泛滥范围,由ABR生成。每个Inter-Area-Prefix-LSA包含一条地址前缀信息,且不能包含本地链路地址信息。
Inter-Area-Prefix-LSA举例
display ospfv3 lsdb inter-prefix
Type-4 LSA的变化 – Inter-Area-Router-LSA
Type-4 LSA的变化 – Inter-Area-Router-LSA
在OSPFv2中,该类型的LSA称为Type 4 Summary-LSA。
在OSPFv3中,更名为Inter-Area Router-LSA,语义更加明确,它描述了到达其他区域的ASBR的信息。
边界路由器(ABR)产生的第4类LSA,在Area范围内洪泛;
描述了到本AS内其他区域的ASBR路由器信息;
每个Inter-Area-Router-LSA包含一个ASBR路由器信息;
LSA中的能力选项(Options)与所描述的ASBR Router LSA中能力选项(Options)保持一致;
使用32位整数作为Link State ID来区分相同的LSA。
OSPFv3 Inter-Area-Router-LSA结构
OSPFv2 Type4 Summary LSA和OSPFv3 Inter-Area-Router LSA结构
Options:3字节,并非生成LSA的路由器的能力描述,而是描述了目的ASBR的能力。
Metric:3字节,表示ABR到目的ASBR路由器的cost值。
Destination Router ID:4字节,目的ASBR路由器的Router ID。
在OSPFv2中,使用LSA头里面的Link State ID字段来表示目的ASBR的Router ID。OSPFv3的Inter-Area-Router-LSA中,LSA头里的Link State ID不再有具体含义,仅仅是一个32位的编号,用于区分同一路由器产生的不同LSA。
Inter-Area-Router-LSA具有区域泛滥范围,由ABR生成。每个Inter-Area-Router-LSA包含一条目的ASBR信息。
AS-External-LSA
AS-External-LSA
由ASBR路由产生,描述了区域外的路由信息;
具有自治系统(AS)洪泛范围;
LinkState ID不包含地址信息,只是来和其他AS-External-LSA区分开;
AS-External-LSA不含有Link-Local地址信息。
可选项:
转发(Forwarding)地址;
Tag;
Referenced Link State ID: 保留字段。
AS-External-LSA结构
OSPFv2 AS-External LSA和OSPFv3 AS-External LSA结构
E
外部路由的Metric类型。
如果设置为1,表示此为2类外部路由,其Metric不随着路由的传递而增长。
如果设置为0,表示此为1类外部路由,其Metric随着路由的传递而增长。
F
如果设置为1,则表示后面的Forwarding Address可选字段存在。
T
如果设置为1,则表示后面的External Route Tag可选字段存在。
前缀信息
Ref LS Type
2字节。
如果非0,则表示后面的Referenced Link State ID可选字段存在。
Forwarding Address
16字节。
可选的128位IPv6地址。
当前面的F位为1时存在。
表示到达目的的数据应该转发到这个地址。
在公告路由器不是最优的下一跳的时候可以使用。
External Route Tag
4字节。
可选的标记位。
可以用于ASBR之间的通信。
一个比较常见的例子是,在OSPF自治系统的两个边界路由器上进行路由分发时,通过对引入的路由进行标记,可以很方便地进行路由过滤。
Referenced Link State ID
4字节。
当前面的Ref LS Type字段非0时存在。
如果存在,说明此条外部路由有一些相关信息需要参考另外一个LSA。
被参考的LSA由以下字段值确定:
其LS type等于此AS-external-LSA的Referenced LS Type;
其Link State ID等于此AS-external-LSA的Referenced Link State ID;
其Advertising Router等于此ASexternal-LSA的Advertising Router。
这种参考能力是为未来的扩展准备的,目前并没有使用。
在OSPFv2中,使用LSA头里面的Link State ID字段来表示网络地址,掩码包含在LSA内容里。
OSPFv3的AS-external-LSA中,LSA头里的Link State ID不再包含前缀信息,仅仅是一个32位的编号,用于区分同一路由器产生的不同LSA,所有前缀均通过Prefix三元组来描述。
AS-external-LSA具有AS泛滥范围,由ASBR生成。每个AS-external-LSA包含一条地址前缀信息,且不能包含本地链路地址信息。
AS-External-LSA举例
display ospfv3 lsdb external
显示接口信息
display ospfv3 interface ethernet6/0/0
OSPF备考建议
熟悉OSPF相关命令
熟悉OSPF策略配置
熟读HedEx文档
包括HedEx涵盖的案例
熟练掌握display和debug
熟练掌握理解课程中设计的案例场景