OSPFv3

OSPFv3的基本工作原理

OSPFv3是IETF定义的一种基于链路状态的内部网关路由协议,目前针对IPv4协议使用的是OSPF Version 2(OSPFv2),针对IPv6协议使用OSPF Version 3(OSPFv3)

OSPFv3与OSPFv2的相同点

OSPF的基本运行机制没有改变,包括

  • 基本概念
    • 区域划分及路由器类型
    • 路由计算影响参数:优先级、度量值
    • 支持的网络类型:Broadcast(广播类型)、NBMA、P2P(点到点类型)、P2MP(点到多点类型)
    • 报文类型:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文
  • 工作原理:
    • 邻居关系的建立及邻居状态的转换
    • DR与BDR的选举
    • LSA泛洪机制
    • 路由计算过程
  • 对特殊区域、虚连接、多进程的支持

OSPFv3的基本工作原理与OSPFv2相似

OSPFv3与OSPFv2的不同点

  • OSPFv3基于链路运行以及拓扑计算,而不再是网段
  • OSPFv3支持一个链路上多个实例
  • OSPFv3报文和LSA中去掉了IP地址的意义,且重构了报文格式和LSA格式
    • OSPFv3报文和Router LSA/Network LSA中不包含IP地址
    • OSPFv3的LSA中定义了LSA的泛洪范围
    • OSPFv3中创建了新的LSA承载IPv6地址和前缀
    • OSPFv3邻居不再由IP地址标识,只由Router ID标识

唯一邻居标识:Router ID

OSPFv3通过Router ID来标识网络设备

  • Router ID是一个OSPFv3设备在自治系统中的唯一标识。如果用户没有指定Router ID,则OSPFv3进程无法运行
  • 设置Router ID时,必须保证自治系统中任意两台设备的Router ID都不相同
  • Router ID长度32bit,本地标识符,与IPv6地址无关,用点分十进制表示法表示

OSPFv3基于链路运行

OSPFv3是基于链路运行的,设备只要在同一链路,就可以建立邻居关系

链路支持多实例

  • 一个OSPFv3物理接口可以和多个实例绑定,并用不同的实例标识(Instance ID区分),即OSPFv3的单个链路支持运行多个OSPFv3实例
  • 运行在同一条物理链路上的多个OSPFv3实例,分别和链路对端设备建立邻居及发送报文,且互不干扰,这样可以充分共享同一链路资源

OSPFv3对链路本地地址的使用

  • OSPFv3使用链路本地地址(FE80::/10)作为发送报文的源地址和路由的下一跳
    • 使用链路本地地址来维持邻居关系,同步LSA数据库
    • 在虚连接上,必须使用全球单播地址或者站点本地地址作为OSPFv3协议报文的源地址
  • 优势:
    • 不需要配置IPv6全球单播地址,就可以得到OSPFv3拓扑,实现拓扑与地址分离
    • OSPFv3报文不会被转发到始发链路范围之外,减少了报文不必要的泛洪,节省了带宽

IPv6使用链路本地地址(Link-Local Address)在同一链路上发现邻居及自动配置。运行IPv6的路由器不转发目的地址为链路本地地址IPv6报文,此类报文只在同一链路有效

OSPFv3报文

OSPFv3与OSPFv2有相同类型的报文

  • Hello报文:周期性发送,用来发现、建立和维持OSPFv3邻居关系
  • DD报文:描述了本地LSDB的摘要信息,用于两台设备进行数据库同步
  • LSR报文:用于向对方请求所需的LSA。设备只有在OSPFv3邻居双方成功交换DD报文后,才会向对方发出LSR报文
  • LSU报文:向对方发送其所需的LSA
  • LSAck报文:用来对收到的LSA进行确认

OSPFv3与OSPFv2使用相同的协议号89

  • OSPFv2:IPv4报文头部中的协议号(Protocol)为89
  • OSPFv3:IPv6报文头部中的下一报头好(Next Header)为89

OSPFv3与OSPFv2类似,使用组播地址作为OSPF报文目的地址

  • OSPFv2使用IPv4组播地址:
    • OSPF IGP Routers:224.0.0.5;OSPF IGP DR:224.0.0.6
  • OSPFv3使用IPv6组播地址:
    • OSPF IGP Routers:FF02::5;OSPF IGP DR:FF02::6

