OSPF v3与OSPF v2对比
相同点:
- 网络类型和接口类型相同
- 五种报文和邻居状态机基本相同(除Hello报文中有些不同)
- 链路状态数据库相同(LSDB)
- LSA泛洪和老化机制一样
- 路由计算基本相同
不同点:
- 相对于OSPFv2 ,OSPFv3Hello报文中删除了v2中的Network mask和认证字段。增加了instance ID 和interface ID
- OSPFv2是基于网段,OSPFv3是基于链路(OSPFv3实现了拓扑和路由分离:通过1、2类LSA计算拓扑,8、9类计算前缀)。
- OSPFv2中Router-LSA,Network-LSA描述了路由信息和拓扑信息。而OSPFv3中Router-LSA,Network-LSA只描述拓扑信息,路由信息由九类intra-area-prefix-LSA来描述(普通路由器发布一类LSA描述的地址前缀,DR则描述二类LSA描述的地址前缀)
- OSPFv3支持一个链路上多个进程(通过instance ID来实现)而OSPFv2不行
- OSPFv3认证是依赖IPV6拓展报头中AH和ESP实现,或者尾部追踪认证实现。
- OSPFv3可以不依靠IPV6全局单播地址建立邻居(Vlink需要依靠),而OSPFv2则必须依靠IP地址
- OSPFv3有九种LSA,相对OSPFv2增加了Link-LSA和Intra Area prefix LSA
- OSPFv3的LSA报文里添加LSA type的洪泛范围。
- OSPFv3只通过Router ID来标识邻居
- 链路本地地址的使用。IPv6 的链路本地地址只用于单个链路,可以用于邻居的发现、自动配置等,邻居建立及ospfv3路由下一跳均使用链路本地地址。
- OSPFv3通过Router-id唯一标识邻居,OSPFv2可以使用IP地址标识。
- Option字段的变化。OSPFv3中新增R位和V6位。都默认为1。为0则表示不计算,当R=0时,除了去访问该路由器,访问其他设备都不会经过此路由器。V6位,为0则表示该设备不参加路由计算。
1、OSPFv3 LSA类型
OSPFv3中对路由信息的描述都是封装在链路状态通告LSA(Link State Advertisement)中发布出去的,常用的LSA如表
首先LSA-1和LSA-2取消了IP的意义,实现了拓扑和地址的分离,其LSA1和LSA2中不再包含IP地址,改为本地有意义的接口IP标识拓扑。
| LSA类型及作用 | |||
LSA类型 | LSA号 | LS type | 中文辅助记忆 | LSA作用 |
Router-LSA | 1 | 0x2001 |
| 设备会为每个运行OSPFv3接口所在的区域产生一个LSA,描述了设备的链路状态和开销,在所属的区域内传播。 transit P2P Vlink |
Network-LSA | 2 | 0x2002 |
| 由DR产生,记录了这一网络上所有路由器的Router ID,描述本链路的链路状态,在所属的区域内传播。 |
Inter-Area-Prefix-LSA | 3 | 0x2003 | 区域间前缀LSA | 由ABR产生,描述区域内某个网段的路由,并通告给其他相关区域。 |
Inter-Area-Router-LSA | 4 | 0x2004 | 区域间路由器LSA | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 |
AS-external-LSA | 5 | 0x4005 |
| 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。 |
NSSA LSA | 7 | 0x2006 |
| 由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。 |
Link-LSA | 8 | 0x0008 | 链路LSA | 每个设备都会为每个链路产生一个Link-LSA,描述到此Link上的link-local地址、IPv6前缀地址,并提供将会在Network-LSA中设置的链路选项,它仅在此链路内传播。 作用
|
Intra-Area-Prefix-LSA | 9 | 0x2009 | 内部区域前缀LSA | 每个设备及DR都会产生一个或多个此类LSA,在所属的区域内传播
|
2、Stub 区域的支持
由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定, 只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。
这里特别说明一下,OSPFv3的LSA类型字段采用16bit表示,格式如下:
其中表示了U位,和S1 S2位。关于S1和S2位可以明确的表示LSA的泛洪范围。
因此,举例说明LSA 1的LS Type字段为0x2001。二进制表示为0010,0000,0000,0001。
其中S1=0,S2=1。因此LSA 1的泛洪范围为区域内泛洪。
LS Type 字段含义:共16bit,0bit为U位,1bit位S1位,2bit位S2位,3-15为表示类型 | ||
LSA 1 | 0x2001 |
|
LSA 2 | 0x2001 |
|
LSA 3 | 0x2001 |
|
LSA 4 | 0x2001 |
|
LSA 5 | 0x4001 | 4换算为16进制为0100,S位为10表示OSPF域 |
LSA 6 | 0x2001 |
|
LSA 7 | 0x2001 |
|
LSA 8 | 0x0001 | 0换算为16进制为0000,S位为00表示链路本地 |
LSA 9 | 0x2001 |
|
- 抓包看 U位、S1位、S2位
其中表示了U位,和S1 S2位。关于S1和S2位可以明确的表示LSA的泛洪范围。
3、变化的Router LSA及network LSA
Router LSA(1类):名称相同,作用类似,但是ospfv3不再描述IP地址信息,仅仅用来描述拓扑结构,也不再包含路由信息,在ospfv2中有link id字段,有IP地址信息。
Router LSA 和 Network LSA 中不再包含路由信息,这两类 LSA 中所携带的路由信息由 Intra Area Prefix LSA 来描述,该类 LSA 用来公告一个或多个IPv6 地址前缀。
原本ospfv2的2类LSA的地址信息交给9类LSA,原本ospfv2的1类LSA在8、9类LSA都有它的相关的地址前缀
Router-LSA描述3中类型的网络:Transit / P2P /Vlink。不再描述stub(末梢)网络,在OSPFv3中loopback接口network 进OSPF后产生在9类LSA中,而OSPFv2是在Router LSA中stub类型网络。
Router LSA中Interface ID和Neighbor Router ID含义 | ||
Interface ID | 32比特 | 为接口分配的ID |
Neighbor Interface ID | 32比特 | 邻居设备的接口ID。
|
Neighbor Router ID | 32比特 | 邻居设备的Router ID。
|
Router-LSA 使用Interface ID标识接口,用dis ospfv3 interface查看对应关系
Network-LSA使用Link State ID标识接口,在8类LSA和9类LSA中依据Link State ID计算路由前缀
4、新增的8类LSA
Link-LSA,将当前接口的链路本地地址以及一系列 IPv6 地址信息向该链路上的所有其它路由器通告。只能在链路范围内传递。
具有以下作用:
(1)通告接口的Link-local地址给链路上的其他节点,其他节点可以使用Link-local地址作为路由的下一跳地址。
(2)向链路范围内的其他路由器通告本链路上的IPv6前缀信息
(3)在广播和NBMA网络上为DR提供Option取值信息
2类LSA即Network LSA中的Option字段显示该链路上的所有路由器的Link-LSA的Option字段的集合,即所有路由器的能力集合,该能力集合也来源于该链路上的每台路由器为该链路生成的Link LSA。
一条链路只产生一条8类LSA,但是该LSA中包含所有的IPv6前缀地址
5、新增的9类LSA
9类LSA携带区域内的一个或多个IPv6前缀信息,包含
-
- 依附于路由器的Prefix
- 依附于Stub网段的Prefix
- 依附于Transit网段的Prefix
根据所参考的LSA不同,9类LSA作用可分为以下两种情况:
- 参考Router-LSA,由各路由器分别生成,用于发布点到点链路的前缀信息以及Stub网络的前缀信息;
- DR设备产生的此类LSA,描述与Network-LSA相关联的IPV6前缀信息。用于发布该链路对应网络上的所有前缀信息,这些前缀来自链路上所有路由器各自生成的Link-LSA。但是,Link-LSA中的本地链路地址信息、NU或LA位置1的前缀除外。
9类LSA对收敛的影响:定义9类LSA使得接口前缀变化,不会触发拓扑的计算,只会触发PRC的重新计算
一台设备在一个区域只产生一条9类stub类型LSA(描述loopback口和p2p口 stub类型的前缀,但是该LSA中包含所有的stub IPv6前缀地址)
和描述Transnet network(只由DR设备产生)类型9类LSA(设备多个广播链路时network 9类LSA不打包为1条,每个链路network类型9类LSA单独为1条。比如AR1有3个广播链路且自己都是DR,就产生3条描述network的9 LSA。但是其中一条链路有3个单播IPv6地址,那么描述这个network的9 LSA中含有3个IPv6 前缀),
6、OSPFv3如何支持认证
6、1借助IPsec功能实现OSPF认证
IPSec通过报文头认证AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)这两个安全协议来实现
1、配置并应用IPSec会话,能够实现对协议报文的加密保护功能
2、接口、OSPFv3区域、OSPFv3 进程 :执行配置命令“ipsec sa sa-name ”
6、2 OSPFc3尾部追踪认证认证
通过在OSPFv3报文中增加认证字段对报文进行加密。当本地设备接收到远端设备发送过来的OSPFv3报文进行认证(在实际实验抓包中:OSPFv3的hello报文中增加认证字段实现尾部追踪认证功能)
该认证支持2种方式:Keychain认证 和 HMAC-SHA256认证
HMAC-SHA256配置命令:在接口下配置 ospfv3 authentication-mode hmac-sha256 key-id 1 cipher 密码