[华三] IPv6技术白皮书(V1.00)

时间:2023-03-09 16:10:43
[华三] IPv6技术白皮书(V1.00)

IPv6技术白皮书(V1.00)

http://www.h3c.com/cn/d_200802/605649_30003_0.htm

H3C S7500E IPv6技术白皮书

关键词:IPv6,隧道

摘    要:本文介绍了IPv6的产生背景、技术要点和组网策略。

缩略语:

缩略语

英文全名

中文解释

ND

Neighbour Discovery Protocol

邻居发现协议

PMTUD

Path MTU Discovery Protocol

路径MTU发现协议

ISATAP

Intra-Site Automatic Tunnel Addressing Protocol

站点内自动隧道地址协议

Teredo

Tunneling IPv6 over UDP through NATs

IPv6 使用IPv4 UDP隧道穿越NAT

RIPng

Route Information Protocol Next Generation

下一代RIP协议

OSPFv3

Open Short Path First Prtocol Version 3

开放最短路径优先协议版本3

BGP4+

Boarder Gateway Protocol 4+

边际网关协议4+

目  录

1 IPv6概述

1.1 IPv6产生的背景

1.2 IPv6的优点

2 IPv6基本概念

2.1 IPv6报文格式

2.1.1 IPv6报文基本头格式

2.1.2 IPv6报文扩展头格式

2.1.3 IPv6 ICMP报文格式

2.2 IPv6地址结构定义

2.2.1 IPv6地址表示

2.2.2 IPv6地址前缀表示

2.3 IPv6地址分类

2.3.1 IPv6单播地址

2.3.2 IPv6泛播地址

2.3.3 IPv6多播地址

2.3.4 嵌入IPv4地址的IPv6地址

2.3.5 IPv6中特殊的地址

2.3.6 节点和路由器必须支持的IPv6地址

2.4 IPv6地址分配

2.4.1 全球单播地址空间分配

2.4.2 IPv6实验网络地址分配(6BONE)

3 IPv6基本功能

3.1 IPv6邻居发现协议

3.1.1 邻居发现

3.1.2 路由器发现

3.1.3 IPv6无状态地址自动配置

3.1.4 重定向

3.2 IPv6路径MTU发现协议

3.3 IPv6域名解析

4 IPv4向IPv6过渡技术

4.1 IPv6手工配置隧道

4.2 6to4自动隧道

4.3 ISATAP隧道

5 IPv6单播路由技术

5.1 RIPng

5.2 OSPFv3

5.3 ISISv6

5.4 BGP4+

5.5 S7500E IPv6单播路由规格

6 IPv6部署策略

7 S7500E典型组网应用介绍

7.1 核心层应用

7.2 汇聚层应用

7.3 数据中心互联

7.4 IPv6过渡应用

8 相关协议标准

1  IPv6概述

1.1  IPv6产生的背景

IPv6是IPv4的未来替代协议。

IPv4协议是目前广泛部署的因特网协议,从1981年最初定义(RFC791)到现在已经有20多年的时间。IPv4协议简单、易于实现、互操作性好,IPv4网络规模也从最初的单个网络扩展为全球范围的众多网络。

然而,随着因特网的迅猛发展,IPv4设计的不足也日益明显,主要有以下几点:

(1)        IPv4地址空间不足

IPv4地址采用32比特标识,理论上能够提供的地址数量是43亿。但由于地址分配的原因,实际可使用的数量不到43亿。另外,IPv4地址的分配也很不均衡:美国占全球地址空间的一半左右;欧洲相对匮乏;亚太地区则更加匮乏(有些国家分配的地址还不到256个)。随着因特网发展,IPv4地址空间不足问题日益严重。

(2)        骨干路由器维护的路由表表项数量过大

由于IPv4发展初期的分配规划的问题,造成许多IPv4地址块分配不连续,不能有效聚合路由。针对这一问题,采用CIDR以及回收并再分配IPv4地址,有效抑制了全球IPv4 BGP路由表的线性增长。但目前全球IPv4 BGP路由表仍在不断增长,已经达到17万多条,经过CIDR聚合以后的BGP也将近10万条。日益庞大的路由表耗用内存较多,对设备成本和转发效率都有一定的影响,这一问题促使设备制造商不断升级其路由器产品,提高其路由寻址和转发的性能。

(3)        不易进行自动配置和重新编址

由于IPv4地址只有32比特,地址分配也不均衡,因此在进行网络扩容或重新部署时,常常需要重新分配IP地址,因此需要能够进行自动配置和重新编址以减少维护工作量。

(4)        不能解决日益突出的安全问题

随着因特网的发展,安全问题越来越突出,安全问题也是促使新的IP协议出现的一大原因。因为IPv4协议制定时并没有仔细针对安全性进行设计,固有的框架结构不能支持端到端安全。

针对IPv4地址短缺问题,也出现了多种解决方案。比较有代表性的是CIDR和NAT。这两种方案都一定程度的缓解了IP地址紧张问题,但是无法从根本上解决IP地址紧缺。

1. CIDR

CIDR是无类域间路由的简称。IPv4设计之初是层次化的结构,分为A类(掩码长度为8)、B类(掩码长度为16)、C类地址(掩码长度为24),地址利用效率不高。CIDR支持任意长度的地址掩码,使ISP能够按需分配地址空间,提高了地址空间利用率。

CIDR的出现大大缓解了地址紧张问题,但由于各种网络设备、主机的不断出现,对IP地址的需求也越来越多,CIDR还是无法解决IPv4地址空间过小问题(32比特)。

2. NAT

NAT也是针对IPv4地址短缺问题提出的一种解决方案。其基本原理是在网络内部使用私有地址,在NAT设备处完成私有地址和外部公有地址的翻译,达到减少公有地址使用的目的。

NAT也是一种广泛部署的地址短缺问题解决方案。但NAT有以下缺点:

(1)        NAT破坏的IP的端到端模型

如果没有NAT,则使用IPv4只需要连接的端点负责维护连接,下层不需要处理任何连接,整个网络模型清晰、简洁。使用NAT则NAT设备需要关心每条连接的状态,增加了网络复杂性。

(2)        NAT存在单点失效问题

NAT必须进行地址和端口翻译、保存连接状态,当NAT设备失效或NAT设备附近链路失效时,由于NAT中维护了状态,因此很难进行快速重路由,降低了网络的可靠性。

(3)        非NAT友好应用支持问题

对于非NAT友好的应用,仅仅进行地址和端口号转换是不够的。这些应用中所有和地址或端口号或安全关联等相关的数据都必须进行NAT转换才能正常运行。因此每当新出现这样的应用时都需要升级NAT设备。

(4)        不支持端到端安全

NAT需要对IP报文头进行修改,有时甚至需要修改应用相关数据。端到端安全中IP头的完整性通过加密函保证,报文的发出者负责保护报文头的完整性,在接收端检查收到报文的完整性,在转发过程中任何对报文头的修改都会破坏完整性检查。因此在部署NAT的情况下无法支持端到端的安全。

(5)        网络扩容或重新部署困难

不同的网络有可能使用相同的私有地址空间,如192.168.0.1/24,当这些网络合并或连在一起时,就会出现地址空间冲突。这时就需要重新编址或使用二次NAT来解决问题,但这些解决方案增加了网络管理的复杂性。

(6)        NAT不能解决所有地址短缺问题

NAT采用内部私有地址和外部地址(或端口)进行映射的方法解决地址短缺问题,但这种解决方法只有在内部地址和外部地址比例很大时才能有效节约地址。不过许多服务器部署在内部网络中,同一协议使用的外部地址不能复用于同一端口。例如:两个  使用相同端口(如HTTP)的内部服务器。

