`
hulianwang2014
  • 浏览: 681052 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

闲谈IPv6-典型特征的一些技术细节

 
阅读更多

0.巨大的地址空间

这个已经不用再说了。除了空间巨大,固定长度的前缀分配也使得地址分配更加均衡。

1.ICMPv6真正的有了用武之地:地址/路由配置的自动化

IPv6使得联网设备真的成了即插即用,一切都是通过自动生成的链路本地地址开始的,如果没有这个开始,将不会存在后续的自动化。任何支持IPv6的设备都会为接口生成一个链路本地地址,所有的链路本地地址都是FE80开头的,巧妙的是最后的64位,是通过链路层地址生成的,典型的是EUI-64映射,将48位的以太网MAC地址映射成64位的链路本地地址的接口标识,生成这个链路本地地址后,即使没有路由器,同一链路的设备也能通过这个地址进行IP层的通信。IPv6中,链路层和IP层就这样巧妙的结合在一起,链路层提供信息,IP层使用之,使通信成为可能。
但是IPv6协议规定,使用这个自动生成的链路本地地址不能跨越路由器,我们知道,所谓的互联网就是由路由器连接而成的,互联网数据通信必须跨越路由器,也就是说必须有一个非链路本地地址的IPv6地址。既然有了同一链路可用的链路本地地址,那就意味着使用链路本地地址可以和同一链路的路由器通信了(一个路由器的每一个接口表示一个链路),IPv6定义了很多的邻居发现报文,可以让路由器告诉终端设备接口信息应该配置成什么,这就是所谓的自动配置,从开始到最后,不需要人工干预,普通用户再也不需要为配置地址这种技术型的工作犯愁了。下面就是自动配置的流程图:

OpenVPN的路由自动推送和自动地址配置和IPv6及其相似。

2.Linux的ARP与IPv6的地址解析:状态图竟然如此类似

IPv6以太网的地址解析使用组播进行,不再使用广播。这个过程十分简单,如果知道节点的IPv6地址,其组播地址可以自动算出来,然后就往这个组播地址发送解析报文请求即可,其实就是个邻居发现,得到回应后将MAC-IP对缓存起来,这个MAC-IP对的缓存有一个状态图,这个状态图猛一看好像是Linux的ARP缓存状态图,它们太像了,简直就是一个:

对比《Linux实现的ARP缓存老化时间原理解析》里面的那幅图。
然而和Liunx维护的ARP状态图不同的是,IPv6的邻接点缓存不再通过复杂的计算以及协议外的原则来维护,而是通过报文本身来维护,比如ARP缓存的更新机制是“收到来自同一IP的设备的arp包”即覆盖,IPv6则是使用邻接点公告报文中的“覆盖标志”来决定是否更新的。二者的差别仅仅是一个是实现,一个是协议标准自带的。

3.IPv6的各种发现机制:自动化配置的根基

IPv6之所以可以自动配置,正是由于存在诸多的发现报文,典型的就是:
a.邻接点请求/公告
b.路由器请求/公告

这些发现报文全部由ICMPv6来承载,路由器发现机制在IPv4实现中是可选的,然而IPv6实现中却是必须的。地址和路由的自动配置信息正是从这些发现报文中得到的。
诸多的自动化配置也需要对应的自动化失效机制,这就是引入了IPv6的一个针对地址的概念,也算是一个地址的属性吧,那就是地址的状态,一个地址使用下面的状态中的一种:试探,有效(选用/丢弃),无效,无疑,具体属于哪个状态和超时时间以及接收到的消息有关。
路由器配置非自动化,因为它需要表示人的策略,主机配置自动化,因为它仅仅被使用。IPv6路由器是不能使用自动配置机制的,配置路由器的人基本都是专业人士,IPv4的配置困难恰恰在于把路由配置,IP地址配置这种技术性的工作交给了使用者而不是管理员,要知道管理员不能去配置每一个终端,DHCP虽然可以,但它毕竟是一个外围的协议,并非IPv4本身的性质。IPv6彻底解放了广大用户,使用IPv6,所有人的终端就成了即插即用的了,类似传统家用电器那样子。
因此,IPv6的主干是配置而成,而叶子则是自己长出来的。主干嫁接容易,叶子却只能长出来,IPv4的叶子就是嫁接的,很不成功。这也符合我们的常识,一般都是在既有的树木上嫁接一系列光秃秃的枝干,然后等待叶子自己长出来...

4.IPv4中的几个跃跃欲试的思想

在配置Linux地址或者路由时,你可能会注意到一个scope参数,虽然你几乎不会用到它,然而到了IPv6,这个scope竟然集成进了IPv6地址本身,不同的前缀代表不同的scope。
在使用Windows的时候,当你使用多块网卡配置了多个默认网关或者DHCP得到了多个默认网关的时候,你可能会注意到注册表中有一个DeadGWDetectDefault,它根据TCP连接的有效率来判断使用哪个默认网关,然而到了IPv6,周期性的路由器通告竟然成了标准,协议本身就做好了DeadGWDetect的工作,并且减少了误判,做的更好。
在第2节,我解释了Linux的arp实现与IPv6的地址解析,同样的,这也是一个最终成为标准的跃跃欲试的想法。也许,很多不开源的协议栈也是这么实现的吧。因此IPv6可以说是集个大家协议栈于大成,解决了很多问题。

5.强弱主机支持的遗憾

6.IPv6将带来应用模式的根本转变

目前大量的应用都是C/S模式(B/S也是CS的一种)的,数据流特征基本是单向的,并且广域网的接入层也迎合了这种态势,ADSL正是其体现,不对称性正是IPv4的缺陷以及NAT修补造成的。
IPv6风靡之后,全球所有的节点在理论上将互联互通,CS模式的应用保持现状,大量的P2P应用将会涌现,整个互联网的交互性将大大增强。并且IPv6会影响到广域网接入技术,ADSL这种技术将不再流行,宁可对开也不要三七分。
除了应用,路由器等硬件设备也会发生大的转变,NAT不再是必须的功能,路由器真的就成了路由器。我们现在使用的家用路由器比如TP-LINK,D-LINK,甚至syslink等其实不是什么路由器,而只是一个互联网接入设备,也不知道当初为何为这种东西取名子为路由器。路由器的一对端口应该是双向互通的。IPv6使得NAT不再流行,诸多家用路由器厂商估计也要对自己的软件进行大的升级改造了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics