关于IPV6
 
 
IPv6协议技术特点(二)
发布时间:2017-11-15   浏览次数:11

4 地址自动配置技术

4.1 IPv6如何实现“即插即用”?

“即插即用”是指无需任何人工干预,就可以将一个节点插入IPv6网络并在网络中启动,IPv6使用了两种不同的机制来支持即插即用网络连接:启动协议(BOOTstrap Protocol,BOOTP)和动态主机配置协议(DHCP)。这两种机制允许IP节点从特殊的BOOTP服务器或DHCP服务器获取配置信息。这些协议采用“状态自动配置”(Stateful Autoconfiguration),即服务器必须保持每个节点的状态信息,并管理这些保存的信息。

状态自动配置的问题在于,用户必须保持和管理特殊的自动配置服务器以便管理所有“状态”,即所容许的连接及当前连接的相关信息。对于有足够资源来建立和保持配置服务器的机构,该系统可以接受;但是对于没有这些资源的小型机构,工作情形较差。

4.2 除了状态自动配置,IPv6还提供什么自动配置服务?

除了状态自动配置,IPv6还采用了一种被称为无状态自动配置(Stateless Auto Configuration)的自动配置服务。RFC2462中描述了IPv6的无状态自动配置。无状态自动配置要求本地链路支持组播,而且网络接口能够发送和接收组播包。无状态自动配置过程要求节点采用如下步骤:

首先,进行自动配置的节点必须确定自己的链路本地地址;

然后,必须验证该链路本地地址在链路上的唯一性;

最后,节点必须确定需要配置的信息。该信息可能是节点的IP地址,或者是其他配置信息,或者两者皆有。如果需要IP地址,节点必须确定是使用无状态自动配置过程还是使用状态自动配置过程来获得。

具体地说,在无状态自动配置过程中,主机首先通过将它的网卡MAC地址附加在链路本地地址前缀1111111010之后,产生一个链路本地单播地址(IEEE已经将网卡MAC地址由48位改为了64位。如果主机采用的网卡的MAC地址依然是48位,那么IPv6网卡驱动程序会根据IEEE的一个公式将48位MAC地址转换为64位MAC地址)。接着主机向该地址发出一个邻居发现请求(Neighbor Discovery Request),以验证地址的唯一性。如果请求没有得到响应,则表明主机自我配置的链路本地单播地址是唯一的。否则,主机将使用一个随机产生的接口ID组成一个新的链路本地单播地址。然后,以该地址为源地址,主机向本地链路中所有路由器多点传送一个路由器请求(Router Solicitation)来请求配置信息,路由器以一个包含一个可聚集全球单播地址前缀和其它相关配置信息的路由器宣告(Router Advertisement)作为响应。主机用它从路由器得到的全球地址前缀加上自己的接口ID,自动配置全球地址,然后就可以与Internet中的其它主机通信了。

如果没有路由器为网络上的节点服务,也就是本地网络孤立于其他网络,则节点必须寻找配置服务器来完成其配置;否则,节点必须侦听路由器宣告报文。这些报文周期性地发往所有主机的组播地址,以指明诸如网络地址和子网地址等配置信息。节点可以等待路由器宣告,也可以通过发送组播请求给所有路由器的组播地址来请求路由器发送宣告。一旦收到路由器的响应,节点就可以使用响应的信息来完成自动配置。

使用无状态自动配置,无需手动干预就能够改变网络中所有主机的IP地址。例如,当企业更换了联入Internet的ISP时,将从新ISP处得到一个新的可聚集全球地址前缀。ISP把这个地址前缀从它的路由器上传送到企业路由器上。由于企业路由器将周期性地向本地链路中的所有主机多点传送路由器宣告,因此企业网络中所有主机都将通过路由器宣告收到新的地址前缀,此后,它们就会自动产生新的IP地址并覆盖旧的IP地址。

域名解析技术

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字节之间。一个节点的域名是由从这个节点到根节点的路径上的所有标识从左到右顺序排列组成的,标识之间用“.”分隔。例如 www.cnnic.net.cn