从上可见,推动IPv6发展的主要问题是IPv4地址空间即将耗尽。IPv6也提供了一些新的特性和改善措施:

l              设计回归简洁、透明,提高实现效率,减少复杂性

l              为新出现的移动业务提供支持

l              重新引入端到端安全和QoS

1.2  IPv6的优点

IPv6具有如下优点:

1. 128位地址结构,提供充足的地址空间

近乎无限的IP地址空间是部署IPv6网络最大的优势。和IPv4相比,IPv6的地址比特数是IPv4的4倍(从32位扩充到128位)。128位地址可包含约43亿×43亿×43亿×43亿个地址节点,足已满足任何可预计的地址空间分配(IPv4理论上能够提供的上限是43亿个,而IPv6理论上地址空间的上限是43亿×43亿×43亿×43亿)。

2. 层次化的网络结构,提高了路由效率

IPv6地址长度为128位,可提供远大于IPv4的地址空间和网络前缀,因此可以方便地进行网络的层次化部署。同一组织机构在其网络中可以只使用一个前缀。对于ISP,则可获得更大的地址空间。这样ISP可以把所有客户聚合形成一个前缀并发布出去。分层聚合使全局路由表项数量很少,转发效率更高。另外,由于地址空间巨大,同一客户使用多个ISP接入时可以同时使用不同的前缀,这样不会对全局路由表的聚合造成影响。

3. IPv6报文头简洁,灵活,效率更高,易于扩展

图1 IPv6和IPv4报文头格式对比

(1)        IPv6中废弃的域

l              IHL域

IPv4中IHL域用于标识IPv4报文头长度。由于IPv4报文头中存在选项域,因此其报文头长度域是必须的。但由于IHL域只有4比特(最小值为5,以4字节为单位),报文头的选项的扩展能力有限。IPv6的报文头由基本头和选项头组成。基本头长度固定(40字节),因此IHL域在IPv6中废除。

l              Identification域

IPv4中的Identification域由发送方赋值,用于标识同一组分片报文,以帮助进行分片报文重组。IPv6分片报文是通过扩展头实现的,此域在IPv6基本头中不再需要。

l              Flags域

IPv4中的Flags域用于标记报文是否分片以及是否为最后一个分片。IPv6分片报文是通过选项头实现的,此域在IPv6基本头中不再需要。

l              Fragment Offset域

IPv4中的Fragment Offset域用来标记分片报文在未分片前原始报文中的位置。IPv6分片报文是通过选项头实现的,此域在IPv6基本头中不再需要。

l              Header Checksum域

IPv4中的Header Checksum域用于检验IPv4报文头是否有错误。由于目前网络中链路层一般可靠性比较高且都有校验,同时传输层也有自己的报文头校验计算,因此此域有些多余。而且此域计算包括TTL,在每个转发路由器都需要重新计算,对效率也有影响。因此IPv6中废除了Header Checksum域(但UDP报文头中的校验和计算改为必须的)。

l              Options域

IPv4中Options域是为支持选项使用的,长度可变,但受限于IPv4报文头长度,扩展能力有限。IPv6中使用选项头实现此功能,因此不再需要此域。

l              Padding域

IPv4中的Padding域是为了保证报文头结束于32比特边界,便于硬件存取。IPv6中基本头长度固定,因此不再需要此域。

(2)        IPv6新增加的域

l              Flow Label域

IPv6报文头中新增了流标签域,源节点可以使用这个域标识特定的数据流。流标签由源节点分配,通过流标签、源地址、目的地址可以唯一标识一条流。使用流标签而不是传统的五元组方式(源地址、目的地址、源端口、目的端口和传输层协议号)的最大好处有两点:1、流标签可以和任意的流关联,需要标识不同类型的流(可以是非五元组)时,无需对流标签做改动;2、流标签在IPv6基本头中,使用IPSec时此域对转发路由器可见,因此转发路由器可以在使用IPv6报文IPSec的情况下仍然可以通过三元组(流标签、源地址、目的地址)针对特定的流进行QoS处理。

IPv6和IPv4相比,去除了IHL、Identification、Flags、Fragment Offset、Header Checksum、Options、Paddiing域,只增了流标签域,因此IPv6报文头处理比IPv4大大简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构就能做到,理论上可以无限扩展,体现了优异的灵活性。关于扩展头的详细介绍请参见2.1.2  IPv6报文扩展头格式。

4. 支持自动配置,即插即用

IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性。使用自动配置,用户设备(如移动电话、无线设备)可以即插即用而无需手工配置或使用专用服务器(如DHCP Server)。本地链路上的路由器在路由器通告报文中发送网络相关信息(如本地链路的前缀、缺省路由等),主机收到后会根据本地接口自身的接口标识符组合成主机地址,从而完成自动配置。

5. 支持端到端安全

IPv4中也支持IP层安全特性(IPSec),但只是通过选项支持,实际部署中多数节点都不支持。IPSec是IPv6协议基本定义中的一部分,部署的任何节点都必须支持。

因此,在IPv6中支持端到端安全要容易的多。IPv6中支持为IP定义的安全目标:保密性(只有预期接收者能读数据)、完整性(数据在传输过程中没有被篡改)、验证性(发送数据的实体和所宣称的实体完全一致)。

6. 支持移动特性

IPv6协议规定必须支持移动特性,任何IPv6节点都可以使用移动IP功能。

和移动IPv4相比,移动IPv6使用邻居发现功能可直接实现外地网络的发现并得到转交地址,而不必使用外地代理。同时,利用路由扩展头和目的地址扩展头移动节点和对等节点之间可以直接通信,解决了移动IPv4的三角路由、源地址过滤问题,移动通信处理效率更高且对应用层透明。

7. 新增流标签功能,更利于支持QoS

IPv6报文头中新增了流标签域,源节点可以使用这个域标识特定的数据流。转发路由器和目的节点都可根据此标签域进行特殊处理,如视频会议和VOIP等数据流。IPv6源节点使用IPv6报文头中的20比特流标签域来标识一条流。值为0的流标签标识报文不属于任何流。一条流由源地址、目的地址和流标签三个域唯一决定。源节点设定的流标签值在传输中不能改变。如果IPv6节点没有提供针对流的特殊处理,则必须在接收或转发时忽略此域。源节点必须保证当前使用的流标签不被重用,在一条流中止120秒内,相应的流标签不被分配出去,源节点可针对不同的流设置长于120秒的不被分配时间。为避免流标签的意外重用,源节点应按一定的顺序(如顺序递增或伪随机)分配新的流标签,并在系统重起时选定不同的初始化值。为支持针对特定流的处理,在源和目的节点路径上全部节点或部分节点必须记录流状态。

目前关于如何在源节点和其它节点之间协商标签还没有相关标准。

2  IPv6基本概念

2.1  IPv6报文格式

2.1.1  IPv6报文基本头格式

图2 IPv6基本头格式定义

l              Version

4比特,值为6表示IPv6报文

l              Traffic Class

8比特,类似于IPv4中的TOS域

l              Flow Label

20比特。IPv6中新增域。流标签可用来标记特定流的报文,以便在网络层区分不同的报文。转发路径上的路由器可以根据流标签来区分流并进行处理。由于流标签在IPv6报文头中携带,转发路由器可以不必根据报文内容来识别不同的流,目的节点也同样可以根据流标签识别流,同时由于流标签在报文头中,因此使用IPSec后仍然可以根据流标签进行QoS处理。

l              Payload Length

16比特。以字节为单位的IPv6载荷长度,也就是IPv6报文基本头以后部分的长度(包括所有扩展头部分)。

l              Next Header

