数据网格中间件向IPv6移植的分析与实现.docx

数据网格中间件向IPv6移植的分析与实现 摘要在科学数据网格项目背景下,简单叙述了IPv6的优势和它将为网格系统带来的好处。对科学数据网格和数据网格中间件DAS系统作了整体介绍,分析了DAS系统向IPv6环境移植所涉及到的主要技术与IPv6的关系,并指出了DAS系统向IPv6移植实现过程中所进行的主要工作。

关键词网格;

下一代互联网协议(IPv6);

GT4;

数据访问服务(DAS);

科学数据网格(SDG) 中图分类号TP393文献标志码A 文章编号1001-3695200805-1404-04 0引言 IPv6的出现主要是解决IPv4的先天不足,它作为下一代IP网络发展标准取代IPv4已经成为必然趋势。

网格概念产生于20世纪90年代中期,它的最终目的是在互联网的基础上,把分散在不同地理位置的计算机组织成一台虚拟的超级计算机,实现计算资源、存储资源、数据资源、信息资源、软件资源、通信资源、知识资源、专家资源等资源的全面共享。文献[1]中把网格问题表述为如何在一种动态的、多单位参与的虚拟组织(VO)中实现资源共享和协同工作。网格是基于互联网络基础设施的一种新技术,它的数据是基于TCP/IP传输的,所以网格应用有必要适应底层网络协议的改变而向IPv6环境移植。

本文在中国科学院科学数据网格等项目的背景下,主要探讨分析了数据网格中间件DAS系统向IPv6环境移植所涉及到的一些技术,目的是运用这些技术对DAS系统进行改进,使DAS系统的新版本可以在支持IPv4的基础上也支持IPv6。

1IPv6的优势及其对网格系统的影响 IPv6保留了IPv4 的优点并在此基础上进行了众多的改进。同IPv4 相比,IPv6 的改进主要表现在以下几个方面 a)地址容量巨大。IPv6地址长度为128 bit,能够提供近乎无限的IP 地址。

b)报头格式简单。IPv6报头删除了IPv4报头中许多不常用的域,采用扩展报头方式实现不常用的功能。这种方式可提高数据包处理效率,减少了中间路由器的处理时延。

c)易管理,支持即插即用功能。除了状态自动配置,IPv6 还支持无状态地址自动配置。无须任何人工干预就可以将一个节点插入IPv6网络并在网络中启动。

d)安全。IPSec是IPv6标准的一部分,通过IPSec可以提供网络层的安全保证,解决网络层端到端数据传输的安全┪侍狻* e)支持QoS。IPv6 基本报头中包含一个8 bit的业务流类别class和一个20 bit的流标签flow label,为更详细地区分服务质量提供支持,提供更高的服务质量保证。

f)支持移动。IPv6考虑了对移动性的支持,移动IPv6为用户提供可移动的IP 数据服务,让用户可以在世界各地都使用同样的IPv6 地址,并提供无缝漫游。

g)可扩展性好。通过定义新的扩展头部,IPv6可以很容易地增加新的特征。

IPv6的绝大部分有利因素对网格系统来说都是十分有用的。如IPv6新的编码机制可以简化网格虚拟组织的动态聚合与撤离;
IPv6的地址空间有利于建设规模巨大的网格系统,更有助于建设全球网格基础设施;
IPv6的安全支持提高了网格系统的安全性;
IPv6对移动的支持更是对发展未来的移动网格技术提供了技术前提和基础等。由此可以看出,网格与IPv6的结合不仅是网络技术和网格技术发展的趋势,更让人们对其充满期待。

2科学数据网格和网格数据访问中间件DAS系统 科学数据网格SDG是中国科学院科研信息化环境建设中的一个试点项目,它建立在中国科学院科学数据库海量数据资源的基础上,旨在利用先进的网格技术达到大规模的、分布的、异构的科学数据资源的集成和共享,充分发挥科学院宝贵科学数据资源的价值。科学数据网格以网格服务的形式提供数据服务的发布、查找和调用。

DAS系统是SDG的核心子系统,是一个访问分布、自治、异构科学数据的数据网格中间件。它为大规模、分布、自治、异构的数据资源提供统一的访问接口,以方便科学数据库数据资源的共享和集成;
它以网格服务的形式提供数据库的查询,从而将分布的数据资源加入到网格中来。

DAS系统由DAS server、mappingBuilder和通用客户端data-View三个子项目组成。其中DAS server是数据访问服务端,它实现数据统一访问的业务逻辑和完成数据网格服务的封装,是DAS系统的核心;
mappingBuilder是一个Java应用程序,完成数据库模式的映射和模式文件(localshecma.xml、globalschema.xml和serviceschema.xml)的生成,它为DAS server服务并和DAS server一起绑定到服务器端;
dataView是针对不同数据库类型的通用客户端,完成数据检索的功能。图1是DAS系统服务端的结构图。

DAS系统是SDG的关键,早在2005年7月,DAS已经完成了2.0版本的开发;
2005年8月成功申请了DAS 2.0软件著作权;
截至2005年底,中国科学院分布在全国各地的40多个研究所进行了DAS部署,目前DAS系统已经发布了2.1版本,正处于2.2版本的开发和完善阶段。

DAS系统主要是在Windows操作系统上部署和运行,业务功能模块用Java语言开发,DAS 2.2版本采用Globus Toolkit 4.0作为网格服务的开发环境(利用GT4的common runtime组件Java WS-Core-4.0.1来进行网格服务的封装开发),利用Tomcat作为网格服务的运行环境。目前DAS系统支持MySQL、Oracle、SQL Server三种类型的数据库的统一网格服务访问。