OSPFv3报文头部

与OSPFv2一样,OSPFv3的五种报文都有同样的报文头,只是报文中的字段有些不同

变化点:

  • Instance ID:缺省值为0。允许一个链路上运行多个OSPFv3的实例。每个实例具有唯一的Instance ID。Instance ID只在本地链路上有意义。
  • OSPFv3报文头部移除了所有的认证字段:OSPFv3的认证可以使用IPv6的认证及安全处理,也可以通过OSPFv3自身机制来完成报文认证

   

Hello报文

与OSPFv2的Hello报文相比,OSPFv3的Hello报文去掉了Network Mask字段,增加了Interface ID字段,用来标识发送该Hello报文的接口ID

变化点:

  • Interface ID:4Byte,唯一标识了建立连接的(发送Hello报文的)接口
  • Options:扩展到3Byte,可选项。与OSPFv2相比,增加了R位和V6位
    • R:指明始发路由器是否具备转发能力。设置R位为0时,描述该始发节点的路由信息将不参与路由计算
    • V6:如果V6位为0,表示该路由器或链路不会参与IPv6路由计算

字段介绍:

  • Rtr Pri:1Byte,Router Priority,DR优先级。默认为1如果设置为0,则路由不能参与DR或BDR的选举
  • Options:3Byte,可选项
    • AT:1bit,表示是否支持OSPFv3认证。若AT=1,则在OSPFv3报文后增加认证尾部字段,包含认证信息
    • DC:1bit,表示是否具有支持按需电路的能力
    • R:1bit,指明始发路由器是否是一台有效的路由器
    • NP:1bit,表示是否为NSSA区域
    • MC:1bit,表示是否支持转发组播数据报文
    • E:1bit,表示是否支持外部路由
    • V6:1bit,表示是否参与IPv6路由计算,如果该位为0,表示该路由器或链路不参与IPv6路由计算
  • HelloInterval:2Byte,发送Hello报文的时间间隔(Hello报文发送的时间间隔:通常为10秒)
  • RouterDeadInterval:2Byte,失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效(通常是:40秒)
  • Designated Router ID:4Byte,DR的Router ID
  • Neighbor ID:4Byte,邻居,以Router ID标识

   

说明:DD报文、LSR报文、LSU报文和LSAck报文格式与OSPFv2相比变化不大

   

OSPFv3中的LSA

OSPFv3的LSA头部

与OSPFv2的LSA头部相比,OSPFv3的LSA头部去掉了Options字段,并扩充了LS Type字段。OSPFv3同样使用LS Type、Link State ID和Advertising Router三元组唯一地标识一个LSA

   

字段介绍:

  • LS Age:2Byte,LSA产生后所经过的时间,以秒为单位。无论LSA是在链路上传送,还是保存在LSDB中,其值都会在不停的增长
  • LS Type:2Byte,LSA的类型。该字段的高3位标识LSA的通用属性,剩下的比特位标识LSA的特定功能
    • U位标识了对未知LSA的处理方法,即标识了不识别LSA功能代码的路由器应如何处理LSA
      • 0:把此LSA当作具有链路本地泛洪范围来对待,从而只能泛洪到本地链路上
      • 1:把此LSA当作类型已知的LSA来处理,也就是存储下来并泛洪出去
    • S2/S1位标识了LSA的泛洪范围
      • S2 S1 = 0 0:链路本地范围内,即只在始发链路上泛洪
      • S2 S1 = 0 1:区域范围内,即泛洪到始发区的所有路由器
      • S2 S1 = 1 0:AS范围内,即泛洪到本AS的所有路由器
      • S2 S1 = 1 1:预留
  • Link State ID:4Byte,本地32位标识符,与IPv6地址无关,与LSA中的LS Type和Advertising Router一起在路由域中描述一个LSA。OSPFv3与OSPFv2相比,Link State ID不再包含地址信息
  • Advertising Router:4Byte,产生此LSA的路由器的Router ID
  • LS Sequence Number:4Byte,LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。
  • LS Checksum:2Byte,除了LS Age外其他各域的校验和
  • Length:2Byte,LSA的总长度,包括LSA Header,以字节位单位

OSPFv3的LSA类型

  • OSPFv3与OSPFv2相比,具有类似的LSA名称,但是功能略有区别
  • OSPFv3新增了两类LSA,包括:链路LSA和区域内前缀LSA