8比特。用来标识当前头(基本头或扩展头)后下一个头的类型。此域内定义的类型与IPv4中的协议域值相同。Pv6定义的扩展头由基本头或扩展头中的扩展头域链接成一条链。这一机制下处理扩展头更高效,转发路由器只处理必须处理的选项头,提高了转发效率。

l              Hop Limit

8比特。和IPv4中的TTL字段类似。每个转发此报文的节点把此域值减1,如果此域值减到0则丢弃。

l              Source Address

128比特。报文的源地址。

l              Destination Address

128比特。报文的目的地址

2.1.2  IPv6报文扩展头格式

图3 IPv6扩展头格式

IPv6选项字段是通过形成链式结构的扩展头支持的。IPv6基本头后面可以有0到多个扩展头。

IPv6扩展头排列顺序如下:

(1)        逐跳选项头

值为0(在IPv6基本头中定义)。此选项头被转发路径所有节点处理。目前在路由告警(RSVP和MLDv1)与Jumbo帧处理中使用了逐跳选项头。路由告警需要通知到转发路径中所有节点,需要使用逐跳选项头。Jumbo帧是长度超过65535的报文,传输这种报文需要转发路径中所有节点都能正常处理,因此也需要使用逐跳选项头功能。

(2)        目的选项头

值为60。只可能出现在两个位置:

l              路由头前。这时此选项头被目的节点和路由头中指定的节点处理。

l              上层头前(任何ESP选项后)。此时只能被目的节点处理。

Mobile IPv6中使用了目的选项头。Mobile IPv6中新增加一种类型的目的选项头(家乡地址选项)。家乡地址选项由目的选项头携带,用于移动节点离开家乡后通知接收节点此移动节点对应的家乡地址。接收节点收到带有家乡地址选项的报文后,会把家乡地址选项中源地址(移动节点的家乡地址)和报文中源地址(移动节点的转交地址)交换,这样上层协议始终认为是在和移动节点的家乡地址在通信,实现了移动漫游功能。

(3)        路由头

值为43。用于源路由选项和Mobile IPv6。

(4)        分片头

值为44。此选项头在源节点发送的报文超过Path MTU(源和目的之间传输路径的MTU),需要对报文进行分片时使用。

(5)        验证头(AH头)

值为51。用于IPSec,提供报文验证、完整性检查。定义和IPv4中相同。

(6)        封装安全载荷头(ESP头)

值为50。用于IPSec,提供报文验证、完整性检查和加密。定义和IPv4中相同。

(7)        上层头

上层协议头,如TCP/UDP/ICMP等。

注意:

l              目的选项头最多出现两次(一次在路由头前,一次在上层协议头前),其它选项头最多出现一次。

l              IPv6节点必须能够处理选项头(逐跳选项头除外,它固定只能进随基本头之后)的任意出现位置和任意出现次数,以保证互通性。

2.1.3  IPv6 ICMP报文格式

图4 ICMP报文格式

ICMPv6功能与ICMPv4类似。ICMPv6用于IPv6节点报告报文处理过程中发生的错误以及完成其它层的功能,例如诊断功能(ICMPv6  “ping”)。ICMPv6是IPv6的一部分,每个IPv6节点都必须实现。

ICMPv6报文主要分两类:

(1)        差错报文

l              目的地不可达报文

l              报文长度超大报文(用于路径MTU发现协议)

l              传输超时报文(相当于IPv4 TTL等于0时触发的ICMP报文)

l              报文参数错误报文

(2)        信息报文

l              回显请求报文

l              回显应答报文

2.2  IPv6地址结构定义

2.2.1  IPv6地址表示

IPv6地址包括128比特,由使用由冒号分隔的16比特的十六进制数表示。16比特的十六进制数对大小写不敏感。如:

FEDC:BA98:7654:3210:FEDC:BA98:7654:3210。

另外,对于中间比特连续为0的情况,还提供了简易表示方法―――把连续出现的0省略掉,用::代替(注意::只能出现一次,否则不能确定到底有多少省略的0),如下所示:

1080:0:0:0:8:800:200C:417A    等价于 1080::8:800:200C:417A

FF01:0:0:0:0:0:0:101          等价于 FF01::101

0:0:0:0:0:0:0:1               等价于 ::1

0:0:0:0:0:0:0:0               等价于 ::

2.2.2  IPv6地址前缀表示

和IPv4类似,IPv6的子网前缀和链路关联。多个子网前缀可分配给同一链路。IPv6地址前缀表示如下:ipv6-address/prefix-length。其中:

l              ipv6-address:16进制表示的128比特地址

l              prefix-length:10进制表示的地址前缀长度

S7500E IPv6地址前缀表示对于75产品,由于芯片限制,在配置IPv6地址时其前缀长度不能大于64。

2.3  IPv6地址分类

RFC2373中定义了多种IPv6地址类型:

Allocation                            Prefix         Fraction of

(binary)       Address Space

-----------------------------------   --------       -------------

Reserved                              0000 0000      1/256

Unassigned                            0000 0001      1/256

Reserved for NSAP Allocation          0000 001       1/128

Reserved for IPX Allocation           0000 010       1/128

Unassigned                            0000 011       1/128

Unassigned                            0000 1         1/32

Unassigned                            0001           1/16

Aggregatable Global Unicast Addresses 001            1/8

Unassigned                            010            1/8

Unassigned                            011            1/8

Unassigned                            100            1/8

Unassigned                            101            1/8

Unassigned                            110            1/8

Unassigned                            1110           1/16

Unassigned                            1111 0         1/32

Unassigned                            1111 10        1/64

Unassigned                            1111 110       1/128

Unassigned                            1111 1110 0    1/512

Link-Local Unicast Addresses          1111 1110 10   1/1024

Site-Local Unicast Addresses          1111 1110 11   1/1024

Multicast Addresses                   1111 1111      1/256

注意:

1、“未指定的地址”(全0)、环回地址(::1)和嵌入IPv4地址的IPv6地址(“嵌入IPv4地址的IPv6地址”见2.3.4节说明)从0000 0000格式前缀中分配。

2、除多播地址(格式前缀1111 1111)外,格式前缀从001到111的地址都必须有64比特的EUI-64格式的接口标识符。

IPv6地址分为单播地址、泛播地址、多播地址。和IPv4相比,取消了广播地址类型,以更丰富的多播地址代替,同时增加了泛播地址类型。

2.3.1  IPv6单播地址

IPv6单播地址标识了一个接口,由于每个接口属于一个节点,因此每个节点的任何接口上的单播地址都可以标识这个节点。发往发往单播地址的报文,由此地址标识的接口接收。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、泛播和多播)或范围的IPv6地址。

所有格式前缀不是多播格式前缀(11111111)的IPv6地址都是IPv6单播格式(泛播和IPv6单播格式相同)。IPv6单播地址和IPv4单播地址一样可聚合。目前定义了多种IPv6单播地址格式,包括可聚合全球单播地址、NSAP地址、IPX层次地址、站点本地地址、链路本地地址和具有IPv4能力的主机地址(嵌入IPv4地址的IPv6地址)。目前广泛使用的是可聚合全球单播地址、站点本地地址和链路本地地址。

图5 IPv6单播地址格式

IPv6单播地址由子网前缀和接口ID两部分组成。子网前缀由IANA、ISP和各组织分配。

接口标识符目前定义为64比特,可以由本地链路标识生成或采用随机算法生成以保证唯一性。

2.3.2  IPv6泛播地址

IPv6泛播地址格式和IPv6单播地址相同,用来标识一组接口的地址。一般这些接口属于不同的节点。发往泛播地址的报文被送到这组接口中与其最近的接口(由使用的路由协议判断哪个是最近的)。

