OSPFv3基本原理
OSPFv3基本原理
OSPFv3(Open Shortest Path First version 3)是运行于IPv6的OSPF路由协议,作为OSPFv2的升级版本,它在保持原有核心机制的基础上,针对IPv6环境进行了优化和增强。本文将详细介绍OSPFv3的基本原理,包括其报文类型、LSA类型、路由器类型、区域类型、网络类型、路由聚合以及虚连接等关键概念。
OSPFv3基本原理
OSPFv3是运行于IPv6的OSPF路由协议(RFC2740),它在OSPFv2基础上进行了增强,是一个独立的路由协议。
- OSPFv3在Hello报文、状态机、LSDB、洪泛机制和路由计算等方面的工作原理和OSPFv2保持一致。
- OSPFv3协议把自治系统划分成逻辑意义上的一个或多个区域,通过LSA(Link State Advertisement)的形式发布路由。
- OSPFv3依靠在OSPFv3区域内各路由器间交互OSPFv3报文来达到路由信息的统一。
- OSPFv3报文封装在IPv6报文内,可以采用单播和组播的形式发送。
OSPFv3报文类型
报文类型 | 报文作用 |
---|---|
Hello报文 | 周期性发送,用来发现和维持OSPFv3邻居关系。 |
DD报文(Database Description packet) | 描述了本地LSDB的摘要信息,用于两台路由器进行数据库同步。 |
LSR报文(Link State Request packet) | 用于向对方请求所需的LSA。路由器只有在OSPFv3邻居双方成功交换DD报文后才会向对方发出LSR报文。 |
LSU报文(Link State Update packet) | 向对方发送其所需要的LSA。 |
LSAck报文(Link State Acknowledgment packet) | 用来对收到的LSA进行确认。 |
LSA类型
LSA类型 | LSA作用 |
---|---|
Router-LSA(Type1) | 路由器会为每个运行OSPFv3接口所在的区域产生一个LSA,描述了路由器的链路状态和开销,在所属的区域内传播。 |
Network-LSA(Type2) | 由DR产生,描述本链路的链路状态,在所属的区域内传播。 |
Inter-Area-Prefix-LSA(Type3) | 由ABR产生,描述区域内某个网段的路由,并通告给其他相关区域。 |
Inter-Area-Router-LSA(Type4) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 |
AS-external-LSA(Type5) | 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。 |
NSSA LSA(Type7) | 由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。 |
Link-LSA(Type8) | 每个路由器都会为每个链路产生一个Link-LSA,描述到此Link上的link-local地址、IPv6前缀地址,并提供将会在Network-LSA中设置的链路选项,它仅在此链路内传播。 |
Intra-Area-Prefix-LSA(Type9) | 每个路由器及DR都会产生一个或多个此类LSA,在所属的区域内传播。路由器产生的此类LSA,描述与Route-LSA相关联的IPv6前缀地址。DR产生的此类LSA,描述与Network-LSA相关联的IPv6前缀地址。 |
路由器类型
路由器类型 | 含义 |
---|---|
区域内路由器(Internal Router) | 该类路由器的所有接口都属于同一个OSPFv3区域。 |
区域边界路由器ABR(Area Border Router) | 该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
骨干路由器(Backbone Router) | 该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。 |
自治系统边界路由器ASBR(AS Boundary Router) | 与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPFv3路由器引入了外部路由的信息,它就成为ASBR。 |
OSPFv3路由类型
AS区域内和区域间路由描述的是AS内部的网络结构,AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPFv3将引入的AS外部路由分为Type1和Type2两类。
表4中按优先级从高到低顺序列出了路由类型。
路由类型 | 含义 |
---|---|
Intra Area | 区域内路由。 |
Inter Area | 区域间路由。 |
第一类外部路由(Type1 External) | 这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPFv3自身路由的开销具有可比性。到第一类外部路由的开销=本路由器到相应的ASBR的开销+ASBR到该路由目的地址的开销。 |
第二类外部路由(Type2 External) | 这类路由的可信度比较低,所以OSPFv3协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以,OSPFv3计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。 |
区域类型
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPFv3路由协议时,路由器数量的增多会导致链路状态数据库LSDB(Link-State Database)非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致路由器负担很重。在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动荡”之中,造成网络中会有大量的OSPFv3协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPFv3协议通过将自治系统划分成不同的区域解决LSDB频繁更新的问题,提高网络的利用率。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPFv3的接口必须指明属于哪一个区域。
OSPFv3的区域类型包括普通区域、Stub区域、NSSA区域,如表5所示。
区域类型 | 作用 | 说明 |
---|---|---|
普通区域 | 缺省情况下,OSPFv3区域被定义为普通区域。普通区域包括:标准区域:最通用的区域,它传输区域内路由,区域间路由和外部路由。骨干区域:连接所有其他OSPFv3区域的中央区域,通常用Area 0表示。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。 | 骨干区域自身必须保持连通。所有非骨干区域必须与骨干区域保持连通。 |
Stub区域 | Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,因此这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。一般情况下,Stub区域位于自治系统的边界,是只有一个ABR的非骨干区域,为保证到自治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。Totally Stub区域允许ABR发布的Type3缺省路由,不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 | 骨干区域不能配置成Stub区域。Stub区域内不能存在ASBR,因此自治系统外部的路由不能在本区域内传播。虚连接不能穿过Stub区域。 |
NSSA(Not-So-Stubby Area)区域 | NSSA是Stub区域的一个变形,它和Stub区域有许多相似的地方。NSSA区域不允许存在Type5 LSA。NSSA区域允许引入自治系统外部路由,携带这些外部路由信息的Type7 LSA由NSSA的ASBR产生,仅在本NSSA内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,泛洪到整个OSPF域中。Totally NSSA区域不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 | 该区域的ABR发布Type3缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。虚连接不能穿过NSSA区域。 |
OSPFv3支持的网络类型
OSPFv3根据链路层协议类型,将网络分为如表6所列四种类型。
网络类型 | 含义 |
---|---|
广播类型(Broadcast) | 当链路层协议是Ethernet、FDDI时,缺省情况下,OSPFv3认为网络类型是Broadcast。在该类型的网络中:通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,FF02::5为OSPFv3路由器的预留IPv6组播地址;FF02::6为OSPFv3 DR/BDR的预留IPv6组播地址。以单播形式发送DD报文和LSR报文。 |
NBMA类型(Non-broadcast multiple access) | 当链路层协议是帧中继、ATM或X.25时,缺省情况下,OSPFv3认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 |
点到多点P2M类型(Point-to-Multipoint) | 没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中:以组播形式(FF02::5)发送Hello报文;以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。 |
点到点P2P类型(point-to-point) | 当链路层协议是PPP和LAPB时,缺省情况下,OSPFv3认为网络类型是P2P。在该类型的网络中,以组播形式(FF02::5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 |
OSPFv3路由聚合
通过路由聚合,可以减少路由信息,从而减小路由表的规模,提高路由器的性能。
ABR聚合
ABR路由聚合将具有相同前缀的路由信息聚合在一起,只发布一条路由到其它区域。
ABR在发送路由信息到别的区域的过程中,基于IPv6地址前缀生成type3 LSA。如果一些连续的IPv6地址前缀在某个区域内存在并且ABR聚合功能是使能的,这些IPv6地址前缀聚合成一个地址前缀。 对于前缀相同的多条LSA,区域边界路由器(ABR)只发送一条聚合的LSA。属于命令指定网段的LSA不单独传输。ASBR聚合
ASBR路由聚合将具有相同前缀的引入路由聚合在一起,只发布一条路由到其它区域。
使能ASBR路由聚合功能后,自治系统边界路由器将处于聚合地址范围内的引入的type5 LSA进行聚合。聚合后,自治系统边界路由器不会为配置范围内所有的前缀生成单独的type5 LSA,相反,自治系统边界路由器只为聚合的前缀生成单一的type5 LSA。对于NSSA区域,自治系统边界路由器将处于聚合地址范围内的多条引入的type7 LSA聚合成一条type7 LSA。
OSPFv3虚连接
虚连接(Virtual link)是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。
- 虚连接必须在两端同时配置方可生效。
- 为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域(Transit Area)。
在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求。这时可以通过配置OSPFv3虚连接予以解决。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,虚连接的两端和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
如图2所示,通过虚连接,两台ABR之间直接传递OSPFv3报文信息,他们之间的OSPFv3设备只是起到一个转发报文的作用。由于OSPFv3协议报文的目的地址不是这些设备,所以这些报文对于他们而言是透明的,只是当作普通的IP报文来转发。
OSPFv3多进程
OSPFv3支持多进程,在同一台路由器上可以运行多个不同的OSPFv3进程,它们之间互不影响,彼此独立。不同OSPFv3进程之间的路由交互相当于不同路由协议之间的路由交互。
路由器的一个接口只能属于某一个OSPFv3进程。
本文原文来自华为官方技术支持网站