3DAS系统向IPv6移植的相关技术分析 根据前面介绍并参考文献[2,3],要使DAS系统兼容IPv6并能被正确部署在IPv6环境下提供网格服务,除了有稳定的IPv6网络环境外,还需要从下列几方面进行分析,它们是DAS系统能否向IPv6移植的前提。

3.1Globus Toolkit 4与IPvC6 DAS系统仅用到GT4中的Java WS-Core组件,本文并不考虑GT4包含的其他组件的IPv6兼容性问题。由文献[3]可知,通过设置GT4配置文件中的一些配置选项可以让GT4自带的独立Web容器提供对IPv6的支持。需要设置的配置文件是GT4安装目录下etc/globus_wsrf_core/目录下的 server-config.wsdd 和 client-server-config.wsdd两个文件,它们中的〈globalConfiguration〉全局属性配置部分中与配置IPv6相关的全局属性参数是publishHostName和logicalHost。其中publishHostName参数说明是否将Web容器以及容器中的网格服务绑定到主机名,可选值是true或false;
logicalHost参数的作用不但可以为本地主机添加一个主机名,即用logicalHost的值来代替本地主机默认的localhost主机名,而且也可以把主机名绑定到一个指定的IP地址。

在具有IPv4/IPv6双栈协议的服务器端,GT4的Web容器默认是绑定到IPv4地址,而WSRF端口可以通过IPv4接口与IPv6接口连接,此时当IPv6请求到来时,服务器端将IPv6通信转换为IPv4通信。在配置文件中〈globalConfiguration〉全局属性配置部分里加入〈parameter name“publishHostName“ value“true“/〉选项可以让Web容器绑定到主机名。此时Web容器用系统默认的主机名localhost初始化,主机名可以绑定到IPv4地址和IPv6地址,Web容器独立于IP地址,服务器可以根据客户端的IP类型来与客户端通信。

在配置文件〈globalConfiguration〉全局属性配置部分里通过设置类似〈parameter name“logicalHost“ value““/〉选项,可为本地主机添加新的主机名。如果一个主机名对应多个IP地址,可通过设置logicalHost的值为IP地址来直接设定主机名对应哪个IP地址,如在〈globalConfiguration〉中加入下面的选项〈parameter name“logicalHost“value“20015c08d1680023“/〉,此时主机名绑定到IPv6地址20015c08d1680023。

在具有IPv4/IPv6双栈协议的服务器端,对于一个仅绑定IPv6地址的主机名,如果客户端是IPv4请求,服务器会把IPv4请求转换为IPv6请求。如果仅设置logicalHost参数,并且是用IPv6数字地址直接设置logicalHost的value值,此时Web容器就直接绑定到IPv6地址,不过IPv4请求依然可以被接受,此时服务器端把IPv4通信转换为IPv6形式。

3.2Java与IPvC6 根据文献[3,4]可知,从JDK 1.4开始,Java开始在Linux和Solaris操作系统上提供对IPv6的支持,不过并不完善。JDK 1.4版本存在IPv6地址反向查找不准确的bug;
JDK 1.5修复了这个bug并开始在Windows XP(SP1)和Windows 2003 操作系统上提供对IPv6的支持,JDK 1.5同样还支持Linux和Solaris上的IPv6。

在支持IPv6的JDK中,InetAddress类代表IP地址,它同时支持IPv4和IPv6;
IPv4和IPv6地址可通过InetAddress的两个子类Inet4Address和Inet6Address类来区分。由于Java的面向对象性,IP地址类型和存储结构在Socket API级别上是不会暴露的,Socket、ServerSocket及DatagramSocket等都封装了IP的地址结构和类型,它们都支持IPv4和IPv6。另外,在一个支持IPv4/IPv6双栈协议的节点上,用户可以通过设置系统变量J.preferIPv6Addresses和系统变量J.prefer-IPv4Stack来决定系统是使用IPv6协议栈还是使用IPv4协┮檎弧* 在支持IPv6的JDK环境下,Java对IPv6的支持是自动和透明的。Java程序中的代码向IPv6过渡是比较简单的,代码本身可以轻松地过渡到IPv4/IPv6双支持。如果一个Java应用程序(程序中允许使用第三方提供的Java API,但该类库也必须是支持IPv6的)满足以下条件,则该Java程序就是支持IPv6的。

a程序中没有用硬编码地址即没有直接引用数字形式的IPv4地址,如159.226.10.67而是用主机名代替;

b所有Socket或地址信息都被Java的API封装,通过Java的Socket API完成Socket功能;

cIP地址类型和Socket类型引用通过设置系统变量来进行设置;

d应用程序中的地址翻译功能使用特定于IPv6的类和API。

3.3JDBC、数据库与IPvC6 DAS系统目前支持的数据库类型主要有三种SQL Server,MySQL和Oracle。通过查阅相关文献,这三种数据库目前的大部分版本均不支持IPv6,而且相应的JDBC驱动程序也不支持IPv6功能。下面是从百度和Google搜索引擎上获取的三种数据库新版本对IPv6的支持情况aSQL Server,从2005版本开始支持IPv6,相应的2005版JDBC驱动支持IPv6。bMySQL,MySQL将从MySQL 5.0版本开始支持IPv6,