IPv6泛播地址的用途之一是用来标识属于同一提供因特网服务的组织的一组路由器。这些地址可在IPv6路由头中作为中间转发路由器,以使报文能够通过特定一组路由器进行转发。另一个用途就是标识特定子网的一组路由器,报文只要被其中一个路由器接收即可。

其中有些泛播地址是已经定义好的,子网路由器泛播地址。

图6 子网路由器泛播地址格式

子网路由器器泛播地址中“subnet prefix”域用来标识特定链路。发送到子网路由器泛播地址的报文会被送到子网中的一个路由器。所有路由器都必须支持子网泛播地址

子网路由器泛播地址用于节点需要和远端子网上所有路由器中的一个(不关心具体是哪一个)通信时使用。例如,一个移动节点需要和它的“家乡”子网上的所有移动代理中的一个进行通信。

2.3.3  IPv6多播地址

1. IPv6多播地址格式定义

IPv6多播地址用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个多播组。发往多播地址的报文被多播地址标识的所有接口接收。

注意:IPv6多播中不使用Hop Limiit域(相当于IPv4的TTL)。

图7 IPv6多播地址格式

l              11111111:8比特。标识此地址为多播地址。

l              flags:4比特。flag域中定义如下:

图8 IPv6多播地址中的flag域格式

最高的3比特标记为保留域,必须为0。

T = 0表示为永久分配(“公认”)多播地址(由IANA分配)

T = 1表示为临时多播地址

T = 0 indicates a permanently-assigned ("well-known") multicast

address, assigned by the global internet numbering authority.

T = 1 indicates a non-permanently-assigned ("transient") multicast address.

l              Scope:4比特。用来标记此多播组的应用范围。可能的值有:

0  reserved

1  node-local scope  //只在节点范围内有效

2  link-local scope  //只在链路范围有效

3  (unassigned)

4  (unassigned)

5  site-local scope  //只在一个网络内有效

6  (unassigned)

7  (unassigned)

8  organization-local scope //只在组织内有效

9  (unassigned)

A  (unassigned)

B  (unassigned)

C  (unassigned)

D  (unassigned)

E  global scope             //全局有效

F  reserved

l              group ID

标识多播组(可能是永久的,也可能是临时的,范围由scope定义)。

2. IPv6永久分配的多播地址

目前的永久分配(“周知”)多播组如下:

(1)        保留的多播地址:

l              FF00::~FF0F::        (共16个地址)

(2)        所有节点的地址

l              FF01:0:0:0:0:0:0:1   (节点本地)

l              FF02:0:0:0:0:0:0:1   (链路本地)

(3)        所有路由器地址

l              FF01:0:0:0:0:0:0:2   (节点本地)

l              FF02:0:0:0:0:0:0:2   (链路本地)

l              FF05:0:0:0:0:0:0:2   (站点本地)

(4)        被请求节点的地址

l              FF02:0:0:0:0:1:FFXX:XXXX

上述地址由被请求节点的单播或泛播地址形成:取被请求节点单播或泛播地址的低24比特,在前面增加前缀FF02:0:0:0:0:1:FF00::/104构成。例如,和IPv6地址4037::01:800:200E:8C6C对应的被请求节点多播地址是FF02::1:FF0E:8C6C。

此地址用在IPv6邻居发现协议中,用在邻居请求报文中,由于只有后24比特单播地址相同的节点才会接收目的地址为此地址的报文,因此减少了通信流量(和IPv4 ARP相比)。

2.3.4  嵌入IPv4地址的IPv6地址

1. IPv4兼容的IPv6地址

图9 IPv4兼容的IPv6地址格式

这种地址在低32比特携带IPv4地址,前96比特全0,主要用在一种自动隧道技术,目的地址为这种地址的报文会被自动IPv4隧道封装(隧道的端点为自IPv6报文中的IPv4地址),由于这种技术不能解决地址耗尽问题,已经逐渐被废弃。

2. IPv4映射的IPv6地址

图10 IPv4映射的IPv6地址

这种地址最前80比特为全0,中间16比特为全1,最后32比特为IPv4地址。这种地址用来把只支持IPv4的节点用IPv6地址表示。在支持双栈的IPv6节点上,IPv6应用发送目的报文是这种地址时,实际上发出的报文为IPv4报文(目的地址是“IPv4映射的IPv6地址”中的IPv4地址)。

2.3.5  IPv6中特殊的地址

IPv6中还规定了以下几种特殊的IPv6地址:

1. 未指定的IPv6地址

格式0::0。未指定的IPv6地址不能分配给任何接口,被未分配到IPv6地址的节点表示其没有IPv6地址。例如,一个节点启动后没有IPv6地址,发送报文时填充源地址全0表示自身没有IP地址。未指定的IPv6地址不能在IPv6报文头或路由头中作为目的地址出现。

2. IPv6环回地址

格式::1。此地址与IPv4中的127.0.0.1类似,一般在节点发报文给自身时使用,不能分配给物理接口。IPv6环回地址不能作为源地址使用,目的地址为IPv6环回地址的报文不能发送到源节点外,也不能被IPv6路由器转发。

2.3.6  节点和路由器必须支持的IPv6地址

1. 节点必须支持的IPv6地址

每个主机必须把下列地址作为自身的地址:

l              自身接口的链路本地地址

l              分配的单播地址

l              环回地址

l              所有节点多播地址

l              每个分配的单播或多播地址对应的被请求节点多播地址

l              此主机所属的其它多播组地址

2. 路由器必须支持的IPv6地址

l              节点必须支持的IPv6地址(2.3.5第1节)

l              接口配置为路由器接口的子网路由器泛播地址

l              任何其它路由器配置的泛播地址

l              所有路由器多播地址

l              此路由器所属的其它多播组地址

2.4  IPv6地址分配

2.4.1  全球单播地址空间分配

因特网分配地址权威机构(IANA)负责IPv6地址空间的分配。目前IANA从整个可聚合全球单播地址空间(格式前缀为001)中取2001::/16进行分配。

RFC2450中描述了推荐的地址分配策略。

图11 可聚合全球单播的推荐分配方式

l              FP:格式前缀,对于可聚合全局单播固定为001。

l              TLA ID:*聚合标识符。此域由IANA分配给指定的注册机构。

l              Sub-TLA:次*聚合标识符。此域由向IANA注册的机构为满足一定条件的组织分配。这些组织一般是具有一定规模的ISP。

l              NLA ID:下一级聚合标识符。此域由地址注册机构或其下分配了Sub-TLA的组织分配。

l              SLA ID:站点级聚合标识符。此域一般为组织或企业内部进行子网划分使用。

IANA指定的注册机构则从地址空间2001::/16分配/23前缀,具体如下:

l              2001:0200::/23 到 2001:0C00::/23 分配给亚太地区(APNIC)

l              2001:0400::/23 分配给美国(ARIN)

l              2001:0600::/23到2001:0800::/23 分配给欧洲和中东(RIPE NCC)

这些注册机构再从IANA得到的地址空间分配/32前缀给IPv6 ISP,IPv6 ISP再从/32前缀中分配/48前缀给每个客户。/48前缀的地址空间还可以进一步分为/64前缀的子网。这样每个客户最大可以有65535个子网。

为了限制IPv4地址分配初期的不合理分配方案,每个ISP必须同时满足下列条件才能获得/32前缀:

l              部署外部路由协议

l              至少与3个ISP相连

l              至少有40个客户或至少在12个月内显示有意提供IPv6服务。

2.4.2  IPv6实验网络地址分配(6BONE)