如表中所示,OSPFv3的LS Type字段,U位缺省位0;除Type5和Type8的LSA外,其余的LSA泛洪范围都是区域范围内(S2 S1 = 0 1)

  • 链路本地范围。LSA仅在本地链路上泛洪,包括:Link-LSA
  • 区域范围。LSA在单个OSPF区域内泛洪,包括:Router-LSA、Network-LSA、Inter-Area-Prefix-LSA,Inter-Area-Router-LSA、NSSA LSA和Intra-Area-Prefix-LSA
  • AS范围。LSA在整个路由域(自治系统)中扩散,包括:AS-External-LSA

Type1:Router-LSA

在OSPFv2中,通过Link Type、Link ID以及Link Data来描述一个接口信息。在OSPFv3中,设备会为每个运行OSPFv3接口所在的区域产生一个LSA,描述了设备的链路状态(Link Type、Interface ID、Neighbor Interface ID和Neighbor Router ID)和开销,在所属的区域内传播

OSPFv3的Router-LSA字段解释:

  • W:Wide-Card Receiver,值为1时,表示该路由器支持组播路由
  • V:Virtual Link,值为1时,表示产生此LSA的路由器是虚连接的一端
  • E:External,值为1时,表示产生此LSA的路由器是ASBR
  • B:Border,值为1时,表示产生此LSA的路由器是ABR
  • Options:3Byte,可选项
    • DC:1bit,表示是否具有支持按需电路的能力
    • R:1bit,指明始发路由器是否是一台有效的路由器
    • NP:1bit,表示是否为NSSA区域
    • MC:1bit,表示是否支持转发组播数据报文
    • E:1bit,表示是否支持外部路由
    • V6:1bit,表示是否参与IPv6路由计算,如果该位为0,表示该路由器或链路不参与IPv6路由计算
  • Link-Type:1Byte,链路类型
    • 1:点到点连接到另一台路由器
    • 2:连接到一个传送网络(Transit Network)
    • 3:保留
    • 4:虚链路
  • metric:2Byte,流量出接口的开销值
  • Interface ID:4Byte,接口ID
  • Neighbor Interface ID:4Byte,邻居的接口ID
  • Neighbor Router ID:4Byte,邻居的路由器ID

Type2:Network-LSA

与OSPFv2相比,OSPFv3的Network-LSA删除了网络掩码字段,仅用相连的路由器的Router ID来描述本网段的链路状态,由DR产生,在所属区域内传播

OSPFv3的Network-LSA字段解释:

  • Options:与Router-LSA中的Options字段相同
  • Attached Router:4Byte,相连的路由器,指连接在同一网段上的所有路由器的Router ID,也包括DR的Router ID

Type3:Inter-Area-Prefix-LSA

与OSPFv2类似,由ABR产生,描述区域内某个IPv6地址前缀的路由,并通告给其他相关区域。每个IPv6地址前缀,ABR都会单独发送一个Type3的LSA

OSPFv3的Inter-Area-Prefix-LSA字段解释

  • Metric:3Byte,到目的地址的开销值
  • PrefixLength:1Byte,前缀的比特数
  • PrefixOptions:表示这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理
    • P:传播位。如果一个NSSA区域的前缀需要被ABR转播出去,就需要设置这一位
    • MC:组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算
    • LA:本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址
    • MU:非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中
  • Address Prefix:变长,IPv6地址前缀

注意:缺省路由的前缀长度为0。ABR也能够始发一个区域间Type3的LSA向一个末梢区域通告一条缺省路由

Type4:Inter-Area-Router-LSA

与OSPFv2类似,由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。对于所描述的每个ASBR,ABR都会单独发送一个Type4的LSA

OSPFv3的Inter-Area-Router-LSA字段解释:

  • Options:Options字段描述的不是源路由器的能力,而是目的路由器所支持的能力,所以此字段值应该等于目的路由器的Router-LSA的Options字段值
  • Metric:3Byte,到目的地址的开销值
  • Destination Router ID:4Byte,LSA中描述的目的路由器的Router ID,即ASBR的Router ID

Type5:AS-External-LSA

与OSPFv2类似,由ASBR产生,描述到达AS外部的一个前缀的路由,通告到所有的区域(除了Stub区域和NSSA区域)

