ccna60d/d13-OSPFv3.md
2020-11-24 08:13:36 +08:00

15 KiB
Raw Blame History

第13天 OSPF版本3

OSPF version 3


Gitbookccna60d.xfoss.com

你可以在 https://github.com/gnu4cn/ccna60d 上 fork 本项目,并提交你的修正。

本书结合了学习技巧,包括阅读、复习、背书、测试以及 hands-on 实验。

本书译者用其业余时间完成本书的翻译工作,并将其公布到网上,以方便你对网络技术的学习掌握,为使译者更有动力改进翻译及完成剩下章节,你可以 捐赠译者


第13天任务

  • 阅读今天的理论课文
  • 回顾昨天的理论课文

今天我们要着眼于OSPFv3, 这里将学习要下面的知识。

  • OSPF基础

本模块对应了以下CCNA大纲要求。

  • 配置OSPFv3
  • 路由器ID
  • 被动接口

OSPF第3版

OSPF Version 3

OSPFv3定义在RFC 2740中,而其功能与OSPFv2相同,不过OSPFv3显式地是为IPv6路由协议设计OSPFv3 is defined in RFC 2740 and is the counterpart of OSPFv2, but it is designed explicitly for the IPv6 routed protocol。该版本号取自此种OSPF数据包中的版本字段该字段已被更新到数字3. OSPFv3规格主要是基于OSPFv2, 但因为加入对IPv6的支持而包含了一些额外功能增强。

OSPFv2OSPFv3能在同一台路由器上运行。也就是说同一台物理路由器可同时路由IPv4和IPv6流量因为每个地址家族都有不同的SPF进程这就是说同样SPF算法对OSPFv2OSPFv3分别有一个单独实例。OSPFv2OSPFv3有以下共同点。

  • OSPFv3继续使用着为OSPFv2所用到的那些数据包。包括数据库说明数据包Database Description, DBD, 链路状态请求数据包Link State Requests, LSRs链路状态更新数据包Link State Updates, LSUs, 以及链路状态通告数据包Lins State Advertisements, LSAs
  • OSPSv3中的动态邻居发现机制及邻接关系形成过程OSPF所经历的从初始、尝试建立邻接关系到邻接关系完整建立的过程仍然和OSPFv2中一样
  • 在不同通信技术方面,OSPFv3仍然保持对RFC的遵循OSPFv3 still remains RFC-compliant on different technologies。比如若在某条PPP链路上开启OSPFv3, 那么组网类型仍然被指定为点对点Point-to-Point。同样如在FR上开启OSPFv3, 默认组网类型仍然是非广播类型Non-Broadcast。此外在思科IOS软件中默认组网类型仍可通过使用不同的、特定于接口的命令手动进行改变。
  • OSPFv2OSPFv3使用同样的LSA散布及老化机制the same LSA flooding and aging mechanism.
  • OSPFv2类似,OSPFv3的路由器IDrid仍然需要使用一个32位的IPv4地址。当在某台运行着双栈dual-stack, 也就是同时有IPv4和IPv6的路由器上开启OSPFv3时, 那么与在OSPFv2中为思科IOS路由器所用到的同样RID选定过程也用于确定OSPFv3中要用到的路由器ID。但是在一台没有接口运行着IPv4的路由器上开启OSPFv3时,就强制性要求使用路由器配置命令router-id来手动配置OSPFv3的路由器ID
  • OSPFv3链路ID表明这些链路并非IPv6专用同时这些链路ID跟OSPFv2中一样,仍然基于一个32位IPv4地址。