DNS的整个域名空间划分成许多的区(Zone),见上图中的椭圆标记,数据采用分布式存储。每个区都有域名服务器(包括主服务器和辅服务器),以资源记录(Resource Record)的形式来存储域名信息。资源记录包括了主机名(域名)和IP地址的对应,以及子域服务器的授权等多种类型。

用户在使用DNS服务时,可以不必细致地了解DNS域名空间的树型结构体系,只需在设置网络时指定一个DNS服务器或使用动态主机配置(DHCP)等相关技术,从而使用户的应用程序可以通过操作系统内嵌的解析器(Resolver)访问DNS系统,查询域名相关的网络资源信息。

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信息告知节点。当然,这需要额外的服务器。

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”记录,都可以进行通信。

6 邻居发现

6.1 IPv6邻居发现协议包括哪些内容?

IPv6定义了邻居发现协议(Neighbor Discovery protocol,NDP),它使用一系列IPv6控制信息报文(ICMPv6)来实现相邻节点(同一链路上的节点)的交互管理,并在一个子网中保持网络层地址和链路层地址之间的映射。邻居发现协议中定义了5种类型的信息:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告。通过这些信息,实现了对以下功能的支持: <?XML:NAMESPACE PREFIX = O />

· 路由器发现:即帮助主机来识别本地路由器;

· 前缀发现:节点使用此机制来确定指明链路本地地址的地址前缀以及必须发送给路由器转发的地址前缀;

· 参数发现:帮助节点确定诸如本地链路MTU之类的信息;

· 地址自动配置:用于IPv6节点自动配置;

· 地址解析:替代了ARP和RARP,帮助节点从目的IP地址中确定本地节点(即邻居)的链路层地址;

· 下一跳确定:可用于确定包的下一个目的地,即可确定包的目的地是否在本地链路上。如果在本地链路,下一跳就是目的地;否则,包需要选路,下一跳就是路由器,邻居发现可用于确定应使用的路由器;

· 邻居不可达检测:帮助节点确定邻居(目的节点或路由器)是否可达;

· 重复地址检测:帮助节点确定它想使用的地址在本地链路上是否已被占用;

· 重定向:有时节点选择的转发路由器对于待转发的包而言并非最佳。这种情况下,该转发路由器可以对节点进行重定向,使它将包发送给更佳的路由器。例如,节点将发往Internet的包发送给为节点所在的内部网服务的默认路由器,该内部网路由器可以对节点进行重定向,以使其将包发送给连接在同一本地链路上的Internet路由器。

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报文不会发送给“黑洞”。

7 超长数据传送问题

7.1 IPv6如何解决超长数据的传送问题?

IPv6要求互联网上的每条链路具有1280或更多个八位组的最大传输单元(MTU)。无法在一段之内传送1280个八位组的链路必须根据链路的情况在IPv6下层的协议中提供分段和重组机制。具有可配置MTU的链路,比如PPP链路必须配置为具有至少1280个八位组的MTU;要发送大于路径MTU的包,节点可以使用IPv6分段报头,在源节点将包分段,并在目的节点将包重组。

7.2 IPv6通信中源节点如何发现到目的节点的最大传输单元?

RFC1981中描述了一种动态发现路径最大传输单元(PMTU)的方法。基本思想是源节点最初假定到目的节点的一条路径的PMTU是这条路径第一跳的已知MTU。如果发往这条路径的任何包由于太大而不能被路径上的一些节点转发,那些节点将丢弃这些包并发回ICMPv6包太大消息。源节点收到这样一个消息后应根据包太大消息中报告的MTU压缩的那一跳的MTU值减小它为这条路径假定的PMTU。当节点对PMTU的估计值小于或等于实际PMTU时路径MTU发现过程结束。要注意在这个过程中“发包-收到包太大消息”的循环可能反复多次,因为路径上总潜在可能存在MTU更小的链路。节点也可以通过停止发送比IPv6最小链路MTU大的包来终止这个发现过程。

选自:IPv6技术白皮书 作者:程明权