6BONE网络是全球范围的IPv6实验网络,使用网络前缀3ffe:0000::/16。每个伪*聚合分配3ffe:0800::/28范围内的/28前缀,最多支持2048个伪*聚合。处于末端的站点从上游提供者得到/48前缀,每个站点内还可细分为多个/64前缀。

6BONE网络按层次化结构分配地址,地址空间由IANA定义配,分配策略在RFC2921(6BONE伪*聚合和网络层聚合格式)中定义。

3  IPv6基本功能

IPv6基本功能包括IPv6邻居发现协议(邻居发现、路由器发现、无状态地址自动配置、重定向)、IPv6路径MTU发现以及IPv6域名解析。其中路由器发现和无状态地址自动配置是IPv6的新增功能,邻居发现功能类似于IPv4 ARP,但做了改进和增强。

3.1  IPv6邻居发现协议

IPv6 邻居发现协议使用IPv6 ICMP消息和被请求节点的组播地址来得到同一网络(本地链路)上某个邻居的链路层地址,验证邻居的可达性,找到邻居路由器。每个IPv6节点都必须加入和其单播和泛播地址对应的多播组。

IPv6邻居发现协议主要包括邻居发现、路由器发现、IPv6无状态地址自动配置、重定向功能。

3.1.1  邻居发现

邻居发现功能和IPv4中的ARP功能类似。

邻居发现功能由邻居请求和邻居通告机制实现:

1. 邻居请求

当一个节点需要得到同一本地链路上另外一个节点的链路本地地址时,就会发送邻居请求报文。此报文类似于IPv4中的ARP请求报文,不过使用多播地址而不使用广播,只有被请求节点的最后24比特和此组播相同的节点才会收到此报文,减少了广播风暴的可能。

源节点使用目的节点的IPv6地址的最右24比特形成相应的多播地址,然后在相应链路上发送ICMPv6类型为135的报文。目的节点在响应报文中填充其链路地址。为了发送邻居请求报文,源节点必须首先知道目的节点的IPv6地址。

邻居请求报文也用来在邻居的链路层地址已知时验证邻居的可达性。

2. 邻居通告

IPv6邻居通告报文是对IPv6邻居请求报文的响应。收到邻居请求报文后,目的节点通过在本地链路上发送ICMPv6类型为136的邻居通告报文进行响应。收到邻居通告后,源节点和目的节点可以进行通信。

当一个节点的本地链路上的链路层地址改变时也会主动发送邻居通告报文。

图12 IPv6邻居发现示意图

IPv6邻居发现只要一次报文交互就可以互相学习到对方的链路层地址,而IPv4的ARP实现此功能需要两次报文交互,因此IPv6邻居发现的效率比较高。

另外,IPv6邻居发现是在IP层实现的,理论上可以支持各种传输媒介,这也是针对IPv4中ARP的改进点。

3.1.2  路由器发现

路由器发现用来定位邻居路由器,同时学习和地址自动配置有关的前缀和配置参数。IPv6路由器发现由下面两种机制实现:

1. 路由器请求

当主机没有配置单播地址(例如系统刚启动)时,就会发送路由器请求报文。路由器请求报文有助于主机迅速进行自动配置而不必等待IPv6路由器的周期性IPv6路由器通告报文。

IPv6路由请求也是ICMP报文,类型为133。

IPv6路由器请求报文中的源地址通常为未指定的IPv6地址(0::0)。如果主机已经配置了一个单播地址,则此接口的单播地址可在发送路由器请求报文时作为源地址填充。

IPv6路由器请求报文中的目的地址是所有路由器多播地址(FF02::2),作用域为本地链路。如果路由器通告是针对路由器请求发出的,则其目的地址为相应路由器请求报文的源地址。

注:路由器请求在启动期间发送并只发送三次以避免网络上没有路由器时拥塞网络。

2. 路由器通告

每个IPv6路由器的配置接口会周期发送路由器通告报文。在本地链路上收到IPv6节点的路由器请求报文后,路由器也会发送路由器通告报文。IPv6路由器通告报文发送到所有节点的链路本地多播地址(FF02 ::1)或发送路由器请求报文节点的IPv6单播地址。

路由器通告为ICMP报文,类型为134,包含以下内容:

l              是否使用地址自动配置

l              标记支持的自动配置类型(无状态或有状态自动配置)

l              一个或多个本地链路前缀―――本地链路上的节点可以使用这些前缀完成地址自动配置

l              通告的本地链路前缀的生存期

l              是否发送路由器通告的路由器可作为缺省路由器,如果可以还包括此路由器可作为缺省路由器的时间(用秒表示)

l              和主机相关的其它信息,如跳数限制,主机发起的报文可以使用的最大MTU。

本地链路上的IPv6节点接收路由器通告报文,并用其中的信息得到更新的缺省路由器、前缀列表以及其它配置。

图13 IPv6路由器通告示意图

3.1.3  IPv6无状态地址自动配置

通过使用路由器通告报文(和针对每一前缀的标记)路由器可以通知主机如何进行地址自动配置。例如,路由器可以指定主机是使用有状态(DHCPv6)地址配置还是无状态地址自动配置进行地址配置。

主机收到路由器通告报文后,使用其中的前缀信息和本地接口ID自动形成IPv6地址,同时还可以根据其中的默认路由器信息设置默认路由器。

使用无状态地址配置可以使IPv6节点很容易完成地址重新编址,降低了网络重新部署的复杂性。进行重新编址时,路由器通告报文中既包括旧的前缀也包括新的前缀。旧前缀的生存期减少,促使节点使用新的前缀,同时保证现有连接可以继续使用旧的前缀。在此期间,节点同时具有新旧两个单播地址。当旧的前缀不再使用时,路由器只通告新的前缀。

3.1.4  重定向

和IPv4类似,IPv6路由器发送重定向报文的目的仅限于把报文重新路由到更合适的路由器。收到重定向报文的节点随后会把后续报文发送到更合适的路由器。路由器只针对单播流发送重定向报文,重定向报文只发给引起重定向的报文的发起节点(主机),并被处理。

3.2  IPv6路径MTU发现协议

IPv4中也定义了路径MTU发现协议,不过是可选支持的。在IPv6中为了简化报文处理流程、提高处理效率,限定IPv6路由器不处理分片,分片只在源节点在需要的时候进行。因此IPv6的路径MTU发现协议是必须实现的。IPv6使用路径MTU发现得到源和目的节点之间路径的最大MTU。源节点在发现报文前进行路径MTU发现处理。如果路径上的MTU不足以传输整个报文,则源节点分片后重新发送。

路径MTU发现协议使IPv6节点能够动态发现并调整以适合给定数据路径上的MTU变化。在IPv4中最小链路MTU值是68字节(推荐最小值为576字节),而在IPv6中最小MTU值为1280字节(推荐最小值为1500)。IPv6基本头支持的最大报文长度是64000字节。更大的报文(jumbograms)通过逐跳扩展头选项处理。

图14 IPv6 Path MTU流程示意图

3.3  IPv6域名解析

原有的IPv4 DNS由于应用假定地址查询只返回32比特的IPv4地址,因此不能直接支持IPv6,必须做部分扩展。

IIPv6引入了新的DNS记录类型用于IPv6地址解析,同时支持正向解析(域名->地址)和反向解析(地址->域名)。主要新增内容如下:

(1)        AAAA record

和IPv4中的A记录类似。此记录把主机名映射为IPv6地址。

(2)        PTR记录

和IPv4中的指针记录类似,此记录把主机名映射为IPv6地址。

IPv6*域的地址是ip6.arpa。

当节点需要得到另外一个节点的地址时,就会发送AAAA记录请求到DNS服务器,请求以另外一个节点的主机名对应的地址。AAAA记录只保留一个IPv6地址。如果一个节点有多个地址,则要和多条记录对应。