OSPFv2OSPFv3有着这些相同点的同时,重要的是掌握那些你必须熟悉的存在的明显不同点。包括下面这些。

  • 以与EIGRP类似的方式OSPFv3是在链路上运行的in a manner similar to EIGRP, OSPFv3 runs over a link。这就打消了OSPFv3中执行网络声明语句的需求。取而代之的是,通过使用接口配置命令ipv6 router ospf [process id] area [area id]来将该链路配置为某个OSPF进程的组成部分。但是,与OSPFv2类似OSPF进程号仍然是通过在全局配置模式中使用全局配置命令ipv6 router ospf [process id]进行指定。
  • OSPFv3使用本地链路地址Link-local address来区分OSPFv3邻接关系。与EIGRPv6类似OSPFv3路由的下一跳地址将反映邻接的或邻居路由器的本地链路地址。
  • OSPFv3引入了两种新的OSPF LSA类型。分别是链路LSAthe Link LSA被定义为LSA类型0x0008(LSA Type 0x0008或LSA Type 8, 以及区域内前缀LSAthe Intra-Area-Prefix LSA被定义为LSA类型0x0029(LSA Type 0x0029, 或LSA Type 29链路LSA提供了路由器的本地链路地址及加诸路由器上的所有IPv6前缀。每条链路都有一个链路LSA。可能有多个带有不同链路状态IDs的区域内前缀LSAs。因此区域LSA散布范围就既可能是与应用自网络LSA的所经过网络的相关前缀网络也可能是参考自路由器LSA的某台路由器或末梢区域相关前缀There can be multiple Intra-Area-Prefix LSAs with different Link-State IDs. The Area flooding scope can therefore be an associated prefix with the transit network referencing a Network LSA or it can be an associated prefix with a router or Stub referencing a Router LSA
  • OSPFv2OSPFv3所用到的传输方式是不同的。OSPFv3报文是用封装成IPv6数据包发出的。
  • OSPFv3使用两个标准IPv6多播地址。多播地址FF02::5OSPFv2中用到的所有SPF路由器AllSPFRouters地址224.0.0.5等价,同时多播地址FF02::6就是所有DR路由器AllDRRouters地址且与OSPFv2中用到的224.0.0.6组地址等价。这将在ICND2部分讲到
  • OSPFv3利用到IPv6内建的IPSec的能力并将AH和ESP扩展头部用着一种的认证机制而不是想在OSPFv2中可配置的为数众多的认证机制OSPFv3 leverages the built-in capabilities of IPSec and uses the AH and ESP extension headers as an authentication mechanism instead of the numerous authentication mechanisms configurable in OSPFv2。因此OSPFv3的OSPF数据包中那些认证和AuType字段就被移除了。
  • 最终的最后一个明显区别就是,OSPFv3 Hello数据包现在不包含任何地址信息而是包含了一个接口ID该接口ID是发出Hello数据包路由器分配的用于对链路做其接口的唯一区分。此接口ID成为网络LSAthe Network LSA的链路状态IDLink State ID, 判断该路由器是否应成为该链路上的指定路由器This interface ID becomes the Network LSA's Link State ID, should the router become the Designated Router on the link

思科IOS软件的OSPFv2和OSPFv3配置差异

Cisco IOS Software OSPFv2 and OSPFv3 Configuration Differences

在思科IOS软件中配置OSPFv2与OSPFv3时有着一些配置差异。但应注意到这些区别与其它路由协议的IPv4和IPv6版本的差异相比并不那么显著。

在思科IOS软件中通过使用全局配置命令ipv6 router ospf [process id]来开启OSPFv6。和OSPFv2中的情况一样OSPF进程ID是对路由器本地有效的并不要求其在邻接路由器上为建立邻接关系保持一致。

译者总结: 邻居路由器要形成邻接关系要求1. 区域号一致2. 认证一直3. Hello包、死亡间隔时间直一致不要求进程号一致。Hello数据包用于动态邻居发现和形成邻接关系因此Hello数据包包含上述要求的参数不包含不要求的参数。只有形成了邻接关系才能开始发送和接受LSAs。

与EIGRPv6将在ICND2中涵盖所要求的一样OSPFv3的路由器ID也必须予以手动指定或配置成一个带有IPv4地址的运行接口比如一个环回接口。与EIGRPv6类似在启用OSPFv3时是没有网络命令的网络宣告network statement。取而代之的是OSPF的启用是基于各个接口的且在同一接口上可开启多个OSPFv3实例similar to EIGRPv6, there are no network commands used when enabling OSPFv3. Instead OSPFv3 is enabled on a per-interface basis and multiple instances may be enabled on the same interface

最后,当在诸如FR及ATM这样的NBMA网络上配置OSPFv3时是在指定接口下使用接口配置命令ipv6 ospf neighbor [link local address]来指定邻居声明语句the neighbor statements。而在OSPFv2中这些语句会是在路由器配置模式中配置的

注意: 当在NBMA传输技术上配置OSPFv3时应该使用本地链路地址来创建出静态FR地图声明语句static Frame Relay map statements。这是因为正是使用本地链路地址而不是全球单播地址建立邻接关系。比如为给一个FR部署创建一幅静态FR地图语句并指定一台OSPF邻居路由器就要在该路由器上应用下面的配置在ICND2部分将对FR进行讲解

R1(config)#ipv6 unicast-routing
R1(config)#ipv6 router ospf 1
R1(config-rtr)#router-id 1.1.1.1
R1(config-rtr)#exit
R1(config)#interface Serial0/0
R1(config-if)#frame-relay map ipv6 FE80::205:5EFF:FE6E:5C80 111 broadcast
R1(config-if)#ipv6 ospf neighbor FE80::205:5EFF:FE6E:5C80
R1(config-if)#exit

思科IOS软件中OSPFv3的配置和验证

Configuring and Verifying OSPFv3 in Cisco IOS Software

接着上一部分上部分强调了OSPFv2和OSPFv3之间配置差异那么这部分就要过一遍那些在思科IOS软件中开启和验证OSPFv3功能及路由的步骤。在思科IOS软件中需要依序采行下面这些步骤来开启OSPFv3路由。

  1. 使用全局配置命令ipv6 unicast-routing来全局性地开启IPv6路由。在思科IOS软件中IPv6路由默认是关闭的。
  2. 使用全局配置命令ipv6 router ospf [process ID], 配置一或多个的OSPFv3进程。
  3. 如路由器上没有配置IPv4地址的运行接口就要使用路由器配置命令router configuration commandrouter-id [IPv4 Address] 手动配置OSPFv3路由器IDRouter IDRID
  4. 在需要的接口上on the desired interfaces使用接口配置命令ipv6 addressipv6 enable, 对这些接口开启IPv6。
  5. 使用接口配置命令ipv6 ospf [process ID] area [area ID]在接口下开启一或更多的OSPFv3进程。

第一个基础多区域OSPFv3配置示例建立在下图13.1所演示的拓扑之上。

在思科IOS软件中配置基本多区域OSPFv3

图13.1 -- 在思科IOS软件中配置基本多区域OSPFv3

依之间所讲到的顺序配置步骤,照下面这样,在路由器R1上就会配置上OSPFv3。

R1(config)#ipv6 unicast-routing
R1(config)#ipv6 router ospf 1
R1(config-rtr)#router-id 1.1.1.1
R1(config-rtr)#exit
R1(config)#interface FastEthernet0/0
R1(config-if)#ipv6 address 3fff:1234:abcd:1::1/64
R1(config-if)#ipv6 enable
R1(config-if)#ipv6 ospf 1 Area 0
R1(config-if)#exit

而按照同样顺序的步骤,像下面这样在路由器R3上配置好OSPFv3路由。

R3(config)#ipv6 unicast-routing
R3(config)#ipv6 router ospf 3
R3(config-rtr)#router-id 3.3.3.3
R3(config-rtr)#exit
R3(config)#interface FastEthernet0/0
R3(config-if)#ipv6 address 3fff:1234:abcd:1::3/64
R3(config-if)#ipv6 enableR3(config-if)#ipv6 ospf 3 Area 0
R3(config-if)#exit
R3(config)#interface Loopback0
R3(config-if)#ipv6 address 3fff:1234:abcd:2::3/128
R3(config-if)#ipv6 address 3fff:1234:abcd:3::3/128
R3(config-if)#ipv6 enable
R3(config-if)#ipv6 ospf 3 Area 1
R3(config-if)#exit

依据上述两台路由器上OSPFv3的配置就可以使用命令show ipv6 ospf neighbor, 来检查OSPFv3的邻接状态R1上如下所示。

R1#show ipv6 ospf neighbor
Neighbor	ID Pri	State 		Dead Time	Interface ID 	Interface
3.3.3.3		     1	FULL/BDR 	00:00:36 	4 				FastEthernet0/0

通过将[detail]关键字追加到本命令的后面,还可以查看详细的邻居信息。

R1#show ipv6 ospf neighbor detail
Neighbor 3.3.3.3
	In the area 0 via interface FastEthernet0/0
	Neighbor: interface-id 4, link-local address FE80::213:19FF:FE86:A20
	Neighbor priority is 1, State is FULL, 6 state changes
	DR is 1.1.1.1 BDR is 3.3.3.3
	Options is 0x000013 in Hello (V6-Bit E-Bit R-bit )
	Options is 0x000013 in DBD (V6-Bit E-Bit R-bit )
	Dead timer due in 00:00:39
	Neighbor is up for 00:06:40
	Index 1/1/1, retransmission queue length 0, number of retransmission 0
	First 0x0(0)/0x0(0)/0x0(0) Next 0x0(0)/0x0(0)/0x0(0)
	Last retransmission scan length is 0, maximum is 0
	Last retransmission scan time is 0 msec, maximum is 0 msec

在上面的输出中注意真实的邻居地址是本地链路地址而不是所配置的全球IPv6单播地址。

第13天问题

  1. Both OSPFv2 and OSPFv3 can run on the same router. True or false?
  2. OSPFv2 and OSPFv3 use different LSA flooding and aging mechanisms. True or false?
  3. Which is the equivalent of 224.0.0.5 in the IPv6 world?
  4. As is required for EIGRPv6, the router ID for OSPFv3 must be either specified manually or configured as an operational interface with an IPv4 address. True or false?
  5. Which command would you use to enable the OSPFv3 routing protocol?
  6. Which command would you use to specify an OSPFv3 neighbour over an NBMA interface?
  7. Which command would you use to see the OSPFv3 LSDB?
  8. A significant difference between OSPFv2 and OSPFv3 is that the OSPFv3 Hello packet now contains no address information at all but includes an interface ID, which the originating router has assigned to uniquely identify its interface to the link. True or false?

第13天答案

  1. True.
  2. False.
  3. FF02::5.
  4. True.
  5. The ipv6 router ospf <id>
  6. The ipv6 ospf neighbor
  7. The show ipv6 ospf database
  8. True.

第13天实验

OSPFv3基础实验

重复第12天的实验场景两台路由器直连各自又有环回接口但以配置IPv6地址并在设备间使用OSPFv3对这些地址进行通告取代配置IPv4的OSPF。

  • 给直连接口分配上IPv6地址2001:100::1/642001:100::2/64
  • ping测试直接连通性
  • 在两台路由器上分别配置一个环回接口,并从两个不同范围分配地址(2002::1/1282002::2/128
  • 配置标准的OSPFv3 1号进程并将所有本地网络在0号区域进行通告。同时为各设备配置一个路由器ID。

R1:

ipv6 router ospf 1
router-id 1.1.1.1
int fa0/0(或特定接口编号)
ipv6 ospf 1 area 0
int lo0(或特定接口编号)
ipv6 ospf 1 area 0

R2:

ipv6 router ospf 1
router-id 2.2.2.2
int fa0/0(或特定接口编号)
ipv6 ospf 1 area 0
int lo0(或特定接口编号)
ipv6 ospf 1 area 0
  • R1R2的IPv6环回接口发出ping操作,以测试连通性
  • 执行一个show ipv6 route命令来验证有通过OSPFv3接收到路由
  • 执行一个show ipv6 protocols命令来验证有配置OSPFv3且在设备上是活动的
  • 执行命令show ipv6 ospf interfaceshow ipv6 ospf interface brief检查接口特定于OSPF的那些参数
  • 在两台路由器上(直连接口)修改Hello包和死亡计时器: ipv6 ospf helloipv6 ospf dead
  • 执行一下show ipv6 ospf 1命令,来查看路由进程参数