OSPFv2与OSPFv3的区别
1 概述
OSPFv2是IETF组织开发的一个基于链路状态的内部网关协议,具有适应范围广、收敛迅速、无自环、便于层级化网络设计等特点,因此在IPv4网络中获得了广泛应用。
随着IPv6网络的建设,同样需要动态路由协议为IPv6报文的转发提供准确有效的路由信息。基于此,IETF在保留了OSPFv2优点的基础上针对IPv6网络修改形成了OSPFv3。OSPFv3主要用于在IPv6网络中提供路由功能,是IPv6网络中路由技术的主流协议。
2 OSPFv3技术实现
与OSPFv2相比,OSPFv3在工作机制上与OSPFv2基本相同;但为了支持IPv6地址格式,OSPFv3对OSPFv2做了一些改动。下面先对OSPFv2进行简要介绍,之后再详细介绍OSPFv3与OSPFv2的异同点。
2.1 OSPFv2简介
2.1.1 OSPF基本概念
1. DR和BDR
在广播网或NBMA网络中,OSPF协议定义了DR和BDR,BDR是对DR的一个备份,在选举DR的同时也选举出BDR。
DR和BDR会和本网段内的所有DROther(既不是DR也不是BDR的路由器)建立邻接关系并交换路由信息,DROther之间不建立邻接关系、不交换路由信息,从而减少了广播网络和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。 2. 区域
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,会存在以下问题:
?
路由器数量会增多,每台路由器都生成LSA,整个LSDB即所有LSA的集合会计算最短路径树耗时增加,导致CPU负担很重;
非常大,占用大量存储空间;
?
?
在网络规模增大之后,拓扑结构发生变化的概率也会增大,网络会经常处于“振
荡”之中,造成网络中大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。 OSPF协议通过将自治系统划分成不同的区域来解决上述问题。
区域是从逻辑上将路由器划分为不同的组,每个组用区域号ID来标识。 为了适应特定的网络需求,OSPF定义了两种特殊的区域: (1) (Totally) Stub区域
Stub区域是一些特定的区域,Stub区域的ABR不允许注入Type5 LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。 为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally) Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,(Totally) Stub区域位于自治系统的边界。 (2) NSSA区域
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域有许多相似的地方。NSSA区域也不允许Type5 LSA注入,但可以允许Type7 LSA注入。Type7 LSA由NSSA区域的ASBR产生,在NSSA区域内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,传播到其他区域。 3. OSPF网络类型
OSPF根据链路层协议类型将网络分为下列四种类型:
?
广播类型:当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是广
播。在该类型的网络中,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文。
?
NBMA类型:当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型P2MP类型:没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须
是NBMA。在该类型的网络中,以单播形式发送协议报文。
?
是由其他的网络类型强制更改的。常用做法是将NBMA改为点到多点的网络。在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。可以根据用户需要,以单播形式发送协议报文。
?
P2P类型:当链路层协议是PPP、HDLC时,OSPF缺省认为网络类型是P2P。在
该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
4. OSPF协议报文
OSPF有五种类型的协议报文:
?
Hello报文:周期性发送,用来发现和维持OSPF邻居关系。内容包括一些定
时器的数值、DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备份指定路由器)以及自己已知的邻居。
?
DD报文:描述了本地LSDB中每一条LSA的摘要信息,用于两台路由器进行数LSR报文:向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对
据库同步。
?
端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。
? ?
LSU报文:向对方发送其所需要的LSA。
LSAck报文:用来对收到的LSA进行确认。内容是需要确认的LSA的Header
(一个报文可对多个LSA进行确认)。
2.1.2 OSPF路由计算过程
OSPF协议的路由计算过程可简单描述如下:
?
每台OSPF路由器根据自己周围的网络拓扑结构生成LSA,并通过更新报文将每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组
LSA发送给网络中的其它OSPF路由器。
?
成了LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
?
OSPF路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,
构的真实反映,各个路由器得到的有向图是完全相同的。
?
这棵树给出了到自治系统中各节点的路由。
2.2 OSPFv3与OSPFv2的相同点
OSPFv3在协议设计思路和工作机制与OSPFv2基本一致:
? ? ?
报文类型相同:包含Hello、DD、LSR、LSU、LSAck五种类型的报文。 区域划分相同。
LSA泛洪和同步机制相同:为了保证LSDB内容的正确性,需要保证LSA的可路由计算方法相同:采用最短路径优先算法计算路由。
靠泛洪和同步。
?
? ?
网络类型相同:支持广播、NBMA、P2MP和P2P四种网络类型。
邻居发现和邻接关系形成机制相同:OSPF路由器启动后,便会通过OSPF接口
向外发送Hello报文,收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定,只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系。
?
DR选举机制相同:在NBMA和广播网络中需要选举DR和BDR。
2.3 OSPFv3与OSPFv2的不同点
为了支持在IPv6环境中运行,指导IPv6报文的转发,OSPFv3对OSPFv2做出了一些必要的改进,使得OSPFv3可以独立于网络层协议,而且只要稍加扩展,就可以适应各种协议,为未来可能的扩展预留了充分的可能。 OSPFv3与OSPFv2不同主要表现在:
? ? ? ? ? ? ? ? ?
基于链路的运行 使用链路本地地址 链路支持多实例复用 通过Router ID唯一标识邻居 认证的变化 Stub区域的支持 报文的不同 Option字段的不同 LSA的异同
2.3.1 基于链路的运行
OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一个网段。 OSPFv3的实现是基于链路,一个链路可以划分为多个子网,节点即使不在同一个子网内,只要在同一链路上就可以直接通话。
2.3.2 使用链路本地地址
OSPFv3的路由器使用链路本地地址作为发送报文的源地址。一个路由器可以学习到这个链路上相连的所有其它路由器的链路本地地址,并使用这些链路本地地址作为下一跳来转发报文。但是在虚连接上,必须使用全球范围地址或者站点本地地址作为OSPFv3协议报文的源地址。
由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在Link LSA中。
2.3.3 链路支持多实例复用
OSPFv3支持在同一链路上运行多个实例,实现链路复用并节约成本,如图1所示。
图1 链路支持多实例复用示意图
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、Router D的Eth1/3上指定实例2,实现了Router A、Router B和Router C可以建立邻居关系,Router A、Router B和Router D可以建立邻居关系。 这是通过在OSPFv3报文头中添加Instance ID字段来实现的。如果接口配置的Instance ID与接收的OSPF v3报文的Instance ID不匹配,则丢弃该报文,从而无法建立起邻居关系。
2.3.4 通过Router ID唯一标识邻居
在OSPFv2中,当网络类型为点到点或者通过虚连接与邻居相连时,通过Router ID来标识邻居路由器,当网络类型为广播或NBMA时,通过邻居接口的IP地址来标识邻居路由器。
OSPFv3取消了这种复杂性,无论对于何种网络类型,都是通过Router ID来唯一标识邻居。
2.3.5 认证的变化
OSPFv3协议自身不再提供认证功能,而是通过使用IPv6提供的安全机制来保证自身报文的合法性。所以,OSPFv2报文中的认证字段,在OSPFv3报文头中被取消。
2.3.6 Stub区域的支持
由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定,只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。
2.3.7 报文的不同