[1]I.Foster,C.Kesselman and S.Tuecke,The anatomy of the grid:Enablingscalable virtual organizations,International Journal of High PerformanceComputing Applications,2001,Vol.15,P.200-222.
[4]IEEE Standards Staff,Guidelines for 64-bit Global Identifier(EUI-6),http://standards.ieee.org/regauth/oui/tutorials/EUI64.html,10-November-2004。
发明内容
1、本发明解决的技术问题
本发明解决了独立的网格化外设与网格计算机主机之间的网络互连问题。根据网格计算机体系结构的要求,计算机系统的资源演化成具有独立网络身份的功能单元,这些单元分布于网络中,因此,要把这些具有独立网络身份的功能单元构建成计算机系统,首要问题是将这些功能单元连接起来。本发明解决的就是具有独立身份的网格化外设与网格计算系统通过网络互连的问题。
本发明解决了网格计算机对远程的网格化外设的透明访问问题。虽然网格计算机系统中的部件之间是松散耦合的网络连接关系,但是这种关系不应当影响系统的正常运行,系统也无须因为部件是本地互连还是远程互连而有所变化。具体到外设部件上,这就是网格计算机系统对远程的网格化外设的透明访问问题,即网格计算机系统对远程外设的访问接口和对本地外设的访问接口没有区别。
本发明解决了网格化外设与网格计算机之间的耦合关系松散化问题。松散耦合是网格计算机体系结构的基本特征之一,网格化外设与网格计算机系统之间的互连必须体现这一特征。具体而言,松散耦合包括以下一些子问题:
1)外设和主机之间接口和消息传输标准化问题,制定了外设部件标准的对外服务接口,并且在两个层次上定义了外设与主机之间消息传输的标准格式。
2)外设和主机之间消息传递的异步性问题,改变传统计算机主机与外设之间的强同步通信方式为弱同步方式,并且在任务(task)粒度上实现了主机与外设之间的异步通信。
3)外设和主机之间所传递的消息的无状态问题,减弱前后传递的消息之间的相关性,在任务粒度上实现了主机与外设之间消息传递的无状态。
本发明对网格计算机系统的动态自组织特性形成了支持。动态自组织是网格计算机系统的重要特征,本发明在通信和互连的机制上对网格计算机系统的动态自组织特性形成了支持。
2、本发明的体系结构模型
基于网格计算机体系结构的计算机外设部件连接系统采用层次模型,结构如图1所示。本系统在TCP/IP网络之上进行设计。主要部分是设备接口和gDevice协议处理两个功能模块,其中gDevice协议处理又分为网格功能和会话两个子功能模块。除此之外,为了实现对主机操作系统的透明,在网格主机端建立了虚拟设备模块。各功能模块的功能定义如下:
1)设备接口模块的功能是实现对设备资源的抽象,每个设备在这一模块被抽象成一个标准资源操作接口的集合,这个标准接口输入/输出的消息就是设备原语。
2)gDevice协议处理模块的功能是通过gDevice协议来实现网格使能,即把一个传统设备转变为可以直接连接到TCP/IP网络的网格使能设备。
a)网格功能子模块用于实现网格相关的功能,具体包括设备复用管理、智能互连管理、安全控制。网格功能子模块借助于一些控制原语来控制会话子模块的会话,以实现复用管理、智能互连管理,安全控制等功能。
b)会话子模块用于实现数据通信相关的功能,包括以会话为单位维持外设与主机之间的互连关系,对出入数据进行基本的封装和解析等。这一模块封装后的数据格式就是gDevice协议数据单元(gDevice PDU)。
3)虚拟设备模块的功能是支持网格主机对远程外设的透明访问,为主机操作系统提供一个与本地普通设备无差别的访问接口。
3本发明的技术实现方案
3.1设备接口模块的实现
设备接口模块的主要功能就是将设备接口数据格式化,设备接口数据格式具体为设备命令,设备结果和设备数据输入三类设备原语,可以涵盖设备所有的接口操作。设备命令是主机发给设备的操作指令;设备结果是命令执行后的返回,是由从设备向主机发出的:设备数据输入是从设备(比如键盘鼠标)主动向主机发送的数据。每条设备原语包括以下三个字段:
1)原语代码(DataCode):原语类型的识别码,该代码代表了原语的具体语义内容。
2)数据长度(DataLen):原语所带数据的长度。
3)数据内容(Data):原语所带的具体数据内容。
网格主机和网格设备两端设备接口模块的结构如图2所示。
3.2网格功能子模块的实现
控制原语是网格功能模块功能的载体,网格功能子模块通过与会话子模块之间交互控制原语来实现其功能。因此网格功能子模块实现的核心内容是对控制原语的处理。图3显示了网格功能模块的结构。网格功能子模块定义了五类控制原语:控制请求、控制响应、控制命令、控制结果和控制通知。控制请求是由会话子模块向网格功能子模块发出的请求;控制响应是网格功能子模块收到控制请求后发出的回应;控制命令是由网格功能子模块向会话子模块发出的命令;控制结果是会话子模块对控制命令的执行结果,并非所有的命令都要返回结果;控制通知是会话因为自身状态或者属性发生变化而向网格功能子模块主动发送的通知。每条控制原语包含以下四个字段:
1)会话ID(SessionID),接受或者发送控制原语的会话的ID。
2)原语代码(ResultCode),控制原语的识别码,代表了原语的具体语义内容。
3)数据长度(DataLen),原语所带数据的长度。
4)数据内容(Data)原语所带的数据内容。
3.3会话子模块的实现
会话子模块由一组会话组成。会话从上面的设备接口模块和网格功能子模块接收数据,将从设备接口模块接收来的设备原语包装成gDevicePDU发送,根据从网格功能子模块接收的控制原语做出反应或者向会话对方发送会话控制类型的gDevice PDU;同时从TCP连接中读取对方发来的gDevice PDU,根据解析的结果将设备原语发送给设备接口模块或者将控制原语发送给网格功能子模块。
会话的主要数据结构是会话控制块(SCB),SCB包含以下一些内容:
1)local ID,己方gDevice ID。
2)destID,对方gDevice ID。
3)localAddr,己方gDevice地址
4)destAddr,对方gDevice地址
5)state,会话状态。
6)secConfig,安全设置。
7)pDataOut BK,指向输出备份队列的指针。
8)pTCPGroup,指向TCP连接组的指针。
会话子模块的数据传递单位为gDevice协议数据单元(gDevicePDU),gDevice PDU由头、数据、和摘要组成,其中头为定长20字节,由以下几部分组成:
1)Opcode:1个字节,表明PDU所传输的数据的种类,如设备原语、控制原语、或者协议控制数据。
2)标志位(Flag):1个字节,通过对这个字节的置位来表明PDU的属性,比如一个序列的终结、优先级等。
3)保留位:2个字节,保留,做以后扩充用。
4)Opcode自定义域:4个字节,根据不同的Opcode类型,此域的意义不同,目前,此域主要为Session Request和Session Response服务。
5)任务标签(Task Tag):4个字节,相当于一个任务的序列号。
6)序列号(PDU SN):4个字节,表明PDU发送顺序。
7)Data Segment Length:4个字节,表示数据域的长度。
本系统通过任务的方式实现了现了消息异步传递,其特征在于,将一系列具有相关性和顺序性的设备原语组成一个任务(Task),不同任务之间的设备原语没有相关性或者顺序性,不同任务内的消息无状态关系,可以异步传输,同一个任务内的gDevice PDU通过任务标签标识。
图4显示了会话子模块内一个会话的结构。
3.4基于网格计算机体系结构的计算机外设部件连接方法的总步骤
基于网格计算机体系结构的计算机外设部件连接方法的总步骤如图5所示。
第一步、构建网格主机端的虚拟外设,该虚拟设备在原设备(也就是远程的网格设备)驱动程序的基础上实现。保留原设备驱动程序向上的API接口(即面向操作系统和应用程序的接口),将驱动程序向下的数据接口导出。
第二步、构建设备接口模块。该模块依照图2所示的结构构建,模块向上与驱动程序导出的数据接口连接,向下与网格功能子模块通过设备原语连接。
第三步、构建gDevice协议处理模块。该模块以gDevice协议规范为基础依照图3和图4所示结构构建,模块向上通过设备原语与设备接口模块连接,向下通过TCP/IP协议接入Intemet。
第四步、开发网格外设端驱动程序,该驱动程序在原设备驱动程序基础上开发。保留原驱动程序向下对硬件的操作,将驱动程序向上的接口改造为设备接口模块向上的数据接口(也就是第一步中虚拟设备导出的数据接口)。
第五步、在网格主机端依次加载虚拟设备、设备接口模块、gDevice协议处理模块,并依照图1所示结构,按照第一至四步中定义的接口将各部分连接。
第六步、在网格外设端依次加载设备驱动程序、设备接口模块、gDevice协议处理模块,并依照图1所示结构,按照第一至四步中定义的接口将各部分连接。
第七步、将已经加载模块完毕的网格主机和网格外设通过Intemet互连。至此,基于网格计算机体系结构的计算机外设部件连接方法的所有步骤完成。
一种基于网格计算机体系结构的计算机外设部件连接系统方法,本发明提供了一种网格计算机体系结构下网格主机与网格外设之间通过TCP/IP网络连接的系统及方法,发明采用了层次的模块的体系结构,采用虚拟设备实现计算机主机对远程网格化外设的透明访问,系统在不同层次上定义了一系列的标准接口,并在采用任务的机制实现了消息异步传递。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,网格主机与网格外设分布于网络之中,它们之间不通过系统总线互连,而是通过TCP/IP网络连接。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,协议采用了层次的模块的体系结构,系统从上倒下依次构建了虚拟设备模块、设备接口模块和gDevice协议处理模块,最终与TCP/IP网络协议衔接。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,设备接口模块包含数据的格式化和解析处理子模块,执行输入输出数据与格式化的设备原语之间的转换翻译。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,gDevice协议处理模块,该模块划分为网格功能子模块和会话子模块,其具体功能通过网格功能子模块和会话子模块之间的控制原语交互来配合实现。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,网格功能子模块,本模块通过与会话子模块的控制原语交互来控制会话子模块内的会话,以实现网格使能功能。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,会话子模块,以会话为单位维持网格外设与网格主机之间的互连关系,对出入数据进行基本的封装和解析,会话子层封装后的数据单元称为gDevice协议数据单元(gDevice PDU)。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,通过与会话子模块的控制原语交互来控制会话子模块内的会话,以会话代表会话对象的身份,通过对会话的控制来实现对会话对象的控制,从而实现对会话对象的权限管理、与会话对象的智能互连等网格使能相关的功能。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,控制原语在网格功能子模块和会话子模块之间传递控制信息,控制原语包括控制请求、控制响应、控制命令、控制结果和控制通知五种,每种控制原语包括会话ID、原语代码、数据长度和数据内容四个字段。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,采用虚拟设备实现计算机主机对远程网格化外设的透明访问,在主机端设备接口模块之上实现一个软件方式实现的虚拟设备,该设备向上为主机操作系统和应用程序提供一个套与本地设备无差别的API接口。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,协议在不同层次上定义了一系列的标准接口,本协议在设备接口层定义了标准的设备原语;在系统内部的功能管理上定义了控制原语,在会话层定义了gDevice PDU。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,gDevice PDU包括头、数据和摘要三个部分,其中头包括Opcode、标志位、保留位、Opcode自定义域、任务标签、序列号、数据域长度等字段。
所述的基于网格计算机体系结构的计算机外设部件连接系统方法,采用任务的方式实现了消息异步传递,将一系列具有相关性和顺序性的gDevice PDU组成一个任务,不同任务之间的gDevice PDU没有相关性或者顺序性,可以异步传输,同一任务内的gDevice PDU通过PDU头内的任务标签标识。
4、本发明的特色
本发明的主要贡献在于提供了网格计算机体系结构下核心部件(可以认为是网格处理器或者主机)与外设部件的互连系统及方法。该发明可以实现部件之间基于松散耦合关系的远程互连,支持主机对远程网格化外设的透明访问。发明提供了分层的体系结构、标准的数据格式,使得该发明具有良好的可实现性和开放性。
目前,基于本发明的网格化远程KVM(键盘、显示、鼠标)系统已经实现并且应用到了中国科学院计算技术研究所国家智能计算机研究开发中心的计算机远程控制系统之中。
具体实施方式
图1显示了基于网格计算机体系结构的计算机外设部件连接系统的整体结构,该系统可以分为主机端和设备端两大部分。
主机端从上而下分别是:1,1操作系统(不需要任何修改);1.2虚拟外设部件;1.3设备接口模块;1.4gDevice协议模块;1.8TCP/IP网络。1.1操作系统和1.2虚拟外设部件之间通过设备驱动与操作系统之间的API连接;1.2虚拟外设部件和1.3设备接口模块之间通过驱动程序导出的下层函数连接;1.3设备接口模块和1.4gDevice协议模块之间通过设备原语连接;1.4gDevice协议模块和1.8TCP/IP网络之间通过gDevicePDU连接。1.4gDevice协议模块又分为1.5网格功能子模块和1.6会话子模块,这两个模块1.5网格功能子模块位于上层,1.6会话子模块位于下层,两者之间通过设备原语和控制原语互连。
设备端的结构除设备接口模块向上对应的是1.7外设设备及其驱动程序以外,和主机端完全相同。1.7外设设备及其驱动程序和1.3设备接口模块之间通过驱动程序导出的下层函数连接。
图2显示了设备接口模块的结构,该模块通过2.1,2.2,2.3,2.4四个部分对输入输出数据的处理来实现。在主机端该模块向上与虚拟设备的数据接口连接接收其输出数据,通过2.1数据格式化操作将主机的输出数据格式化为设备命令,向下发送给gDevice协议处理模块;向下从gDevice协议处理模块接收设备结果和设备数据输入,通过2.2.\数据解析将设备结果和设备数据输入翻译成虚拟设备可接受的输入数据。在设备端该模块向上与设备驱动程序导出的数据接口连接接收其输出数据,通过2.3数据格式化操作将主机的输出数据分别格式化为设备结果和设备数据输入,向下发送给gDevice协议处理模块;向下从gDevice协议处理模块接收设备命令,通过2.4数据解析将设备命令翻译成虚拟设备可接受的输入数据。
图3显示了网格功能子模块的结构。图3中3.1设备原语过滤部分过滤在会话子模块的前台会话和设备接口模块之间传递的设备原语,将与网格功能有关的截获并发送给3.2网格功能处理部分。3.2接收3.1传来的设备原语,同时也接受会话管理子模块传来的控制原语,根据这些输入做出控制判断并以控制原语的方式发送给会话子模块。
图4是会话子模块中一个会话的结构。会话主要有三个处理部分:5.1,会话控制部分向上与网格功能部分通过控制原语通信,通过会话控制数据与会话伙伴通信对会话进行控制。4.2,gDevice PDU封装/解析部分完成gDevice PDU和设备原语/会话控制数据之间的转换。4.3,TCP连接部分完成gDevice PDU的传送功能。
图5是基于网格计算机体系结构的计算机外设部件连接系统方法实现的步骤,本系统的实现共分为7个步骤:
S5.1:保留原设备驱动程序向上的API接口(即面向操作系统和应用程序的接口),将驱动程序向下的数据接口导出;
S5.2:依照图2所示的设备接口模块结构构建设备接口模块,模块向上与驱动程序导出的数据接口连接,向下与网格功能子模块通过设备原语连接;
S5.3:以gDevice协议规范为基础依照图3和图4所示网格功能子模块结构和会话子模块的结构构建gDevice协议处理模块,模块向上通过设备原语与设备接口模块连接,向下通过TCP/IP协议接入Internet;
S5.4:保留原驱动程序向下对硬件的操作,将驱动程序向上的接口改造为设备接口模块向上的数据接口(也就是虚拟设备导出的数据接口);
S5.5:在网格主机端依次加载虚拟设备、设备接口模块、gDevice协议处理模块,并依照图1所示基于网格计算机体系结构的计算机外设部件连接系统结构,按照第1至4步中定义的接口将各部分连接;
S5.6:在网格外设端依次加载设备驱动程序、设备接口模块、gDevice协议处理模块,并依照图1所示基于网格计算机体系结构的计算机外设部件连接系统结构,按照第1至4步中定义的接口将各部分连接;
S5.7:将已经加载模块完毕的网格主机和网格外设通过Internet互连。