打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
IPv6协议技术特点
昵称10255437
>《基础》
2012.06.25
关注
3.1 IPv6
相对于
IPv4
有哪些较为显著的优势?
相对于
IPv4
,
IPv6
有如下一些显著的优势:
(
1
)地址容量大大扩展,由原来的
32
位扩充到
128
位,彻底解决
IPv4
地址不足的问题;支持分层地址结构,从而更易于寻址;扩展支持组播和任意播地址,这使得数据包可以发送给任何一个或一组节点;
(
2
)大容量的地址空间能够真正的实现无状态地址自动配置,使
IPv6
终端能够快速连接到网络上,无需人工配置,实现了真正的即插即用;
(
3
)报头格式大大简化,从而有效减少路由器或交换机对报头的处理开销,这对设计硬件报头处理的路由器或交换机十分有利;
(
4
)加强了对扩展报头和选项部分的支持,这除了让转发更为有效外,还对将来网络加载新的应用提供了充分的支持;
(
5
)流标签的使用让我们可以为数据包所属类型提供个性化的网络服务,并有效保障相关业务的服务质量;
(
6
)认证与私密性:
IPv6
把
IPSec
作为必备协议,保证了网络层端到端通信的完整性和机密性;
(
7
)
IPv6
在移动网络和实时通信方面有很多改进。特别地,不像
IPv4
,
IPv6
具备强大的自动配置能力从而简化了移动主机和局域网的系统管理。
3.2
报头结构
3.2.1 IPv6
的报头结构是怎样的?
新的
IPv6
报头的结构比
IPv4
简单得多,
IPv6
报头中删除了
IPv4
报头中许多不常用的域,放入了可选项和报头扩展中;
IPv6
中的可选项有更严格的定义。
IPv4
中有
10
个固定长度的域、
2
个地址空间和若干个选项,
IPv6
中只有
6
个域和
2
个地址空间。
虽然
IPv6
报头占
40
字节,是
24
字节
IPv4
报头的
1.6
倍,但因其长度固定(
IPv4
报头是变长的),故不需要消耗过多的内存容量。
IPv4
中的报头长度(
header length
)、服务类型(
type of service
,
TOS
)、标识符(
identification
)、标志(
flag
)、分段偏移(
fragment offset
)和报头校验和(
header checksum
)这
6
个域被删除。报文总长(
total length
)、协议类型(
protocol type
)和生存时间(
time to live
,
TTL
)
3
个域的名称或部分功能被改变,其选项(
options
)功能完全被改变,新增加了
2
个域,即优先级和流标签。
下图为具体的
IPv4
与
IPv6
报头比较。
表
1 IPv4
包头格式
4bit
版本号
4bit
报头长度
8bit
服务类型
16bit
数据包长度
标识符(
16bit
)
标志
(4bit)
分段偏移(
12bit
)
生存时间(
8bit
)
传输协议(
8bit
)
报头校验和(
16bit
)
源
IP
地址(
32bit
)
目的
IP
地址(
32bit
)
选项(
24bit
)
填充
(8bit)
表
2 ipv6
包头格式
4bit
版本号
4bit
优先级
24bit
流标签
净荷长度
(16bit)
下一报头
(8bit)
HOP
限制
(8bit)
源
IP
地址(
128bit
)
目的
IP
地址(
128bit
)
3.3
地址问题
3.3.1
为什么
IPv6
协议的地址长度是
128
位?
有些人也许要问,
IPv4
地址不够用,那我在
IPv4
上再增加几位地址表示就行了,何必非要是
IPv6
的
128
位呢?这种提问是对芯片设计及
CPU
处理方式不理解造成的,同时也对未来网络的扩展没有充分的预见性。芯片设计中数值的表示我们知道是全用“
0
”、“
1
”
代表,
CPU
处理字长发展到现在分别经历了
4
位、
8
位、
16
位、
32
位、
64
位等,我们知道,在计算机中,当数据能用
2
的指数次幂字长位的二进制数表示时,
CPU
对数值的处理效率最高。
IPv4
地址对应的是
32
比特字长就是因为当时的互联网上的主机
CPU
字长为
32
位。现在的
64
位机已十分普及,
128
位机正在成长中。将地址定为
64
位在网络扩展性上显得不足,定为其它的一个长度在硬件芯片设计、程序编制方面的效率都将下降,因此从处理效率和未来网络扩展性上考虑,将
IPv6
的地址长度定为
128
位是十分合适的。
3.3.2 IPv6
的
128
位地址是一个什么概念?
IPv6
提供
128
位的地址空间,
IPv6
所能提供的巨大的地址容量可以从以下几个方面来说明:
共有
2128
个不同的
IPv6
地址,也就是全球可分配地址数为
340,282,366,920,938,463,463,374,607,431,768,211,456
个;
若按土地面积分配,每平方厘米可获得
2.2*1020
个地址。
IPv6
地址耗尽的机会是很小的。在可预见的很长时期内,
IPv6
的
128
位地址长度形成的巨大的地址空间能够为所有可以想象出的网络设备提供一个全球唯一的地址,
IPv6
充足的地址空间将极大地满足那些伴随着网络智能设备的出现而对地址增长的需求,例如个人数据助理(
PDA
)、移动电话(
Mobile Phone
)、家庭网络接入设备(
HAN
)等。
3.3.3 IPv6
地址是如何表示的?
IPv4
地址表示为点分十进制格式,
32
位的地址分成
4
个
8
位分组,每个
8
位写成十进制,中间用点号分隔。而
IPv6
的
128
位地址则是以
16
位为一分组,每个
16
位分组写成
4
个十六进制数,中间用冒号分隔,称为冒号分十六进制格式。例如
:21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A
是一个完整的
IPv6
地址。
IPv6
的地址表示有以下几种特殊情形:
IPv6
地址中每个
16
位分组中的前导零位可以去除做简化表示,但每个分组必须至少保留一位数字。如上例中的地址,去除前导零位后可写成
:21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
。
某些地址中可能包含很长的零序列,为进一步简化表示法,还可以将冒号十六进制格式中相邻的连续零位合并,用双冒号“
::
”表示。“
::
”符号在一个地址中只能出现一次,该符号也能用来压缩地址中前部和尾部的相邻的连续零位。例如地址
1080:0:0:0:8:800:200C:417A
,
0:0:0:0: 0:0:0:1
,
0:0:0:0:0:0:0:0
分别可表示为压缩格式
1080::8:800:200C:417A
,
::1
,
::
。
在
IPv4
和
IPv6
混合环境中,有时更适合于采用另一种表示形式:
x:x:x:x:x:x:d.d.d.d
,其中
x
是地址中
6
个高阶
16
位分组的十六进制值,
d
是地址中
4
个低阶
8
位分组的十进制值(标准
IPv4
表示)。例如地址
0:0:0:0:0:0:13.1.68.3
,
0:0:0:0:0:FFFF:129.144.52.38
写成压缩形式为
::13.1.68.3
,
::FFFF.129.144.52.38
。
要在一个
URL
中使用文本
IPv6
地址,文本地址应该用符号“
[
”和“
]
”来封闭。例如文本
IPv6
地址
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
写作
URL
示例为
[url=http://[fedc:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html]http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html[/url]
。
3.3.4 IPv6
地址为
128
位,配地址岂不是要花费很多时间?
IPv6
协议支持地址自动配置,这是一种即插即用的机制。
IPv6
节点通过地址自动配置得到
IPv6
地址和网关地址。
IPv6
支持无状态地址自动配置和状态地址自动配置两种地址自动配置方式。在无状态地址自动配置方式下,需要配置地址的网络接口先使用邻居发现机制获得一个链路本地地址。网络接口得到这个链路本地地址之后,再接收路由器宣告的地址前缀,结合接口标识得到一个全球地址。而状态地址自动配置的方式,如动态主机配置协议(
DHCP
),需要一个
DHCP
服务器,通过客户机
/
服务器模式从
DHCP
服务器处得到地址配置的信息。
3.3.5 IPv6
地址都有哪些类型?
所有类型的
IPv6
地址都被分配到接口,而不是节点。
IPv6
地址是单个或一组接口的
128
位标识符,有三种类型:
(1)
单播(
Unicast
)地址
单一接口的标识符。发往单播地址的包被送给该地址标识的接口。对于有多个接口的节点,它的任何一个单播地址都可以用作该节点的标识符。
IPv6
单播地址是用连续的位掩码聚集的地址,类似于
CIDR
的
IPv4
地址。
IPv6
中的单播地址分配有多种形式,包括全部可聚集全球单播地址、
NSAP
地址、
IPX
分级地址、站点本地地址、链路本地地址以及运行
IPv4
的主机地址。单播地址中有下列两种特殊地址:
不确定地址
单播地址
0:0:0:0:0:0:0:0
称为不确定地址。它不能分配给任何节点。它的一个应用示例是初始化主机时,在主机未取得自己的地址以前,可在它发送的任何
IPv6
包的源地址字段放上不确定地址。不确定地址不能在
IPv6
包中用作目的地址,也不能用在
IPv6
路由头中;
回环地址
单播地址
0:0:0:0:0:0:0:1
称为回环地址。节点用它来向自身发送
IPv6
包。它不能分配给任何物理接口。
(2)
任意播(
AnyCast
)地址
一组接口(一般属于不同节点)的标识符。发往任意播地址的包被送给该地址标识的接口之一(路由协议度量距离最近的)。
IPv6
任意播地址存在下列限制:
·
任意播地址不能用作源地址,而只能作为目的地址;
·
任意播地址不能指定给
IPv6
主机,只能指定给
IPv6
路由器;
IPv6
任意播地址
(3)
组播(
MultiCast
)地址
一组接口(一般属于不同节点)的标识符。发往多播地址的包被送给该地址标识的所有接口。地址开始的
11111111
标识该地址为组播地址。
IPv6
组播地址
IPv6
中没有广播地址,它的功能正在被组播地址所代替。另外,在
IPv6
中,任何全“
0
”和全“
1
”的字段都是合法值,除非特殊地排除在外的。特别是前缀可以包含“
0
”值字段或以“
0
”为终结。一个单接口可以指定任何类型的多个
IPv6
地址(单播、任意播、组播)或范围。
3.3.6
什么是
IPv6
的可聚集全球单播地址?
IPv6
为点对点通信设计了一种具有分级结构的地址,这种地址被称为可聚集全球单播地址(
Aggregatable GlobalUnicast Address
),它在
RFC2374
中定义。可聚集地址具有三个层次的分级结构:
公用拓扑:提供公用互联网传送服务的供应商和交换局群体;
站点拓扑:本地的特定站点或组织,不提供到本站点以外节点的公用传送服务;
接口标识符:标识链路上的接口;
可聚集全球单播地址的分级结构划分如下图所示。开始
3
个地址位是地址类型前缀,用于区别其它地址类型。其后的
13
位
TLA ID
、
32
位
NLA ID
、
16
位
SLA ID
和
64
位主机接口
ID
,分别用于标识分级结构中自上向下排列的
TLA
(
Top Level Aggregator
,顶级聚集体)、
NLA
(
Next Level Aggregator
,下级聚集体)、
SLA
(
Site Level Aggregator
,站点级聚集体)和主机接口。
RES
保留,以备将来
TLA
或
NLA
扩充用。
TLA
是与长途服务供应商和电话公司相互连接的公共网络接入点,它从国际
Internet
注册机构如
IANA
处获得地址。
NLA
通常是大型
ISP
,它从
TLA
处申请获得地址,并为
SLA
分配地址。
SLA
也可称为订户(
subscriber
),它可以是一个机构或一个小型
ISP
。
SLA
负责为属于它的订户分配地址。
SLA
通常为其订户分配由连续地址组成的地址块,以便这些机构可以建立自己的地址分级结构以识别不同的子网。分级结构的最底层是网络主机。
IPv6
可聚集全球单播地址
设计这样的地址格式是为了既支持基于当前供应商的聚集,又支持被称为交换局的新的聚集类型。其组合使高效的路由聚集可用于直接连接到供应商和连接到交换局两者的站点上。站点可以选择连接到两种类型中的任何一种聚集点。
3.3.7 IPv6
的地址分配方式与
IPv4
有什么区别?
IPv4
中,地址是用户拥有的。也就是说,一旦用户从某机构处申请到一段地址空间,他就永远使用该地址空间,而不管他是从哪个因特网服务提供者(
ISP
)处获得服务。这种方式的缺点是
ISP
必须在路由表中为每个用户的网络号维护一条表项。随着用户数的增加,会出现大量无法会聚的特殊路由,即使无类别域间路由(
CIDR
)也不能处理这样的路由表爆炸现象。
IPv6
改变了地址的分配方式,从用户拥有变成了
ISP
拥有。全球网络号由因特网地址分配机构(
IANA
)分配给
ISP
,用户的全球网络地址是
ISP
地址空间的子集。每当用户改变
ISP
时,全球网络地址必须更新为新
ISP
提供的地址。这样
ISP
能有效地控制路由信息,避免路由爆炸现象的出现。
3.3.8
一台
IPv6
主机有多少地址?
通常一台
IPv6
主机有多个
IPv6
地址,即使该主机只有一个单接口。一台
IPv6
主机可同时拥有以下几种单点传送地址:
·
每个接口的链路本地地址;
·
每个接口的单播地址(可以是一个站点本地地址和一个或多个可聚集全球地址);
·
回环(
loopback
)接口的回环地址(
::1
)。
此外,每台主机还需要时刻保持收听以下多点传送地址上的信息:
·
节点本地范围内所有节点组播地址(
FF01::1
);
·
链路本地范围内所有节点组播地址(
FF02::1
);
·
请求节点(
solicited-node
)组播地址(如果主机的某个接口加入请求节点组);
·
组播组组播地址(如果主机的某个接口加入任何组播组)。
3.3.9
一台
IPv6
路由器有多少地址?
一台
IPv6
路由器可被分配以下几种单点传送地址:
·
每个接口的链路本地地址;
·
每个接口的单播地址(可以是一个站点本地地址和一个或多个可聚集全球地址);
·
子网
-
路由器任意播地址;
·
其他任意播地址(可选);
·
回环接口的回环地址(
::1
)。
同样,除以上这些地址外,路由器需要时刻保持收听以下多点传送地址上的信息流:
·
节点本地范围内的所有节点组播地址(
FF01::1
);
·
节点本地范围内的所有路由器组播地址(
FF01::2
);
·
链路本地范围内的所有节点组播地址(
FF02::1
);
·
链路本地范围内的所有路由器组播地址(
FF02::2
);
·
站点本地范围内的所有路由器组播地址(
FF05::2
);
·
请求节点(
solicited-node
)组播地址(如果路由器的某个接口加入请求节点组);
·
组播组组播地址(如果路由器的某个接口加入任何组播组)。
3.4
地址自动配置技术
3.4.1 IPv6
如何实现“即插即用”?
“即插即用”是指无需任何人工干预,就可以将一个节点插入
IPv6
网络并在网络中启动,
IPv6
使用了两种不同的机制来支持即插即用网络连接:启动协议(
BOOTstrap Protocol
,
BOOTP
)和动态主机配置协议(
DHCP
)。这两种机制允许
IP
节点从特殊的
BOOTP
服务器或
DHCP
服务器获取配置信息。这些协议采用“状态自动配置”(
StatefulAutoconfiguration
),即服务器必须保持每个节点的状态信息,并管理这些保存的信息。
状态自动配置的问题在于,用户必须保持和管理特殊的自动配置服务器以便管理所有“状态”,即所容许的连接及当前连接的相关信息。对于有足够资源来建立和保持配置服务器的机构,该系统可以接受;但是对于没有这些资源的小型机构,工作情形较差。
3.4.2
除了状态自动配置,
IPv6
还提供什么自动配置服务?
除了状态自动配置,
IPv6
还采用了一种被称为无状态自动配置(
Stateless AutoConfiguration
)的自动配置服务。
RFC2462
中描述了
IPv6
的无状态自动配置。无状态自动配置要求本地链路支持组播,而且网络接口能够发送和接收组播包。无状态自动配置过程要求节点采用如下步骤:
首先,进行自动配置的节点必须确定自己的链路本地地址;
然后,必须验证该链路本地地址在链路上的唯一性;
最后,节点必须确定需要配置的信息。该信息可能是节点的
IP
地址,或者是其他配置信息,或者两者皆有。如果需要
IP
地址,节点必须确定是使用无状态自动配置过程还是使用状态自动配置过程来获得。
具体地说,在无状态自动配置过程中,主机首先通过将它的网卡
MAC
地址附加在链路本地地址前缀
1111111010
之后,产生一个链路本地单播地址(
IEEE
已经将网卡
MAC
地址由
48
位改为了
64
位。如果主机采用的网卡的
MAC
地址依然是
48
位,那么
IPv6
网卡驱动程序会根据
IEEE
的一个公式将
48
位
MAC
地址转换为
64
位
MAC
地址)。接着主机向该地址发出一个邻居发现请求(
Neighbor DiscoveryRequest
),以验证地址的唯一性。如果请求没有得到响应,则表明主机自我配置的链路本地单播地址是唯一的。否则,主机将使用一个随机产生的接口
ID
组成一个新的链路本地单播地址。然后,以该地址为源地址,主机向本地链路中所有路由器多点传送一个路由器请求(
Router Solicitation
)来请求配置信息,路由器以一个包含一个可聚集全球单播地址前缀和其它相关配置信息的路由器宣告(
Router Advertisement
)作为响应。主机用它从路由器得到的全球地址前缀加上自己的接口
ID
,自动配置全球地址,然后就可以与
Internet
中的其它主机通信了。
如果没有路由器为网络上的节点服务,也就是本地网络孤立于其他网络,则节点必须寻找配置服务器来完成其配置;否则,节点必须侦听路由器宣告报文。这些报文周期性地发往所有主机的组播地址,以指明诸如网络地址和子网地址等配置信息。节点可以等待路由器宣告,也可以通过发送组播请求给所有路由器的组播地址来请求路由器发送宣告。一旦收到路由器的响应,节点就可以使用响应的信息来完成自动配置。
使用无状态自动配置,无需手动干预就能够改变网络中所有主机的
IP
地址。例如,当企业更换了联入
Internet
的
ISP
时,将从新
ISP
处得到一个新的可聚集全球地址前缀。
ISP
把这个地址前缀从它的路由器上传送到企业路由器上。由于企业路由器将周期性地向本地链路中的所有主机多点传送路由器宣告,因此企业网络中所有主机都将通过路由器宣告收到新的地址前缀,此后,它们就会自动产生新的
IP
地址并覆盖旧的
IP
地址。
3.5
域名解析技术
3.5.1 IPv6
域名系统的体系结构是什么样的?
IPv6
网络中的
DNS
与
IPv4
的
DNS
在体系结构上是一致的,都是采用树型结构的域名空间,如下图所示。
IPv4
协议与
IPv6
协议的不同并不意味着
IPv4 DNS
体系和
IPv6 DNS
体系需要各自独立,相反,
DNS
的体系和域名空间必须一致,即
IPv4
和
IPv6
共同拥有统一的域名空间。在
IPv4
到
IPv6
的过渡阶段,域名可以同时对应于多个
IPv4
和
IPv6
的地址。以后随着
IPv6
网络的普及,
IPv6
地址将逐渐取代
IPv4
地址。下图的最上方是
DNS
树形结构中唯一的一个根(
Root
),用点号“
.
”表示。根的下一级称为顶级域(
Top Level Domain
,
TLD
),也称一级域。顶级域的下级就是二级域(
Second Level Domain
,
SLD
),二级域的下级就是三级域,依次类推。每个域都是其上级域的子域(
Sub Domain
),比如“
.net.cn
”是“
.cn
”的子域,而“
cnnic.net.cn
”既是“
net.cn
”的子域,同时也是“
.cn
”的子域。
DNS
树上的每一个节点都有一个标识(
Label
),根节点的标识是“空”(即长度为
0
),其它节点的标识的长度在
1
到
63
字节之间。一个节点的域名是由从这个节点到根节点的路径上的所有标识从左到右顺序排列组成的,标识之间用“
.
”分隔。例如
http://www.cnnic.net.cn/
DNS
的整个域名空间划分成许多的区(
Zone
),见上图中的椭圆标记,数据采用分布式存储。每个区都有域名服务器(包括主服务器和辅服务器),以资源记录(
Resource Record
)的形式来存储域名信息。资源记录包括了主机名(域名)和
IP
地址的对应,以及子域服务器的授权等多种类型。
用户在使用
DNS
服务时,可以不必细致地了解
DNS
域名空间的树型结构体系,只需在设置网络时指定一个
DNS
服务器或使用动态主机配置(
DHCP
)等相关技术,从而使用户的应用程序可以通过操作系统内嵌的解析器(
Resolver
)访问
DNS
系统,查询域名相关的网络资源信息。
3.5.2
如何自动发现提供解析服务的
DNS
服务器?
(1)
无状态的
DNS
服务器发现
无状态
DNS
服务器自动发现有以下几种方式:
为子网内部的
DNS
服务器配置站点范围内的任意播地址。要进行自动配置的节点以该任意播地址为目的地址发送服务器发现请求,询问
DNS
服务器地址、域名和搜索路径等
DNS
信息。这个请求到达距离最近的
DNS
服务器,服务器根据请求,回答
DNS
服务器单播地址、域名和搜索路径等
DNS
信息。节点根据服务器的应答配置本机
DNS
信息,以后的
DNS
请求就直接用单播地址发送给
DNS
服务器。
与第一种方式相同,只是不用站点范围内的任意播地址,而采用站点范围内的组播地址或链路组播地址等。
一直用站点范围内的任意播地址作为
DNS
服务器的地址,所有的
DNS
解析请求都发送给这个任意播地址。距离最近的
DNS
服务器负责解析这个请求,得到解析结果后把结果返回请求节点,而不像第一种方式是把
DNS
服务器单播地址、域名和搜索路径等
DNS
信息告诉节点。
从网络扩展性、安全性、实用性等多方面综合考虑,第一种采用站点范围内的任意播地址作为
DNS
服务器地址的方式相对较好。
(2)
有状态的
DNS
服务器发现
有状态的
DNS
服务器发现方式是通过类似
DHCP
的服务器把
DNS
服务器地址、域名和搜索路径等
DNS
信息告知节点。当然,这需要额外的服务器。
3.5.3
在
IPv4
到
IPv6
的过渡阶段如何实现
DNS
?
在
IPv4
到
IPv6
的过渡过程中,作为
Internet
基础架构的
DNS
服务也要支持这种网络协议的升级和转换。可以用两种方法实现
IPv4
到
IPv6
过渡阶段的
DNS
:
(1) DNS-ALG
与
NAT-PT
相结合的方法
IPv4
和
IPv6
的
DNS
在记录格式等方面有所不同,为了实现
IPv4
网络和
IPv6
网络之间的
DNS
查询和响应,可以将应用层网关
DNS-ALG
与
NAT-PT
相结合,作为
IPv4
和
IPv6
网络之间的翻译器。例如,
IPv4
的地址域名映射使用“
A
”记录,而
IPv6
使用“
AAAA
”或“
A6
”记录。那么,
IPv4
节点发送到
IPv6
网络的
DNS
查询请求是“
A
”记录,
DNS-ALG
就把“
A
”改写成“
AAAA
”,并发送给
IPv6
网络中的
DNS
服务器。当服务器的回答到达
DNS-ALG
时,
DNS-ALG
修改回答,把“
AAAA
”改为“
A
”,把
IPv6
地址改成
DNS-ALG
地址池中的
IPv4
转换地址,把这个
IPv4
转换地址和
IPv6
地址之间的映射关系通知
NAT-PT
,并把这个
IPv4
转换地址作为解析结果返回
IPv4
主机。
IPv4
主机就以这个
IPv4
转换地址作为目的地址与实际的
IPv6
主机通过
NAT-PT
通信。这个过程示意如下图。
(2)
双协议栈方式
对于采用双协议栈方式的过渡方法,在
DNS
服务器中同时存在“
A
”记录和“
AAAA
”(或“
A6
”)记录。由于节点既可以处理
IPv4
协议,也可以处理
IPv6
协议,因此无需类似
DNS ALG
的转换设备。无论
DNS
服务器回答“
A
”记录还是“
AAAA
”记录,都可以进行通信。
3.6
邻居发现
3.6.1 IPv6
邻居发现协议包括哪些内容?
IPv6
定义了邻居发现协议(
Neighbor Discoveryprotocol
,
NDP
),它使用一系列
IPv6
控制信息报文(
ICMPv6
)来实现相邻节点(同一链路上的节点)的交互管理,并在一个子网中保持网络层地址和链路层地址之间的映射。邻居发现协议中定义了
5
种类型的信息:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告。通过这些信息,实现了对以下功能的支持:
·
路由器发现:即帮助主机来识别本地路由器;
·
前缀发现:节点使用此机制来确定指明链路本地地址的地址前缀以及必须发送给路由器转发的地址前缀;
·
参数发现:帮助节点确定诸如本地链路
MTU
之类的信息;
·
地址自动配置:用于
IPv6
节点自动配置;
·
地址解析:替代了
ARP
和
RARP
,帮助节点从目的
IP
地址中确定本地节点(即邻居)的链路层地址;
·
下一跳确定:可用于确定包的下一个目的地,即可确定包的目的地是否在本地链路上。如果在本地链路,下一跳就是目的地;否则,包需要选路,下一跳就是路由器,邻居发现可用于确定应使用的路由器;
·
邻居不可达检测:帮助节点确定邻居(目的节点或路由器)是否可达;
·
重复地址检测:帮助节点确定它想使用的地址在本地链路上是否已被占用;
·
重定向:有时节点选择的转发路由器对于待转发的包而言并非最佳。这种情况下,该转发路由器可以对节点进行重定向,使它将包发送给更佳的路由器。例如,节点将发往
Internet
的包发送给为节点所在的内部网服务的默认路由器,该内部网路由器可以对节点进行重定向,以使其将包发送给连接在同一本地链路上的
Internet
路由器。
3.6.2 IPv6
邻居发现协议与
IPv4
地址解析协议有什么区别?
IPv6
不再执行地址解析协议(
ARP
)或反向地址解析协议(
RARP
),而以邻居发现协议中的相应功能代替,
IPv6
邻居发现协议与
IPv4
地址解析协议主要区别如下:
IPv4
中地址解析协议
ARP
是独立的协议,负责
IP
地址到链路层地址的转换,对不同的链路层协议要定义不同的
ARP
协议。
IPv6
中邻居发现协议
NDP
包含了
ARP
的功能,且运行于因特网控制报文协议
ICMPv6
上,更具有一般性,包括更多的内容,而且适用于各种链路层协议;
ARP
协议以及
ICMPv4
路由器发现和
ICMPv4
重定向报文基于广播,而
NDP
协议的邻居发现报文基于高效的组播和单播;
可达性检测的目的是确认相应
IP
地址代表的主机或路由器是否还能收发报文,
IPv4
没有统一的解决方案。
NDP
中定义了可达性检测过程,保证
IP
报文不会发送给“黑洞”。
3.7
超长数据传送问题
3.7.1 IPv6
如何解决超长数据的传送问题?
IPv6
要求互联网上的每条链路具有
1280
或更多个八位组的最大传输单元(
MTU
)。无法在一段之内传送
1280
个八位组的链路必须根据链路的情况在
IPv6
下层的协议中提供分段和重组机制。具有可配置
MTU
的链路,比如
PPP
链路必须配置为具有至少
1280
个八位组的
MTU
;要发送大于路径
MTU
的包,节点可以使用
IPv6
分段报头,在源节点将包分段,并在目的节点将包重组。
3.7.2 IPv6
通信中源节点如何发现到目的节点的最大传输单元?
RFC1981
中描述了一种动态发现路径最大传输单元(
PMTU
)的方法。基本思想是源节点最初假定到目的节点的一条路径的
PMTU
是这条路径第一跳的已知
MTU
。如果发往这条路径的任何包由于太大而不能被路径上的一些节点转发,那些节点将丢弃这些包并发回
ICMPv6
包太大消息。源节点收到这样一个消息后应根据包太大消息中报告的
MTU
压缩的那一跳的
MTU
值减小它为这条路径假定的
PMTU
。当节点对
PMTU
的估计值小于或等于实际
PMTU
时路径
MTU
发现过程结束。要注意在这个过程中“发包
-
收到包太大消息”的循环可能反复多次,因为路径上总潜在可能存在
MTU
更小的链路。节点也可以通过停止发送比
IPv6
最小链路
MTU
大的包来终止这个发现过程。
3.8
路由技术
3.8.1 IPv6
在路由方面有什么新特点?
IPv6
采用聚类机制,定义了非常灵活的层次寻址及路由结构,同一层次上的多个网络在上层路由器中表示为一个统一的网络前缀,这样可以显著减少路由器必须维护的路由表项。在理想情况下,一个核心主干网路由器只须维护不超过
8192
个表项。这大大降低了路由器的寻路和存储开销。
IPv6
协议所带来的另一个特点是提供数据流标签,即流量识别。路由器可以识别属于某个特定流量的数据包,并且这条信息第一次接收时即被记录下来,下一次这个路由器接收到同样的流量数据包后,路由器采用识别的记录情况,而不需查对路径选择表,从而减少了数据处理的时间。
多点传送路由是指目的地址是一个多点传送地址的信息包路由。在
IPv6
中,多点传送路由的问题与
IPv4
中类似,只是功能有所加强,分别成为了
ICMPv6
和
OSPFv6
的一部分,而不是
IPv4
中的单独协议,从而成为了
IPv6
整体的一部分。为了路由多点传送信息包,
IPv6
中创建了一个分布树(多点传送树)到达组里的所有成员。
3.8.2 IPv6
中可用的路由协议包括哪些?
IPv6
主要使用三种路由协议:
RIPv6
(
Routing Information Protocol
,路由信息协议)、
OSPFv6
(
Open Shortest Path First
,开放最短路径优先)和
IDRPv2
(
Inter-Domain RoutingProtocol
,域间路由协议)以及可能的
EIGRP
和双层的
IS-IS
。
RIPv6
是可以与
IPv6
共同使用的
RIP
版本。更新后的
RIP
允许接收
128
位地址,没有增加新特性,没有消除以前限制的相关前缀长度。这种选择的原因是为了保持
RIPv6
的简单性,这样它可以在非常简单的设备上实现。
OSPFv6
是可以用于
IPv6
的
OSPF
版本,它也是
IPv6
推荐的内部网关路由协议(
IGP
),作为所有路由器厂商的标准实现,它适于大型网络。
OSPFv6
作为
OSPF
的更新,允许传送新的
128
位地址和相关的前缀长度,在
OSPFv6
中,区域定义为
128
位地址。
IDRP
是和
IPv6
共同使用的外部网关路由协议(
EGP
),
IDRP
是一个路径矢量协议,在
OSI
结构中是设计在无连接网络协议(
CLNP
,
ISO 8473
)使用的,在
Internet
上作为
EGP
从
BGP-4
得出,适于和
IPv6
共同使用的
IDRP
版本是
IDRPv2
。
3.9
组播技术
3.9.1 IPv6
在支持组播方面有什么特征?
IPv6
加强了组播功能,这是一种可将信息传递给所有已登记了欲接收该消息的主机的功能。使用组播功能可以同时传递数据给大量的用户,传递过程只会占有一些公共或专用带宽开销而不会浪费带宽在整个网络里广播。在
IPv6
的组播功能中增加了
“标志”,可以区分永久性与临时性地址,更有利于组播功能的实现。
IPv6
还包含了一些限制组播消息传递范围的一些特性,这样,组播消息可以被局限在一个特定的位置、区域、公司或其它约定范围,从而减少了带宽的使用并可提供安全性。组播的意义在于只有用户加入相应的组播组才能收到发给该组的信息,这对于视频节目的发送来说意义尤其重大,模拟电视中的频道概念就完全可以用组播组的概念来代替。而且组播组的范围可以包括同一本地网、同一机构网、甚至
IPv6
全球地址空间中的任何位置的节点,这就为网络多媒体信息服务提供了更大的灵活性。
3.10
对移动性的支持
3.10.1
什么是移动
IPv6
?
移动
IPv6
协议为用户提供可移动的
IP
数据服务,让用户可以在世界各地都使用同样的
IPv6
地址,非常适合未来无线上网。
现在的互联网协议
IPv4
,原本不提供任何移动性支持。针对这一情况,
IETF
于
1996
年制订了支持移动互联网设备的协议,称为移动
IP
,其协议有两种版本:基于
IPv4
的移动
IPv4
和基于
IPv6
的移动
IPv6
。
移动
IP
的主要目标是:不管是连接在本地链路还是移动到外地网络,移动节点总是通过本地地址寻址。移动
IP
在网络层加入了新的特性,在改变网络连接点时,运行在节点上的应用程序不用修改或配置仍然可用。这些特性使得移动节点总是通过本地地址通信。这种机制对于
IP
层以上的协议层是完全透明的。移动节点所在的本地链路称为移动节点的家乡链路,移动节点的本地地址称为家乡地址。
移动
IPv6
操作包括家乡代理注册、三角路由、路由优化、绑定管理、移动检测和家乡代理发现。移动
IPv6
的工作机制如下图所示。图中有
3
条链路和
3
个系统。链路
A
上有一个路由器提供家乡代理服务,这个链路是移动节点的家乡链路。移动节点从链路
A
移动到链路
B
。链路
C
上有一个通信节点,可以是移动的或者静止的。
当移动节点连接到外地链路时,除了家乡地址外,它还可以通过一个或多个转交地址进行通信。转交地址是移动节点在外地链路时的
IP
地址。移动节点的家乡地址和转交地址之间的关联称为“绑定”。移动节点的转交地址可以自动配置。
移动
IPv6
的实现离不开家乡链路上的家乡代理。当移动节点离开本地时,要向家乡链路上的一个路由器注册自己的一个转交地址,要求这个路由器作为自己的家乡代理。家乡代理需要用代理邻居发现来截获家乡链路上发往移动节点家乡地址的数据包,然后通过隧道将截获的数据包发往移动节点的主转交地址。为了通过隧道发送截获的数据包,家乡代理要把数据包进行
IPv6
封装,外部的
IPv6
报头地址设为移动节点的主转交地址。
当移动节点离开本地时,家乡链路的一些节点可能重新配置,导致执行家乡代理功能的路由器被其他路由器所代替。在这种情况下,移动节点可能不知道自己家乡代理的
IP
地址。移动
IPv6
提供了一种动态家乡代理地址发现机制,移动节点可以动态发现家乡链路上家乡代理的
IP
地址,离开本地时,它在这个家乡代理上注册转交地址。
移动
IPv6
还定义了一个附加的
IPv6
目的选项——家乡地址选项。作为发送方的移动节点通过在发送的数据包中携带家乡地址选项可以把家乡地址告诉作为接收方的通信节点,而转交地址对于移动
IPv6
以上层(如传输层)是透明的。
在
IPv6
中,移动节点能把自己的转交地址告诉每个通信节点,使通信节点和移动节点之间进行直接路由,避免了三角路由问题。由于未来互联网上会有大量的无线移动节点,因此,在路由效率上的大规模改善可能对互联网的可扩展性产生本质的影响。
移动
IPv6
具有诱人的应用前景,它为新一代无线用户提供了移动支持,但在移动越区切换、
QoS
、安全等方面仍不能满足实际应用的需要。目前,许多研究机构(包括移动通信的著名厂商诺基亚、爱立信等)都在研究这些关键技术。
3.10.2
为什么
IPv6
能够比
IPv4
更好地解决移动问题?
移动
IPv6
与移动
IPv4
相比优势明显,主要是其设计吸收了移动
IPv4
的发展经验,并且抓住了设计新版本
IP
协议(
IPv6
)的大好时机,结合了
IPv6
的很多新特性。
IPv6
的出现是移动计算的一个重要里程碑,
IPv6
的下列主要特性对于未来的移动无线网络的发展至关重要:足够多的
IP
地址、安全数据报头的实现、目的选项提高了路由效率、地址自动配置、避免入口过滤、错误恢复没有软状态“瓶颈”。
移动
IPv6
协议的优点在移动终端数量持续上涨的今天尤其突出。
IPv6
将是实现移动互联网上许多新型而精彩的服务的关键。尽管
IPv4
中也存在移动协议,但二者之间存在本质的区别:移动
IPv4
协议不适用于数量庞大的移动终端。目前全世界的移动终端数就超过
7
亿个,而且移动电话终端的潮流才刚刚开始,包含诸如门、防盗自动警铃等设备的下一轮终端浪潮已经显露出来。移动
IP
需要为每个设备提供一个全球唯一的
IP
地址,不久的将来,当每个人都要携带一个或多个移动终端时,
IPv4
将没有足够的地址空间为在公共互联网上运行的每个移动终端分配一个全球唯一的
IP
地址,而
IPv6
却可以实现这一点。除了
IPv6
的其他优点外,单这一项功能就可以实现个人之间的直接通信。从另一个角度说,移动
IPv6
能够通过简单的扩展,满足大规模移动用户的需求。这样,它就能在全球范围内解决有关网络和访问技术之间的移动性问题。另外,
IPv4
协议中对移动性的支持不是强制的,而移动
IPv6
是
IPv6
协议中不可或缺的部分,所有
IPv6
的实现都必须支持移动性。
3.11
安全问题
3.11.1 IPv6
能彻底解决互联网中的安全问题吗?
原来的互联网安全机制只建立于应用程序级,如
E-mail
加密、
SNMPv2
网络管理安全、接入安全(
HTTP
、
SSL
)等,无法从
IP
层来保证
Internet
的安全。为了加强互联网的安全性,从
1995
年开始,
IETF
着手研究制定了一套
IP
安全(
IP Security
,
IPSec
)协议用于保护
IP
通信的安全。
IPSec
提供既可用于
IPv4
也可用于
IPv6
的安全性机制,它是
IPv6
的一个组成部分,也是
IPv4
的一个可选扩展协议。通过集成
IPSec
,
IPv6
实现了
IP
级的安全。
IPSec
提供如下安全性服务:访问控制、无连接的完整性、数据源身份认证、防御包重传攻击、保密、有限的业务流保密性。
IPSec
的认证报头(
Authentication Header
,
AH
,
RFC2402
中描述)协议定义了认证的应用方法,封装安全负载(
EncapsulatingSecurity Payload
,
ESP
,
RFC2406
中描述)协议定义了加密和可选认证的应用方法。
IPSec
安全性服务完全通过
AH
和
ESP
头相结合的机制来提供,当然还要有正确的相关密钥管理协议。在实际进行
IP
通信时,可以根据安全需求同时使用这两种协议或选择使用其中的一种。
IPv6
实质上不会比
IPv4
更加安全。
IPv6
标准的起草者、思科总部的两位“杰出网络技术领袖”
Fred Baker
和
Tony Hain
认为
IPv6
从根本上来说,只是
IP
地址改变的协议包,并不能解决现在的互联网协议
IPv4
中的安全问题。但是由于
IPSec
提供的端到端安全性的两个基本组件——认证和加密——都是
IPv6
协议的必备组件,而在
IPv4
中,它们只是可选组件,因此,采用
IPv6
,安全性会更加简便、一致。更重要的是,
IPv6
使我们有机会在将网络转换到这种新型协议的同时发展端到端安全性。
3.11.2
为解决
IPv6
网络安全问题,传统的安全设备需要做那些改进?
IPv6
网络中仍需要使用防火墙、入侵检测系统等传统的安全设备,但由于
IPv6
的一些新特点,
IPv4
网中现有的这些安全设备在
IPv6
网中不能直接使用,还需要做些改进:
防火墙的设计
由于
IPv6
相对
IPv4
在数据报头上有了很大的改变,所以原来的防火墙产品在
IPv6
网络上不能直接使用,必须做一些改进。针对
IPv6
的
Socket
套接口函数已经在
RFC3493
:
Basic SocketInterface Extensions for IPv6
中定义,以前的应用程序都必须参考新的
API
做相应的改动。
IPv4
中防火墙过滤的依据是
IP
地址和
TCP/UDP
端口号。
IPv4
中
IP
头部和
TCP
头部是紧接在一起的,而且其长度是固定的,所以防火墙很容易找到头部,并应用相应的策略。然而在
IPv6
中
TCP/UDP
报头的位置有了根本的变化,它们不再是紧连在一起的,通常中间还间隔有其他的扩展头部,如路由选项头部,
AH/ESP
头部等。防火墙必须读懂整个数据包才能进行过滤操作,这对防火墙的处理性能会有很大的影响。
入侵检测系统(
IDS
)的设计
在
IPv6
下也使我们不得不放弃以往的网络监控技术,投身一个全新的研究领域。首先,
IDS
产品同防火墙一样,在
IPv6
下不能直接运行,还要做相应的修改。其次,
IDS
的工作原理实际上是一个监听器,接收网段上的所有数据包,并对其进行分析,从而发现攻击,并实施相应的报警措施。但是,如果使用传输模式进行端到端的加密,
IDS
就无法工作,因为它接收的是加密的数据包,无法理解。当然,解决方案之一是让
IDS
能对这些数据包进行解密,但这样势必会带来新的安全问题。同时
IPv6
的可靠性是否如最初所设想的那样,也有待时间的考验。
由于
IPv6
中引入了网络层的加密技术,未来网络上的数据通讯的保密性将会越来越强,这使网络入侵检测系统和主机入侵检测引擎也面临在多种不同平台如何部署的问题。这就需要研究
IDS
新的部署方式,再下一步,研究如何才能在任何网络状况、任何服务器、任何客户端、任何应用环境都能进行适当的自转换和自适应。
3.12
服务质量
3.12.1
为更好地提供服务质量,
IPv6
协议作了哪些考虑?
从协议的角度看,
IPv6
与目前的
IPv4
提供相同的服务质量(
QoS
),但是
IPv6
的优点体现在能提供不同的服务。这些优点来自于
IPv6
的包头结构中新增的优先级字段和流标签字段。优先级字段扩大到
1
个字节,这就可以定义
256
个级别的优先级,对各种多媒体信息根据紧急性确定数据包的优先级,从而保证每一项服务都能达到用户满意的质量。而有了
20
位长的流标签字段,在传输过程中,中间的各节点就可以识别和分开处理任何
IP
地址流。在
IPv6
中,同一个业务流的所有数据包采用相同的流标签,这样当路由器检测到相同的流标签的时候就采用相同的路径发出去,而不需要为每一个数据包重新选择路由,从而大大提高了数据包转发的效率,降低了端到端的延迟。尽管对流标签的准确应用还没有制定出有关标准,但将来它会用于基于服务级别的新计费系统。此外,在支持
“总是在线”连接、防止服务中断以及提高网络性能方面,
IPv6
也有助于改进服务质量。
IPv6
实现
QoS
的协议是
IETF
的资源保留协议(
Resource ReserveProtocol
,
RSVP
)。主机用
RSVP
代表应用数据流(指可以由路由器或者转发数据的主机辨别的相关数据包的流,在
IPv6
协议下就是拥有相同的流标签的流)向网络请求特定的服务质量,例如基于平均值的最大带宽、最大接收延迟、优先队列以及其他参数,主机也可以指定一个特定的网络服务级别,这类似于数字视频广播(
Digital VideoBroadcasting
,
DVB
)中的网络信息表的概念。
RSVP
带着这个请求通过网络,访问这个数据流经过的网络的每个节点。在每个节点上,
RSVP
试图为这个流进行资源保留。这使得提供具有服务质量的图像和其它实时业务成为可能。
3.13 IPv4
向
IPv6
的转换
3.13.1
什么是
IPv6
转换机制?为什么需要转换机制?
IPv6
不可能立刻替代
IPv4
,因此在相当一段时间内
IPv4
和
IPv6
会共存在一个环境中。要提供平稳的转换过程,使得对现有的使用者影响最小,就需要有良好的转换机制。目前,这个议题是
IETF ngtrans
工作小组的主要目标,有许多转换机制被提出,部分已被用于
6Bone
上。
IETF
推荐了双协议栈、隧道技术以及
NAT
等转换机制:
IPv6/IPv4
双协议栈技术
简单地说,双栈机制就是使
IPv6
网络节点具有一个
IPv4
栈和一个
IPv6
栈,同时支持
IPv4
和
IPv6
协议。
IPv6
和
IPv4
是功能相近的网络层协议,两者都应用于相同的物理平台,并承载相同的传输层协议
TCP
或
UDP
,如果一台主机同时支持
IPv6
和
IPv4
协议,那么该主机就可以和仅支持
IPv4
或
IPv6
协议的主机通信,
IPv6/IPv4
双协议栈的协议结构如下图所示:
应用层协议
TCP/UDP
协议
IPv6
协议
IPv4
协议
链路层及物理协议
隧道技术
隧道机制就是必要时将
IPv6
数据包作为数据封装在
IPv4
数据包里,使
IPv6
数据包能在已有的
IPv4
基础设施(主要是指
IPv4
路由器)上传输的机制。随着
IPv6
的发展,出现了一些被运行
IPv4
协议的骨干网络隔离开的局部
IPv6
网络,为了实现这些
IPv6
网络之间的通信,必须采用隧道技术。隧道对于源站点和目的站点是透明的,在隧道的入口处,路由器将
IPv6
的数据分组封装在
IPv4
中,该
IPv4
分组的源地址和目的地址分别是隧道入口和出口的
IPv4
地址,在隧道出口处,再将
IPv6
分组取出转发给目的站点。隧道技术的优点在于隧道的透明性,
IPv6
主机之间的通信可以忽略隧道的存在,隧道只起到物理通道的作用。隧道技术在
IPv4
向
IPv6
演进的初期应用非常广泛。但是,隧道技术不能实现
IPv4
主机和
IPv6
主机之间的通信;
网络地址转换技术
网络地址转换(
Network AddressTranslator
,
NAT
)技术是将
IPv4
地址和
IPv6
地址分别看作内部地址和全局地址,或者相反。例如,内部的
IPv4
主机要和外部的
IPv6
主机通信时,在
NAT
服务器中将
IPv4
地址(相当于内部地址)变换成
IPv6
地址(相当于全局地址),服务器维护一个
IPv4
与
IPv6
地址的映射表。反之,当内部的
IPv6
主机和外部的
IPv4
主机进行通信时,则
IPv6
主机映射成内部地址,
IPv4
主机映射成全局地址。
NAT
技术可以解决
IPv4
主机和
IPv6
主机之间的互通问题。
3.13.2
目前常见的
IPv4/IPv6
互通转换的技术标准有哪些?
现有网络到
IPv6
网络的过渡在技术上已十分成熟,而且这种过渡可以是循序渐进的。国际标准化组织和许多研发机构都开发出了多种
IPv4
与
IPv6
的互通转换机制。下面给出了目前常见的
IPv4/IPv6
互通转换技术标准:
·
6to4
:
RFC 3056
·
NAT-PT
(
Network AddressTranslation-Protocol Translation
):
RFC 2766
·
SIIT
(
Stateless IP/ICMPTranslation
):
RFC 2765
·
Tunnel broker
:
RFC 3053
·
6over4
:
RFC 2529
·
BIS
(
Bump-In-the-Stack
):
RFC 2767
·
BIA
(
Bump-in-the-API
):
RFC 3338
·
SOCKS-gateway
:
RFC 3089
·
TCP/UDP-relay
:
RFC 3142
·
DSTM
(
Dual Stack TransitionMechanism
):
draft-ietf-ngtrans-dstm-08.txt
·
ISATAP
(
Intra-Site AutomaticTunnel Addressing Protocol
):
draft-ietf-ngtrans-isatap-08.txt
3.13.3
什么是隧道?“
IPv6 over IPv4
”是什么意思?
隧道(
Tunnel
)是指将一种协议报头封装在另一种协议报头中,这样,一种协议就可以通过另一种协议的封装进行通信。
IPv6
隧道是将
IPv6
报头封装在
IPv4
报头中,这样
IPv6
协议包就可以穿越
IPv4
网络进行通信。
在
IPv6
全面实施之前,总有一些网络先提供对
IPv6
的支持,但是这些
IPv6
网络被运行
IPv4
协议的骨干网络隔离开来。“
IPv6 over IPv4
”的隧道就用来连接这些孤立的
IPv6
网络。隧道技术目前是国际
IPv6
试验床
6Bone
所采用的技术。利用隧道技术可以通过现有的运行
IPv4
协议的
Internet
骨干网络(即隧道)将局部的
IPv6
网络连接起来,因而是
IPv4
向
IPv6
过渡的初期最易于采用的技术。隧道技术的优点在于隧道的透明性,
IPv6
主机之间的通信可以忽略隧道的存在,隧道只起到物理通道的作用。它不需要大量的
IPv6
专用路由器设备和专用链路,可以明显地减少投资。其缺点是:在
IPv4
网络上配置
IPv6
隧道是一个比较麻烦的过程,而且隧道技术不能实现
IPv4
主机和
IPv6
主机之间的通信。
IPv4/v6
互通技术
本文首先介绍互通技术出现的背景及现状,随后对
IPv4
向
IPv6
过渡的三种基本技术作了简单的介绍,接下来分别介绍了
IPv6
小岛之间的通信方式,以及
IPv6
小岛与
IPv4
海洋之间的通信方式,最后就如何选择合适的过渡机制谈了些看法。
1
.互通技术出现的背景及现状
IPv6
已被认为是下一代互联网络协议核心标准之一。但是,一种新的协议从诞生到广泛应用需要一个过程,尤其是对于
IPv4
仍然很好的支撑着的
Internet
而言。在
IPv6
的网络流行于全球之前,总是有一些网络首先使用
IPv6
协议栈并希望能够与当前的
Internet
正常通信。为达到这一目的,研究者们必须开发出
IPv4 / IPv6
互通技术以保证
IPv4
能够平稳过渡到
IPv6
,除此之外,互通技术应该对普通用户做到“无缝”,对信息传递做到高效。
为了开展对于
IPv4/IPv6
过渡问题和高效无缝互连问题的研究,国际上,
IETF
组建了专门的
working group
即
NGTRANS
工作组来处理这个问题。同时,
IETF
在全球范围内成立试验床
6-Bone
,专门对
IPv6
的特性进行研究。目前已经出现了多种过渡技术和互连方案,这些技术各有特点,用于解决不同过渡时期、不同环境的通信问题。
在过渡的初期,
Internet
将由运行
IPv4
的
\"
海洋
\"
和运行
IPv6
的
\"
小岛
\"
组成。随着时间的推移,
IPv4
的海洋将会逐渐变小,而
IPv6
的小岛将会越来越多,最终完全取代
IPv4
。在过渡的初期,要解决的问题可以分成两大类:第一类就是解决这些
IPv6
的小岛之间互相通信的问题;第二类就是解决
IPv6
的小岛与
IPv4
的海洋之间通信的问题。
针对这两类问题已经提出了很多方案,有一些已经相当成熟并形成了
RFC
,有一些还只是作为
Internet draft
,有待进一步完善。
2
.
IPv4
向
IPv6
过渡的三种基本技术
目前解决过渡问题基本技术主要有三种:双协议栈(
RFC 2893 obsoleteRFC1933
)、隧道技术
(RFC 2893)
、
NAT-PT(RFC 2766)
。
(1)
双协议栈
( Dual Stack)
采用该技术的节点上同时运行
IPv4
和
IPv6
两套协议栈。这是使
IPv6
节点保持与纯
IPv4
节点兼容最直接的方式,针对的对象是通信端节点(包括主机、路由器)。这种方式对
IPv4
和
IPv6
提供了完全的兼容,但是对于
IP
地址耗尽的问题却没有任何帮助。由于需要双路由基础设施,这种方式反而增加了网络的复杂度。
(2)
隧道技术
( Tunnel)
隧道技术提供了一种以现有
IPv4
路由体系来传递
IPv6
数据的方法:将
IPv6
的分组作为无结构意义的数据,封装在
IPv4
数据报中,被
IPv4
网络传输。根据建立方式的不同,隧道可以分成两类:
(
手工
)
配置的隧道和自动配置的隧道。隧道技术巧妙地利用了现有的
IPv4
网络,它的意义在于提供了一种使
IPv6
的节点之间能够在过渡期间通信的方法,但它并不能解决
IPv6
节点与
IPv4
节点之间相互通信的问题。
(3) NAT-PT
转换网关除了要进行
IPv4
地址和
IPv6
地址转换,还要包括协议并翻译。转换网关作为通信的中间设备,可在
IPv4
和
IPv6
网络之间转换
IP
报头的地址,同时根据协议不同对分组做相应的语义翻译,从而使纯
IPv4
和纯
IPv6
站点之间能够透明通信。
3
.
IPv6
小岛之间的通信方式
(1)
手工配置隧道
( Configured Tunnel,RFC2893 )
这种隧道的建立是手工配置的,需要隧道两个端点所在网络的管理员协作完成。隧道的端点地址由配置来决定,不需要为站点分配特殊的
IPv6
地址,适用于经常通信的
IPv6
站点之间。每一个隧道的封装节点必须保存隧道终点的地址,当一个
IPv6
包在隧道上传输时终点地址会作为
IPv4
包的目的地址进行封装。通常封装节点要根据路由信息决定一个包是否要通过隧道转发。
采用手工配置隧道进行通信的站点之间必须有可用的
IPv4
连接,并且至少要具有一个全球唯一的
IPv4
地址。站点中每个主机都至少需要支持
IPv6
,路由器需要支持双栈。在隧道要经过
NAT
设施的情况下这种机制不可用。
手工配置隧道的主要缺点是网络管理员的负担很重,因为他要为每一条隧道做详细的配置。
(2)
自动配置的隧道
( Auto-configuredTunnel, RFC2893 )
这种隧道的建立和拆除是动态的,它的端点根据分组的目的地址确定,适用于单独的主机之间或不经常通信的站点之间。自动配置的隧道需要站点采用
IPv4
兼容的
IPv6
地址
( IPv4 CompatibleIPv6 Address
,
0::IPv4ADDR/96 )
,这些站点之间必须有可用的
IPv4
连接,每个采用这种机制的主机都需要有一个全球唯一的
IPv4
地址。
采用这种机制不能解决
IPv4
地址空间耗尽的问题(采用手工配置隧道的站点就不需要
IPv4
地址)。两外还有一种危险就是如果把
Internet
上全部
IPv4
路由表包括到
IPv6
网络中,那么会加剧路由表膨胀的问题。这种隧道的两个端点都必须支持双协议栈(手工配置就不需要)。在隧道要经过
NAT
设施的情况下这种机制不可用。
(3) Tunnel Broker ( RFC3053- IPv6Tunnel Broker )
Tunnel Broker
不是一种隧道机制,而是一种方便构造隧道的机制。可以简化隧道的配置过程,适用于单个主机获取
IPv6
连接的情况。
Tunnel Broker
也可用于站点之间,但这时可能会在
IPv6
的路由表中引入很多条目,导致
IPv6
的路由表过于庞大,违背了
IPv6
设计的初衷。用户可以通过
Tunnel Broker
从支持
IPv6
的
ISP
处获得持久的
IPv6
地址和域名。
Tunnel Broker
要求隧道的双方都支持双栈并有可用的
IPv4
连接,在隧道要经过
NAT
设施的情况下这种机制不可用。采用
TB
方法,可以使
IPv6
的
ISP
可以很容易对用户执行接入控制,按照策略对网络资源进行分配。
TB
转换机制包括
Tunnel Server(TS)
和
Tunnel Broker(TB)
。
server
和
boker
位于不同的计算机上,对于隧道的控制通常是
web
形式的。
(4) 6 over 4 ( RFC2529 )
,
IPv4
多播隧道
6 over 4
也是一种自动建立隧道的机制,这种隧道端点的
IPv4
地址采用邻居发现的方法确定。与手工配置隧道不同的是,它不需要任何地址配置;与自动隧道不同的是它不要求使用
V4
兼容的
V6
地址。但是采用这种机制的前提就是
IPv4
网络基础设施支持
IPv4
多播。这里的
IPv4
多播域可以是采用全球唯一的
IPv4
地址的网络,或是一个私有的
IPv4
网络的一部分。这种机制适用于
IPv6
路由器没有直接连接的物理链路上的孤立的
IPv6
主机,使得它们能够将
IPv4
广播域作为它们的虚拟链路,成为功能完全的
IPv6
站点。
采用这种方法连接的
IPv6
站点的不需要采用
IPv4
兼容地址,也不需要手工配置的隧道。当采用
6 over 4
的站点通过一台支持
6 over 4
的路由器与外界相连时,站点内的主机可以和外部
IPv6
站点通信。但是
6 over 4
还是没有解决一个孤立的用户连接到全球性的
IPv6 Internet
上。
(5) 6 to 4 ( RFC3056)
6to4
也是一种自动构造隧道的机制,这种机制要求站点采用特殊的
IPv6
地址(
2002:IPv4ADDR::/48
),这种地址是自动从站点的
IPv4
地址派生出来的。所以每个采用
6to4
机制的节点至少必须具有一个全球唯一的
IPv4
地址,(这种地址分配方法,可以使得其它域的边界路由器自动地区分隧道接收端点是否在本域内)。由于这种机制下隧道端点的
IPv4
地址可以从
IPv6
地址中提取,所以隧道的建立是自动的。
6to4
不会在
IPv4
的路由表中引入新的条目,在
IPv6
的路由表中只增加一条表项。采用
6to4
机制的
IPv6 ISP
只需要做很少的管理工作,这种机制很适用于运行
IPv6
的站点之间的通信。
6to4
要求隧道中至少有两台路由器支持双栈和
6to4
,主机要求至少支持
IPv6
协议栈。
6to4
机制允许在采用
6to4
的
IPv6
站点和纯
IPv6
站点之间通过中继路由器
( 6to4 Relay Router )
进行通信,这时不要求通信的两个端点之间具有可用的
IPv4
连接,中继路由器建议运行
BGP4+
。
这种机制把广域的
IPv4
网络作为一个单播的点到点链路层。这种机制适合作为
V4/V6
共存的初始阶段的转换工具,它可以与防火墙、
NAT
共存,但是
NAT box
必须具有全球唯一的
IPv4
地址,并且应有
6to4
机制和完备的路由功能。
在隧道终点,任何从正常
IPv4
链路传来的
6to4
数据流都可以被接受和解封装。为了防止
IPv6
欺骗,可采用附加的基于源地址的包过滤技术。一种方法就是检查用于封装的
IPv4
地址是否与被封装的
IPv6
包头地址一致。这种检查要在中继路由器(
relay router
)中设置。在任何情况下,
6to4
数据流中的源和目的地址嵌入的
V4
地址必须是以全球唯一单播地址格式,否则这些数据包将会在不被警告的情况被丢弃。
4
.
IPv6
小岛与
IPv4
海洋之间的通信方式
(1) Dual Stack Model ( RFC2893 )
在这种模型下,任意节点都是完全双栈的。这时不存在
IPv4
与
IPv6
之间的相互通信问题,但是这种机制要给每一个
IPv6
的站点分配一个
IPv4
地址。这种方法不能解决
IPv4
地址资源不足的问题,而且随着
IPv6
站点的增加会很难得到满足,因此这种方法只能用在早期的变迁过程。
(2) Limited Dual Stack Model (RFC2893 )
在这种模型下,服务器和路由器仍然是双栈的,而非服务器的主机只需要支持
IPv6
。这种机制可以节省大量的
IPv4
地址,但是在纯
IPv6
和纯
IPv4
节点之间的通信将会出现问题,为了解决这种问题,必须与其它技术结合使用。
(3) SIIT ( Stateless IP/ ICMPTranslation, RFC2765 )
SIIT
定义了在
IPv4
和
IPv6
的分组报头之间进行翻译的方法,这种翻译是无状态的,因此对于每一个分组都要进行翻译。这种机制可以和其它的机制
(
如
NAT-PT)
结合,用于纯
IPv6
站点同纯
IPv4
站点之间的通信,但是在采用网络层加密和数据完整性保护的环境下这种技术不可用。纯
IPv6
节点和纯
IPv4
节点通过一个
SIIT
转换器通信,
IPv6
节点看到的对方一个
IPv4
瞞
apped
地址的主机,同时它自己则使用一个
IPv4 translated
的地址。如果
IPv6
主机发出的
IP
分组中的目的地址是一个
IPv4
瞞
apped
地址,那么
SIIT
转换器就知道这个
IP
分组需要进行协议转换。
(4) NAT-PT (Network AddressTranslation - Protocol Translation, RFC2766 )
NAT-PT
就是在做
IPv4/IPv6
地址转换
(NAT)
的同时在
IPv4
分组和
IPv6
分组之间进行报头和语义的翻译
(PT)
。适用于纯
IPv4
站点和纯
IPv6
站点之间的通信。对于一些内嵌地址信息的高层协议(如
FTP
),
NAT-PT
需要和应用层的网关协作来完成翻译。在
NAT-PT
的基础上利用端口信息,就可以实现
NAPT-PT
,这点同目前
IPv4
下的
NAPT
没有本质区别。
NAT-PT
的原理和
SIIT
类似,其改进的地方是将传统的
IPv4
下的
NAT
应用于
SIIT
中的
IPv4
地址的选取当中。
SIIT
的一个最大的缺点是需要比较大的
IPv4
地址池,以供
IPv6
应用动态分配。这个
IPv4
地址池很大程度上制约了
SIIT
的应用。而
NAT-PT
采用传统的
IPv4
下的
NAT
技术来分配
IPv4
地址,这样就可以以很少的
IPv4
地址构成自己的
IPv4
地址分配池,可以给大量的需要进行地址转换的应用使用协议转换服务。
在实现方面,如果没有
DNS-ALG
的支持,只能实现由
IPv6
发起的与
IPv4
之间的通信,反之,包就会被丢弃。如果有
DNS-ALG
的支持,就可以实现双向的通信。有一些应用需要一定程度的地址稳定性,
NAT-PT
可以被配置成提供
V6
到特定
V4
地址的静态映射。
该机制适用于过渡的初始阶段,使得基于双协议栈的主机,能够运行
IPv4
应用程序与
IPv6
应用互相通信。这种技术允许不支持
IPv6
的应用程序透明地访问纯
IPv6
站点。该机制要求主机必须是双栈的,同时要在协议栈中插入三个特殊的扩展模块:域名解析器、地址映射器和翻译器,相当于在主机的协议栈中使用了
NAT-PT
。
(6) BIA ( Bump-In-the-API, InternetDraft )
这种技术同
BIS
类似,只是在
API
层而不是在协议栈的层次上进行分组的翻译,所以它的实现比
BIS
要简单一些,因为不需要对
IP
包头进行翻译。
BIS
与
BIA
的主要区别是:
BIS
用在没有
IPv6
协议栈的系统上,
BIA
用在有
IPv6
协议栈的系统上。
当双栈主机上的
IPv4
应用与其它
IPv6
主机通信时,
API
翻译器检测到从
IPv4
应用发出的基于
socket API
的函数,就调用
IPv6 socket API
函数与
IPv6
主机通信。
(7) SOCKS64 ( Socks gateway, rfc3089)
SOCKS64
是原有
SOCKS
协议
( RFC1928 )
的扩展,相当于
IP
层的代理。这种机制不需要修改
DNS
或者做地址映射,可用于多种环境,但是需要采用
SOCKS
代理服务器,并在客户端安装支持
SOCKS
代理的软件,对于用户来讲不是透明的。该机制增加了两个新的功能部件,它们构成了网关机制。
除了上述
7
种通信方式,
IPv6
小岛与
IPv4
海洋之间还可以通过
TRT
、
DSTM
、
ALG
等方式进行通信。
5
.如何选择合适的过渡机制
从已有的过渡机制可以看出,目前所有的方案都是针对某一种问题而提出的。这些过渡机制都不是普遍适用的,每一种机制都适用于某种或几种特定的网络情况,而且常常需要和其它的技术组合使用。在实际应用时需要综合考虑各种实际情况来制定合适的过渡策略。对于某一类互连问题,设计者们可以找出新的方式,并随着网络技术和发展不断的改进和更新这种方式。
为选择一个合适的机制,首先需求要明确,明确应用的类型、范围和系统的类型,然后选择合适的转换机制进行设计和实施。
IPv4
向
IPv6
过渡时期,通常采用的组网原则:
·
在能直接建立
IPv6
链路的情况下,使用纯
IPv6
路由;
·
在不能使用
IPv6
链路的情况下,
IPv6
节点之间使用隧道技术;
·
双栈的
IPv6/IPv4
主机和纯
IPv6
或者纯
IPv4
的主机通信不需要采用协议转换,而直接“自动”选择相应的通信协议(
IPv4
或者
IPv6
)。
·
对于纯
IPv6
和纯
IPv4
主机之间的通信,则应该使用协议转换或者应用层网关(
ALG
)技术,设计的协议转换器或者
ALG
应该尽量保证在不修改原有应用的情况下就可以使用
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
第十三章 IPv6
计算机网络复习(第四章)
IPv6地邻居发现技术
什么是IPv6-是什么-IT百科文章
无线网络如何上ipv6-天涯问答
3分钟了解IPv6,下一代互联网的关键技术
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×