前言:众所周知,32位的IPv4地址已经分配完了,新一代的网络协议--IPv6采用128位的地址长度拥有更大的地址空间,如此大的地址空间,可以给地球上的每粒沙子分配一个IPv6地址。最近两年,各大公司的IPv6改造工程紧锣密鼓的开展着,所以今天带大家来了解一下IPv6环境下的动态路由协议。
概 念
OSPFV3是对原来的IPv4网络中OSPF协议的重新定义,因为OSPF协议本身只是专门为IPV4环境设计的,为了适应IPV6环境,IETF在保留了OSPFv2优点的基础上针对IPv6网络修改形成了OSPFv3。OSPFv3主要用于在IPv6网络中提供路由功能,是IPv6网络中路由技术的主流协议。
OSPFv3在协议设计思路和工作机制与OSPFv2基本一致:
1. 报文类型相同:包含Hello、DD、LSR、LSU、LSAck五种类型的报文;
2. 区域划分相同;
3. LSA泛洪和同步机制相同:为了保证LSDB内容的正确性,需要保证LSA的可靠泛洪和同步;
4. 路由计算方法相同:采用最短路径优先算法计算路由。
5. 网络类型相同:支持广播、NBMA、P2MP和P2P四种网络类型;
6. 邻居发现和邻接关系形成机制相同;
7. DR选举机制相同。
OSPFv3与OSPFv2的不同点:
为了支持在IPv6环境中运行,指导IPv6报文的转发,OSPFv3对OSPFv2做出了一些必要的改进,使得OSPFv3可以独立于网络层协议,而且只要稍加扩展,就可以适应各种协议,为未来可能的扩展预留了充分的可能。
1. 基于链路的运行
OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一网段。
OSPFv3的实现是基于链路,一个链路可以划分为多个子网,节点即使不在同一个子网内,只要在同一链路上就可以直接通话。
2. 使用链路本地地址
OSPFv3的路由器使用链路本地地址作为发送报文的源地址。一个路由器可以学习到这个链路上相连的所有其他路由器的链路本地地址,并使用这些链路本地地址作为下一跳来转发报文,但是在虚链路上,必须使用global地址作为OSPFV3协议报文的源地址。由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在Link LSA中。
3. 链路支持多实例复用
在接口下启用OSPFv3时可以加上instance参数(默认为0)划分实例,相同实例之间建立邻居关系,不同实例之间互不干扰(路由还是会择优),相当于两个独立的OSPFv3进程,OSPF报文头部加入了实例字段,如果收到的实例字段和本地实例字段不同,则丢弃该报文。
4. 通过 Router ID 唯一标识邻居(OSPFv2可以使用IP地址标识)
5. 认证的变化(IPv6自带认证字段,OSPF可以使用ipsec来认证,OSPFv3本身不再提供认证功能)
6. Stub 区域的支持
由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定,只有当未知类型LSA的泛洪范围是区域或者链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。
7. 报文的不同
8. Option 字段的不同
Options新增R位和V位,R位用来标识设备是否具备转发能力的路由器。V位标识该路由器或者链路是否参加路由计算。
9. LSA 的类型和内容不同
OSPFv3新增了2种LSA,分别是八类LSA和九类LSA,实现了IP地址与拓扑的分离,一二类携带拓扑信息,八九类携带路由信息,增强了扩展性,加快了收敛。
实验需求
下面我们通过一个简单的实验来了解一下OSPFv3的配置方法:
(1) 实验拓扑及需求
实验步骤
a, 配置环回口IPv6地址
R1:
R1(config)#int lo0
R1(config-if)#ipv6 address 2011::1/128
R2:
R2(config)#int lo0
R2(config-if)#ipv6 add 2022::1/128
R3:
R3(config)#int lo0
R3(config-if)#ipv6 add 2033::1/128
b, 直连接口使能Ipv6 enable
R1:
R1(config)#int e0/0
R1(config-if)#ipv6 enable
R1(config-if)#no shutdown
R2:
R2(config)#int range e0/0-1
R2(config-if-range)#ipv6 enable
R2(config-if-range)#no shutdown
R3:
R3(config)#int e0/0
R3(config-if)#ipv6 enable
R3(config-if)#no shutdown
此时,在三台路由器上可以看到接口Ipv6地址信息:
所以端口只要开启ipv6 enable,就能自动生成FE80的local地址,这个地址是通过EUI64将MAC地址转化而来的。
c,路由器配置OSPFv3
R1:
R1(config)#ipv6 unicast-routing
(开启IPV6路由功能)
R1(config)#ipv6 router ospf 1
(配置OSPFv3,进程号为1)
R1(config-rtr)#router-id 1.1.1.1
(手动配置R-ID)
R1(config)#int lo0
R1(config-if)#ipv6 ospf 1 ar 0
(在接口下宣告进OSPFv3)
R1(config)#int e0/0
R1(config-if)#ipv6 ospf 1 ar 0
(在接口下宣告进OSPFv3)
R2:
R2(config)#ipv6 unicast-routing
(开启IPV6路由功能)
R2(config)#ipv6 router ospf 1
(配置OSPFv3,进程号为1)
R2(config-rtr)#router-id 2.2.2.2
(手动配置R-ID)
R2(config)#int lo0
R2(config-if)#ipv6 ospf 1 ar 0
(在接口下宣告进OSPFv3)
R2(config)#int e0/0
R2(config-if)#ipv6 ospf 1 ar 0
(在接口下宣告进OSPFv3)
R2(config)#int e0/1
R2(config-if)#ipv6 ospf 1 ar 1
(在接口下宣告进OSPFv3)
R3:
R3(config)#ipv6 unicast-routing
(开启IPV6路由功能)
R3(config)#ipv6 router ospf 1
(配置OSPFv3,进程号为1)
R3(config-rtr)#router-id 3.3.3.3
(手动配置R-ID)
R3(config)#int lo0
R3(config-if)#ipv6 ospf 1 ar 1
(在接口下宣告进OSPFv3)
R3(config)#int e0/0
R3(config-if)#ipv6 ospf 1 ar 1
(在接口下宣告进OSPFv3)
R1上查看ipv6的OSPFV3邻居表和路由表:
此时在R1上测试环回口连通性:
d, 修改R1-R2的默认网络类型
以太网接口默认类型位Broadcast
R1:
R1(config)#int e0/0
R1(config-if)#ipv6 ospf network point-to-point
(接口下修改网络类型)
R2:
R2(config)#int e0/0
R2(config-if)#ipv6 ospf network point-to-point
(接口下修改网络类型)
e,重分布静态
R1:
R1(config)#ipv6 route 2111::/64 null 0
(伪造静态路由)
R1(config)#ipv6 router ospf 1
R1(config-rtr)#redistribute static
(进程下重分布静态)
此时在R3上查看OSPFv3路由表会发现能学到2111::/64的路由,并且是OE2的:
f,修改区域类型
R2:
R2(config)#ipv6 router ospf 1
R2(config-rtr)#area 1 nssa no-summary
(进程下修改区域类型)
R3:
R3(config)#ipv6 router ospf 1
R3(config-rtr)#area 1 nssa
(进程下修改区域类型)
此时去R3上查看OSPFv3路由表:
g,下发默认路由
R1:
R1(config)#ipv6 router ospf 1
R1(config-rtr)#default-information originate always
(进程下下发默认路由)
此时去R2上查看OSPFv3路由表:
h, OSPFv3实例
OSPFv3实例能够导致同一MA网络中的4台路由器两两建立;邻接关系,而不需要四台都建立邻接关系,扩展性更强。
配置方法:
int e0/1
ipv6 ospf 1 area 0 instance 1
(接口下配置,相同实例号的路由器接口才能建立邻接关系)
i,OSPFv3验证
R2:
R2(config)#int e0/1
R2(config)#ipv6 ospf authentication ipsec spi 256 md5 12345678901234567890123456789012
(接口下配置验证)
R3:
R3(config)#int e0/0
R2(config)#ipv6 ospf authentication ipsec spi 256 md5 12345678901234567890123456789012
(接口下配置验证)
此时能在R3上看到加解密。
j,域间和域外汇总
域间汇总,在R2上针对2033::1/128路由进行域间汇总:
R2:
R2(config)#ipv6 router ospf 1
R2(config-rtr)#area 1 range 2033::/64(进程下进行域间汇总)
域外汇总:在R3上创建一个直连口2333::1/128路由,重分布进OSPFv3,并进行域外汇总:
R3:
R3(config)#int lo1
R3(config-if)#ipv6 add 2333::1/128
(创建直连口)
R3(config)#route-map C
R3(config-route-map)#match interface lo1
(route-map只匹配lo1)
R3(config)#ipv6 router ospf 1
R3(config-rtr)#redistribute connected route-map C
(重分布直连并且挂上route-map)
R3(config-rtr)#summary-prefix 2333::/64
(进程下进行域外汇总)
此时能在R3上看到加解密。
k,OSPFv3虚链路
OSPFv3的虚链路做法和OSPFv2是一样的
ipv6 router ospf 1
area 1 virtual-link 3.3.3.3
(进程下做,要注意virtual-link后面接的是R-ID)