图15 IPv6 DNS解析示意图

为了在IPv6地址聚合和重新编址时能够很容易修改相应的DNS记录,新引入了以下两种记录类型:

(3)        A6 record(RFC2874)

IETF使用的实验记录,A6记录不在运营网络中使用。此记录与AAAA记录类似,但支持IPv6地址的层次存储以简化网络重新编址。

(4)        DNAME记录(RFC2672)

(5)        二进制标签记录(RFC2673)

这些记录使重新编址对于反向映射(地址到主机名对应)更易进行。

重新编址时,则所有节点必须改变他们的IPv6地址前缀部分。如果重新编址网络使用了DNS,则DNS记录中保存的地址信息也要随之更新。

4  IPv4向IPv6过渡技术

当前,大量的网络是IPv4网络,随着IPv6的部署,很长一段时间是IPv4与IPv6共存的过渡阶段。通常将IPv4向IPv6过渡分为3个阶段:

l              初始阶段:IPv4网络占绝对的主导地位,IPv4网络中出现若干IPv6孤岛,这些孤岛通过IPv4网络连接到一起。

l              共存阶段:随着IPv6网络的部署,IPv6得到较大规模的应用,出现若干骨干IPv6网络,IPv6平台中的业务也不断增加。但不同的IPv6网络之间需要通过IPv4网络连接到一起,以及IPv4主机与IPv6主机的互通。这阶段不但要使用双栈技术、隧道技术,还需要网络协议转换技术

l              主导阶段:IPv6网络和主机占主导地位。当IPv6发展到后来,骨干网全部是IPv6,而IPv4网络成了孤岛。类似于发展初级阶段,主要采取隧道技术来部署,但现在隧道互联的是IPv4网络了。

过渡阶段所采用的过渡技术主要包括:

l              双栈技术:双栈节点与IPv4节点通讯时使用IPv4协议栈,与IPv6节点通讯时使用IPv6协议栈。

l              隧道技术:提供了两个IPv6站点之间通过IPv4网络实现通讯连接,以及两个IPv4站点之间通过IPv6网络实现通讯连接的技术。

l              IPv4/IPv6协议转换技术:提供了IPv4网络与IPv6网络之间的互访技术。

隧道(tunnel)是指一种协议封装到另外一种协议中的技术。隧道技术只要求隧道两端(也就是两种协议边界的相交点)的设备支持两种协议。IPv6穿越IPv4隧道技术提供了利用现有的IPv4网络为互相独立的IPv6网络提供连通性,IPv6报文被封装在IPv4报文中穿越IPv4网络,实现IPv6报文的透明传输。

这种技术的优点是,不用把所有的设备都升级为双栈,只要求IPv4/IPv6网络的边缘设备实现双栈和隧道功能。除边缘节点外,其它节点不需要支持双协议栈。可以大大利用现有的IPv4网络投资。但是隧道技术不能实现IPv4主机与IPv6主机的直接通信。

图16 IPv6穿越IPv4隧道

IPv6网络边缘设备收到IPv6网络的IPv6报文后,将IPv6报文封装在IPv4报文中,成为一个IPv4报文,在IPv4网络中传输到目的IPv6网络的边缘设备后,解封装去掉外部IPv4头,恢复原来的IPv6报文,进行IPv6转发。

用于IPv6穿越IPv4网络的隧道技术有:

l              IPv6手工配置隧道

l              IPv4兼容地址自动隧道

l              6to4自动隧道

l              ISATAP自动隧道

l              IPv6 over IPv4 GRE隧道

l              隧道代理技术

l              6over4隧道

l              BGP隧道

l              Teredo隧道

S7500E仅支持隧道技术中的手工配置隧道、6to4自动隧道和ISATAP隧道,下面将对这三种隧道技术进行介绍。

4.1  IPv6手工配置隧道

IPv6手工配置隧道的源和目的地址是手工指定的,它提供了一个点到点的连接。IPv6手工配置隧道可以建立在两个边界路由器之间为被IPv4网络分离的IPv6网络提供稳定的连接,或建立在终端系统与边界路由器之间为终端系统访问IPv6网络提供连接。隧道的端点设备必须支持IPv6/IPv4双协议栈。其它设备只需实现单协议栈即可。

IPv6手工配置隧道要求在设备上手工配置隧道的源地址和目的地址,如果一个边界设备要与多个设备建立手工隧道,就需要在设备上配置多个隧道。所以手工隧道通常用于两个边界路由器之间,为两个IPv6网络提供连接。

一个手工隧道在设备上以一个虚接口存在,从IPv6侧收到一个IPv6报文后,根据IPv6报文的目的地址查找IPv6转发表,如果该报文是从此虚拟隧道接口转发出去,则根据隧道接口配置的隧道源端和目的端的IPv4地址进行封装。封装后的报文变成一个IPv4报文,交给IPv4协议栈处理。报文通过IPv4网络转发到隧道的终点。

隧道终点收到一个隧道协议报文后,进行隧道解封装。并将解封装后的报文交给IPv6协议栈处理。

一个设备上不能配置两个隧道源和目的都相同的IPv6手工隧道。

参考:RFC 2893, Transition Mechanisms for IPv6 Hosts and Routers

4.2  6to4自动隧道

6to4隧道也属于一种自动隧道,隧道也是使用内嵌在IPv6地址中的IPv4地址建立的。与IPv4兼容自动隧道不同,6to4自动隧道支持Router到Router、Host到Router、Router到Host、Host到Host。这是因为6to4地址是用IPv4地址作为网络标识,其地址格式如下:

图17 6to4地址格式

其格式前缀(FP)为二进制的001,TLA(Top Level Aggregator)为0x0002。也就是说,6to4地址可以表示为2002::/16,而一个6to4网络可以表示为2002:IPv4地址::/48。

通过6to4自动隧道,可以让孤立的IPv6网络之间通过IPv4网络连接起来。6to4自动隧道是通过Tunnel虚接口实现的,6to4隧道入口的IPv4地址手工指定,隧道的目的地址根据通过隧道转发的报文来决定。如果IPv6报文的目的地址是6to4地址,则从报文的目的地址中提取出IPv4地址作为隧道的目的地址;如果IPv6报文的目的地址不是6to4地址,但下一跳是6to4地址,则从下一跳地址中取出IPv4地址做为隧道的目的地址。后者也称为6to4中继。S7500E系列交换机暂不支持6to4中继功能。

IPv6报文在到达边界路由器后,根据报文的IPv6目的地址查找转发表,如果出接口是6to4自动隧道的Tunnel虚接口,且报文的目的地址是6to4地址或下一跳是6to4地址,则从6to4地址中取出IPv4地址作为隧道报文的目的地址,隧道报文的源地址是Tunnel接口上配置的。

图18 6to4隧道组网示意图

一个IPv4地址只能用于一个6to4隧道的源地址,如果一个边缘路由器有多个6to4网络使用同样的IPv4地址作为网络本地地址,则使用6to4地址中的SLA ID来区分,但他们共用一个隧道。

图19 6to4隧道组网示意图2

参考:RFC 3056, Connection of IPv6 Domains via IPv4 Clouds

4.3  ISATAP隧道

ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是另外一种IPv6自动隧道技术。与6to4地址类似,ISATAP地址中也内嵌了IPv4地址,它的隧道封装也是根据此内嵌IPv4地址来进行的,只是两种地址格式不同。6to4是使用IPv4地址作为网络ID,而ISATAP用IPv4地址作为接口ID。其接口标识符是用修订的EUI-64格式构造的,格式如下:

图20 ISATAP接口ID格式