OSPFv3的AS-External-LSA字段解释:

  • E:1bit,外部路由的Metric类型
    • 如果设置为1,表示此为2类外部路由,其Metric不随着路由的传递而增长
    • 如果设置为0,表示此为1类外部路由,其Metric随着路由的传递而增长
  • F:1bit,如果设置为1,则表示后面的Forwarding Address可选字段存在
  • T:1bit,如果设置为1,则表示后面的External Route Tag可选字段存在
  • Metric:3Byte,到目的地址的开销值
  • PrefixLength、PrefixOptions和Address Prefix为描述前缀的三元组,与Inter-Area-Prefix-LSA中该字段含义相同
  • Referenced LS Type:2Byte,引用链路状态类型,表明这个LSA是否需要参考其他LSA
    • 0:不参考
    • 1:参考Router-LSA
    • 2:参考Network-LSA
  • Forwarding Address:4Byte,可选的128位IPv6地址,当前面的F位位1时存在,表示到达目的的数据应该转发到该地址
  • External Route Tag:4Byte,可选的标记位。可以用于ASBR之间的通信。一个比较常见的例子时,在OSPF自治系统的两个边界路由器上进行路由引入时,通过对引入的路由进行标记,可以方便地进行路由过滤
  • Referenced Link State ID:4Byte,若Referenced LS Type不为0,则该字段存在,表示引用链路状态ID

新增Type8:Link-LSA

每个设备都会为每个链路产生一个Link-LSA,仅在始发链路内泛洪。

Link-LSA作用:

  • 向该链路上其他路由器通告本接口的链路本地地址
  • 向该链路上其他路由器通告本接口的IPv6前缀列表
  • 向该链路上其他路由器通告本链路始发的Network-LSA中设置的可选项

OSPFv3的Link-LSA字段解释:

  • Rtr Pri:1Byte,该路由器在该链路上的优先级(Router Priority)
  • Options:3Byte,提供给Network-LSA的Options
  • Link-Local Interface Address:16Byte,路由器与该链路相连的接口上配置的链路本地地址(该地址只出现在Link-LSA中)
  • Number of Prefixes:4Byte,该LSA中携带的IPv6地址前缀个数
  • PrefixLength、PrefixOptions和AddressPrefix为描述前缀的三元组,与Inter-Area-Prefix-LSA中该字段含义相同

新增Type9:Intra-Area-Prefix-LSA

在OSPFv2中,可以通过Type1和Type2的LSA来描述拓扑信息和网段信息;OSPFv3使用Type9 LSA描述网段信息,只在所属区域内传播,它需要依赖于拓扑信息,才能实现OSPFv3的路由计算。

其类型可分为两种:

  • 每台设备均产生描述与Router-LSA相关联的IPv6前缀地址的Type9 LSA
  • DR会产生描述与Network-LSA相关联的IPv6前缀地址的Type9 LSA

OSPFv3的Intra-Area-Prefix-LSA字段解释:

  • Number Of Prefix:4Byte,该LSA中携带的IPv6地址前缀个数。必要的话,可以通过多个Intra-Area-Prefix-LSA来携带前缀,这样可以控制LSA的长度
  • Referenced LS Type:4Byte,表明这个LSA是参考一个Router-LSA,还是一个Network-LSA
    • 1:表示参考一个Router-LSA
    • 2:表示参考一个Network-LSA
  • Referenced Link State ID:4Byte
    • 设为0:当这个LSA是参考一个Router-LSA时
    • 设为该链路的DR的Interface ID:当这个LSA是参考一个Network-LSA时
  • Referenced Advertising Router:4Byte
    • 设为这个路由器的Router ID:当这个LSA是参考一个Router-LSA时
    • 设为该链路的DR的Router ID:当这个LSA是参考一个Network-LSA时
  • PrefixLength、Prefix Options和Address Prefix为描述前缀的三元组,与Inter-Area-Prefix-LSA中该字段含义相同
  • Metric:2Byte,前缀开销值。与Router-LSA的接口开销值相同单位

在OSPFv3中,当一条链路或它的前缀发生变化时,相连的路由器会发送一个Intra-Area-Prefix-LSA。但是,这条LSA不会触发SPF计算。

posted @ 2022-07-17 16:41  hongliang888  阅读(3412)  评论(0编辑  收藏  举报