OSPFv3.docx
《OSPFv3.docx》由会员分享,可在线阅读,更多相关《OSPFv3.docx(31页珍藏版)》请在冰豆网上搜索。
OSPFv3
目 录
1概述...3
2OSPFv3技术实现...3
2.1OSPFv2简介...3
2.1.1OSPF基本概念...3
2.1.2OSPF路由计算过程...5
2.2OSPFv3与OSPFv2的相同点...5
2.3OSPFv3与OSPFv2的不同点...6
2.3.1基于链路的运行...6
2.3.2使用链路本地地址...7
2.3.3链路支持多实例复用...7
2.3.4通过RouterID唯一标识邻居...8
2.3.5认证的变化...8
2.3.6Stub区域的支持...8
2.3.7报文的不同...8
2.3.8Option字段不同...9
2.3.9LSA类型不同...9
2.3.10扩大了LSA的泛洪范围...10
2.3.11支持对未知类型LSA的处理...10
2.3.12LSA报文格式不同...11
3典型组网应用...19
3.1组网图...19
3.2组网需求...19
4参考文献...20
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不允许注入Type5LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为TotallyStub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally)Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。
通常来说,(Totally)Stub区域位于自治系统的边界。
(2) NSSA区域
NSSA(Not-So-StubbyArea)区域是Stub区域的变形,与Stub区域有许多相似的地方。
NSSA区域也不允许Type5LSA注入,但可以允许Type7LSA注入。
Type7LSA由NSSA区域的ASBR产生,在NSSA区域内传播。
当Type7LSA到达NSSA的ABR时,由ABR将Type7LSA转换成Type5LSA,传播到其他区域。
3.OSPF网络类型
OSPF根据链路层协议类型将网络分为下列四种类型:
● 广播类型:
当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是广播。
在该类型的网络中,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文。
● NBMA类型:
当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。
在该类型的网络中,以单播形式发送协议报文。
● P2MP类型:
没有一种链路层协议会被缺省的认为是P2MP类型。
点到多点必须是由其他的网络类型强制更改的。
常用做法是将NBMA改为点到多点的网络。
在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。
可以根据用户需要,以单播形式发送协议报文。
● P2P类型:
当链路层协议是PPP、HDLC时,OSPF缺省认为网络类型是P2P。
在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
4.OSPF协议报文
OSPF有五种类型的协议报文:
● Hello报文:
周期性发送,用来发现和维持OSPF邻居关系。
内容包括一些定时器的数值、DR(DesignatedRouter,指定路由器)、BDR(BackupDesignatedRouter,备份指定路由器)以及自己已知的邻居。
● 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,并通过更新报文将LSA发送给网络中的其它OSPF路由器。
● 每台OSPF路由器都会收集其它路由器通告的LSA,所有的LSA放在一起便组成了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不同主要表现在:
● 基于链路的运行
● 使用链路本地地址
● 链路支持多实例复用
● 通过RouterID唯一标识邻居
● 认证的变化
● Stub区域的支持
● 报文的不同
● Option字段的不同
● LSA的异同
2.3.1 基于链路的运行
OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一个网段。
OSPFv3的实现是基于链路,一个链路可以划分为多个子网,节点即使不在同一个子网内,只要在同一链路上就可以直接通话。
2.3.2 使用链路本地地址
OSPFv3的路由器使用链路本地地址作为发送报文的源地址。
一个路由器可以学习到这个链路上相连的所有其它路由器的链路本地地址,并使用这些链路本地地址作为下一跳来转发报文。
但是在虚连接上,必须使用全球范围地址或者站点本地地址作为OSPFv3协议报文的源地址。
由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在LinkLSA中。
2.3.3 链路支持多实例复用
OSPFv3支持在同一链路上运行多个实例,实现链路复用并节约成本,如图1所示。
图1链路支持多实例复用示意图
RouterA、RouterB、RouterC和RouterD连接到同一个广播网上,它们共享同一条链路且都能建立邻居关系,通过在RouterA的Eth1/1、RouterB的Eth1/1、RouterC的Eth1/2上指定实例1、在RouterA的Eth1/1、RouterB的Eth1/1、RouterD的Eth1/3上指定实例2,实现了RouterA、RouterB和RouterC可以建立邻居关系,RouterA、RouterB和RouterD可以建立邻居关系。
这是通过在OSPFv3报文头中添加InstanceID字段来实现的。
如果接口配置的InstanceID与接收的OSPFv3报文的InstanceID不匹配,则丢弃该报文,从而无法建立起邻居关系。
2.3.4 通过RouterID唯一标识邻居
在OSPFv2中,当网络类型为点到点或者通过虚连接与邻居相连时,通过RouterID来标识邻居路由器,当网络类型为广播或NBMA时,通过邻居接口的IP地址来标识邻居路由器。
OSPFv3取消了这种复杂性,无论对于何种网络类型,都是通过RouterID来唯一标识邻居。
2.3.5 认证的变化
OSPFv3协议自身不再提供认证功能,而是通过使用IPv6提供的安全机制来保证自身报文的合法性。
所以,OSPFv2报文中的认证字段,在OSPFv3报文头中被取消。
2.3.6 Stub区域的支持
由于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略有不同,报文的改变包括以下几点:
● 版本号从2升级到3。
● 报文头的不同:
与OSPFv2报文头相比,OSPFv3报文头长度只有16字节,去掉了认证字段但加了InstanceID字段。
InstanceID字段用来支持在同一条链路上运行多个实例,且只在链路本地范围内有效,如果路由器接收到的Hello报文的InstanceID与当前接口配置的InstanceID不同,将无法建立邻居关系。
● Hello报文的不同:
与OSPFv2Hello报文相比,OSPFv3Hello报文去掉了网络掩码字段,增加了InterfaceID字,用来标识发送该Hello报文的接口ID。
2.3.8 Option字段不同
在OSPFv2中,Option字段出现在每一个Hello报文、DD报文以及每一个LSA中。
在OSPFv3中,Option字段只在Hello报文、DD报文、RouterLSA、NetworkLSA、InterAreaRouterLSA以及LinkLSA中出现。
OSPFv2的Option字段如下所示:
图2OSPFv2Option字段格式
OSPFv3的Option字段如下所示:
图3OSPFv3Option字段格式
从上图可以看出,与OSPFv2相比,OSPFv3的Option字段增加了R比特、V比特。
其中:
● R比特:
用来标识设备是否是具备转发能力的路由器。
如果R比特置0,宣告该节点的路由信息将不会参加路由计算,如果当前设备是一个不想转发非本地地址的报文,可以将R比特置0。
● V比特:
如果V比特置0,该路由器或链路也不会参加路由计算。
2.3.9 LSA类型不同
1.OSPFv3LSA的类型
OSPFv3有以下七种类型的LSA,下面针对与OSPFv2LSA异同点进行说明。
表1OSPFv3与OSPFv2LSA的异同点
OSPFv2LSA
OSPFv3LSA
与OSPFv2LSA异同点说明
RouterLSA
RouterLSA
名称相同,作用也类似,但是不再描述地址信息,仅仅用来描述路由域的拓扑结构
NetworkLSA
NetworkLSA
NetworkSummaryLSA
InterAreaPrefixLSA
作用类似,名称不同
ASBRSummaryLSA
InterArea RouterLSA
ASExternalLSA
ASExternalLSA
作用与名称完全相同
无
LinkLSA
新增LSA
IntraAreaPrefixLSA
新增LSA
2.新增两种类型LSA
OSPFv3新增了LinkLSA和IntraAreaPrefixLSA。
● RouterLSA不再包含地址信息,使能OSPFv3的路由器为它所连接的每条链路产生单独的LinkLSA,将当前接口的链路本地地址以及路由器在这条链路上的一系列IPv6地址信息向该链路上的所有其它路由器通告。
● RouterLSA和NetworkLSA中不再包含路由信息,这两类LSA中所携带的路由信息由IntraAreaPrefixLSA来描述,该类LSA用来公告一个或多个IPv6地址前缀。
2.3.10 扩大了LSA的泛洪范围
LSA的泛洪范围已经被明确地定义在LSA的LSType字段,目前,有三种LSA泛洪范围。
● 链路本地范围:
LSA只在本地链路上泛洪,不会超出这个范围,该范围适用于新定义的LinkLSA。
● 区域范围:
LSA的泛洪范围仅仅覆盖一个单独的OSPFv3区域。
RouterLSA、NetworkLSA、InterAreaPrefixLSA、InterAreaRouterLSA和IntraAreaPrefixLSA都是区域范围泛洪的LSA。
● 自治系统范围:
LSA将被泛洪到整个路由域,ASExternalLSA就是自治系统范围泛洪的LSA。
2.3.11 支持对未知类型LSA的处理
在OSPFv2中,收到类型未知的LSA将直接丢弃。
OSPFv3在LSA的LSType字段中增加了一个U比特位来位标识对未知类型LSA的处理方式:
● 如果U比特置1,则对于未知类型的LSA按照LSA中的LSType字段描述的泛洪范围进行泛洪;
● 如果U比特置0,对于未知类型的LSA仅在链路范围内泛洪。
2.3.12 LSA报文格式不同
OSPFv3LSA封装在LSA头的后面,下面将重点介绍OSPFv3与OSPFv2在LSA头以及LSA内容上的不同点:
1.LSA头
图4OSPFv2LSA头和OSPFv3LSA头格式对比
从图4可以看出,与OSPFv2相比,OSPFv3的LSA头部取消了Options字段,且LinkStateID不再有具体的含义,而是由当前路由器随机生成的,用来同AdvertisingRouter、LSSequenceNumber字段一同标识一个LSA。
OSPFv2中的LSType长度为8比特,指定LSA的类型;OSPFv3的LSAType字段由OSPFv2的8比特扩充为16比特,具体如图5所示:
图5OSPFv3LSType字段
● U位:
描述了路由器收到一个类型未知的LSA时如何处理,取值为0表示把类型未知LSA当成具有链路本地范围的LSA一样处理,取值为1表示按照S2/S1位标识的泛洪范围来处理。
● S2/S1位:
共同标识LSA的泛洪范围,取值00表示LSA只在产生该LSA的本地链路上泛洪;取值01表示LSA的泛洪范围为产生该LSA的路由器所在区域;取值10表示LSA将在整个自治系统内进行泛洪;取值11保留。
● LSAFunctionCode:
LSA类型编码,描述LSA的类型,类型编码取值与LSA类型的对应关系如下表所示。
表2类型编码取值与LSA类型对应关系
类型编码取值
LSA类型
1
RouterLSA
2
NetworkLSA
3
InterAreaPrefixLSA
4
InterAreaRouterLSA
5
ASExternalLSA
6
GroupMembershipLSA
8
LinkLSA
9
IntraAreaPrefixLSA
2.RouterLSA
OSPFv2的RouterLSA格式如下所示:
图6OSPFv2RouterLSA格式
OSPFv3的RouterLSA格式如下所示:
图7OSPFv3RouterLSA格式
如图7所示,与OSPFv2相比,OSPFv3的RouterLSA格式变化比较大:
● 新增了Options字段,用来标识该路由器支持的功能。
● 取消了用来描述路由器连接数量的连接数字段#Links。
● 对链路的描述方式发生改变,通过InterfaceID、NeighborInterfaceID和NeighborRouterID进行综合描述。
与OSPFv2不同的字段解释如下:
● W:
(Wild-card):
用于MOSPF,目前我司不支持。
● InterfaceID:
所描述链路的本地接口ID。
● NeighborInterfaceID:
所描述链路的邻居路由器的接口ID。
● NeighborRouter:
所描述链路的邻居路由器ID。
3.NetworkLSA
图8OSPFv2NetworkLSA和OSPFv3NetworkLSA格式对比
如图8所示,OSPFv3的NetworkLSA中新增了Option字段,减少了Networkmask字段。
当网络类型为广播网和NBMA时,OSPFv3的NetworkLSA仅仅描述了连接到链路上的所有路由器,包括DR本身,由于不包含Networkmask字段,OSPFv3的NetworkLSA仅描述了拓扑信息,不再描述路由信息。
4.InterAreaPrefixLSA
InterAreaPrefixLSA的LSA类型编码为3,相当于OSPFv2的NetworkSummaryLSA,通过PrefixLength、PrefixOptions以及AddressPrefix来描述到达区域外的IPv6地址前缀的路径信息,每一个Pv6地址前缀都会产生一个单独的InterAreaPrefixLSA。
对于Stub区域,InterAreaPrefixLSA还可以用来描述缺省路由,描述缺省路由时前缀长度取值为0。
OSPFv2的NetworkSummaryLSA格式如下所示:
图9OSPFv2NetworkSummaryLSA格式
OSPFv3的InterAreaPrefixLSA格式如下所示:
图10OSPFv3InterAreaPrefixLSA格式
OSPFv3的InterAreaPrefixLSA与OSPFv2NetworkSummaryLSA不同字段解释如下:
● PrefixLength:
IPv6地址前缀长度。
● PrefixOptions:
IPv6地址前缀选项,用来标识前缀的功能,根据前缀选项的设置,在路由计算过程中允许某些前缀被忽略,或者标识为不用重新公告。
● AddressPrefix:
IPv6地址前缀。
其中,前缀选项一个字节长度,格式如图11所示:
图11OSPFv3PrefixOption
● P(Propagate):
传播功能位,在NSSA前缀上设置,置1表示该前缀应该在NSSA区域边界重新公告。
● MC(Multicast):
多播功能位,置位表示该前缀