■ Maxim公司 Robert M. Muchsel
IP节点的可寻址空间越来越紧张。虽然232(大约40亿)个IPv4地址还没有完全分配,但是,预计在未来的几年内所有地址将被完全占用。下一代IP — IPv6将地址空间扩展到了2128,远远超出了人们的想象,在我们居住星球的每平方米就可提供6.67 x 1023个地址。这将保证未来的所有设备都可获得自己唯一的地址。拥有了足够的地址就不再需要网络地址转换(NAT)、临时性地址租赁和其它用于保存严格限量分配的IPv4地址的组装机。尽管台式机、服务器及其它传统的网络设备占有明显优势,但预计不同领域的网络设备将会有大幅度的增长,大多数小型设备将会改变互联网的命运。新潮网络用户总是集中在诸如GPRS、UMTS蜂窝电话或PDA的无线或移动设备,另外还包括一些嵌入式设备,如:监视器、传感器和智能节点,它们几乎能够嵌入到任何系统,从汽车到水表。
IPv6不仅扩展了地址空间,它检查IP使配置过程简单化、自动化(嵌入式应用的另一需求);它使IP更坚固、可扩展、可移动,增强了安全性和所支持服务的品质,简化、加速了路由。困扰IPv4的严峻问题是:最初分配IPv4地址的方式几乎是随机的,无法阻止路由表主干线的增长。IPv6要好一些,重建IP并逐步替代IPv4将获得许多优点。双IPv4/IPv6网络堆栈支持混合环境,允许向IPv6的逐步过渡。亚洲(特别是日本)是最先采纳IPv6的区域之一,因为这个区域在最初分配IPv4地址时变化不大。印度和中国的互联网用户无论是相对数量、还是绝对数量,都是预期增长最快的国家。考虑到它的优势和几个国家的政府管理层采纳的计划,IPv6变得更加重要。它在很长一段时间停留在样机阶段,现在已成为大多数操作系统的一个标准部件,例如:Microsoft Windows XP和Sun SolarisTM 8/9等。
本文简单介绍IPv6,描述如何运用驻留在DS80C400微控制器内部的硅软件包开发IPv6网络。
IPv6概述
地址
IPv6自动可配置功能的关键在于使用地址的方式,128位的IPv6地址划分为64位前缀(网位或子网)和64位主机位。前缀,也代表地址的范围,可以由网络供应商或路由器广播分配,也可以放置在链接或网站上。在以太网中,主机位通常由设备唯一的MAC地址(按照IEEE EUI-64格式)产生。这意味着IPv6节点一旦接通将配合一个有效的IP地址操作。为实现全球通信,节点需要申请或收听路由器包括前缀以及前缀与EUI-64组合的广播。与附加在IPv4的DHCP所不同的是:所有IPv6节点能够自行配置,即使在没有服务器的条件下。
IPv6地址用十六进制数表示,16位为一组。例如:3ffe:aaaa:bbbb:cccc:260:8ff:fe8d:6ee9,是一个全球范围的地址从用户的角度看,这些较长的地址通常隐藏在DNS名的背后,如www.maxim-ic.com。为了提供IPv6地址,需要一个具有IPv6功能的DNS服务器。可按照范例:IN AAAA 3ffe:aaaa:bbbb:cccc:260:8ff:fe8d:6ee9在DNS上建立一个IPv6地址登录替代用于IPv4的IN A记录,不存在原理性的新概念。由于IPv6地址的前缀预计变化比较频繁,所以,建议使用DNS。网络的重新编号比IPv4简单的多,甚至能够自动实现。
IPv6有单播地址和多播地址。此外,还定义了一种新型的随播地址目的文件类型。一个作用到随播IP的包被传送给若干个主机中最近或最好的主机。随播有助于通过路由改善负载平衡。
协议
尽管IPv6毫无更改地保留了UDP和TCP的高层协议,IP包的报头必须加以修改以符合更大的地址,需要对它进行清理、整齐地排列成64位,始终保持固定的长度以便路由;由于更高层协议已经带有包括IP报头部分的校验和,所以IP报头的校验和被取消。一个有趣的更改是利用相邻发现协议(NDP)替代APR,NDP是新型ICMPv6的一部分。替代地址解析需要向整个区域申请的广播方式,IPv6按照排除了这些广播的方式映射多播组和IPv6地址,确保节点(几乎)只接收它们感兴趣的数据流。有关ICMPv6和多播的详细内容请参考www.ipv6.org。
图1 网络启动时,DS80C400利用了IPv6的自动配置特性
DS80C400中的TCP/IP片上DS80C400硅软件包(ROM)包含了经过现场验证的、最新修订版的Dallas TCP/IP堆栈。硅软件包还包括一个小的操作系统和所有开发小型C或汇编语言TCP/IP网络客户或仅带有128kB外部存储器的服务器系统所需要的便利功能。当需要简单、快速地开发某种应用或需要扩展Java的某项性能,如目标序号时,DS80C400还可用于TINI Java 运行时间环境。驻留C或汇编语言的支撑通过BSD和工业标准、交叉平台接口等函数实现,如:socket()、bind()、listen()、accept()、connect()、send()等。TINI Java环境紧紧跟随JDK 1.1.8、并支持全部java.net包;可以使用任何支持Java的编译器。TINI执行标准的Java程序和字节代码。除了支持网络应用外,DS80C400硅软件包还可实现网络导入功能,跳过TFTP加载应用,支持IPv4的DHCP,甚至自配置IPv6上更简单的TFTP。图1分别描述了IPv4和IPv6上的DS80C400网络导入。网络引导装入器可通过DS80C400的引脚或通过引导装入器串口的用户命令调用。
DS80C400的IPv6
DS80C400硅软件包支持加入网络所需要的IPv6功能,符合“Minimum Requirements of IPv6 for Low-Cost Network Appliances”草案。考虑到嵌入式器件的资源紧缩,我们没有寄希望于用嵌入式器件实现包括安全、移动IP和路由的所有IPv6功能。由于IPv6逐步被人们采纳还需要经过几年的时间,因此,DS80C400网络堆栈集成了IPv4和IPv6双堆栈。由于DS80C400支持两种协议,它提供了在现存IPv4网络上传送IPv6的通道(6over4)。必要时它通过路由器传送数据包,本身并不需要执行协议间的转换。
例1是DS80C400运行在TINI1.1 Java环境下的范例,表示一个能够处理IPv4和IPv6请求的、简单的多径网络服务器的片段。从示例中看不到IPv6的特定代码,因为它们根本就不存在。应用可以毫不费力地从IPv4端口转向IPv6端口;仅需检查输入的IP地址,可能只需调用针对该目的提供的TINI 1.1功能。TINI 1.1 Java环境添加了Java 2 SE 1.4 Inet6Address类支持IPv6。不需要其它用户可见的更改,其它所有更改均隐藏在现场背后。
结语
作为IP协议的评估和调整,IPv6显得越来越重要,尤其是对于一个成功的嵌入式器件网络更是至关重要。IPv6提供没有限制的IP地址数量、自动配置和通用的流线型IP协议。
DS80C400使得编写支持IPv4和IPv6网络的应用更简单。IPv6为所有新的应用提供了引人注目的优势。■
摘自 电子产品世界