如果IPv4地址是全局唯一的,则u位为1,否则u位为0。g位是IEEE群体/个体标志。ISATAP地址接口ID的形式看起来是00-00-5E-FE加IPv4地址的样子。5E-FE 是IANA分配的。

由于ISATAP是通过接口ID来表现的,所以,ISATAP地址有全局单播、站点单播、多播等形式。ISATAP地址的前64位是通过向ISATAP路由器发送请求来得到的,它可以进行地址自动配置。在ISATAP隧道的两端设备之间可以运行ND协议。ISATAP隧道将IPv4网络看作一个非广播的点到多点的链路(NBMA)。

ISATAP过渡机制允许在现有的IPv4网络内部部署IPv6,该技术简单而且扩展性很好,可以用于本地站点的过渡。ISATAP支持IPv6站点本地路由和全局IPv6路由域,以及自动IPv6隧道。ISATAP同时还可以与NAT结合,从而可以使用站点内部非全局唯一的IPv4地址。

典型的ISATAP隧道应用是在站点内部,所以,其内嵌的IPv4地址不需要是全局唯一的。

图21 ISATAP隧道部署

如上图所示,在IPv4网络内部有两个双栈主机PC2和PC3,它们分别有一个私网IPv4地址。要使其具有ISATAP功能,需要进行如下操作:

l              首先配置ISATAP隧道接口,这时会根据IPv4地址生成ISATAP类型的接口ID;

l              根据接口ID生成一个ISATAP链路本地IPv6地址,生成链路本地地址以后,主机就有了IPv6连接功能。

l              进行主机自动配置,主机获得全局IPv6地址、站点本地地址等。

l              当主机与其它IPv6主机进行通讯时,从隧道接口转发,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。如果目的主机在本站点内,则下一跳就是目的主机本身,如果目的主机不在本站点内,则下一跳为ISATAP路由器的地址。

然而,如果一个节点是处于NAT设备后面的私有网络内部,其IPv4地址是私有的。为了能够穿越NAT设备与其它站点进行通讯,可以使用UDP/IPv4封装,其端口号为3544。

参考:Intra-Site Automatic Tunnel Addressing Protocol (draft-ietf-ngtrans-isatap-04.txt).

5  IPv6单播路由技术

IPv6支持各种单播路由协议(IGP、EGP),IPv6单播路由协议实现和IPv4中类似,有些是在原有协议上做了简单扩展(ISISv6、BGP4+),有些则完全是新的版本(RIPng、OSPFv3)。

5.1  RIPng

下一代RIP协议(简称RIPng)是对原来的IPv4网络中RIP-2协议的扩展。大多数RIP的概念都可以用于RIPng。

为了在IPv6网络中应用,RIPng对原有的RIP协议进行了修改:

l              UDP端口号:使用UDP的521端口发送和接收路由信息。

l              组播地址:使用FF02::9作为链路本地范围内的RIPng路由器组播地址。

l              路由前缀:使用128比特的IPv6地址作为路由前缀。

l              下一跳地址:使用128比特的IPv6地址。

5.2  OSPFv3

OSPFv3是OSPF版本3的简称,主要提供对IPv6的支持,遵循的标准为 RFC2740(OSPF for IPv6)。与OSPFv2相比,OSPFv3除了提供对IPv6的支持外,还充分考虑了协议的网络无关性以及可扩展性,进一步理顺了拓扑与路由的关系,使得OSPF的协议逻辑更加简单清晰,大大提高了OSPF的可扩展性。

OSPFv3和OSPFv2的不同主要有:

l              修改了LSA的种类和格式,使其支持发布IPv6路由信息;

l              修改部分协议流程,使其独立于网络协议,大大提高了可扩展性。主要的修改包括用Router-ID来标识邻居,使用链路本地(Link-local)地址来发现邻居等,使得拓扑本身独立于网络协议,与便于未来扩展;

l              进一步理顺了拓扑与路由的关系。OSPFv3在LSA中将拓扑与路由信息相分离,一、二类LSA中不再携带路由信息,而只是单纯的描述拓扑信息,另外用新增的八、九类LSA结合原有的三、五、七类LSA来发布路由前缀信息;

l              提高了协议适应性。通过引入LSA扩散范围的概念,进一步明确了对未知LSA的处理,使得协议可以在不识别LSA的情况下根据需要做出恰当处理,大大提高了协议对未来扩展的适应性。

5.3  ISISv6

IS-IS是由国际标准化组织ISO为其无连接网络协议CLNP发布的动态路由协议。为了使IS-IS支持IPv4,IETF在RFC1195中对IS-IS协议进行了扩展,命名为集成化IS-IS(Integrated IS-IS)或双IS-IS(Dual IS-IS)。这个新的IS-IS协议可同时应用在TCP/IP和OSI环境中。在此基础上,为了有效的支持IPv6,IETF在draft-ietf-isis-ipv6-05.txt中对IS-IS进一步进行了扩展,主要是新添加了支持IPv6路由信息的两个TLVs(Type-Length-Values)和一个新的NLP ID(Network Layer Protocol Identifier)。

TLV是在LSP(Link State PDUs)中的一个可变长结构。

新增的两个TLV分别是:

l              IPv6 Reachability:类型值为236(0xEC),通过定义路由信息前缀、度量值等信息来说明网络的可达性。

l              IPv6 Interface Address:类型值为232(0xE8),它相当于IPv4中的“IP Interface Address”TLV,只不过把原来的32比特的IPv4地址改为128比特的IPv6地址。

NLP ID是标识IS-IS支持何种网络层协议的一个8比特字段,IPv6对应的NLP ID值为142(0x8E)。如果IS-IS路由器支持IPv6,那么它必须在Hello报文中携带该值向邻居通告它支持IPv6。

5.4  BGP4+

传统的BGP-4只能管理IPv4的路由信息,对于使用其它网络层协议(如IPv6等)的应用,在跨自治系统传播时就受到一定限制。

为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成BGP4+,目前的BGP4+标准是RFC2858(Multiprotocol Extensions for BGP-4,BGP-4多协议扩展)。

为了实现对IPv6协议的支持,BGP-4+需要将IPv6网络层协议的信息反映到NLRI(Network Layer Reachable Information)及Next_Hop属性中。

BGP4+中引入的两个NLRI属性分别是:

l              MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。

l              MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。

BGP4+中的Next_Hop属性用IPv6地址来表示,可以是IPv6全球单播地址或者下一跳的链路本地地址。

BGP4+利用BGP的多协议扩展属性来达到在IPv6网络中应用的目的,BGP协议原有的消息机制和路由机制并没有改变。

5.5  S7500E IPv6单播路由规格

S7500E具有大路由模式,在该模式下OSPFv3、ISISv6和BGP4+可支持高达64K路由,RIPng可支持达5K路由。

6  IPv6部署策略

目前和今后相当长的一段时间内IPv4网络依然占主导地位,IPv6相关技术也在不断完善,因此IPv6网络的部署是一个渐进的过程并在长期内和IPv4网络共存。

图22 IPv6网络演进示意图

IPv6网络的整体演进策略是从孤岛到骨干网络的过程。可以针对不同的场景和应用采用不同的部署策略:

(1)        通过IPv4/IPv6双协议栈部署IPv6

适用于小型企业网络(如小型校园网),易于部署,可以同时提供IPv4应用和IPv6应用。这种方式需要所有路由器支持双栈、支持IPv4/IPv6路由表。缺点是需要路由器同时有IPv4和IPv6路由协议,对于大型网络,升级工作量太大。

(2)        通过专用数据链路部署IPv6

