1
OSPFv2是IETF组织开发的一个基于链路状态的内部网关协议,具有适应范围广、收敛迅速、无自环、便于层级化网络设计等特点,因此在IPv4网络中获得了广泛应用。
随着IPv6网络的建设,同样需要动态路由协议为IPv6报文的转发提供准确有效的路由信息。基于此,IETF在保留了OSPFv2优点的基础上针对IPv6网络修改形成了OSPFv3。OSPFv3主要用于在IPv6网络中提供路由功能,是IPv6网络中路由技术的主流协议。
2
与OSPFv2相比,OSPFv3在工作机制上与OSPFv2基本相同;但为了支持IPv6地址格式,OSPFv3对OSPFv2做了一些改动。下面先对OSPFv2进行简要介绍,之后再详细介绍OSPFv3与OSPFv2的异同点。
2.1
2.1.1
1. DR和BDR
在广播网或NBMA网络中,OSPF协议定义了DR和BDR,BDR是对DR的一个备份,在选举DR的同时也选举出BDR。
DR和BDR会和本网段内的所有DROther(既不是DR也不是BDR的路由器)建立邻接关系并交换路由信息,DROther之间不建立邻接关系、不交换路由信息,从而减少了广播网络和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。
2. 区域
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,会存在以下问题:
l
l
l
OSPF协议通过将自治系统划分成不同的区域来解决上述问题。
区域是从逻辑上将路由器划分为不同的组,每个组用区域号ID来标识。
为了适应特定的网络需求,OSPF定义了两种特殊的区域:
(1)
Stub区域是一些特定的区域,Stub区域的ABR不允许注入Type5 LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally) Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,(Totally) Stub区域位于自治系统的边界。
(2)
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根据链路层协议类型将网络分为下列四种类型:
l
l
l
l
4. OSPF协议报文
OSPF有五种类型的协议报文:
l
l
l
l
l
2.1.2
OSPF协议的路由计算过程可简单描述如下:
l
l
l
l
2.2
OSPFv3在协议设计思路和工作机制与OSPFv2基本一致:
l
l
l
l
l
l
l
2.3
为了支持在IPv6环境中运行,指导IPv6报文的转发,OSPFv3对OSPFv2做出了一些必要的改进,使得OSPFv3可以独立于网络层协议,而且只要稍加扩展,就可以适应各种协议,为未来可能的扩展预留了充分的可能。
OSPFv3与OSPFv2不同主要表现在:
l
l
l
l
l
l
l
l
l
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
在OSPFv2中,当网络类型为点到点或者通过虚连接与邻居相连时,通过Router ID来标识邻居路由器,当网络类型为广播或NBMA时,通过邻居接口的IP地址来标识邻居路由器。
OSPFv3取消了这种复杂性,无论对于何种网络类型,都是通过Router ID来唯一标识邻居。
2.3.5
OSPFv3协议自身不再提供认证功能,而是通过使用IPv6提供的安全机制来保证自身报文的合法性。所以,OSPFv2报文中的认证字段,在OSPFv3报文头中被取消。
2.3.6
由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定,只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。
2.3.7
OSPFv3报文封装在IPv6报文中,每一种类型的报文都是以一个16字节的报文头部开始。
与OSPFv2一样,OSPFv3的五种报文都有同样的报文头,只是报文中的字段有些不同。
OSPFv3的LSU和LSAck报文与OSPFv2相比没有什么变化,但OSPFv3的报文头、Hello、DD以及LSR报文中的字段与OSPFv2略有不同,报文的改变包括以下几点:
l
l
l
2.3.8
在OSPFv2中,Option字段出现在每一个Hello报文、DD报文以及每一个LSA中。
在OSPFv3中,Option字段只在Hello报文、DD报文、Router LSA、Network LSA、Inter Area Router LSA以及Link LSA中出现。
OSPFv2的Option字段如下所示:
图2 OSPFv2 Option字段格式
OSPFv3的Option字段如下所示:
图3 OSPFv3 Option字段格式
从上图可以看出,与OSPFv2相比,OSPFv3的Option字段增加了R比特、V比特。其中:
l
l
2.3.9
1. OSPFv3 LSA的类型
OSPFv3有以下七种类型的LSA,下面针对与OSPFv2 LSA异同点进行说明。
表1 OSPFv3 与OSPFv2 LSA的异同点
OSPFv2 LSA |
OSPFv3 LSA |
与OSPFv2 LSA异同点说明 |
Router LSA |
Router LSA |
名称相同,作用也类似,但是不再描述地址信息,仅仅用来描述路由域的拓扑结构 |
Network LSA |
Network LSA |
|
Network Summary LSA |
Inter Area Prefix LSA |
作用类似,名称不同 |
ASBR Summary LSA |
Inter Area |
|
AS External LSA |
AS External LSA |
作用与名称完全相同 |
无 |
Link LSA |
新增LSA |
Intra Area Prefix LSA |
新增LSA |
2. 新增两种类型LSA
OSPFv3新增了Link LSA和Intra Area Prefix LSA。
l
l
2.3.10
LSA的泛洪范围已经被明确地定义在LSA的LS Type字段,目前,有三种LSA泛洪范围。
l
l
l
2.3.11
在OSPFv2中,收到类型未知的LSA将直接丢弃。
OSPFv3在LSA的LS Type字段中增加了一个U比特位来位标识对未知类型LSA的处理方式:
l
l
2.3.12
OSPFv3 LSA封装在LSA头的后面,下面将重点介绍OSPFv3与OSPFv2在LSA头以及LSA内容上的不同点:
1. LSA头
图4 OSPFv2 LSA头和OSPFv3 LSA头格式对比
从图4可以看出,与OSPFv2相比,OSPFv3的LSA头部取消了Options字段,且Link State ID不再有具体的含义,而是由当前路由器随机生成的,用来同Advertising Router、LS Sequence Number字段一同标识一个LSA。
OSPFv2中的LS Type长度为8比特,指定LSA的类型;OSPFv3的LSA Type字段由OSPFv2的8比特扩充为16比特,具体如图5所示:
图5 OSPFv3 LS Type字段
l
l
l
表2 类型编码取值与LSA类型对应关系
类型编码取值 |
LSA类型 |
1 |
Router LSA |
2 |
Network LSA |
3 |
Inter Area Prefix LSA |
4 |
Inter Area Router LSA |
5 |
AS External LSA |
6 |
Group Membership LSA |
8 |
Link LSA |
9 |
Intra Area Prefix LSA |
2. Router LSA
OSPFv2的Router LSA格式如下所示:
图6 OSPFv2 Router LSA格式
OSPFv3的Router LSA格式如下所示:
图7 OSPFv3 Router LSA格式
如图7所示,与OSPFv2相比,OSPFv3的Router LSA格式变化比较大:
l
l
l
与OSPFv2不同的字段解释如下:
l
l
l
l
3. Network LSA
图8 OSPFv2 Network LSA和OSPFv3 Network LSA格式对比
如图8所示,OSPFv3的Network LSA中新增了Option字段,减少了Network mask字段。
当网络类型为广播网和NBMA时,OSPFv3的Network LSA仅仅描述了连接到链路上的所有路由器,包括DR本身,由于不包含Network mask字段,OSPFv3的Network LSA仅描述了拓扑信息,不再描述路由信息。
4. Inter Area Prefix LSA
Inter Area Prefix LSA的LSA类型编码为3,相当于OSPFv2的Network Summary LSA,通过PrefixLength、PrefixOptions以及Address Prefix来描述到达区域外的IPv6地址前缀的路径信息,每一个Pv6地址前缀都会产生一个单独的Inter Area Prefix LSA。
对于Stub区域,Inter Area Prefix LSA还可以用来描述缺省路由,描述缺省路由时前缀长度取值为0。
OSPFv2的Network Summary LSA格式如下所示:
图9 OSPFv2 Network Summary LSA格式
OSPFv3的Inter Area Prefix LSA格式如下所示:
图10 OSPFv3 Inter Area Prefix LSA格式
OSPFv3的Inter Area Prefix LSA与OSPFv2 Network Summary LSA不同字段解释如下:
l
l
l
其中,前缀选项一个字节长度,格式如图11所示:
图11 OSPFv3 PrefixOption
l
l
l
l
5. Inter Area Router LSA
Inter Area Prefix LSA的LSA类型编码为4,相当于OSPFv2中的ASBR Summary LSA。OSPFv2的ASBR Summary LSA格式与Network Summary LSA相同,如图9所示。
OSPFv3的Inter Area Router LSA格式如图12所示:
图12 OSPFv3的Inter Area Router LSA格式
主要字段描述如下:
l
l
6. AS External LSA
AS External LSA的LSA类型编码为5,与OSPFv2中的AS External LSA作用相同。
OSPFv2的AS External LSA格式如图13所示:
图13 OSPFv2的AS External LSA格式
OSPFv3的AS External LSA格式如图14所示:
图14 OSPFv3的AS External LSA格式
如图14所示,OSPFv3的AS External LSA与OSPFv2 AS External LSA不同字段解释如下:
l
l
l
7. Link LSA
Link LSA的LSA类型编码为8,每个路由器都为它所连接的每条链路产生单独的Link LSA。
通过使用Link LSA:
l
l
l
报文格式如图15所示:
图15 OSPFv3 Link LSA
主要字段解释如下:
l
l
lLink Local Interface Address:链路本地接口地址。
l# prefixes:该LSA中所包含的IPv6地址前缀个数。
8. Intra Area Prefix LSA
Link LSA的LSA类型编码为9,OSPFv3的设计思想之一就是拓扑信息和路由信息分离:计算拓扑的基本LSA(Router LSA和Network LSA)中不再含有路由信息,所以原来OSPFv2中这两类LSA中所携带的路由信息由新的LSA来描述,于是引入了Intra Area Prefix LSA。
路由器使用Intra Area Prefix LSA来公告一个或多个IPv6地址前缀,这些地址前缀信息描述如下路由信息:
l描述路由器自身的路由信息;
l描述路由器连接到的一个Stub网络的路由信息;
l描述路由器连接到的一个传输网络的路由信息。
报文格式如图16所示:
图16 OSPFv3 Intra Area Prefix LSA
Intra Area Prefix LSA描述了Router LSA和Network LSA所携带的路由信息,因此在Intra Area Prefix LSA中需要标明该LSA引用的Router LSA或Network LSA,这是通过Referenced LS Type、Referenced Link State ID和Referenced Advertising Router字段来联合标识的。
主要字段的解释如下:
l
l
l
l
3
3.1
图17 OSPFv3典型组网案例组网图
3.2
l
l
l