适用于运营商广域网或城域网已经部署了ATM、帧中继或DWDM情况下,只需要访问WAN的路由器支持双栈。这种方式部署很简单,不会现有IPv4流量造成任何影响。缺点是没有专门支持IPv6的硬件,不能依靠硬件提高转发速率。

(3)        通过隧道技术部署IPv6

主要用在运营商初期部署IPv6以及企业需要跨越IPv4网络连接不同的IPv6域。只需要提供IPv6 DNS查询功能,并在IPv4网络和IPv6网络之间的路由器支持双栈IPv4/IPv6双栈就可以实现。这种方式投资和风险都很小。缺点是使用隧道使网络拓扑复杂,不易管理,出现问题难以定位;另外,由于使用隧道封装,对转发效率也有一定影响。

(4)        通过MPLS网络部署IPv6

适用于移动运营商或已部署了MPLS网络的运营商。这种方式下IPv6运行于MPLS网络之上,只需要在PE或CE设备上做微小改动(其中最典型的应用是6PE),不需要对核心网络进行硬件或软件升级。主要问题是必须有MPLS网络支持,和隧道类似,网络管理开销比较大。

(5)        通过使用协议转换机制部署IPv6

协议转换机制使用最普遍的是NAT-PT,其它转换机制一般不在网络设备上实现。NAT-PT可以使只支持IPv4和只支持IPv6的节点互相通信。使用NAT-PT功能,只需要支持NAT-PT的设备和IPv6 DNS解析,无需双栈支持,终端系统不需要升级,因此部署比较简单。缺点是存在单点失效问题,而且由于需要在IPv4和IPv6报文之间转换,也影响了转发效率。

7  S7500E典型组网应用介绍

S7500E主要满足中小企业核心层交换机、大型企业网络汇聚层交换机、配线间交换机等市场应用,提供高性能、大容量的交换服务,为接入设备提供更高的带宽。

7.1  核心层应用

图23 S7500E核心层组网应用

在中小企业中,S7500E以太网交换机可作为核心层交换机,提供了高性能、大容量的交换服务,大路由模式下可配置64K IPv6路由,具有强大的三层交换能力。

7.2  汇聚层应用

在大型企业网络中,S7500E以太网交换机可作为汇聚层交换机,提供了高性能、大容量的交换服务,并支持10GE的上行接口,为接入设备提供了更高的带宽。

图24 S7500E汇聚层组网应用

7.3  数据中心互联

S7500E可以在数据中心作为服务器的高速接入,能够提供全线速的二层和三层交换能力为数据中心提供高性能大容量的交换能力,并且具有较大的芯片buffer缓存能力,同时10GE上行能力为数据中心进一步拓展出口带宽提供了可能。

图25 S7500E数据中心组网应用

7.4  IPv6过渡应用

S7500E支持6to4、ISATAP等IPv6隧道技术,,可以用于IPv4向IPv6的演变组网,通过隧道技术链接IPv6孤岛, 随着IPv6技术的发展和网络的进步,平稳过渡到IPv6网络。

图26 IPv6过渡应用

8  相关协议标准

l              RFC 1886,DNS Extensions to support IP version 6

l              RFC 1887,An Architecture for IPv6 Unicast Address Allocation

l              RFC 1888,OSI NSAPs and IPv6

l              RFC 1981,Path MTU Discovery for IP version 6

l              RFC 2553,Basic Socket Interface Extensions for IPv6

l              RFC 2374,An IPv6 Provider-Based Unicast Address Format

l              RFC 2375,IPv6 Multicast Address Assignments

l              RFC 2471,IPv6 Testing Address Allocation

l              RFC 2450,Proposed TLA and NLA Assignment Rules

l              RFC 2460,Internet Protocol, Version 6 (IPv6) Specification

l              RFC 2461,Neighbor Discovery for IP Version 6 (IPv6)

l              RFC 2462,IPv6 Stateless Address Autoconfiguration

l              RFC 2463,Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6)

l              RFC 2464,A Method for the Transmission of IPv6 Packets over Ethernet Networks

l              RFC 2465,Management Information Base for IP Version 6: Textual Conventions and General Group

l              RFC 2466,Management Information Base for IP Version 6

l              RFC 2467,Transmission of IPv6 Packets Over FDDI

l              RFC 2472,IP Version 6 over PPP

l              Generic Packet Tunneling in IPv6 Specification

l              RFC 2529,Transmission of IPv6 over IPv4 Domains without Explicit Tunnels

l              RFC 2663,IP Network Address Translator (NAT) Terminology and Considerations

l              RFC 2675,TCP and UDP over IPv6 Jumbograms

l              RFC 2710,Multicast Listener Discovery (MLD) for IPv6

l              RFC 2711,IPv6 Router Alert Option

l              RFC 2765,Stateless IP/ICMP Translation Algorithm (SIIT)

l              RFC 2766,Network Address Translation - Protocol Translation (NAT-PT)

l              RFC 2767,Dual Stack Hosts using the "Bump-In-the-Stack" Technique (BIS)

l              RFC 2874,DNS Extensions to Support IPv6 Address Aggregation and Renumbering

l              RFC 2893,Transition Mechanisms for IPv6 Hosts and Routers

l              RFC 2894,Router Renumbering for IPv6

l              RFC 2928,Initial IPv6 Sub-TLA ID Assignments

l              RFC 3019,IP Version 6 Management Information Base for the Multicast Listener Discovery Protocol

l              RFC 3041,Privacy Extensions for Stateless Address Autoconfiguration in IPv6

l              RFC 3053,IPv6 Tunnel Broker

l              RFC 3056,Connection of IPv6 Domains via IPv4 Clouds

l              RFC 3089,A SOCKS-based IPv6/IPv4 Gateway Mechanism

l              RFC 3122,Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification

l              RFC 3142,An IPv6-to-IPv4 Transport Relay Translator

l              RFC 3146,Transmission of IPv6 Packets over IEEE 1394 Networks

l              RFC 3178,IPv6 multihoming support at site exit routers

l              RFC 3306,Unicast-Prefix-based IPv6 Multicast Addresses

l              RFC 3314,Recommendations for IPv6 in 3GPP Standards

l              RFC 3316,IPv6 for Some Second and Third Generation Cellular Hosts

l              RFC 3338,Dual Stack Hosts Using "Bump-in-the-API" (BIA)

l              RFC 3484,Default Address Selection for Internet Protocol version 6 (IPv6)

l              RFC 3493,Basic Socket Interface Extensions for IPv6

l              RFC 3513,IP Version 6 Addressing Architecture

l              RFC 3531,A Flexible Method for Managing the Assignment of Bits of an IPv6 Address Block

l              RFC 3542,Advanced Sockets API for IPv6

l              RFC 3587,An IPv6 Aggregatable Global Unicast Address Format

l              RFC 3697,IPv6 Flow Label Specification

l              RFC 3701,IPv6 Testing Address Allocation

l              RFC 3769,Requirements for IPv6 prefix delegation

l              RFC 3879,Deprecating Site Local Addresses

l              RFC 3986,Format for Literal IPv6 Addresses in URL's

l              RFC 4007,IPv6 Scoped Address Architecture

l              RFC 4022,IP Version 6 Management Information Base for the Transmission Control Protocol

l              RFC 4087,IP Tunnel MIB

l              RFC 4113,IP Version 6 Management Information Base for the User Datagram Protocol

l              RFC 4193,Unique Local IPv6 Unicast Addresses

l              draft-ietf-ngtrans-isatap,Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)

l              draft-huitema-v6ops-teredo,Teredo: Tunneling IPv6 over UDP through NATs

l              draft-ietf-pim-sm-v2-new-11

l              draft-ietf-pim-dm-new-v2-05

l              draft-ietf-magma-snoop-11