CN103782566B - 用于交换信息的系统和方法 - Google Patents
用于交换信息的系统和方法 Download PDFInfo
- Publication number
- CN103782566B CN103782566B CN201280044118.3A CN201280044118A CN103782566B CN 103782566 B CN103782566 B CN 103782566B CN 201280044118 A CN201280044118 A CN 201280044118A CN 103782566 B CN103782566 B CN 103782566B
- Authority
- CN
- China
- Prior art keywords
- data
- equipment
- field
- guid
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
提供了用于交换信息的系统。该系统包括存储器、第一通信链路、以及实施第一协议的至少一个处理器。所述至少一个处理器被耦合于存储器和第一通信链路。所述至少一个处理器被配置为通过第一通信链路接收包括第一全局唯一标识符(GUID)的第一请求消息;响应于第一请求消息的接收,启动经过第一通信链路的通信会话;提供包括第一GUID的第一响应消息;通过第一通信链路接收包括数据和第二GUID的第二请求消息;把数据写入被第二GUID指示的位置;读取被存储在所指示的位置处的信息;以及提供包括第二GUID和信息的第二响应消息。
Description
技术领域
本发明大体上涉及通信,并且更具体地涉及用于网络实体之间的通信的通信协议。
背景技术
具有许多不同的类型的用于在网络实体(例如被耦合于通信网络的计算机系统)之间通信的协议。这样的网络可以是例如点对点网络、共享网络例如总线、或任何其他的介质或网络配置类型。为了通信,两个实体(例如计算机系统、设备、硬件和/或软件)需要使用和支持同一个或相似的通信协议。当通信实体在特征和复杂性上改变和发展时,始终存在对支持它们之间的另外的协议以适应通信设备、用户接口和它们之间的通信介质的改变的需要。
技术的进步已经带动可以从许多不同的来源读取和采集数据的设备的发展。设备可以远程地监视参数,包括温度、交通、天气、桥梁压力、电源问题、水泄漏、警报条件、股票行情和其他的参数。这些设备通常作为独立的传感器或作为较大的系统内的小元件存在。
相似的技术进步已经产生把由这样的设备采集的数据呈现至用户的多种选择。用户可以在计算机终端屏幕、便携计算机、无线电话、便携式留声机、发光球体、公路指示牌和其他设备上读取采集到的数据。这些设备全部具有使自身唯一地适合用于发送和/或接收数据的一种或多种方法但不是所有通信方法的属性。某些通信方法涉及某些类型的通信介质,包括无线的、有线总线的、有线点对点的、光学的、光缆、和其他介质。这样的通信方法还涉及在本领域中被称为通信协议的某些数据传输方法或调制。被用于通过这样的介质发送数据的协议甚至更多。实例包括熟知的通信协议,例如以太网、RS232、RS485、USB、Wi-Fi和IrDA协议等。具有涉及不同的介质和协议的许多不同的通信方法,这取决于应用。
典型地用于传输数据的较高级别的协议,例如HTTP,在现在的网络和计算环境中普遍用于传输数据。使用这些方法用于许多设备的组的优点是低成本宽范围的可用软件可以读取普通格式的数据,并且数据被做成对使用个人计算机或其他的宽范围可用的兼容硬件的任何个人是可用的。然而,这些较高级别的协议的一个缺点是它们要求很大的微处理器资源,这增加被用于采集数据的许多设备的成本。
当前技术水平的系统具有采集数据的子系统,其把它们的数据通过较高级别的协议呈现至用户或把数据使用极端地低级别的方法(例如模拟信号)呈现至中介系统(代理服务器)。前者子系统的缺点是,它们是高成本的,必须支持较高级别的协议并且当把它们连接于它们的用户的高级别手段和方法改变时它们可能变得过时。此外,因为可能具有实时数据获取和/或控制要求,所以可能不具有足以支持这样的高级别协议的处理器带宽。低级别子系统的缺点是,信息受到外部干扰和低性能,使这样的系统对于位于接近于数据的用户或其代理服务器的仅仅简单的传感器来说是有用的。
发明内容
根据本发明的一个方面,意识到,在其中许多设备采集数据并且把数据发送至数据的较小的一组收听者或用户的许多应用中,具有对把数据采集器制造得更小、更不复杂以减少总体系统成本的需要,而对于用户而言,具有对保持或增加计算能力以通过增加总体系统有用性的方式处理和显示接收到的数据的需要。
在今天的网络化的和连接的世界上,越来越重要的是来自设备的所有形式的通信应当能够在接口之间呈现一致的数据。意识到,设备(或系统)例如不间断电源(UPS)设备在历史上在多个接口上呈现相同的数据和在监视这样的UPS设备的设备之间生成公共的日志文件方面已经具有显著的问题。常规的设备例如UPS使用基于串行的点对点协议(例如基于问题/响应的ASCII协议,例如熟知的UPS链路协议),基于串行的点对点协议如果与多个设备共同使用的话,在多个设备之间具有数据延迟,使这些设备上的日志文件是不同的。虽然具有这些类型的协议的改进形式,但是具有多种问题,因为这些缩减的协议不允许多个设备通过同一个连接通信。此外,意识到,具有日志文件数据在多个监视设备之间不同的问题。
在至少一个实施方案中,提供用于交换信息的系统。系统包括存储器、第一通信链路、以及实施第一协议的至少一个处理器。所述至少一个处理器被耦合于存储器和第一通信链路。所述至少一个处理器被配置为通过第一通信链路接收包括第一全局唯一标识符(GUID)的第一请求消息;响应于第一请求消息的接收,启动经过第一通信链路的通信会话;提供包括第一GUID的第一响应消息;通过第一通信链路接收包括数据和第二GUID的第二请求消息;把数据写入被第二GUID指示的位置;读取被存储在所指示的位置处的信息;以及提供包括第二GUID和信息的第二响应消息。
在系统中,第一请求消息可以包括:帧开始字段,其存储指示第一请求消息的类型的值;帧长度字段,其存储指示第一请求消息的长度的值;数据长度字段,其存储指示数据字段的长度的值;以及GUID字段,其存储识别当被所述至少一个处理器执行时将启动通信会话的第一用途的值。第二请求消息可以包括:帧开始字段,其存储指示第二请求消息的类型的值;帧长度字段,其存储指示第二请求消息的长度的值;数据长度字段,其存储指示数据字段的长度的值;GUID字段,其存储识别第二用途的值;以及数据字段,其存储数据。
数据可以包括数组索引和其他的数据并且第二请求消息可以包括:帧开始字段,其存储指示第二请求消息的类型的值;帧长度字段,其存储指示第二请求消息的长度的值;数据长度字段,其存储指示数据字段的长度的值;GUID字段,其存储识别第二用途的值;索引字段,其存储数组索引;以及数据字段,其存储其他的数据。
在系统中,所述至少一个处理器可以还被配置为通过第一通信链路接收包括第三GUID和第四GUID的第三请求消息,确定第一协议是否支持被第四GUID识别的第四用途以及提供包括第三GUID、第四GUID、描述第四用途的信息和识别被第一协议支持的另一个用途的第六GUID的第三响应消息。第三请求消息可以包括:帧开始字段,其存储指示第三请求消息的类型的值;帧长度字段,其存储指示第三请求消息的长度的值;发现GUID字段,其存储识别第三用途的值;以及请求GUID字段,其存储识别第四用途的值。
系统可以还包括:存储器映射表,其被布置在存储器内。存储器映射表可以存储操作信息和配置信息。系统可以还包括:第二通信链路,其被耦合于所述至少一个处理器。所述至少一个处理器可以还实施不同于第一协议的第二协议并且可以还被配置为通过第二通信链路接收包括对存储器映射表的位置的更新的消息;把所述更新存储在所述位置处以及提供包括所述更新和识别利用被存储在所述位置处的数据的用途的第三GUID的第三响应消息。第一通信链路可以包括通用串行总线(USB)链路并且第二通信链路可以包括串行链路。第一协议可以是请求-响应协议并且第二协议可以是串流协议。
根据另一个实施方案,提供用于交换信息的系统。系统包括存储器、第一通信链路、以及被耦合于存储器和第一通信链路的至少一个第一处理器。所述至少一个第一处理器被配置为生成包括第一全局唯一标识符(GUID)的第一请求消息,所述第一GUID识别当被至少一个第二处理器执行时将启动通信会话的第一用途,把第一请求消息在第一通信链路上传输,接收包括第一GUID的第一响应消息,生成包括数据和识别由所述至少一个第二处理器实施的协议支持的第二用途的第二GUID的第二请求消息,把第二请求消息在第一通信链路上传输以及接收包括第二GUID和具有与数据相同的值的信息的第二响应消息。
在系统中,第一请求消息可以包括:帧开始字段,其存储指示第一请求消息的类型的值;帧长度字段,其存储指示第一请求消息的长度的值;数据长度字段,其存储指示数据字段的长度的值;以及GUID字段,其存储识别第一用途的值。第二请求消息可以包括:帧开始字段,其存储指示第二请求消息的类型的值;帧长度字段,其存储指示第二请求消息的长度的值;数据长度字段,其存储指示数据字段的长度的值;GUID字段,其存储识别第二用途的值;以及数据字段,其存储数据。
数据可以包括数组索引和其他的数据。第二请求消息可以包括:帧开始字段,其存储指示第二请求消息的类型的值;帧长度字段,其存储指示第二请求消息的长度的值;数据长度字段,其存储指示数据字段的长度的值;GUID字段,其存储识别第二用途的值;索引字段,其存储数组索引;以及数据字段,其存储其他的数据。
根据另一个实施方案,提供用于使用第一计算机交换信息的方法。该方法包括以下行动:通过第一计算机生成包括第一全局唯一标识符(GUID)的第一请求消息,所述第一GUID识别当被第二计算机执行时将启动在由第一计算机和第二计算机共享的链路上的通信会话的第一用途;把第一请求消息在链路上传输;接收包括第一GUID的第一响应消息;生成包括数据和识别被第二计算机支持的第二用途的第二GUID的第二请求消息;把第二请求消息在链路上传输以及接收包括第二GUID和具有与数据相同的值的信息的第二响应消息。
在该方法中,生成第一请求消息的行动可以包括以下行动:在帧开始字段内存储指示第一请求消息的类型的值,在帧长度字段内存储指示第一请求消息的长度的值,在数据长度字段内存储指示数据字段的长度的值以及在GUID字段内存储识别第一用途的值。生成第二请求消息的行动可以包括以下行动:在帧开始字段内存储指示第二请求消息的类型的值,在帧长度字段内存储指示第二请求消息的长度的值,在数据长度字段内存储指示数据字段的长度的值,在GUID字段内存储识别第二用途的值以及在数据字段内存储数据。数据可以包括数组索引和其他的数据。生成第二请求消息的行动可以包括以下行动:在帧开始字段内存储指示第二请求消息的类型的值,在帧长度字段内存储指示第二请求消息的长度的值,在数据长度字段内存储指示数据字段的长度的值,在GUID字段内存储识别第二用途的值,在索引字段内存储数组索引以及在数据字段内存储其他的数据。
该方法可以还包括以下行动:生成包括第三GUID的第三请求消息,所述第三GUID识别第三用途,当第三用途被第二计算机执行时将确定第二计算机是否支持被第四GUID识别的第四用途;把第三请求消息在链路上传输以及接收包括第三GUID、第四GUID、描述第四用途的信息和识别被第二计算机支持的另一个用途的第六GUID的第三响应消息。生成第三请求消息的行动可以包括以下行动:在帧开始字段内存储指示第三请求消息的类型的值,在帧长度字段内存储指示第三请求消息的长度的值,在发现GUID字段内存储识别第三用途的值以及在请求GUID字段内存储识别第四用途的值。
该方法可以还包括以下行动:通过链路接收第一请求消息;响应于第一请求消息的接收,启动通信会话;响应于第一请求消息的接收,提供第一响应消息;通过链路接收第二请求消息;响应于接收包括数据的第二请求消息,把数据写入被第二GUID指示的位置;响应于第二消息的接收,读取被存储在该位置处的信息;以及响应于第二请求消息的接收,提供第二响应消息。
本发明的另外的特征和优点以及本发明的各种实施方案的结构和操作在下文参照附图详细地描述。在附图中,相似的参考数字指示相似的或在功能上相似的要素。此外,参考数字的最左的一个或两个数位标示参考数字第一次在其中出现的图。
附图说明
附图不意图成比例地绘制。在附图中,在各个附图中图示的每个相同的或近似相同的部件被相似的数字代表。为了清楚的目的,不是每个部件都可能在每个图中被标记。
在附图中,
图1A-1C示出了根据本发明的各个方面的通信系统的多个实施方案的框图;
图2A-2C示出了根据本发明的一个实施方案的用于进行通信的过程;
图3A-3B示出了根据本发明的各种实施方案的用于添加和移除从设备的过程;
图3C-3E示出了根据本发明的一个实施方案的认证方法;
图4是在其中本发明的各个方面可以被实践的示例性网络系统的框图;
图5是根据本发明的一个实施方案的通信系统的框图;
图6示出了根据本发明的一个实施方案的用于在两个实体之间建立通信的过程;
图7是根据本发明的一个实施方案的主设备通信的状态图;
图8是根据本发明的一个实施方案的从设备通信的状态图;
图9A-9B示出了根据本发明的一个实施方案的通信过程的流程图;
图10A-10B示出了根据本发明的一个实施方案的通信过程的流程图;
图11A-11B示出了根据本发明的一个实施方案的通信过程的流程图;
图12A-12B示出了根据本发明的一个实施方案的通信过程的流程图;
图13是根据本发明的一个实施方案的主设备消息格式的框图;
图14是根据本发明的一个实施方案的从设备消息格式的框图;
图15是根据本发明的另一个实施方案的主设备消息格式的框图;
图16是根据本发明的另一个实施方案的主设备消息格式的框图;
图17是根据本发明的另一个实施方案的从设备消息格式的框图;
图18是示出了根据本发明的一个实施方案的示例性存储器映射表的表格;
图19是示出了根据本发明的另一个实施方案的示例性存储器映射表的表格;
图20是示出了根据本发明的一个实施方案的示例性标头格式的表格;
图21是根据本发明的一个实施方案的代理服务器系统的框图;
图22A-22B示出了根据本发明的一个实施方案的认证过程的流程图;
图23是根据一个实施方案的通信过程的流程图;
图24是根据一个实施方案的通信过程的流程图;
图25是根据各个方面的通信系统的实施方案的框图;以及
图26是图示了根据一个实施方案的用于进行通信的过程的过程示意图。
具体实施方式
本发明的一个方面涉及用于在一个或多个实体(例如设备、主机或能够通过网络通信的任何其他的系统)之间通信的通信协议。根据本发明的一个方面,意识到,协议被期望用于从许多实体例如设备(例如UPS)通信信息至小数量的数据用户。根据本发明的特定方面,意识到,具有对可以在具有以下的属性的应用中操作的子系统类型的通信子系统的需要:
●在特定的应用中,具有许多采集数据并且控制简单的功能的实体(例如管理电力或冷却设备的设备)。这样的实体把数据发送至处理、管理该数据并且把该数据显示给用户或其他系统的实体的较小的组。
●简单的数据采集器生成大多数数据,并且数据的大多数消费者把相对小量的数据发送回数据生成器。例如,在典型的控制系统中,具有多个输入部和小数量的输出部。
●数据的消费者通常更喜欢使用相同的规则来通信至多个不同的数据源,例如从不同的网站加载web页面的web浏览器应用程序,或监视在其域中的不同类型的系统例如HVAC、水和电分配子系统的状态的构建管理接口。
用于这种应用的理想的子系统架构可以具有以下的特征和优点:
●如果产生了数据,那么较低成本的设备可以被用于执行控制功能以及使用更简单的协议把有关的数据发送至可以操纵较高级别最终用户通信协议的其他设备。
●较高级别协议的变化或采用新的协议的新的用户界面的添加不要求改变许多低成本控制处理器的操作指令和/或硬件。
●传输到和自数据源的信息可靠地并且安全地支持这些远程子系统的稳健的控制、管理和监视。
根据本发明的各个方面,提供允许在多个实体之间使用低级别协议进行通信的协议。在一个配置中,从设备能够使用串行链路例如USB链路或用于其他的联网标准的链路例如以太网链路被连接于主设备并且与主设备通信。某些配置可以包括提供具有至少两个链路的通过从设备(pass-throughslavedevice),链路中的一个被连接于主设备并且另一个被连接于下游从设备。在另一个实施方案中,系统也许能够链接主设备下游的另外的从设备,并且允许所有链接的设备以协调的方式到主设备的通信的协议被提供。根据这样的协议的一个方面,链上的设备,一旦被认证,被允许观察、控制和共享存储在主设备中的信息。如讨论的,这对于多个设备管理单一的主设备来说可能是有用的。
根据另一个方面,提供允许从设备以通过模式,一旦被认证,与其他的设备通信的认证方法。在这样的配置中,下游从设备认证至主设备,并且一旦被认证,被允许与主设备通信或传递来自其他的下游设备的通信。
本发明的另一个方面涉及在主设备和多个从设备之间使用星形配置的另一个配置。在这样的配置中,主设备被配置有多于一个链路,并且这些链路被耦合于多于一个从设备。提供允许主设备的协调的控制和观察的协议。在一个方面,协议使得在设备之间以协调的方式进行通信成为可能,而不需要设备寻址。
根据本发明的另一个方面,意识到,在多于一个设备之间难以使用常规的低级别串行通信。在具有多于两个设备的系统中,更复杂的协议通常被使用,但是更多的开销被要求以协调在多个设备之间的通信。根据一个实施方案,基于串行的通信方法被扩展至多个设备,而没有寻址通信的必要性和开销。具体地,串行协议被在多个设备之间使用,其中设备不需要保持唯一的地址,并且消息不被要求寻址或以其他方式朝向具体的目的设备导向。此外,意识到,天然地不包括寻址的常规的串行协议不需要具有寻址以允许在多于两个设备之间进行通信。
此外,根据本发明的又一个方面,提供在数据内容和格式的先验知识不被使用该协议传输的情况下允许实体之间进行通信的协议。在这样的协议中,例如,描述通信协议的数据结构的信息被在通信实体之间传递。这种类型的操作与常规的系统形成对比,常规的系统需要在设备开始通信之前知道它们与之通信的设备的协议、命令和数据结构。
在根据本发明的一个实施方案的一个示例性系统中,通信协议的数据结构被存储在接收实体的存储器中,并且被存储的数据结构基于从发送实体接收的信息更新。根据一个实施方案,数据结构被存储在发送实体和接收实体二者中。在一个具体的实施例中,数据结构的要素可以被任一个实体修改。
在一个实施方案中,数据结构在接收到的信息的标头内描述。根据一个实施例,接收到的信息包括标头信息和设备数据。这样的设备数据可以包括例如实体配置和状态数据。
在一个具体的实施例中,标头信息包括指示数据结构的版本的版本信息。标头信息可以还包括指示传输实体的存储器区域的尺寸(例如大小)的尺寸信息。
在一个实施方案中,接收实体被称为“从设备”(或从设备),因为从设备学习被称为“主设备”(或主设备)的传输实体使用的协议。具体地,从设备可以更新其使用的协议以匹配主设备使用的协议。此外,接收实体被称为“从设备”,因为协议通常被设计用于数据从主实体流至从实体。在一个实施例中,从设备访问主设备的共享的存储器以确定被主设备使用的数据结构。根据一个实施方案,从设备能够把被主设备使用的数据结构存储在与从设备相关联的存储器中。从设备可以然后使用接收到的数据结构信息访问主设备。例如,主设备可以使用之前接收到的数据结构信息访问被存储在主设备中的其他数据。数据结构可以定义,如讨论的,协议的版本和尺寸信息。
尺寸信息可以包括例如在存储器中容纳的行的数目和行内的数据的长度。在一个实施例中,每个行的长度可以对应于正在被发送的数据包的传输包大小。在一个实施方案中,用于在两个实体(例如从设备和主设备)之间通信信息的传输包大小可以通过存储在主设备的存储器中的长度信息被确定。在本发明的一个实施方案中,从设备可以自动地确定用于通信至主设备的传输包大小。在一个实施例中,随着主设备和从设备之间的通信的启动,从设备把消息通信至主设备并且等待针对来自主设备的响应的超时时期。主设备被适配为在接收到消息时把包括传输包大小的数据结构信息发送至从设备。在一个实施例中,消息是具有固定的长度的消息。在另一个实施例中,消息是否定应答消息,并且主设备被适配为在接收到预确定数量的否定应答消息时发送数据结构信息。
因为从设备可以动态地把自身适配于许多不同的主设备类型和版本,所以从设备对主设备是更加可适配的并且作为结果是更有用的。这样的特征例如在管理一个或多个设备(例如主设备)的管理系统中可能是有益的。此外,从设备可以是能够与一个或多个系统例如管理系统通信的代理服务器系统的一部分。此外,因为这样的从设备不需要存储多个协议以支持多个主设备类型,所以从设备可以被简化并且作为结果成本降低。更具体地,用于创建从设备的成本可以被减少,因为从设备可以适配于不同的主设备,而不是针对单一或有限数量的主设备类型被专门地制造。
在一个实施方案中,提供允许从设备学习主设备的可用“特征”的协议。如果特定的从设备支持特定的一组特征并且主设备支持这些特征中的一个,那么从设备也许能够支持该一个主设备特征。在一个实施例中,支持特征1-10的从设备可以被提供,并且该从设备可以与支持特征1-7的主设备共同使用,而不用对从设备再编程序。为了支持支持特征1-11的主设备,从设备将需要仅加入对特征11的支持。在一个实施方案中,从设备通过检查由主设备提供的支持的数据元素的描述(例如在存储在从主设备通信的消息内的描述符中)也许能够确定被主设备支持的特征。在下文描述的至少一个实施方案中,从设备使用发现消息请求来自主设备的支持的特征。本实施方案在下文的请求-响应协议部分内进一步描述。
在一个具体的实施方案中,一个实体(例如主设备)比另一个实体更频繁地改变其存储的数据结构的版本。例如,在监视和/或控制系统中,设备可以被适配为比监视设备的系统更频繁地更新其数据结构的副本。例如,设备可以是不间断电源(UPS)、UPS部件、环境控制系统(例如空气调节系统或部件)、或其他类型的监视和/或控制设备。
从设备可以是例如主设备(例如正在被监视和/或控制的设备)的管理者。在一个实施例中,从设备被在通用计算机系统例如个人计算机(PC)上实施。例如,从设备可以是用于管理主设备例如监视和/或控制设备的PC的一部分。如讨论的,从设备也可以是作为通信数据到/自其他的系统的中继器起作用的系统(例如代理服务器)的一部分。为此,与主设备通信的实体可以被直接地连接于主设备(例如通过串行链路)或可以通过一个或多个中介系统和/或网络耦合。
主设备的共享的存储器可以包括被从设备用来访问主设备的其他信息。例如,尺寸信息可以还包括指示存储在主设备的存储器中的信息的数据表格格式的版本的标识符。从设备可以使用这样的标识符确定存储在主设备的存储器中的数据的格式;作为结果,任何从设备可以因此学习主设备数据的格式和用途。
根据本发明的一个方面,提供支持数据在通信实体之间不相等的(或不平衡的)传递的协议。即,由一个实体发送的数据的量超过由另一个实体发送的量。在一个具体的实现中,协议可以提供把大多数的数据以可靠的方式从主设备通信至从设备的能力。在一个实现中,从设备能够把数据发送至主设备,但是与主设备的传输速率相比,以减小的数据速率。根据本发明的一个方面,意识到,在具体的应用例如设备的监视中,大多数的数据被正在被观察的设备发送,并且因此,优化通信协议,最大化这样的传输方案可能是有益的。
根据本发明的另一个方面,提供允许实体中继被传输的信息而不需要理解或解释被传输的信息的协议。信息可以被中继,例如,至另一个实体例如客户端系统(例如,通过代理服务器系统,如上文描述的)。在一个实施例中,实体可以位于另一个网络上,并且中介实体(例如代理服务器)把信息在不同的网络之间传递。在上文描述的实施例中,从设备可以能够确定被用于通信至主系统的通信参数。
在本发明的一个方面,从系统可以能够把请求从其他的实体中继至主设备。在一个实施例中,从设备不需要转译在主设备和其他的实体之间传递的任何数据,但是可以把从另一个实体接收到的请求翻译至被主设备要求的通信格式。可以定义对于从系统与主设备通信以及使其通信适配于允许其他的实体通过从设备访问主设备所必需的信息的最小集合。因为根据一个实施方案的从设备能够与许多具有不同的通信能力的主系统通信并且从设备能够把请求翻译至其他的实体,所以这样的从系统在管理多个系统类型中可能是有用的。这样的管理能力在具有一个或多个被管理的部件的UPS中可能是有益的。
在一个实施方案中,代理服务器能够支持访问并且通过多于一个实体把信息向/从主设备实体中继。例如,具有从设备能力的代理服务器也可以被耦合于多于一个其他的系统(例如被耦合于通信网络的计算机系统(例如客户端)),用于管理来自多于一个系统的主设备实体的目的。为此,代理服务器可能能够接收来自不同的系统的多个请求,并且把这些请求翻译成可以在主设备上执行的请求。
也如在下文进一步讨论的,代理服务器的从设备能够执行认证功能,使得被授权的从设备可以与主设备通信。在其中多个实体尝试访问单一的主设备的情境中,代理服务器可以被适配为支持每个访问系统的认证。在这样的情况下,根据本发明的一个实施方案,代理服务器系统进行检查以确定访问系统是否具有对主设备实体进行一个或多个访问(例如一个或多个读取功能、写入功能、控制功能等等)的许可。如果被认证,那么代理服务器把访问请求通信至主设备实体。如果未被认证,那么访问请求被拒绝。
根据本发明的一个实施方案,提供用于在实体例如硬件控制器之间实现低开销或“轻量级”通信的改进的通信协议。这样的协议可以被用于把信息在网络实体例如不间断电源(UPS)和/或UPS部件和主计算机系统之间通信。然而,应当意识到,这样的协议可以被在其他类型的系统中实施,包括但不限于空气调节系统、家庭自动化系统、现场监测系统或其他的具有监视和控制功能的系统应用。
在一个实施方案中,协议允许通过通信系统(例如计算机)访问设备(例如UPS)。这样的访问可能需要,例如,以确保没有设备未被授权的访问或控制。例如,未被授权的个人计算机可以访问UPS设备以把UPS系统停机或再配置。在一个实施例中,访问通过双向锁定特征的方式进行。在一个实施方案中,这样的特征允许,例如,设备(例如UPS)仅与被授权的软件(例如在主计算机上执行的应用程序)通信,以及软件与被授权的设备(例如被授权的UPS)通信。在另一个实施方案中,代理服务器系统可以被用于访问设备(例如UPS或UPS部件)。在一个实施例中,与UPS相关联的管理系统被用于把来自其他系统的信息通信至设备。管理系统可以作为用于执行管理功能或从一个或多个被管理的设备(例如UPS或UPS部件)获得信息的目的的代理服务器起作用。
这样的访问可以基于被存储在设备和通信系统二者的双向锁定密钥被允许。在上文的UPS实施例中,当UPS在锁定模式中(例如,访问UPS的通信系统不具有合适的密钥)时,UPS仅允许数据被写入至存储器的公共访问部分。例如,UPS可以仅允许通信系统访问UPS的存储器设备的公共区域(例如EEPROM、RAM等等)。向存储器的非公共区域的其他数据写入操作不被允许。以这种方式,使用配置参数和操作参数的操作在没有正确的密钥的情况下可能不被执行。在一个实施例中,密钥可以使用被存储在主设备的一个或多个公共区域中的公共访问信息被确定。在又一个实施方案中,允许某些数据元素被访问和/或被从设备更新的多级认证可以被提供。例如,在认证的“工厂”模式中,信息例如序列号、制造日期等等可以被改变,但是在“用户”模式(例如,典型的从模式)中,这样的信息可以具有不同的访问级别(例如只读)。
在本发明的另一个实施方案中,提供用于通过中介实体中继访问信息而不需要理解或解锁传输的信息的方法。即,实体,在本文中被称为代理服务器,被允许中继传输的信息,而没有必要理解协议。根据一个实施方案,描述传输的信息中的数据的格式的信息被包含在传输的信息自身内。根据另一个实施方案,代理服务器被要求把传输的信息认证并且解锁至其他的设备,以提供另外的安全性。在另一个实施方案中,与其他的从设备参与与主设备的通信的从设备可以“看到”与主设备的通信,其被适配为重复通过/到其他的从设备通信的数据,而不需要解释它们的通信。
在其他的实施方案中,协议是基于请求-响应的协议,在其中消息包括名称、指示相应的数据元素的值元组以及与数据元素相关联的值。在这些实施方案中,源设备(主设备或从设备)把请求消息发至目标设备(主设备或从设备)并且目标设备根据与包括在消息中的名称、值元组相关联的方法处理消息。目标设备把响应发至源设备,源设备通信被源设备进行的处理的某些结果。被这些实施方案实施的具体过程和数据结构在下文的请求-响应协议部分内进一步描述。
实施例系统
图1A-1C示出了实施与本发明的原理一致的各个方面的通信系统的各种配置。具体地,图1A示出了在串行链接配置中被耦合于一个或多个从设备102A-102Z的主设备101。在该配置中,主设备101包括至少一个被直接地耦合于从设备102A的串行链路。从设备102A包括至少一个其他的从设备被附接于其的至少一个其他的串行链路。
根据本发明的一个实施方案,从设备(例如从设备102A)被配置为在经由(pass-through)模式中操作,由此被下游从设备传输的数据被在经由模式中操作的从设备传递至主设备。此外,被主设备产生的数据被传递经过链接并且被附接于链接的已认证的设备观察到。以这种方式,来自主设备的同一组数据集可以被链接上的所有设备观察到。根据一个实施方案,经由设备不在下游重复信息,直到具体的经由设备使用主设备认证。在另一个实施方案中,一旦经由设备已经使用主设备认证,那么经由设备允许下游设备参加与主设备的对话。例如,一旦经由设备被认证,那么下游从设备尝试使用主设备进行认证。以这种方式,经由设备首先认证,然后“打开门”,允许下一个从设备使用主设备认证。该过程重复“打开”下游经由从设备,直到最终从设备使用主设备认证。
图1B示出了也允许多个从设备(例如从设备112A-112Z)与主设备(例如主设备111)通信的可选择的配置。在该配置中,主设备111被提供可以在星形配置中耦合于多于一个相应的从设备的多于一个串行端口。在该配置中,被通信至一个从设备的信息被主设备重复至其他的从设备。以这种方式,每个从设备从主设备接收相同的信息。例如,当数据的改变被从从设备通信至主设备时,信息的这种改变被重复至其他的从设备。
此外,提供其中每个从设备使用主设备认证以访问存储在主设备中的数据的认证方法。如在下文进一步讨论的,本发明的一个方面涉及在存储在主设备的寄存器中的公共存储器映射表上操作的协议。
在如图1C中示出的另外的配置中,基于星形的配置和基于串行链接的配置二者可以在同一个配置中共同地使用,允许多个设备监视并且控制主设备。例如,如在图1C中示出的,从设备122A-122Z被通过串行通信链路直接地耦合于主设备121。此外,在本实施例配置中,从设备122A包括在串行链接配置中耦合于下游从设备123A的至少一个另外的串行链路。如示出的,从设备123A被串行地连接于另外的从设备123B,该另外的从设备123B位于链接的端部,远离星形配置的分支中的一个。因为这些配置都被支持,所以用于连接于主设备的更灵活的配置是可能的。
图2A示出了根据本发明的一个实施方案的通信过程的一个实施例。例如,如在图2A中示出的,主设备(例如主设备201)可以通过一个或多个经由设备(例如经由设备202)通信至一个或多个下游从设备(例如下游从设备203)。这样的过程可以发生,例如,使用如在图1A中示出的串行链接配置。在一个实施方案中,通信可以从下游从设备请求与主设备通信开始。在一个实施方案中,如果未使用主设备认证的下游从设备请求通信至主设备,那么该通信被经由设备(例如设备202)阻挡。
经由从设备被允许使用主设备认证(例如在204),并且一旦被认证,那么经由从设备可以被允许在某些条件下(例如一旦它们已经使用主设备认证)把信息传递至其他的下游从设备。例如,在下游从设备被直接地连接于其的经由设备已经使用主设备认证之后,下游从设备可以然后使用主设备认证(例如在205)。在一个实施方案中,认证可以涉及在从设备和主设备之间的双向认证,如在下文进一步讨论的。
一旦被认证,那么下游从设备(例如下游从设备203)可以在正常通信模式(例如模式206)中与主设备(例如主设备201)通信。正常的通信可以涉及例如下游从设备从主设备请求数据(例如关于读取存储器映射表、寄存器的一个部分或其他的数据的请求),传输待在主设备上执行的命令,和/或控制对协议的使用(例如停止通信)。在一个实施方案中,当数据被从下游从设备通信时,经由从设备把这样的数据字节向上游朝向主设备传递。主设备一般响应于数据(例如通过验证命令已经被执行,将数据的部分返回存储器映射表,等等)并且该响应被经由设备接收并且传递至远离主设备的一个或多个下游从设备。在一个实施方案中,另外的经由设备可以被定位在主设备和在设备的串行链接的端部的下游从设备之间。在这种情况下,每个从设备适当地重复被朝向主设备或端部从设备接收的数据。
此外,在另一个正常通信模式中,上游从设备(例如经由设备202)可以把其自己的数据(例如命令、对于数据的请求、等等)发送至主设备201(例如如正常通信模式207示出的)。因为该数据被朝向主设备单向地发送,所以下游从设备可能不知道被上游从设备进行的通信。根据一个实施方案,下游从设备通过把从主设备至上游从设备请求的响应传输至任何下游从设备被保持当前状态。以这种方式,主设备的当前状态的“察看”在多个从设备之间是一致的。
此外,根据其他的实施方案,沿着串行链接的正常通信模式可以被中断,例如在设备被从链接移除的情况下,从设备中止通信或以其他方式出现故障。根据一个实施方案,当配置发生改变时,沿着链接的每个设备可以被要求使用主设备再认证。通信的终结(例如要素218)可以在任何从设备发出中止协议的命令(例如“停止”命令)或通信超时或以其他方式出现故障时发生。在一个实施方案中,发生故障的设备被从主设备注销,并且需要再认证以恢复正常的通信。
在又一个操作模式中,当下游从设备超时,发出停止命令或以其他方式出现故障时,下游从设备被直接地连接于其的从设备继续与主设备的通信。在这样的模式中,任何其余的从设备可以不需要使用主设备再认证自身。在这样的情况下,例如,最后的其余的从设备可负责检测下游从设备的丧失并且继续与主设备(或任何上游从设备)的通信。
根据一个实施方案,经由设备可以实施观察上游和下游通信的计时的计时器。根据一个实施方案,计时器可以当数据在任一个方向被接收时重置。例如,当计时器超过最大的时间期间(例如1.5秒、3NAK时间等等)时,通信可以被重置。超时可以导致经由设备消除或关闭到在超时期间内未响应的下游从设备的通信。此外,如果来自主设备的通信被预期,那么与主设备的通信可以被重置。根据又一个实施方案,可以具有经由设备和其他的设备可以暂停较长的时间期间而无需再启动认证过程的暂停模式。
图2B示出了根据本发明的一个实施方案的通信过程的另一个实施例。例如,如在图2B中示出的,主设备(例如主设备211)可以通信至一个或多个从设备(例如从设备A212、从设备B213)。这样的过程可以发生,例如,使用在图1B中示出的星形配置。在一个实施方案中,通信可以以从设备中的一个或多个请求与主设备通信开始。
从设备被允许使用主设备认证(例如在214、215),并且一旦被认证,那么从设备可以被允许与主设备通信。根据一个实施方案,因为可能具有多于一个被连接于主设备的从设备(例如通过不同的串行链路),所以主设备可以逐一地认证每个从设备,直到正常通信模式被实现。例如,如果通信被中断,那么每个从设备使用主设备再认证。根据一个实施方案,当从设备使用主设备认证时,认证信息不被重复至目前使用主设备被认证的其他的设备。即,在正常操作模式中,信息通常被重复至所有已认证的从设备,但是为了安全性目的,认证信息不被重复。在一个实施方案中,指示正在对其他的从设备进行认证的信息被传递至其他的从设备,但是用于认证从设备的实际的信息(例如质询/响应信息)不被重复。在一个实施方案中,认证可以涉及在从设备和主设备之间的双向认证,如在下文进一步讨论的。
一旦被认证,那么从设备(例如从设备A212、从设备B213等等)可以在正常通信模式(例如模式216、模式217)中与主设备(例如主设备211)通信。正常的通信可以涉及例如从设备从主设备请求数据(例如关于读取存储器映射表、寄存器的一个部分或其他的数据的请求),传输待在主设备上执行的命令,和/或控制对协议的使用(例如停止通信)。在一个实施方案中,当数据被从从设备通信时,主设备通常响应于数据(例如通过验证命令已经被执行,把数据的部分返回存储器映射表,等等)并且该响应然后被重复至所有其他已认证的从设备(例如,在星形配置中的所有其他被串行连接的接口上重复)。这允许,例如,主设备的当前状态的“察看”在多个从设备之间是一致的。
此外,根据其他的实施方案,在星形配置中的正常通信模式可以被中断,例如在设备被从接口移除,从设备中止通信或以其他方式出现故障的情况下。根据一个实施方案,当配置发生改变时,星形配置中的每个设备可以被要求使用主设备再认证。通信的终结(例如要素208)可以当任何从设备发出中止协议的命令(例如“停止”命令)或通信超时或以其他方式出现故障时发生。在一个实施方案中,出现故障的设备被从主设备注销,并且需要再认证以恢复正常的通信。
在其中基于星形的通信和基于串行的通信被使用的混合模式配置中(例如在图1C中),来自主设备的信息被重复至具有被附接的已认证的从设备的所有串行链路,包括从设备的串行地连接的链接。被发送至该链接上的经由从设备的信息被沿着链接向下串行地重复至其他被连接的设备(例如被认证至主设备的设备)。在到任何已认证的从设备的通信被中断或以其他方式停止的情况下,根据一个实施方案,所有的从设备将被沿着每个端口并且沿着每个链接以逐端口逐设备的方式再认证至主设备。在其后,来自主设备的信息可以对每个已认证的设备一致地共享。
图2C示出了根据本发明的一个实施方案的用于进行通信的过程200。例如,从设备的串行链接配置,例如在图1A中示出的串行链接配置,可以能够执行过程200。根据本发明的一个实施方案,经由从设备(从设备A)可能正在把来自一个下游从设备(从设备B)的数据朝向主设备传递。如在图2C中示出的,从设备可以接收来自上游从设备的行X。更具体地,从设备可以能够在主设备的存储器映射表内写入一个或多个存储器行。为此,从设备可以在通信中把存储器的行从从设备传递至主设备。在块221,当行X被上游从设备传输时,经由设备(从设备B)接收数据并且处理该数据。
接收到的数据可以包括许多通信类型中的一种,例如停止命令、应答(ACK)、否定应答(NAK))、命令或其他的通信类型。此外,超时可以被经历,这可以使通信被终结。例如,在某些实施方案中,在三个超时发生之后,从设备(例如从设备B)可以在块223被从会话放弃。此外,如果从设备B把停止命令发送至经由设备,那么经由设备(从设备A)将把从设备B从会话放弃。
在另一个实施方案中,如果ACK消息被从下游从设备(例如从设备B)接收,那么基于从设备A的ACK命令被执行(例如在块224)。即,中介从设备使用它们自己的状态消息代替状态消息,因为对于沿着链接的所有设备已经接收消息来说将是有益的。然而,如果NAK消息被从下游节点接收,那么其指示下游节点尚未接收到消息并且因此不具有对主设备的一致的看法。在这样的情况下,接收到的NAK消息被经由设备向上游朝向主设备传递(例如在块222)。
因此,总之,被从下游从设备接收的数据被向上游传递并且被每个中介从设备重复。被下游从设备执行的命令被向上游传递并且在主设备上执行。这些命令的结果通常以存储器行的形式与串行链接配置共同地朝向从设备传递回来。以这种方式,沿着串行链接的每个从设备能够观察在主设备上发生的存储器映射表数据的改变。然而,在上游方向,中介从设备对被其他的下游从设备发送的消息几乎不或完全不进行处理,允许正在被通信至主设备的数据的最小的延迟。根据一个实施方案,被向上游发送的命令以多字节形式,并且从设备不解析从下游从设备接收的接收到的多字节消息。中介从设备仅把下游通信向上游重复并且观察从主设备发送回的数据。
根据一个实施方案,中介从设备执行包验证,但是中介从设备不尝试理解驻留在包内的数据。这不仅从计时观点是有益的,而且根据一个实施方案,该特征还“前瞻证明”协议,使得中介设备不需要理解可以被下游从设备生成的所有的命令和/或数据。以这种方式,具有不同功能的不同从设备可以在同一个串行链接上共存,而没有协议的中断。
当主设备接收命令并且把响应传输至所有的从设备时,主设备的改变被观察到。如在上文的实施例中描述的,如果存在具有设备1-10的链接并且如果设备3生成命令,那么设备1和2将看到命令朝向主设备传输。然而,设备4-10不知道命令。为了把该情境考虑在内,根据一个实施方案,主设备被适配为把对命令的响应发送至所有的从设备。以这种方式,每个设备“看到”命令。在另一种情况下,其中设备10发送命令1并且设备4发送命令2,设备4确定哪个命令直达主设备。因为设备4仅允许一个命令通过,所以主设备将仅处理一个命令(来自设备4的命令)。因此,设备10的命令将永远不会起作用,并且设备10将依赖于来自主设备的响应以确定其命令未被接收到并且设备10应当再尝试命令的传输。由于这些原因,从设备仅响应于来自主设备的数据,并且“忽略”向上游传输的命令并且等待主设备处理它们并且给予响应。
图3A-3B示出了根据本发明的一个实施方案的用于使用主设备注册从设备的过程300。例如,在图3A中示出的过程300可以被应用于如上文参照图1B讨论的星形拓扑结构中的从设备。过程300包括块301,其示出了用于把未注册的从设备加入与主设备通信的从设备的列表中的过程。块302示出了用于把已注册的从设备从与主设备的通信移除的过程。
在大多数的时间,意识到,从设备的配置将在其中数据正在被从主设备传递至从设备的正常操作模式中。偶然地,从设备将被根据需要加入通信或从通信减去,以管理主设备。如在图3A中示出的,在块303,协议在空闲状态操作,直到NAK被从未注册的从设备接收到(例如,如在块304确定的)。即,来自未注册的从设备的NAK消息被主设备识别为待被加入与主设备的通信的请求。在块305,未注册的从设备传输是零的行以注册从设备。
在块306,如果ACK被从所有已注册的从设备接收并且在块308如果NAK被从未注册的从设备接收,那么在块310主设备把存储器映射表的行0传输至已注册的从设备,在块309,主设备通过行动传输至已注册的从设备。在块307,如果NAK计数被超过(或超时被经历),那么过程从空闲模式重新开始。否则,协议在正常模式操作,其中信息被在主设备和已注册的从设备之间双向传递。在块311如果ACK被从所有已注册的从设备接收,那么在块312主设备把存储器映射表的行X传输至所有已注册的从设备。如果NAK被从未注册的从设备接收到,那么该NAK被解释为未注册的从设备对于加入串行连接的请求。如果,例如,ACK未被从所有已注册的从设备接收到并且如果在块313数据未被从从设备接收到,那么该从设备在块315被注销。然而,如果从设备仍然继续通信但是过度的NAK消息被从从设备接收到,那么该从设备将被注销。
图3C-3E示出了根据本发明的一个实施方案的用于认证从设备的过程。在块320,主设备把存储器映射表的行0传输至所有已注册的从设备。在一个例子中,行0中的信息可以是下文讨论的可以被主设备通信而不需要认证(如在下文进一步讨论的)的静态数据。
根据一个实施方案,主设备可以把已注册的从设备(例如主设备已经在之前通信的已注册的从设备)的记录存储在主设备的存储器(例如寄存器、存储器映射表等等)中。主设备可以继续把全部行的静态数据(例如在块321、322中)传输至所有已注册的从设备。在块323,如果确定所有的静态行已经被从主设备传输,那么n(已注册的从设备的数量)在块324被设置为0。
在块325,确定对于位置n是否具有已注册的从设备。如果否(例如在位置n不具有已注册的从设备),那么n在块328被递增。在块327,确定是否所有已注册的从设备都被认证。如果是,那么在块326认证完成,并且正常通信模式发生。如果否,那么确定是否仍然存在任何未认证的从设备,并且然后作出尝试以认证它们。
在块329,认证计时器开始,并且根据一个实施方案,对于从设备认证至主设备可以具有被允许的固定的时间量。在块330,最后的静态行被传输至所有已注册的从设备。此外,密码行在块331被传输至正在被认证的从设备(从设备n)。在块332,确定应答消息是否被从所有的从设备接收(例如正在被认证的从设备应答接收到密码行,并且其余的从设备应答静态信息的最后一行)。如果是,那么在块333最后一个静态行被再次地传输至所有已注册的从设备。在块334,最后一个行被传输至正在被认证的从设备。
在块335,确定认证时间是否已经期满。如果是,那么在块336正在被认证的从设备(从设备n)被从主设备注销,因为认证已经超时。如果认证尚未超时并且有效认证在块337被接收,那么最后一个静态行被再次地发送至所有的从设备(在块338),并且最后一个密码行被发送至从设备n。在块340,从设备n被置于已认证状态。在块328整数n被递增,并且确定在块327是否具有任何另外的待认证的设备。如果是,那么对于另一个已注册的但是未认证的设备(例如从设备n+1)可以发生相同的认证过程。该过程可以继续,直到所有已注册的从设备都被认证。
在串行链接配置中,从设备可以以与上文关于星形配置讨论的相似的方式使用主设备注册自身。然而,认证过程可以包括逐一地认证每个从设备,以最接近于主设备的从设备开始,远离沿着串行链接的在下游的主设备工作。在这样的配置中,每个从设备沿着链接逐一地认证,使任何中介从设备在经由模式中操作。即,中介从设备,一旦被认证,把认证信息适当地向上游或向下游重复,在从相反的方向接收时。当距主设备最远的最后一个从设备被认证时,认证过程结束。
实施例串行链路协议
图4-22B(在下文进一步讨论)示出了可以被用于根据本发明的各个方面通信信息的实施例串行链路协议,单独地或与用于把信息在主设备和从设备之间通信的方面(如上文参照图1A-3B讨论的)进行各种组合。
图4是本发明的各个方面可以被实践的实施例网络系统的框图。具体地,系统400包括被一个或多个网络连接的一个或多个系统。在示出的实施例中,系统402通过网络403被耦合于代理服务器系统401。根据本发明的一个方面,代理服务器系统401具有使用通信协议通信至系统402的能力。与系统402的通信可以用于,例如,通过系统404监视或管理系统402。在可选择的配置(未示出)中,系统402可以被直接地耦合于另一个系统(例如系统404),并且本文描述的通信协议的各个方面可以被用于在它们之间通信。代理服务器系统可以被用于,例如,与其他类型的不作为本地从设备起作用的系统通信。
此外,根据本发明的另一个方面,提供把来自一个或多个系统(例如系统404)的请求翻译至可以被系统402识别的请求的代理服务器系统401。这些请求可以是,例如,被在系统404上执行的应用程序生成的消息。一个可以生成这样的请求的实施例应用程序是被提供用于管理一个或多个系统(例如系统402)的管理程序。这些请求可以包括用于控制和配置系统402的控制数据、用于来自系统402的性能和/或状态信息的请求,等等。为此,代理服务器401可以能够把接收到的管理请求翻译至能够被系统402处理的消息。虽然代理服务器401可以能够通信管理数据,但是应当意识到,代理服务器401可以能够翻译具有任何类型的数据的任何类型的请求。
应当意识到,代理服务器系统401能够被耦合于多于一个系统。在一个实施例中,代理服务器系统401被耦合于两个或更多个网络(例如网络403和网络405)。为此,代理服务器401可以具有多于一个链路或其他的网络接口。代理服务器401也可以能够使用一个或多个通信协议通信。根据本发明的一个方面,代理服务器可以能够从代理服务器系统被耦合于其的系统学习新的协议。代理服务器和其能力的一个具体的实施例在下文参照图21讨论。
系统400仅是根据本发明的各种实施方案的可以实施通信协议的一个或多个方面的通信系统的一个例证性的实施方案。这样的例证性的实施方案不意图限制本发明的范围,因为系统的多种其他实现的任何一种(例如具有更多的或更少的系统的400的变化形式)是可能的并且意图落入本发明的范围内。
根据本发明的各种实施方案可以在一个或多个计算机系统上实施。这些计算机系统可以是例如通用计算机,例如基于IntelPENTIUM类型处理器、MotorolaPowerPC、SunUltraSPARC、Hewlett-PackardPA-RISC处理器或任何其他类型的处理器的那些。在一个具体的实施方案中,提供可以被计算机系统例如控制器使用的通信协议的各个方面。这样的控制器可以被内嵌在一个或多个系统例如不间断电源(UPS)或其一个部件中。然而,应当意识到,根据本发明的各种实施方案,任何类型计算机系统中的一个或多个可以被用于通信。还应当意识到,不同类型的系统(例如PC、控制器等等)可以使用本发明的各个方面与彼此通信。
根据本发明的一个实施方案的通用计算机系统被配置为执行所描述的任何通信功能,包括但不限于在计算机系统之间通信和/或把数据中继至其他的系统(例如至系统506)。应当意识到,系统可以执行其他的功能,并且本发明不被限于具有任何具体的功能或功能的集合。各种实体例如系统402、404和代理服务器401可以是实施根据本发明的各种实施方案的各种通信功能的通用计算机系统。
例如,本发明的各个方面可以实现为在通用计算机系统例如在图5中示出的通用计算机系统中执行的专用软件。计算机系统402可以包括被连接于一个或多个存储器设备502,例如磁盘驱动器、存储器或其他的用于存储数据的设备的处理器501。存储器502典型地被用于在计算机系统402的操作期间存储程序和数据。计算机系统402的部件可以被互连机构(例如网络504)耦合,互连机构可以包括一个或多个总线(例如在被集成在同一个机器内的部件之间)和/或网络(例如在驻留在单独的分立机器上的部件之间)。
互连机构504使通信(例如数据、指令)能够在系统402的系统部件之间交换。系统402还包括一个或多个用于输入和输出数据的输入/输出设备503(例如端口、设备、系统等等)。此外,系统402可以包含一个或多个把计算机系统402连接于通信网络507的接口505。系统402可以能够学习被一个或多个系统(例如系统506)用于通信的一个或多个协议。
根据本发明的一个实施方案,接口505可以是被用于通信至被附接的设备的串行类型接口。接口可以能够使用本发明的各个方面通信。这样的接口505可以使用一个或多个串行类型传输层协议,包括但不限于TTL串行、RS-232、RS-422、RS-485、I2C、CAN、蓝牙、ZigBee或任何其他的能够把包在系统之间移动的传输层。
系统402典型地包括作为存储器502或其他的存储部的一部分的存储机构,该存储机构包括计算机可读的和可写入的非易失性的(非瞬时的)记录介质,定义待被处理器执行的程序的信号被存储在记录介质中,或待被程序处理的信息被存储在介质上或中。介质可以例如是磁盘、闪速存储器、EEPROM、RAM或类似的。典型地,在操作中,处理器使数据被从该非易失性的记录介质读入允许处理器比从该介质更快地存取信息的另一个存储器中。该存储器典型地是易失性的随机存取存储器,例如动态随机存取存储器(DRAM)或静态存储器(SRAM)。该存储器可以位于存储系统或存储器系统502中。
处理器501通常在存储器内操纵数据并且然后在处理完成之后把数据复制至介质。多种机构已知用于管理在介质和存储器元件之间的数据移动,并且本发明不被限于此。应当意识到,本发明不被限于特定的存储器系统或存储系统。
计算机系统可以包括被专门地编程的专用硬件,例如专用集成电路(ASIC)。本发明的方面可以被在软件、硬件或固件或其的任何组合中实施。此外,这样的方法、行为、系统、系统元件和其的组成部件可以作为上文描述的计算机系统的一部分或作为独立的部件被实施。
虽然计算机系统402通过实例被示出为本发明的各个方面可以被在其上实践的计算机系统的一个类型,但是应当意识到,本发明的方面不被限于在计算机系统上实施,如在图5中示出的。本发明的各个方面可以被在一个或多个具有与在图5中示出的那个不同的架构或部件的计算机上实践。
系统402可以是使用高级计算机程序设计语言编程的通用计算机系统。系统402还可以使用被专门地编程的专用硬件被实施。在计算机系统402中,处理器501典型地是可商购获得的处理器,例如熟知的可从IntelCorporation获得的Pentium类型处理器。许多其他的处理器是可用的。这样的处理器通常执行以下操作系统,其可以是,例如,可从MicrosoftCorporation获得的WindowsNT、Windows2000(WindowsME)或WindowsXP操作系统,可从AppleComputer获得的MACOSSystemX,可从SunMicrosystems获得的Solaris操作系统,或可从各种源获得的UNIX。许多其他的操作系统可以被使用。
处理器和操作系统共同地定义以高级程序设计语言编写的应用程序的计算机平台。应当理解,本发明不被限于特定的计算机系统平台、处理器、操作系统或网络。此外,对本领域的技术人员应当明显的是,本发明不被限于特定的程序设计语言或计算机系统。此外,应当意识到,其他合适的程序设计语言和其他合适的计算机系统也可以被使用。
应当意识到,本发明不被限于在任何具体的系统或系统组上执行。此外,应当意识到,本发明不被限于任何具体的分布式架构、网络或通信协议。
本发明的各种实施方案可以使用面向对象的程序设计语言被编程,例如SmallTalk、Java、C++、Ada、或C#(C-Sharp)。其他的面向对象的程序设计语言也可以被使用。可选择地,功能的、脚本的和/或逻辑的程序设计语言可以被使用。本发明的各个方面可以实现为编程的或非编程的要素或其的任何组合。
图6示出了根据本发明的一个实施方案的用于建立通信的过程。在块601,过程600开始。在块602,从系统发起与主系统的通信。在一个实施方案中,从系统是被适配为管理一个或多个主系统的管理系统。在本发明的一个方面,从系统确定从设备以及,可选择地,经过从系统的其他实体与主系统通信的协议。
此外,如上文讨论的,从系统可以发起在主设备和从系统之间的通信,例如通过发送当被主系统接收到时使主系统把通信参数发送至从设备(例如在块603)的消息的序列。在块604,从设备使用通信参数与主系统通信。这样的通信参数可以例如指示所使用的协议的版本、用于通信的消息的长度、存储器和/或数据结构布局、或其他的通信信息。
图7示出了根据本发明的一个实施方案的被主系统执行的过程700。特别地,图7示出了被主系统执行的通信过程的状态图解。在一个实施例中,主设备包括运行具有四个状态的通信协议的引擎。该状态图解可以例如被如上文讨论的UPS或UPS部件的处理器执行。在一个具体的实施例中,在图7中示出的状态图解被在UPS设备中实施,并且被在固件中用程序设计语言编程以执行根据本发明的一个实施方案的通信协议。
通信协议包括四个基本状态(状态701-704)和一个指示通信有效的标志(例如COM_VALID标志)。在主设备初始化705时,主设备初始化通信有效标志。四个基本状态包括第一状态701,第一状态701包括等待从从设备接收消息的第一字符(例如第一字节)。如果第一字符是单字节消息,那么主设备通过把合适的行传输至从设备处理该单字节消息。在第二状态703中,主设备从从设备接收消息的其余部分(例如接收其他的与消息相关联的字节)。在状态704,主设备响应于从从设备接收到的信息把任何行信息传输至从设备。
如讨论的,根据一个实施方案,包括一个或多个超时机制的通信协议可以被实施。根据一个实施方案,双重的超时可以被在主设备和从设备之间使用。在一个实施方案中,超时机制提供用于检测通信网络(例如数据总线)上的通信问题的方法并且定义标准的恢复过程。在一个实施例中,最大时间被在消息中的字节(例如字节超时)之间设置。例如,该超时可以是约25毫秒(“ms”)但是该超时期间可以被调整至其他的值。在一个实施例中,一旦消息包已经开始发送消息中的后续字节,那么消息必须被以大于该超时的速率传输以确保数据被接收到。如果字节以该速率在消息中未被接收到,那么包被丢弃并且否定应答(NAK))被发送至从设备。此外,包的接收者可以具有测量消息响应可以被接收到的时间的另一个超时。如果对消息的响应未在被定义的超时期间(例如250毫秒)内发生,那么设备认为传输是失败的并且据此行动。
图8示出了根据本发明的一个实施方案的用于通过从系统执行通信的实施例过程800。具体地,图8示出了可以被如上文参照图7讨论的与主设备通信相关的从系统执行的状态图解。具体地,状态图解可以包括从系统可以在任何点与主设备通信中具有的四个状态(状态801-804)。这样的状态图解可以例如在从系统内的软件、硬件或二者中被执行。
在初始化805时,从设备进入接收状态,其中从设备能够从主设备接收数据的行。从系统也可以在应答模式803中,在应答模式803中从系统适当地传输应答(ACK)消息或否定应答(NAK))消息,这取决于信息是否被从主系统合适地接收到。如在上文的实施例中讨论的,如果特定的消息未在预确定的超时期间内被接收到,那么从设备可以把否定应答发送至主系统,提示主系统再发送该消息。
在状态804,从系统可以根据需要把任何数据传输至主系统。这样传输的数据可以包括,例如,执行信息到主系统的存储器地点的写入的写入命令,用于从合适的存储器地点读取信息的读取请求,或任何其他的读取或写入操作。
图9A-9B示出了在如上文参照图7描述的接收到第一字符状态701期间发生的过程900的实施例流程图。在块901,主设备从从系统接收第一字符。在块902,消息内超时计时器被启动以追踪消息可以被发送的时间。如果消息在消息内超时值内未被发送,那么否定应答在块904被发送,并且NAK计数器被递增。如果在块905确定NAK计数器的值超过被允许发送消息的反复尝试的最大数量,那么通信有效(通信活跃)标志在块910被清除。如果NAK计数器未被超过,那么在块906消息被接收到并且消息内超时被重置,并且主设备已准备好接收另一个消息的第一字符。
如讨论的,可以具有可以被使用的超时的两个级别,一个用于消息并且一个用于接收消息内的连贯的字节。在块903,如果字符被接收到,那么在块907字节内超时被重置。在块908,如果否定应答(NAK))被接收到,那么在块909否定应答计数器被递增。在块911,如果NAK计数器超过用于发送连贯字节的反复尝试的最大数量,那么在块910活跃的通信标志被重置。如果否,那么字节已经被成功地传输并且计时器被重置以用于接收另一个字节和/或消息。
在块908,如果NAK未被接收到,那么在块913NAK计数器被重置。在块914,确定应答是否被从从系统接收到。如果是,那么主设备准备发送一个另外的行,并且在块915行指针被递增。在块912,主设备把行传输至从设备。如果在块914应答未被接收到,那么在块916确定主设备是否已经接收到停止字符。如果是,那么主设备在块917把行指针重置至零并且在块922进入暂停模式。
如果在块916停止模式字符未被接收到,那么在块918确定暂停模式字符是否已经被主设备接收到。如果是,那么在块922主设备进入暂停模式。如果否,那么在块919主设备确定读取开放数据字符是否已经被接收到。如果是,那么在块923主设备把开放行传输至从设备。如果否,那么在块920主设备确定写入开放数据字符是否已经从从设备接收到。如果是,那么在块921主设备接收从设备开放命令消息。如果否,那么在块924主设备接收从设备消息。
图10A-10B示出了可以在接收消息状态中被主设备执行的过程1000。在块1001,主系统接收从设备消息。在块1002,确定字节内超时是否已经被超过。如果是,那么在块1011NAK计数器被递增。在块1012,如果确定NAK计数器超过用于发送消息的反复尝试的最大数量,那么在块1019行指针被设置至零。此外,活跃的通信标志在块1020被清除,并且在块1021主设备进入暂停模式。如果在块1012确定NAK的数量未超过反复尝试的最大数量,那么消息已经被正确地接收到并且在块1022主设备过渡至接收到第一字符状态。
如果在块1003字符被接收到,那么字节内超时在块1004被重置并且字符被存储在主设备的存储器中。在块1005,确定消息是否完整。如果是,那么在块1006基于在传输的消息中接收到的校验和确定接收到的消息是否是有效的。如果否,那么在块1007确定是否丢弃接收缓冲器中的字符。更具体地,在块1008,确定字节超时是否已经被超过。如果否,那么在块1009确定字符是否被接收到。如果是,那么在块1010字节超时被重置。如果字符尚未被接收到,那么确定字节超时是否已经被超过。如果是,那么在块1011NAK计数器被递增,如上文讨论的。
如果在块1006校验和被确定为有效的,那么在块1013确定数据是否跨过行边界。如果是,那么接收到的消息是无效的并且在块1011NAK计数器被递增,如上文讨论的。如果数据不跨过行边界,那么在块1014行指针被调整至从设备消息行。在块1015确定接收到的数据消息(在块1015)是否在主设备的存储器的范围内。如果是,那么在块1016主设备的共享的存储器图像使用合适的数据被更新。如果否,那么主设备把行信息1017传输至从设备。此外,在块1018,行指针基于用于把信息发送至从设备的应用规则被修改。主设备然后在块1022过渡至接收第一字符状态。
注意,传输行流操作以输出行的字符,保证字符比在连续的字符之间的字节间超时更快地被传输。
图11A-11B示出了可以在如上文参照图8讨论的接收行状态801期间在从系统中实现的实施例过程1100。在块1101,从系统进入接收行状态。在块1102,确定字符是否被在从设备接收到。如果否,那么在块1103确定消息超时是否已经被超过。如果否,那么从设备监视被从主设备接收的字符。如果字符被接收,那么在块1104字节超时被重置。在块1105,确定字符是否已经被接收。如果否,那么在块1106确定字节超时是否已经被超过。如果否,那么从设备继续监视从主设备接收的另外的字符。
如果在块1106字节超时已经被超过,那么在块1116从设备把NAK传输至主设备。如果在块1105字符被接收到,那么在块1110字节超时被重置,并且在块1111确定行信息是否指示主设备的固件或其他的软件应当被升级。如果是,那么从设备在块1112进入运行引导加载程序状态。在该状态期间,从设备可以把一个或多个文件提供至主设备以再编程自身。在块1111,如果确定主设备不请求进入引导加载状态,那么在块1107确定被传输的行是否完整。如果否,那么在块1105另外的字符可以被接收到。如果行是完整的,那么在块1108确定被传输的行是否是有效的,考虑到校验和被包括在接收到的消息中。如果是,那么在块1109确定从设备通信标志是否被设置。如果是,那么在块1113确定接收到的行是否是行零。如果是,那么通信活跃的标志在块1114的从设备被设置。例如,如果接收到的行不是行零,那么在块1116从设备可以把否定应答(NAK))传输至主设备。
当通信活跃标志在块1114被设置时,在块1115确定是否具有待传输至主设备的数据。如果否,那么在块1125从设备仅把行零被成功地接收到的应答传输至主设备。如果从设备具有待传输至主设备的数据,那么在块1126从设备将其传输。
在块1108,如果确定校验和不是有效的,那么在块1121从设备进入其中字符被丢弃在缓存中的丢弃模式。更具体地,在块1122确定字节超时是否已经被超过。如果否,那么在块1123确定连续的字符是否已经被接收到。如果是,那么在块1124字节超时被重置。如果否,那么在块1122从设备继续等待字符,直到字节超时被超过。
如果在块1103消息超时被超过,那么在块1117在从设备的活跃的通信标志被设置为关。此外,在块1118数据有效寄存器被重置,并且消息超时和字节超时分别在块1119和1120被重置。此外,在块1116否定应答被传输至主设备。
图12A-12B示出了在传输数据状态503时被从设备遵循的过程1200。在块1201,从设备进入传输数据状态。在块1202,消息超时在从设备被重置。在块1203,从设备进入传输数据状态并且开始把信息传输至主设备。在块1204,确定响应是否被从主设备接收到。如果否,那么在块1208确定消息超时是否被超过。如果消息超时尚未被超过,那么从设备等待来自主设备的响应。
如果从设备接收到来自主设备的响应,那么确定接收到的信息是否是有效的。例如,校验和可以被包括在传输的信息中并且在块1205从设备可以基于校验和确定信息是否是有效的。
如果校验和是有效的,那么在块1206确定主设备是否传输具有数据的行。如果是,那么在块1207确定行数据是否与传输的数据相同。如果是,那么在块1213操作被指示为成功。
如果行数据不等于传输的数据,那么在块1210反复尝试计数器被递增。在块1212,如果确定反复尝试计数器超过最大值(例如3),那么在块1211操作被指示为不成功。如果否,那么在块1202从设备等待来自主设备的另一个消息的接收。如果在块1208具有消息超时或在块1205校验和不是有效的,那么在块1209从设备把NAK传输至主设备并且递增其反复尝试计数器。再次地,如果在块1212反复尝试计数器超过最大值,那么在块1211操作被指示为不成功。
消息传送
根据本发明的一个方面,具有可以被用于在从设备和主系统之间通信的三个可能的消息。更具体地,可以具有是从主设备至从设备的传输的主传输,是从从设备至主设备的传输的从传输,以及被在主设备执行的从设备单字节命令。
图13示出了根据本发明的一个实施方案的一个实施例主设备格式。在一个实施例中,主系统传输具有相同的长度和格式的消息。消息1300可以包括,例如,指示正在被主系统传输的数据的位置的行编号1301。在行0中,行1301可以指示通信协议的版本。消息1300可以还包括数据有效载荷1302,其包括一个或多个数据字节0至n。在一个实施方案中,被主设备发送的每个消息1300的长度可以是固定的长度。在一个实施例中,该固定的长度可以在主设备实现之间不同。该固定的长度可以例如基于可以位于例如行0数据元素中的协议版本1301或通过位于行0中的行长度字节被确定。
消息1300可以还包括用于验证具体的消息内容的校验和信息。在一个实施方案中,消息1300包括弗莱彻校验和1303。弗莱彻校验和是熟知的用于检测错误的校验和,如下文更完全地描述的。然而,应当意识到,任何其他类型的校验和可以被用于验证传输的信息。
根据本发明的一个实施方案,从系统可以以两个不同的格式中的一个进行传输。第一数据格式是单字节消息并且第二数据格式是多字节通信消息。图14示出了根据本发明的一个实施方案的一个实施例消息格式1400。消息1400包括指定正在被传输的消息的类型的行编号1401。根据一个实施方案,具有行编号1401的三个可能的值。例如,0xFD的值指示否定应答(NAK)消息。
根据一个实施方案,NAK消息被用于初始化主设备和从设备之间的通信。其他的可以被从设备调用的单字节命令包括但不限于用于停止通信、暂停通信、应答(例如ACK)传输或否定应答(例如NAK)传输的命令。在一个具体的实施例中,具有大于0xF0的行编号1401值的消息是单字节命令或专用命令。根据一个实施方案,专用命令可以被用于扩展协议的功能。根据一个实施方案,这样的消息可以包括多字节消息的第一字节。
如讨论的,从设备可以把其传输至主设备的消息的最后一个类型是用于请求改变存储在主设备处的数据的多字节消息。这样的消息可以采取与在图14中示出的消息1400相同的形式。消息1400包括指示在其中数据字节零(条目1406)待被写入的行偏移的起始字节编号1405。数据长度1402指示数据有效载荷1403中的数据字节的编号。根据一个实施方案,数据有效载荷必须小于或等于被主设备传输的行的长度(例如8字节)。例如,为了连续写入2字节长的存储器地点的第三要素,起始位置在消息1400中被指示为3并且长度被指示为2。相似于消息1300,消息1400可以包括校验和信息。在一个具体的实施例中,弗莱彻校验和1404可以被使用,如在下文进一步讨论的。
在字段1402中具有零(0)的数据长度值的消息1400可以被具体的主设备实现解释为主设备发送指定的行的请求。
实施例事务处理
图15示出了根据本发明的一个实施方案的消息事务处理的一个实施方案。具体地,主系统把消息1501传输至从设备,并且在某个响应时间1502之后,从设备使用合适的消息1503响应。在一个实施方案中,响应是被用于行值(第一字节)的0xFE值指示的应答消息1507。主设备消息1501包括行1字节1504和数据有效载荷1505。在一个实施方案中,数据有效载荷范围从0字节至239字节。可选择地,主设备消息1501包括弗莱彻校验和1506,如上文描述的。
图16示出了另一个实施方案,其中主设备发送相似于1501的消息1601(例如具有被数据有效载荷1605以及,可选择地,弗莱彻校验和1606跟随的第一字节1604的消息1601)。然而,从设备在某个响应时间1602之后未接收到消息1601。这可以发生,例如,如果主设备不足够迅速地传输信息(例如具有多于预确定的数量的字节超时),具有传输错误(例如毁坏的字节、丢弃的字节或传输的数据的其他改变),或其他的使数据不被合适地传递的传输问题或接收问题。在这样的情况下,从系统发出指示消息1601未被接收到的消息1603。在该指示之后,主设备可以再发送消息1601。消息1603可以是,例如,如上文描述的NAK消息1607,其可以被0xFD的行值(第一字节)指示。
通常,主设备可以从从系统接收四个基本响应中的一个。从设备可以使用单字节NAK响应,并且作为响应,主设备将再传输相同的数据包。从设备可以发送单字节ACK,并且作为响应,主设备将继续传输消息中的下一个数据块。从设备可以还发送具有未被指示为ACK或NAK的第一字节的多字节消息。在校验和错误不存在时,主设备可以被配置为使用从从设备接收到的数据更新其本地存储器。根据一个实施方案,主设备仅在验证接收到的数据在合适的范围之后更新其存储器。如果被验证,那么主设备可以使用包括包含响应包中的地址的行的消息响应。如果校验和错误发生,那么主系统可以使用NAK消息响应(即请求最后一个行的再传输),在其之后,从设备可以再发送消息。
另一个事务处理类型包括从从系统至主设备的写入操作。这样的消息事务处理的一个实施例在图17中示出。从系统把消息1701发送至主系统,并且在某个响应时间1702之后,主设备使用消息1703回复。消息1701可以包括行信息1704、偏移信息1705、长度信息1706、数据有效载荷1707和弗莱彻校验和1708。在写入操作的情况下,主设备可以回复至从设备,指示被写入操作写入的行地址,向从设备指示写入操作是成功的。为此,来自主设备的消息1703可以包括行信息1709、一个或多个数据字节1710和任何校验和信息1711。
总之,从设备发送消息(例如ACK消息)以检索存储在主设备的存储器中的行信息。主设备确定数据的哪一行将接着传输,并且主设备最终地传输整个数据集。如下文描述的,这样的信息可以根据下文描述的存储器映射表被存储在主设备中。
存储器映射表
根据本发明的一个方面,主设备可以包括配置数据和性能数据被存储在其中的存储器映射表。例如,数据可以被存储在存储器映射表的一个或多个行中,如在图18中示出的。如示出的,存储器可以是按行组织的存储器的线性数组阵列。在一个实施方案中,主设备定义共享的存储器格式。如在图18中示出的,存储器可以以线性数组指代,如由单元中示出的偏移指示的。例如,行0包含在偏移0x0000-0x0007的数据。从设备或其他的读取存储器映射表的实体可以把“行走”经过存储器映射表以提供存储在存储器映射表中的所有信息的命令发出至从设备。可选择地,从设备可以选择性地请求来自存储器映射表的特定信息,如果数据的位置已知的话。
根据一个实施方案,存储器映射表可以包括定义存储器映射表的格式的数据以及其包含的数据。在一个实施例中,存储器映射表包括定义包含在存储器映射表中的数据的标头信息。这样的标头信息可以被存储在共享的存储器映射表中的保留位置(或偏移)中,允许从设备发现用于与主设备通信的通信参数。此外,标头可以包含描述共享的存储器的内容的信息。在图18中示出的实施例存储器映射表中,标头可以被定义为偏移0x00-0x08。
主设备的存储器可以包含多个区。例如,图19示出了具有不同的可以被从设备访问的区的实施例主设备存储器。根据本发明的一个方面,存储器(例如存储器1900)包括标头1901,该标头1901包括用于建立通信以及访问主设备存储器的其他部分的信息。在一个实施例中,标头1901具有从设备和其他的实体可以识别包含在其中的通信参数并且因此可以与主设备通信的标准格式。一个实施例标头格式在图20中以实施例的方式示出并且在下文进一步讨论。标头1901可以是可以被设备访问以确定通信参数的可公共访问的区域。在一个具体的实施中,标头1901是8字节长的。
在一个实施方案中,标头是被要求的数据区,其他的通信参数从被要求的数据区确定。特别地,标头1901可以指示,例如,待被用于访问主设备的通信协议的版本。标头1901可以还指定存储器映射表中的数据的组织、包含在映射表内的区、以及它们的组织的各方面。在一个具体的实施例中,标头包括从一组已知的配置识别存储器的数据结构的唯一标识符。此外,标头可以包括识别在通信中使用的数据包的数量和大小的信息。
在标头1901之后,存储器1900可以包括指示例如识别数据可以在存储器1900内被找到的位置的指示物(例如指针)的描述符标头1902。例如,描述符标头1902可以包括指示被描述的数据的开始的指针。描述符标头1902可以包括其他的信息,例如待被用于解析跟随描述符标头1902的设备描述符1903的解析规则的指示。
设备描述符1903可以提供许多功能,包括识别用于解析描述符的哪个规则可以被访问主设备的从设备使用。在一个实施方案中,设备描述符1903是描述被描述的数据的格式的一系列字节。根据一个实施方案,设备描述符1903使用一组规则被编码和解码。根据一个实施方案,设备描述符的一个目的包括通知从设备数据(例如数据元素)的哪些用途被实施,具体的用途在存储器映射表的何处存在,用于具体的用途的任何参数,以及具体的用途在设备层级的何处存在。
存储器1900可以被分割为被描述的数据是静态数据(例如静态数据1904)和动态数据(例如动态数据1905)的各部分。根据一个实施方案,如果没有区别被作出,那么被描述的数据可以被认为是动态的。根据一个实施方案,数据类型之间的划分被作出,以辅助从设备确定如何最高效率地存储从主设备接收的数据。这样描述的数据可以包括用于主设备实体的有意义的数据,包括例如操作参数、调试信息、性能信息等等。描述的数据可以位于存储器1900的任何部分,并且不被限于在设备描述符1903之后紧邻地跟随。例如,存储器1900可以包括被包括以用于填充目的或其他用途的非描述的数据(例如数据1906)的一个或多个部分。
静态数据是不频繁地改变的数据,例如描述主设备配置的信息。描述的数据可以还包括频繁地改变的数据,例如性能信息。
图20示出了根据本发明的一个实施方案的一个实施例标头格式。标头可以包括识别正在被使用的协议的版本的协议版本信息。标头可以还包括识别包含在存储器映射表中的行的长度的行长度信息。行长度可以还定义用于从从设备或代理服务器实体通信至主设备的包大小。标头可以包括指示存储器映射表中的存储器的行的数量的标识符。
标头可以包括识别主设备实体的信息。该信息可以是,例如,用于主设备的特定模型的唯一识别符。这样的信息对于从设备识别具体的主设备可以具有什么能力来说可以是有用的。在一个例子中,从设备可以是管理主设备例如UPS的个人计算机(PC),并且因此正在被管理的UPS的型号对于确定可以被执行的命令、可以被监视的信息等等来说可以是有用的。
标头可以还包括指示具体的数据表配置格式的标识符。该标识符可以允许,例如,从设备识别存储器映射表的具体配置。该标识符可以还允许从设备确定从设备是否支持具体的存储器映射表配置。即,从设备可以存储不同的存储器映射表配置,并且从设备可以响应于标识符使用具体的配置。此外,标头可以识别什么协议和/或特征被主设备支持,允许从设备充分地确定主设备的能力。标头可以还包括用于被管理员或其他的用户使用的人类可读的设备描述,或任何其他的描述设备和/或用于访问设备的方法的信息。
根据一个实施方案,设备描述符是字节的序列,其描述被描述的数据的格式。设备描述符通过遵循一组规则被编码和解码,如在下文进一步讨论的。
根据一个实施方案,设备描述符的目的是使从设备知道:
●哪些数据用途被主设备实施。
●具体的用途在主设备的存储器映射表的何处存在。
●任何用于具体的用途的参数。
●具体的用途在主设备层级的何处存在。
因此,在可公共地访问的地点中定义的用途可以允许从系统访问被存储在主设备的存储器中的某些信息。以相似的方式,从设备可以访问这样的信息,作为可以从其他的设备或系统提供访问的代理服务器系统的一部分。
代理服务器系统
根据一个实施方案,从设备可以作为用于把信息中继至一个或多个其他实体的目的的中继器起作用。为此,从设备可以是被配置为与其他的实体例如计算机系统通信的代理服务器系统的一部分。这样的计算机系统可以通过一个或多个通信网络被耦合于代理服务器。在使用串行链接配置中的多于一个从设备的系统中,代理服务器可以被用作链接中的最后一个从设备。
根据本发明的一个方面,代理服务器被适配为代表多个设备通信至单一的主设备。在一个实施方案中,在主设备和从设备之间使用的协议使用网络协议被传输。常规地,主设备例如UPS通常使用被直接地连接的链路(例如串行通信电缆)通信至管理实体,或被提供在本文中被称为网络管理卡(NMC)、接口卡、或其他的使用该设备的原生语言通信至该设备的设备,并且该设备使用网络协议例如HTTP把数据翻译至一个或多个其他的系统或设备(例如通过一个或多个网络)。
目前,产品例如UPS和其他的设备通过基于以太网的网络通过两种方法中的任一种通信至其他的设备。首先,接口卡(例如NMC)以UPS或其他设备的原生语言通信至UPS或其他的设备,把该数据翻译至客户友好的术语和词汇表,并且使用许多协议例如HTTP、Telnet、SNMP和其他协议中的一种通过基于以太网的网络通信至一个或多个其他的设备(例如客户端)。解释被翻译的数据的客户端可以是使用网络浏览器的人类或被编程以响应于UPS或其他设备的条件状态实施过程的应用程序。
这种方法的缺点是接口需要理解接口正在通信至其的UPS或设备,使得接口可以以有意义的方式把其的语言翻译至客户友好的接口。使用这种方法,接口卡需要在其的存储器中不仅存储接口卡预期翻译的不同的UPS和设备的许多不同的语言,而且存储卡可以被配置为传输该被翻译的数据的不同客户端的语言。因为对设备和客户端二者的多个语言支持要求的需要,接口卡的物理存储器要求被增加。此外,因为这种翻译实时地发生,所以进行翻译的处理器需要足够快速,以把滞后时间减少至可接受的量。这些要求都增加接口卡硬件的成本和复杂性。
形成连接的另一种方式包括被安装在计算机中的软件应用程序,该计算机通过串行连接连接于UPS或其他的设备,把UPS或其他的设备数据翻译至客户友好的术语并且通过基于以太网的网络连接使该数据对其他的设备可用。这种方法的一个缺点是该方法要求PC或其他的计算机通过串行连接被连接于UPS或其他的设备。计算机对于本解决方案来说明显是高成本的、冗长的并且耗费电力的部分,如果其不意图被用于其他的目的例如文件服务、打印管理和其他的网络活动的话。这种方法还要求串行端口可用于通信至UPS或其他的设备,这不是始终可能的或实际的。此外,设备的常规的发现要求轮询所有的网络(例如IP)地址,以“找到”包含网络设备的节点。这样的发现由于可能的IP地址的数量是耗费时间的,并且由于进行这样的操作所需要的网络带宽是耗费资源的。
根据一个实施方案,提供在以客户友好的格式通过网络提供数据之前不需要翻译来自UPS或其他的设备的数据的系统。因为数据不被翻译,而是以其原始形式被提供,所以代码和硬件的复杂性被减少。把数据以其原始形式经过接口传递的一个附加的益处是系统使用一系列广泛的产品工作,而非系统需要存储多个协议或以其他方式必须知道关于不同的主设备的各个能力和特征的任何事情。另一个相对于常规的接口卡的优点是,根据一个实施方案,系统被设计为仅使用主要的网络协议工作。与必须把多种网络通信方法的协议存储在存储器中的常规的网络卡相反,根据本发明的一个实施方案的系统仅使用一个。对单一的协议的支持减少成本和复杂性并且简化在产品安装期间的设置时间。根据另一个实施方案,提供允许软件客户端进行简单的网络广播并且从网络上的所有遵守该协议的设备接收响应的轻量级协议。
根据本发明的一个方面,提供通用翻译系统。具体地,提供用于所有的与串行和网络协议兼容的主设备的单一的设备,与对主设备特定的数据无关。此外,提供发现网络上的与协议兼容的设备的能力。这可以例如通过轻量级通信方法被实现。在一个具体的实施例中,现有的通信协议被作为用于专有串行协议的传输层使用。被在软件客户端接收的数据与本来会通过与主设备的直接串行通信接收的数据是相同的格式。
如讨论的,串行链路协议的网络版本可以被提供。根据一个实施方案,协议允许访问经过主设备的串行端口访问的同一个存储器映射表。在一个实施方案中,协议是作为串行电缆代替物起作用的轻量级网络协议。该网络协议的增加的优点是仅使用到主设备的一个连接,多个设备可以连接于同一个网络主设备。
图21示出了根据本发明的一个实施方案的用于与主设备通信的实施例系统。通信系统2100包括具有待被中继至其他实体的信息的主系统2102。更具体地,主设备2102可以包括待被一个或多个外部设备访问的一个或多个存储器区域。主设备2102可以包括包括待被访问的数据的存储器映射表2106。根据一个实施方案,存储器映射表2106可以包括描述其他的包含在存储器映射表内的数据的格式的数据。从设备、代理服务器或其他的系统可以使用存储器映射表中的这样的信息确定用于与主设备2102通信的通信参数。
根据一个实施方案,提供能够读取主设备2102的存储器映射表2106以及把该信息提供至一个或多个客户端(例如网络客户端2103)的代理服务器2101。为此,代理服务器2101包括能够与主设备2102通信的从设备2104。如讨论的,从设备2104可以把命令和其他的数据通过串行通信链路通信至主设备2102。这样的信息可以是,例如,上文参照图13-14讨论的消息。这样的信息可以包括命令、从主设备接收的数据、和任何流控制信息。
从主设备检索的数据可以被存储在存储在代理服务器2101的存储器中的主设备的存储器映射表的副本中。更具体地,存储器映射表2107可以是主设备2102的存储器映射表2106的本地副本。从设备2104可以周期性地读取主设备2102的存储器映射表并且更新其本地副本。在其后,其他的系统可以能够访问存储在存储器映射表2107的本地副本中的信息。这样的访问可以例如被能够通过一个或多个通信网络通信至其他的系统(包括网络客户端2103)的服务器2105提供。根据一个实施方案,服务器2105可以允许客户端使用一个或多个常规的网络通信协议与主设备2102通信。
如上文讨论的,网络客户端2103可以包括能够把命令和数据通信至主设备(例如主设备2102)的一个或多个系统。客户端2103可以是,例如,能够监视一个或多个设备(例如UPS)的管理系统。在一个实施例中,网络客户端2103可以是熟知的可从AmericanPowerConversionCorporation获得的ISX管理器产品。某些客户端可以能够读取和/或写入至主设备2102的存储器映射表2106内的存储位置。如上文讨论的,主设备2102的存储器的一个或多个部分可以被访问,包括静态数据和动态数据。在一个实施例中,静态数据不改变并且可以在与主设备2102通信时被传输至代理服务器2101。动态数据可以被代理服务器2101周期性地或根据要求通信。
串行协议的主要特征可以在串行通信协议系统的网络化版本中被复制。即,网络协议可以被用作用于通过网络执行串行通信协议的传输部。根据一个实施方案,串行协议的“网络化”版本可以实质上相似于在从设备和主设备之间使用的串行通信协议。该特征可以是有益的,因为能够作为从设备与主设备通信(例如使用串行链路)的客户端软件可以与通过代理服务器和相关联的网络传输协议通信的软件的特征是近似地相同的。下文描述了根据本发明的一个实施方案的串行协议的串行版本和网络化版本之间的差异。
代理服务器设备中的从设备解锁串行协议,使得存储器映射表的正确版本驻留在代理服务器中。为了再创建“认证协议”,代理服务器设备可以实施两个客户端的表格,即监视客户端列表(例如“只读”列表)和停机客户端列表(例如进行读取和写入访问二者的客户端)。
“停机客户端”是,在UPS主设备的情况下,在UPS正在受其控制的PC或服务器上执行的软件客户端。例如,可以期望的是,从UPS对其提供输出电力的服务器停机UPS。为此,网络可以发出影响UPS的操作的一个或多个命令。因此,可能必需的是,除了对主设备存储器的部分进行读取访问之外,提供写入访问。根据一个实施方案,客户端向任一个表格的加入要求使用认证协议进行注册。网络上的任何客户端可以与代理服务器通信,但是某些块的信息被“约束”,并且不被报告至客户端,除非客户端被在两个注册表格中的一个注册。
每个表格可以包含固定数量的条目;在本文中被称为空位的每个条目包含IP地址、MAC地址和以秒计的超时值。例如,使用每个从客户端至代理服务器的SNMP通信包重置超时。与代理服务器的通信被允许,只要超时尚未期满并且客户端被在注册表格中的一个中定义。超时可以被设置为,例如,对于停机客户端600秒并且对于监视客户端3600秒。当超时期满时,设备被从活跃注册中移除,但是其的IP地址和MAC地址可以被存储在代理服务器的存储器中。如果设备再建立通信,那么代理服务器可以提供在之前提供的相同的空位或条目。
如果空位具有已定义的IP地址和MAC地址,那么空位被占据。用于把客户端从列表完全移除的一种方式是主动地对特定的空位注册,或在另一个空位上注册并且清除空位。客户端到注册表格的加入例如通过把具有空位编号的串行认证写入至合适的OID(例如注册列表OID)被实现。待被写入的数据的格式可以是十六进制字符串<串行从设备密码质询><串行主设备密码响应><16-比特空位编号>。具有0值的空位编号请求代理服务器拾取可用的空位,或把在之前注册的空位再分配至同一个客户端。如果表格是满的,那么错误可以被返回。在满表格的情况下,客户端必须决定拒绝连接或通过对特定的空位进行注册冲击(bump)另一个客户端。
第一表格,即停机客户端表格,意图用于待注册的管理实体和停机客户端。该表格中的设备接收动态存储器的周期性更新并且被允许读取和写入至串行存储器。一旦在广播表格中列出,那么代理服务器设备以指定的间隔并且在接收到有效的写入命令时把SNMP陷阱发送至网络客户端。已注册的客户端可以,根据一个实施方案,接收精确地相同的存储器映射表图像。网络客户端负责周期性地更新注册以防止注册超时。注册的更新可以例如通过到代理服务器设备的任何有效的SNMP通信被进行。在另一个实施方案中,注册表格的轮询读取可以被进行以对代理服务器最小的影响更新注册。
第二表格,即轮询表格,可以向周期性地轮询代理服务器的实体(例如管理服务器或其他的基于轮询通信至代理服务器的监视软件)提供。这些设备可以被允许使用上文描述的相似的注册方法在单独的表格中注册。
如上文讨论的,主设备中的数据被组织在两个基本的区中,即静态区和其后的动态区。静态区包含不频繁地改变并且可以在没有任何认证的情况下被通信的数据。代理服务器可以把数据存储在存储器的这个区中(例如ROM中)。如果被置于ROM中,那么应当注意不放置频繁地改变的数据,因为大多数的设备中的ROM具有10K写入限制。动态区可以包括存储器映射表内的所有不是静态的数据。当网络客户端不是已注册的客户端时,动态数据可以可选择地通过使用恒定的数据块来代替被隐瞒至网络客户端。根据一个实施方案,被网络客户端需要以生成注册的数据可以不被隐瞒。
如果设备未被注册,那么设备可以被提供“垃圾”动态数据。来自代理服务器设备的数据除了动态数据外将是有效的。根据一个实施方案,动态数据中的将是有效的唯一数据是合适地生成注册包所必需的数据。
如讨论的,代理服务器设备可以向多个设备类型提供“通用翻译器”。根据一个实施方案,代理服务器作为透明的协议翻译器起作用。该功能通过把约束置于被代理服务器支持的主设备上实现。根据一个实施方案,可以把允许主设备使用代理服务器工作的要求置于主设备上。例如,被设计为使用代理服务器设备工作的所有设备可以被要求实施设备描述符。如果注册待被使用,那么认证协议必须也被使用。不能够实施所有要求的用途的设备可以被声明与代理服务器设备不兼容。
认证协议
根据本发明的一个实施方案,可能有益的是,防止未被授权的供应商制造与特定的主设备(例如UPS)通信的产品,以及防止其他的设备制造商制造与特定的从设备通信的主设备。例如,在与特定的从系统通信的UPS主设备的情况下,可能有益的是禁止“仿冒品(knock-off)”主设备和从设备进入市场。为此,协议被提供以禁止未被授权的主设备或从设备(或其的网络客户端)与“已批准的”主设备或从设备实体通信。
现有的通信方法假设主设备实体是已批准的主设备实体。即,安全措施被采取以禁止未被授权的从设备控制特定的主设备。然而,这样的安全措施不确保主设备或从设备自身是兼容的,并且因此,这样的主设备和客户端设备可以被容易地重现。
根据一个实施方案,另外的方法被提供以验证主设备是被授权的主设备。例如,另外的验证方法可以被提供以允许从设备、代理服务器或客户端确定特定的主设备是否是“被授权的”。此外,方法可以被提供以确定主设备是在锁定状态还是非锁定状态中。
此外,因为包含在设备中的信息(例如状态、控制和配置信息)可以通过可由外部设备访问的串行通信链路被查看、修改和控制,所以可能的是,某些人或某些公司可以编写使用通信协议与主设备通信的软件。也可能的是,某些人或某些公司可以对该通信协议反向设计并且构建复制协议并且使用软件工具工作的主设备(例如UPS)。根据本发明的一个实施方案,提供阻挡有意义的数据从设备传输,除非数据的解锁序列被发送至设备的“锁定”机构。解锁序列是基于在通过串行链路传输的数据上执行的算法。
根据本发明的一个实施方案,提供确保授权的从设备与主设备通信并且确保仅授权的主设备与从设备通信的方法。根据一个实施方案,通过在主设备实施解锁算法与通过从设备和主设备实施的双向认证,认证被保证。认证算法可以使用版本号被追踪,使得如果现有的算法被损害或以其他方式被认为不足够的话,可以对算法作出改变。
根据一个实施方案,主设备始终响应于从设备请求发送数据。然而,如果主设备在锁定状态的话,数据被隐瞒。当数据被隐瞒时,数据被通信软件(例如从设备,或通过从设备访问主设备的客户端)忽略。根据一个实施方案,认证协议可以包括以下的特征:
双向锁定密钥-主设备(例如UPS)仅与被授权的从设备通信,并且从设备可以探测被授权的主设备。当主设备被锁定时,主设备仅允许数据被写入公共存储器部分(例如EEPROM的,或至RAM的公共行)。其他的数据写入不被允许。从设备被适配为忽略来自未被验证为可信的主设备的通信。
用于探测数据状态的方法-从设备可以能够探测数据是被锁定还是不被锁定以确定正在被从主设备返回的数据是否是有效的。
根据一个实施方案的锁定特征利用以下事实,即具有被传输的数据的两种类型,即公共的和私密的。公共的数据始终是可用的,并且私密的数据仅在解锁序列被发送至主设备之后是可用的。在一个实施例中,根据一个实施方案,主设备在加电时自动地生成“密钥”以及在主设备退出工厂模式时生成“密钥”。该密钥可以是例如16比特长的并且可以例如基于在主设备存储器映射表的特定元件上执行的8比特弗莱彻校验和算法被计算。
根据本发明的一个实施方案,弗莱彻校验和可以被用于验证被传输的数据的完整性。例如,8比特弗莱彻校验和可以被使用。弗莱彻校验和算法的一个实施例在与TCP协议共同使用的IETF文件RFC1146中被定义。
8比特弗莱彻校验和通过保持其内容初始是零的2个无符号的1的补码8比特积聚器A和B以及进行以下的循环(其中i范围从1至N)被在数据八位字节(把它们称为D[1]至D[N])的序列上计算:
A:=A+D[i]
B:=B+A
在循环的结束时,A包含数据报中的所有的八位字节的8比特1的补码的总和,并且B包含(N)D[1]+(N-1)D[2]+...+D[N]。在循环的结束时,A被置于校验和字段的第一字节中并且B被置于第二字节中。注意,不同于弗莱彻校验和的OSI版本,弗莱彻校验和的上文版本不调整检验字节,使得接收器校验和是0。应当意识到,具有许多更快的用于计算8比特弗莱彻校验和的两个八位字节的算法,并且任何用于计算弗莱彻校验和的方法可以被使用。
自然地,任何计算与由上文的循环计算的相同数字的计算可以被用于计算校验和。弗莱彻算法相对于标准TCP校验和算法的一个优点是探测数据报内的八位字节/任何大小的单词的移项的能力。虽然弗莱彻校验和可以被使用,但是应当意识到,其他的用于检查数据的方法可以被使用。
“共享的秘密”可以被与公共存储器映射表的要素组合,并且可以被用于初始化用于生成“密钥”的算法。在一个实施例中,算法可以处理来自主设备的存储器映射表的特定的字节的集合。这些已处理的字节可以被索引至存储器映射表中的特定的要素或可以包括位于存储器映射表的特定的位置的数据。根据本发明的一个实施方案的“共享的秘密”包括被用于生成“密钥”的要素。
根据本发明的使用弗莱彻校验和算法的一个具体的实施方案,共享的秘密可以被用于在计算主设备存储器的第一X字节的弗莱彻校验和之前初始化弗莱彻校验和的两个字节,随后是使用主设备的序列号开始的数据的Y字节,其中X和Y是共享的秘密。根据一个实施方案,所有的被包括在“密钥”的计算中的数据是公共的并且可以在不知道“密钥”的情况下被检索。为了生成密钥,需要已知用于弗莱彻校验和的初始化程序以及数据X和Y的字节的数量。初始化程序以及数据的字节的数量可以例如在具体产品的设计期间在编译时间被确定。根据另一个实施方案,计算出的“密钥”不被传输,除了在正确的密钥已经被传输至主设备之后的一个循环。
为了防止主设备的未被授权的复制,从设备可以向主设备发送主设备应用秘密算法以生成响应的一个随机数字。响应被发送至从设备并且允许从设备确定主设备是否是可信的。
在另一个实施例实现中,主设备可以生成一个随机数字,该随机数字被添加到“密钥”的字节中以生成简单的校验和。这种使用随机数字的简单的校验和可以被从主设备周期性地传输,使得从设备可以验证其正在通信的设备是被授权的主设备。
为了允许从设备确定主设备的状态(被锁定的或不被锁定的),特定响应中的信息(例如一个或多个比特)指示主设备数据状态并且可以被周期性地传输至软件。从设备可以检查该信息以确定对查询的响应是否是有效的。
在微处理器重新启动时以及在不进行通信时,主设备可以把其的数据状态改变为锁定状态。当在锁定状态中时,具有私密数据的位置可以被使用随机的、固定的或垃圾数据传输,代替传输私密的数据。被传输的数据可以被通信从设备忽略。在一个具体的实施例中,当特定的16比特序列被写入主设备寄存器时,主设备变为不被锁定的。当合适的密钥被发送时,主设备应答数据并且然后继续以把所有的私密数据作为有效的传输。
无论主设备数据被锁定还是不被锁定,主设备可以传输随机数字,随后是随机数字的简单校验和、16比特秘密的MSB、以及16比特秘密的LSB。从设备可以翻译这两个字节以确定主设备是否是“被授权的”主设备。从设备可以在任何时间通过把不正确的密钥发送至主设备来锁定主设备中的数据。该接收使主设备“锁定”数据。
认证还允许访问主设备的存储器映射表内的私密数据(例如参数),所以为了向主设备的特别的访问的另外的用途不需要被定义。
公共数据公共可用的主设备存储器元素。
私密数据当存储器在锁定状态中时被“隐瞒”的主设备存储器元素。
被锁定的在认证之前的主设备存储器状态。当在锁定状态中时私密数据是不可用的。
不被锁定的在认证之后的主设备存储器状态。当在不被锁定的状态中时私密数据是可用的。
如讨论的,图16示出了识别位于不同的区中的数据的主设备存储器1600的一个实施例代表。在上文关于图16描述的实施例中,静态的被描述的数据是公共数据并且因此对未被认证的客户端是可用的。动态的被描述的数据是对未被认证的客户端不可用的私密数据。
根据本发明的另一个方面,质询/响应方法可以被用于执行在主设备和从设备之间的双向认证。具体地,另一个用于执行在从设备和主设备之间的双向认证的实施例过程可以被如下地进行:
●在硬件重置之后(或在从从设备接收停止命令之后)的初始化时,数据被锁定并且主设备仅传输公共数据。该公共数据包括主设备密码质询(MPC)。在一个实施例中,MPC是随机数字。为了增加安全性,主设备应当尝试使该数字对于其应用来说尽可能地随机。此外,为了进一步增加安全性,应当避免使用常数以及递增之前的随机数字。
●当从设备接收行0时,从设备假设主设备被锁定。从设备等待从主设备接收最后一个行,确保密码和认证状态用途已经被接收。接收到的认证状态用途然后被检查以验证主设备的锁定状态。
●当被锁定时,主设备反复地传输最后一个行(假设ACK),直到从设备写入从设备验证响应,或SVR。在主设备的另一个实施中,主设备可以选择反复地传输所有的公共数据。
●从设备响应于MPC(其被从设备存储在其的存储器映射表中)写入SVR。作为同一写入的一部分,从设备写入从设备密码质询或SPC,SPC也可以是随机数字。
●在写入SVR/SPC时,主设备检查SVR的有效性。如果是有效的,那么主设备使用主设备验证响应或MVR响应于写入。主设备然后开始传输所有的私密数据,包括认证状态用途,其显示出主设备未被锁定。在成功解锁之后,主设备确保在主设备报告认证用途中的数据是有效的之前所有的行已经被传输至少一次。如果SVR是无效的,那么主设备确保主设备被锁定。任何到SVR/SPC的写入,无论是有效的还是无效的,使主设备更新MPC以防止容易地使认证失败。
●在响应于到SVR/SPC的写入传输行时,从设备然后检查MVR的有效性。如果是有效的,那么从设备继续正常的操作,接收被主设备传输的行并且包括确认主设备存储器中的所有数据现在不被锁定并且是有效的的最后一个行。如果MVR是无效的,那么从设备停止通信并且采取合适的行动。合适的行动可以是特定于应用的(例如通过GUI警告用户,停止通信持续X分钟的期间,等等)。
图22A-22B示出了根据本发明的一个实施方案的一个实施例认证过程。在块2201,过程2200开始。在块2202,主设备传输存储器映射表内的公共数据。在一个实施方案中,主设备传输公共数据,直到存储器映射表中的公共数据的最后一个行。当在块2203从主设备接收到被传输的数据的最后一个行后,在块2204从设备确定接收到的数据是否是有效的。如果是,那么在块2206从设备确定从设备验证响应(SVR)。如果否,那么在块2205通信被确定为有效的并且所有的数据是有效的。
在一个实施方案中,SVR基于被存储在从设备的存储器映射表内的主设备密码质询被确定。然而,应当意识到,SVR可以被存储器映射表的任何其他部分确定。在块2207,从设备传输SVR和从设备密码质询(SPC),从设备密码质询也可以是随机数字。
在块2208,主设备确定从设备验证响应是否是正确的。如果是,那么在块2209主设备生成主设备验证响应(MVR)。如果否,那么主设备把主设备验证响应设置为零的值。在块2210主设备把从设备密码质询和确定的主设备验证响应传输至从设备。此外,当从设备验证响应被写入或主设备被初始化或重置时主设备可以生成新的主设备密码质询(MPC)。
在块2211,从设备确定主设备验证响应是否是正确的。如果是,那么在块2213从设备确认所有的行,直到认证状态报告所有的接收到的数据是有效的。如果,在块2211,确定主设备验证响应不是正确的,那么在块2212确定许多失败的响应(例如预确定的数量,诸如3)是否已经被接收到。如果是,那么主设备被确定为无效的,并且与主设备的通信已经失败。在块2214,从设备可以然后警告用户(例如客户端或代理服务器)并且终结通信。
在块2212,如果确定预确定的数量的失败尚未发生,那么从设备可以再计算用于传输到主设备的新的从设备验证响应。如果SVR是有效的,那么主设备将开始传输私密数据。如果否,那么主设备保持锁定。
请求-响应协议
根据某些实施方案,上文描述的过程根据请求-响应协议被调用。该请求-响应协议定义使主设备能够与一个或多个从设备通信的一组数据结构、数据值和规则。更具体地,在某些实施方案中,请求-响应协议实施一组消息类型和处理具有这些消息类型中的一种的消息的协议引擎。消息类型中的每种根据已定义的格式被构建。每个已定义的格式包括被分配以存储用途的标识符的字段和被分配以包括关于已识别的用途的信息的其他字段。用途是被协议引擎执行的处理活动的离散集。在某些实施方案中,协议引擎在接收到包括用途的标识符的消息后调用用途。在至少一个实施方案中,用途标识符作为全局唯一标识符(GUID)被存储。
根据一个实施方案,协议引擎可以生成以及传输或接收以及解析请求、响应、异步、错误、发现和发现错误消息。请求消息被从设备产生并且是对访问来自主设备的数据的请求。在某些实施方案中,协议引擎启动计时器以确保响应消息在超时期间的期满之前被接收到。在一个实施方案中,该响应超时期间是2秒。在另一个实施方案中,从设备可以每次仅具有1个未决的未回答的请求消息。根据本实施方案,协议引擎不传输另一个请求消息,直到对应于之前的请求消息的响应已经被接收到或响应超时发生。根据其他的实施方案,协议引擎将不传输请求消息,直到预确定的时间期间已经期满。根据一个实施方案,该时间期间被配置为等于100ms。
当USB或其他的串行链路被用于传输和接收请求消息时,协议引擎根据以下的格式构建请求消息:
<帧的开始><帧长度><数据长度><GUID>[索引][数据]<校验和>
当保证传输精确度的链路(例如,通过以太网的UDP)被用于传输和接收请求消息时,协议引擎的某些实施方案不在请求消息内分配校验和字段。相似地,当把请求消息通过允许在一个包(或其他的传输块)内传输响应消息的物理介质例如以太网传输时,协议引擎的其他的实施方案不在请求消息内分配校验和字段。
帧开始(SOF)字段在长度上是1字节并且其的值指示消息的格式。在一个实施方案中,被存储在SOF字段中的值对于请求消息是0xEF。被存储在帧长度字段中的值指示消息中的除了SOF字段和校验和字段之外的字节的数量。被存储在数据长度字段中的值指示被包括在消息中的关于对应于存储在GUID字段中的值的用途的信息的字节的数量。被存储在数据长度字段中的值不反映被数组消耗的任何字节,如果数组在消息中存在的话。被存储在GUID字段中的值是响应于消息的接收被协议引擎执行的用途的唯一的4字节标识符。索引字段是可选择的。协议引擎把索引字段分配和填充在包括对应于利用数组索引的用途的GUID的消息中。协议引擎基于被存储在GUID字段中的值确定分配给索引的字节的数量。数据字段也是可选择的。当请求消息包括把数据写入至主设备的请求时协议引擎分配数据字段和填充数据字段。如果请求消息包括读取来自主设备的数据的请求,那么协议引擎不分配数据字段并且协议引擎把存储在数据长度字段中的值设置为0。因此,在至少某些实施方案中,数据长度字段指示请求消息是写入请求还是读取请求。校验和字段包括代表消息的计算出的值。在至少一个实施方案中,协议引擎在消息传输之前分配校验和字段并且使用弗莱彻校验和填充校验和字段。
响应消息被主设备响应于来自从设备的有效的请求消息产生。如下文解释的,响应消息的格式相似于请求消息的格式。响应消息包括从有效的请求消息的处理生成的结果数据。在一个实施方案中,如果有效的请求消息是对写入数据的请求,那么协议引擎从协议引擎之前在处理有效的请求消息期间写入被请求的数据的存储地点读取结果数据。因此,根据本实施方案,从设备可以通过比较在响应中接收到的结果数据与从设备包括在对应的请求中的数据容易地验证写入请求是成功的。
在另一个实施方案中,协议引擎将把结果数据发送至其他的通过异步消息参与同一个通信会话的已认证的从设备,这在下文进一步描述。如果有效的请求消息是对读取数据的请求,那么协议引擎读取来自主设备本地的缓存的结果数据。当USB或其他的串行链路被用于传输和接收响应消息时,协议引擎根据以下的格式构建响应消息:
<SOF><帧长度><数据长度><GUID>[索引][数据]<校验和>
当保证传输精确度的链路被用于传输和接收响应消息时,协议引擎的某些实施方案不在响应消息内分配校验和字段。相似地,当物理介质允许在一个包(或其他的传输块)内传输响应消息时,协议引擎的其他的实施方案不在响应消息内分配校验和字段。
SOF字段在长度上是1字节并且其的值指示消息的格式。在一个实施方案中,被存储在SOF字段中的值对于响应消息是0xEF。被存储在帧长度字段中的值指示消息中的除了SOF字段和校验和字段之外的字节的数量。被存储在数据长度字段中的值指示被包括在消息中的关于对应于被存储在GUID字段中的值的用途的信息的字节的数量。被存储在数据长度字段中的值不反映被数组消耗的任何字节,如果数组在消息中存在的话。被存储在GUID字段中的值是响应于消息的接收被协议引擎执行的用途的唯一的4字节标识符。索引字段是可选择的。协议引擎把索引字段分配和填充在包括对应于利用数组索引的用途的GUID的消息中。协议引擎基于被存储在GUID字段中的值确定分配给索引的字节的数量。数据字段也是可选择的。协议引擎分配数据字段并且使用上文描述的结果数据填充数据字段。校验和字段包括代表消息的内容的计算出的值。在至少一个实施方案中,协议引擎在消息传输之前分配校验和字段并且使用弗莱彻校验和填充校验和字段。
异步消息被主设备产生并且是被发送至一个或多个从设备以报告数据已经改变的非请求的响应消息。在各种实施方案中,异步消息被事件触发,所述事件包括被存储在主设备的存储器映射表中的数据的改变或可以影响其他的与主设备通信的设备的关键事件的发生,例如输入线故障。能够改变被存储在主设备的存储器映射表中的数据的实体包括从设备和被主设备提供的物理的用户接口。
当USB或其他的串行链路被用于传输和接收异步消息时,协议引擎根据以下的格式构建异步消息:
<SOF><帧长度><数据长度><GUID>[索引][数据]<校验和>
当保证传输精确度的链路被用于传输和接收异步消息时,协议引擎的某些实施方案不在异步消息内分配校验和字段。相似地,当物理介质允许在一个包(或其他的传输块)内传输异步消息时,协议引擎的其他的实施方案不在异步消息内分配校验和字段。此外,当链路和物理介质支持足够长度的包(或其他的传输块)容纳多个异步消息时,协议引擎的某些实施方案把多个异步消息连锁成同一个传输块。例如,在一个实施方案中,协议引擎连结在包含多个异步消息的单一的UDP包中数据改变的多个报告。在本实施方案中,极限是约1500字节,其允许大于50个消息被连锁在单一的UDP包中。
SOF字段在长度上是1字节并且其的值指示消息的格式。在一个实施方案中,被存储在SOF字段中的值对于异步消息是0xEC。被存储在帧长度字段中的值指示消息中的除了SOF字段和校验和字段之外的字节的数量。被存储在数据长度字段中的值指示被包括在消息中的关于对应于被存储在GUID字段中的值的用途的信息的字节的数量。被存储在数据长度字段中的值不反映被数组消耗的任何字节,如果数组在消息中存在的话。被存储在GUID字段中的值是响应于消息的接收被协议引擎执行的用途的唯一的4字节标识符。索引字段是可选择的。协议引擎把索引字段分配和填充在包括对应于利用数组索引的用途的GUID的消息中。协议引擎基于被存储在GUID字段中的值确定分配给索引的字节的数量。数据字段也是可选择的。协议引擎分配数据字段并且使用上文描述的结果数据填充数据字段。校验和字段包括代表消息的内容的计算出的值。在至少一个实施方案中,协议引擎在消息传输之前分配校验和字段并且使用弗莱彻校验和填充校验和字段。
在某些实施方案中,协议引擎实施异步队列,在异步队列中协议引擎存储异步消息用于之后的传输。例如,如果协议引擎探测到在过于短以致于不允许在检测时传输每个异步消息的时间帧内生成异步消息的多个事件,那么协议引擎把被该事件生成的异步消息存储在异步队列中。在其他的实施方案中,为了保证设备以及时的方式接收响应消息,协议引擎把响应消息相对于异步消息优先处理。在这些实施方案中,异步消息被排队以允许协议引擎在异步消息之前传输被排队的(或最近生成的并且不在队列中的)响应消息,如情况允许的。在某些实施方案中,当相继地传输一系列的异步消息(例如来自异步队列)时,协议引擎在连贯的消息的传输之间等待预确定的时间期间。该“空闲”时间向接收异步消息的从设备提供用于处理消息以及从通信错误恢复的时间。在至少一个实施方案中,空闲时间被配置为50ms。
错误消息被主设备产生并且是被发送以报告错误的响应消息。将生成错误消息的错误类型包括超时、无效的数组索引、无效的GUID以及仅支持写入用途的GUID的无效读取等。每种类型的错误被与指定的错误响应相关联。在至少一个实施方案中,导致界限外错误的写入用途或在设备的无效状态的写入将不生成错误消息。代替地,根据本实施方案,这些类型的错误将导致指示被写入请求针对的数据尚未改变的正常响应消息。在另一个实施方案中,不完整的消息或具有无效的校验和的消息将不生成错误消息。代替地,根据本实施方案,这些类型的错误被协议引擎忽略并且没有响应生成。
当USB或其他的串行链路被用于传输和接收错误消息时,协议引擎根据以下的格式构建错误消息:
<SOF><帧长度><数据长度><GUID><错误响应><校验和>
当保证传输精确度的链路被用于传输和接收错误消息时,协议引擎的某些实施方案不在错误消息内分配校验和字段。相似地,当物理介质允许在一个包(或其他的传输块)内传输错误消息时,协议引擎的其他的实施方案不在错误消息内分配校验和字段。
SOF字段在长度上是1字节并且其的值指示消息的格式。在一个实施方案中,被存储在SOF字段中的值对于错误消息是0xED。被存储在帧长度字段中的值指示消息中的除了SOF字段和校验和字段之外的字节的数量。被存储在数据长度字段中的值指示包括在错误响应字段中的信息的字节的数量。被存储在GUID字段中的值是当遇到是该消息的主题的错误时被协议引擎执行的用途的唯一的4字节标识符。错误响应指示协议引擎在处理被该消息响应的请求消息时遇到的错误。校验和字段包括代表消息的内容的计算出的值。在至少一个实施方案中,协议引擎在消息传输之前分配校验和字段并且使用弗莱彻校验和填充校验和字段。
发现消息被从设备产生并且是用于确定被特定的GUID识别的用途是否被主设备支持的特别的请求。根据某些实施方案,从设备使用发现消息确定被从设备支持的用途是否也被主设备支持。在这些实施方案中,从设备通过执行诸如以下的过程构建被主设备支持的用途的列表。
首先,从设备通过把具有0x00000000的请求GUID值的发现消息发出至主设备来确定被主设备支持的第一用途。在接收发现Response消息(其在下文进一步描述)之后,从设备通过发出具有等于发现响应消息中的下一GUID字段的值的请求GUID值的另一个发现消息来采集关于被主设备支持的下一个用途的信息。然后,从设备迭代地执行之前的步骤,直到遇到被支持的用途的列表的结尾,这将生成发现错误消息(其也在下文进一步描述)。以这种方式,从设备可以发现所有的被主设备支持的用途以及识别这些被支持的用途的GUID。
本方法还提供另外的益处,即允许主设备具有被不可发现的“私密的”GUID识别的“私密的”用途。在一个实施方案中,私密用途被指定为通过在下一个列表中不包括私密用途不是可发现的。在某些实施方案中,虽然私密用途不是可发现的,但是它们可以仍然由被配置为发出包括识别私密用途的私密GUID的发现消息的从设备访问。在这些实施方案中,包括私密GUID的发现响应消息的下一GUID字段指示下一个用途是不可用的。
当USB或其他的串行链路被用于传输和接收发现消息时,协议引擎根据以下的格式构建发现消息:
<SOF><帧长度><数据长度><发现GUID><请求GUID><校验和>
当保证传输精确度的链路被用于传输和接收发现消息时,协议引擎的某些实施方案不在发现消息内分配校验和字段。相似地,当物理介质允许在一个包(或其他的传输块)内传输发现消息时,协议引擎的其他的实施方案不在发现消息内分配校验和字段。
SOF字段在长度上是1字节并且其的值指示消息的格式。在一个实施方案中,被存储在SOF字段中的值对于发现消息是0xEF。被存储在帧长度字段中的值指示消息中的除了SOF字段和校验和字段之外的字节的数量。被存储在数据长度字段中的值指示被包括在消息中的关于被存储在发现GUID字段中的值识别的用途(即发现用途)的信息的字节的数量。在至少一个实施方案中,数据长度字段存储4的值以代表请求GUID字段的大小。被存储在发现GUID字段中的值是响应于消息的接收被协议引擎执行的用途的唯一的4字节标识符。被存储在发现GUID中的值指示从设备请求指示主设备是否识别和支持被在请求GUID字段中指定的值识别的用途的响应。校验和字段包括代表消息的内容的计算出的值。在至少一个实施方案中,协议引擎在消息传输之前分配校验和字段并且使用弗莱彻校验和填充校验和字段。
发现响应消息被主设备响应于来自从设备的有效的发现消息产生。发现响应消息包括关于在有效的发现消息中指定的请求GUID的信息。当USB或其他的串行链路被用于传输和接收发现响应消息时,协议引擎根据以下的格式构建发现响应消息:
<SOF><帧长度><数据长度><发现GUID>[<标签><数据>]...[<标签><数据>]<请求GUID><大小><下一GUID><校验和>
当保证传输精确度的链路被用于传输和接收发现响应消息时,协议引擎的某些实施方案不在发现响应消息内分配校验和字段。相似地,当物理介质允许在一个包(或其他的传输块)内传输发现响应消息时,协议引擎的其他的实施方案不在发现响应消息内分配校验和字段。
SOF字段在长度上是1字节并且其的值指示消息的格式。在一个实施方案中,被存储在SOF字段中的值对于发现响应消息是0xEF。被存储在帧长度字段中的值指示消息中的除了SOF字段和校验和字段之外的字节的数量。被存储在数据长度字段中的值指示被包括在消息中的关于对应于被存储在发现GUID字段中的值的用途的信息的字节的数量。在一个实施方案中,被存储在发现响应消息的数据长度字段中的值是9并且反映请求GUID字段、下一GUID字段和大小字段的大小。
被存储在发现GUID字段中的值是响应于消息的接收被协议引擎执行的用途的唯一的4字节标识符。被存储在发现GUID字段中的值指示消息是包括关于由存储在请求GUID字段中的值识别的用途的信息的响应。如果存储在请求GUID字段中的值不被主设备支持,那么主设备将返回发现错误消息,这在下文进一步描述。
被存储在下一GUID字段中的值指示识别被主设备识别和支持的用途的下一个GUID。下一GUID字段内的0的值指示在被主设备支持的GUID的列表内不再有GUID。被存储在大小字段中的值指示被包括在消息内的每个数据字段消耗的字节的数量。每对标签和数据字段是可选择的。
被存储在标签字段中的值是由存储在请求GUID字段中的值识别的用途的属性的标识符。在至少一个实施方案中,标签字段的大小是1字节。被存储在数据字段中的值是由存储在标签字段中的值识别的属性的值。在至少一个实施方案中,协议引擎使用存储在大小字段中的值确定被数据字段消耗的字节的数量。校验和字段包括代表消息的内容的计算出的值。在至少一个实施方案中,协议引擎在消息传输之前分配校验和字段并且使用弗莱彻校验和填充校验和字段。
在一个实施方案中,被存储在标签字段中的值可以识别包括以下项的属性:由存储在请求GUID字段中的值识别的用途使用的数组,由存储在请求GUID字段中的值识别的用途的默认值,由存储在请求GUID字段中的值识别的用途的最大值和最小值,以及由请求GUID字段识别的用途使用的位掩码。在本实施方案中,0xFD的标签字段值指示与标签字段配对的数据字段存储描述数组的信息。在这种情况下,协议引擎根据以下的格式构建数据字段:
<维度1>...<维度2>
在至少一个实施方案中,被包括在数据字段中的每个维度小于或等于0xE0以允许协议引擎解析标签字段(其具有大于0xE0的值)和数据字段。
0xFA的标签字段值指示与标签字段配对的数据字段存储由存储在请求GUID字段中的值识别的用途的最小值和最大值二者。在这种情况下,协议引擎根据以下的格式构建数据字段:
<最大值><最小值>
0xF9的标签字段值指示与标签字段配对的数据字段存储由存储在请求GUID字段中的值识别的用途的默认值。0xFB的标签字段值指示与标签字段配对的数据字段存储由存储在请求GUID字段中的值识别的用途使用的位掩码值。协议引擎可以实施另外的标签字段值和数据字段值并且实施方案不被限于上文描述的标签字段值和数据字段值。
发现错误消息被主设备产生并且被发送以报告发现错误。将生成发现错误消息的错误的类型包括无效的请求GUID。每个类型的错误被与指定的GUID相关联。当USB或其他的串行链路被用于传输和接收发现错误消息时,协议引擎根据以下的格式构建发现错误消息:
<SOF><帧长度><数据长度><发现GUID><请求GUID><错误响应><校验和>
当保证传输精确度的链路被用于传输和接收发现错误消息时,协议引擎的某些实施方案不在发现错误消息内分配校验和字段。相似地,当物理介质允许在一个包(或其他的传输块)内传输发现错误消息时,协议引擎的其他的实施方案不在发现错误消息内分配校验和字段。
SOF字段在长度上是1字节并且其的值指示消息的格式。在一个实施方案中,被存储在SOF字段中的值对于发现错误消息是0xED。被存储在帧长度字段中的值指示消息中的除了SOF字段和校验和字段之外的字节的数量。被存储在数据长度字段中的值指示被包括在消息中的关于对应于被存储在发现GUID字段中的值的用途的信息的字节的数量,其(在至少一个实施方案中)等于8。被存储在发现GUID字段中的值是响应于消息的接收被协议引擎执行的用途的唯一的4字节标识符。被存储在发现GUID字段中的值指示消息包括关于由存储在请求GUID字段中的值识别的用途的信息。错误响应指示被协议引擎在处理由该消息响应的发现消息时遇到的错误。校验和字段包括代表消息的内容的计算出的值。在至少一个实施方案中,协议引擎在消息传输之前分配校验和字段并且使用弗莱彻校验和填充校验和字段。
将意识到,在某些实施方案中,校验和字段在本文描述的消息类型内是可选择的。在这些实施方案中,对于本文公开的消息类型中的任何一种,协议引擎可能不分配或填充校验和字段。在其他的实施方案中,对于本文公开的消息类型的某个子集,协议引擎可能不分配或填充校验和。因此,实施方案不被限制于涉及校验和字段被计算、填充或使用的方式。
在某些实施方案中,协议引擎使用上文描述的消息类型实施一个或多个从设备通过其与主设备交换信息的各种通信过程。图23图示了根据这些实施方案的一个实施例过程2300。过程2300被驻留在接收被请求-响应协议定义的类型的消息的主机设备(主设备或从设备)上的协议引擎执行。
如图23中示出的,当在行动2304中协议引擎接收消息时过程2300开始。在某些实施方案中,协议引擎必须每120秒接收至少一个消息,否则通信会话将终结(如同协议引擎接收到指示其终结通信会话的用途)。在行动2306中,协议引擎确定通信会话是否在进行中。在至少一个实施方案中,协议引擎通过执行访问主设备的存储器映射表(例如上文参照图19和20描述的存储器映射表)的用途作出该确定。如果通信会话正在进行,那么协议引擎执行行动2314,行动2314在下文进一步描述。否则,协议引擎执行行动2308。
在行动2308中,协议引擎比较存储在接收到的消息中的GUID与指示启动通信会话的请求的GUID。如果GUID不是相等的,那么协议引擎执行行动2312,行动2312在下文进一步描述。否则,协议引擎执行行动2310。
在行动2310中,协议引擎执行与一个或多个从设备建立通信会话的用途。在一个实施方案中,被协议引擎执行的用途把数据写入至存储器映射表内的特定的行和偏移以记录通信会话的建立。将意识到,虽然建立通信会话的用途的仅一次执行被需要以建立通信会话,但是用途的多次执行(来源于包括启动通信会话的请求的多个请求消息)将不会不利地影响(例如终结)正在进行的通信会话。然后,协议引擎执行行动2312,行动2312在下文进一步描述。
返回至行动2314,协议引擎在确定具有当前的通信会话之后执行行动2314,协议引擎确定当前的通信会话是否已经被认证。在某些实施方案中,协议引擎通过执行访问存储器映射表的特定位置的用途作出该确定。如果当前的通信会话已经被认证,那么协议引擎执行行动2320,行动2320在下文进一步描述。否则,协议引擎执行行动2316。
在行动2316中,协议引擎比较被存储在接收到的消息中的GUID与指示认证当前的通信会话的请求的GUID。如果GUID不是相等的,那么协议引擎执行行动2312,行动2312在下文进一步描述。否则,协议引擎执行行动2318。
在行动2318中,协议引擎执行尝试认证当前的通信会话的用途。在某些实施方案中,该用途把16字节密钥写入存储器映射表内的特定的行和偏移以记录通信会话的建立。在这些实施方案中,协议引擎根据以下的格式构建密钥:
<应用ID><随机数字><校验和1><校验和2>
应用ID字段在长度上是4字节并且存储代表协议的被许可用户的唯一编号的值。随机数字字段在长度上是8字节并且存储唯一的随机数字的值。校验和1字段在长度上是2字节并且存储密钥的前12字节的校验和的值和主机设备的序列号。校验和2字段在长度上是2字节并且存储密钥的前14字节的校验和的值。在一个实施方案中,协议引擎使用弗莱彻校验和方法确定校验和1字段和校验和2字段的值。
根据某些实施方案,在通信会话认证之前被协议引擎接收到的每个消息使认证计数器递增。如果认证计数器大于12,那么协议引擎使用指示未认证的设备的错误包响应(在下文进一步描述的行动2312中)于每个接收到的消息,直到包括有效认证请求的有效的请求消息被接收到。一旦已认证的通信会话被建立,那么认证计数器被设置为0的值并且不被递增,前提是已认证的通信会话保持为活跃的。
在执行认证用途之后,协议引擎执行行动2312,行动2312在下文进一步描述。
返回至行动2320,协议引擎在确定当前的通信会话已经被认证之后执行行动2320,协议引擎比较被存储在接收到的消息中的GUID与指示终结已认证的通信会话的请求的GUID。如果GUID不是相等的,那么协议引擎执行行动2324,行动2324在下文进一步描述。否则,协议引擎执行行动2322。
在行动2322中,协议引擎处理接收到的消息。被协议引擎进行的处理基于接收到的消息的类型以及消息的内容变化。在大多数的情况下,协议引擎将基于其的类型解析接收到的消息,比较被包括在接收到的消息中的GUID与被协议引擎支持的GUID的列表,并且如果接收到的GUID被支持,尝试执行被接收到的GUID识别的用途。在一个实施方案中,协议引擎通过操纵(读取或写入)上文参照图19和20描述的存储器映射表的特定位置(行和偏移)处的信息执行用途。如上文描述的,通过操纵被存储在存储器映射表内的信息,协议引擎进行多种行动。这些行动包括检索性能信息,通过被存储在操作参数中的值配置系统行为,检索用于调试异常系统行为的信息以及检索识别系统和其部件的信息。在其中主设备是UPS的实施例中,用途检索适用于UPS的型号和其他的部件识别信息,检索UPS的剩余运行时间,配置用于UPS的功率品质设置以及使UPS容纳一个或多个负载。
当进行行动2322时被协议引擎执行的过程2400的一个实施例在下文参照图24描述。过程2400在行动2402开始,在行动2402中协议引擎确定接收到的消息的类型是否被支持。在某些实施方案中,协议引擎通过比较接收到的消息的消息类型与一个或多个被支持的消息类型作出该确定。在至少一个实施方案中,该比较通过尝试把存储在接收到的消息的SOF字段中的值与支持的消息类型的SOF字段的值匹配来进行。如果接收到的消息类型不被支持(例如,存储在接收到的消息的SOF字段中的值不等于被支持的消息类型的SOF字段的值),那么协议引擎存储错误以用于以后的处理,终结过程2400。否则,协议引擎执行行动2404。
在行动2404中,协议引擎把接收到的消息解析为对应于由存储在接收到的消息的SOF字段中的值识别的消息类型的消息数据结构。然后,在行动2406中,协议引擎确定接收到的消息是否被成功地解析。如果否,那么协议引擎存储错误以用于以后的处理并且终结过程2400。否则,协议引擎执行行动2408。
在行动2408中,协议引擎确定校验和字段是否在被解析的消息中存在,并且如果是,那么尝试验证存储在其中的值。如果校验和字段存在并且其的值不能够被验证,那么协议引擎存储错误以用于以后的处理并且终结过程2400。否则,协议引擎执行行动2410。
在行动2410中,协议引擎确定由解析的GUID字段的值识别的用途是否被支持。在某些实施方案中,协议引擎通过比较被解析的GUID字段的值与一个或多个被支持的GUID值作出该确定。在至少一个实施方案中,该比较通过尝试把存储在解析的GUID字段中的值与支持的GUID的值匹配来进行。如果用途不被支持(例如存储在解析的GUID字段中的值不等于被支持的GUID的值),那么协议引擎存储错误以用于以后的处理并且终结过程2400。否则,协议引擎执行行动2412。
在行动2412中,协议引擎尝试执行由解析的GUID字段的值识别的用途。如上文描述的,在至少一个实施方案中,当执行用途时,协议引擎操纵存储在存储器映射表的指定位置中的数据。执行的操纵根据消息类型和用途变化。
在一个实施例中,如果消息类型是请求消息,那么协议引擎确定被请求的数据操纵(读取或写入)。在一个实施方案中,如果被解析的数据长度字段的值不等于0,那么被请求的操纵是写入。否则,被请求的操纵是读取。然后,协议引擎确定用途是否支持被请求的操纵。如果否,那么协议引擎存储错误以用于以后的处理并且终结过程2400。否则,协议引擎把被解析的GUID字段的值解析至存储器映射表内的位置并且进行到该位置的被请求的操纵。如果请求消息包括写入请求,那么协议引擎使用存储在被解析的索引和数据字段中的值以使用数据填充存储器映射表的被解析的位置。否则,协议引擎读取被存储在存储器映射表的位置处的数据。
如果消息类型是发现消息,那么协议引擎确定被请求GUID字段的值识别的用途是否被支持。在某些实施方案中,协议引擎通过比较被解析的请求GUID字段的值与一个或多个被支持的GUID值作出该确定。在至少一个实施方案中,该比较通过尝试把存储在解析的请求GUID字段中的值与被支持的GUID的值匹配来进行。如果用途不被支持(例如被存储在解析的请求GUID字段中的值不等于被支持的GUID的值),那么协议引擎存储错误以用于以后的处理并且终结过程2400。否则,协议引擎存储请求GUID被支持的确认并且终结过程2400。
如果消息类型是响应或异步消息,那么协议引擎把被解析的索引和数据字段中的消息和任何结果数据存储在存储器或本地存储器的某些其他的形式中。在一个实施方案中,本地存储器是包括GUID、值元组的文件。根据本实施方案,协议引擎使用被存储在响应和异步消息中的数据把GUID、值元组保持为与主设备的存储器映射表同步。如果消息类型是发现错误消息或错误消息,那么协议引擎把消息的副本存储在本地存储器中并且采取校正行动。
如被这些实施例中的每个例证的,协议引擎在执行行动2412之后终结过程2400。
现在返回至图23和行动2312,协议引擎响应于在行动2304中接收到的消息。被协议引擎生成和传输的响应二者都取决于接收到的消息的类型和内容,以及被协议引擎基于接收到的消息进行的消息处理的结果。
例如,如果接收到的消息是包括写入请求的有效的请求消息并且没有错误在其的处理期间发生,那么协议引擎读取被写入请求写入的信息,分配具有足够大小的响应消息数据结构以容纳被写入索引字段和/或数据字段内的信息,使用0xEF填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,把GUID字段的值设置为接收到的消息中的GUID字段的值,使用写入的信息填充索引字段和/或数据字段,以及计算弗莱彻校验和并且使用弗莱彻校验和填充校验和字段(如果需要的话)。
如果接收到的消息是包括读取请求的有效的请求消息并且没有错误在其处理期间发生,那么协议引擎分配具有足够大小的响应消息数据结构以容纳在索引字段和/或数据字段内被读取的信息,使用0xEF填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,把GUID字段的值设置为接收到的消息中的GUID字段的值,使用读取的信息填充索引字段和/或数据字段,以及计算弗莱彻校验和并且使用弗莱彻校验和填充校验和字段(如果需要的话)。
在任一种情况下,在创建响应消息之后,协议引擎把消息在通信会话内传输至从设备。
如果接收到的消息是有效的发现消息并且没有错误在其处理期间发生,那么协议引擎分配具有足够大小的发现响应数据结构以容纳描述数据和标签字段中的请求GUID的信息,使用0xEF填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,把发现GUID字段的值设置为接收到的消息中的发现GUID字段的值,把请求GUID字段的值设置为接收到的消息中的请求GUID字段的值,把下一GUID的值设置为被协议引擎支持的下一个GUID,根据数据结构的大小填充大小字段,使用关于被请求GUID识别的用途的信息填充标签字段和数据字段,以及使用弗莱彻校验和填充校验和字段(如果需要的话)。在创建发现响应消息之后,协议引擎把消息在通信会话内传输至从设备。
如果接收到的消息是除了DiscoveryRequest消息之外的任何类型的无效的消息或错误在其的处理期间发生,那么协议引擎分配错误消息数据结构,使用0xED填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,把GUID字段的值设置为接收到的消息中的GUID字段的值,把错误响应的值设置为代表所遇到的错误的值,以及计算弗莱彻校验和并且使用弗莱彻校验和填充校验和字段(如果需要的话)。在创建错误消息之后,协议引擎把消息在通信会话内传输至从设备。
如果接收到的消息是无效的DiscoveryRequest消息或错误在其处理期间发生,那么协议引擎分配发现错误消息数据结构,使用0xED填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,把DiscoveryGUID字段的值设置为接收到的消息中的DiscoveryGUID字段的值,把请求GUID的值设置为接收到的消息中的请求GUID的值,把错误响应的值设置为代表所遇到的错误的值,以及计算弗莱彻校验和并且使用弗莱彻校验和填充校验和字段(如果需要的话)。在创建发现错误消息之后,协议引擎把消息在通信会话内传输至从设备。
在行动2324中,协议引擎生成并且把响应传输至终结已认证的通信会话的请求。在一个实施方案中,结束已认证的通信会话的请求是包括指定的GUID的读取请求的请求消息。在本实施方案中,被生成和传输的响应是不包括数据的响应消息。在执行行动2324之后,协议引擎终结过程2300的执行。在某些实施方案中,在终结或锁定用途的执行之后的600秒的期间,协议引擎防止新的通信会话启动。
将意识到,某些实施方案动态地分配存储器以根据本文描述的数据结构存储数据。其他的实施方案预分配存储器(在编译时间)以存储这些数据结构。因此,实施方案不被限于特定的用于存储器分配的方法并且各种方法可以被使用,而不偏离本文公开的实施方案的范围。
使用方案
图25图示了包括主设备2502及从设备2508和2514的一个实施例配置2500。如在图25中示出的,主设备2502包括通信端口2512和2516、串流协议引擎2504和请求协议引擎2506。串流协议引擎2504和请求协议引擎2506二者都与端口2512和2516二者进行数据通信。从设备2508包括串流协议引擎2510。从设备2514包括请求协议引擎2518。
根据图25图示的一个实施例,串流协议引擎2504和2510之间的会话通过端口2512使用根据上文参照图4-22B描述的协议的串流串行链路协议被实施。此外,根据本实施例,请求协议引擎2506和2512之间的会话通过端口2516使用根据本文参照图23、24和26描述的请求-响应协议的请求-响应协议被实施。虽然图25图示了两个通信端口和两个协议引擎,但是其他的实施方案可以包括不同数量的端口或引擎。因此,实施方案不被限于特定数量的通信端口或协议引擎。
在根据图25的一个实施例中,从设备2508被通过串行链路耦合于主设备2502并且执行串流协议引擎2510以与在主设备2502上执行的串流协议引擎2504通信。从设备2514被通过USB链路耦合于主设备并且执行请求协议引擎2518以与在主设备2502上执行的请求协议引擎2506通信。在本实施例中,请求协议引擎2518传输和接收被包封在USB用途中的请求-响应消息。此外,根据本实施例,主设备2502包括被串流协议引擎2504和请求协议引擎2506二者更新的、如由在主设备2502和从设备2508和2514上发生的活动批准的存储器映射表。
在本实施例中,主设备2502是UPS并且从设备2508和2514是通用计算机。在一个利用本实施例配置的具体的用途方案中,从设备2514的用户通过软件应用程序请求改变主设备2502的配置,例如改变主设备2502的功率品质参数。响应于接收到来自软件应用程序的改变主设备2502的配置的请求,请求协议引擎2518分配足够大小的发现数据结构以请求关于被主设备2502支持的用途的信息。然后,请求协议引擎2518使用0xEF填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,设置发现GUID字段的值以指示对于用途信息的请求,把请求GUID字段的值设置为识别第一用途(例如0x00000000)的GUID的值,以及把使用消息的内容计算出的校验和值存储在校验和字段内。然后,请求协议引擎2518把发现消息传输至请求协议引擎2506。
响应于接收发现消息,请求协议引擎2506处理发现消息,并且生成并且把包括在发现消息中请求的用途信息的发现响应消息传输至请求协议引擎2518。
响应于接收到发现响应消息,请求协议引擎2518将使用另一个发现消息请求描述被下一GUID字段的值识别的下一个被支持的用途的信息。此外,请求协议引擎2518将继续迭代地请求用途信息以构建反映被主设备2502支持的用途的接口。
在接口被完成之后,请求协议引擎2518将发出请求消息以改变主设备2052的配置。
然后,请求协议引擎2518生成包括写入指令的请求消息以实施对功率品质参数的改变。更具体地,请求协议引擎2518分配具有足够大小的请求消息数据结构以容纳在索引字段和/或数据字段内的功率品质配置信息,使用0xEF填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,把GUID字段的值设置为识别功率品质设置用途的值,使用功率品质配置信息填充索引字段和/或数据字段,以及把使用消息的内容计算出的校验和值存储在校验和字段内。然后,请求协议引擎2518把发现消息传输至请求协议引擎2506。
响应于接收请求消息,请求协议引擎2506处理请求消息,并且生成和把包括写入的功率品质配置信息的响应消息传输至请求协议引擎2518。此外,响应于处理请求消息,串流协议引擎2504向串流协议引擎2510通知功率品质配置信息的改变。
虽然在本实施例中,从设备2508和2514是通用计算机,但是实施方案不被限制于利用是通用计算机的从设备。例如,在另一个实施方案中,从设备2508和2514是内嵌的计算机系统,例如内嵌在UPS内的网络管理卡。因此,实施方案不被限于从设备或主设备的特定类型。
在另一个利用本实施例配置的用途方案中,用户通过在从设备2508上执行的软件应用程序作出对主设备2502的配置的多个改变。这些配置改变实质上改变主设备2502的性能。主设备的配置改变以及被改变的性能二者都导致对主设备2502的存储器映射表的更新。在本实施例中,主设备2502通过把多个异步消息发至从设备2514向从设备2514通知该更新。
更具体地,请求协议引擎2506探测主设备2502的存储器映射表内的更新。响应于探测到该更新,请求协议引擎2506确定利用存储器映射表中已更新的数据的一组用途。然后,对于一组用途的每个成员,请求协议引擎2506生成用于向请求协议引擎2518传输的异步消息。对于每个异步消息,请求协议引擎2506分配具有足够大小的异步消息数据结构以容纳在索引字段和/或数据字段内的更新,使用0xEC填充SOF字段,根据所分配的数据结构的大小填充帧长度字段和数据长度字段,把GUID字段的值设置为识别一组用途的对应于该更新的成员的值,使用该更新填充索引字段和/或数据字段,以及把使用消息的内容计算出的校验和值存储在校验和字段内。然后,请求协议引擎2506把每个异步消息传输至请求协议引擎2518。
响应于接收每个异步消息,请求协议引擎2518处理每个异步消息。
在根据图25的另一个实施例中,从设备2508通过被端口2512支持的串行链路被耦合于主设备2502并且执行串流协议引擎2510以与在主设备2502上执行的串流协议引擎2504通信。从设备2514通过被端口2516支持的以太网链路被耦合于主设备并且执行请求协议引擎2518以与在主设备2502上执行的请求协议引擎2506通信。在本实施例中,请求协议引擎2518传输和接收被包裹在UDP包中的请求-响应消息,如下文进一步解释的。此外,根据本实施例,主设备2502包括被串流协议引擎2504和请求协议引擎2506二者更新的、如被在主设备2502和从设备2508和2514上发生的活动批准的存储器映射表。
在本实施例中,主设备2502是UPS并且从设备2508和2514是通用计算机或内嵌的计算机系统。在一个利用本实施例配置的具体的用途方案中,从设备2514的用户通过软件应用程序请求对主设备2502的多个操作参数的改变。软件应用程序进而指示请求协议引擎2518通过更新主设备2502的存储器映射表改变主设备2502的操作参数。此外,在本实施例中,主设备2502通过把异步消息发至从设备2514向从设备2514通知该更新。
更具体地,请求协议引擎2506探测主设备2502的存储器映射表内的更新。响应于探测到该更新,请求协议引擎2506确定利用存储器映射表中的已更新的数据的一组用途。然后,对于该组用途的每个成员,请求协议引擎2506生成指示用途和被包括在更新中的一个或多个值的异步消息。然后,请求协议引擎2506把所生成的异步消息捆绑为单一的UDP广播消息并且把广播消息在本地段上传输。在本实施例中,请求协议引擎2506不分配或填充校验和字段,如上文解释的,因为请求协议引擎2506使用UDP传输和接收消息,UDP保证精确的数据通信。
响应于UDP广播的接收,请求协议引擎2518解捆绑并且处理每个异步消息。
图26图示了示例性的在从设备2602上执行的请求-响应协议引擎和在主设备2604上执行的请求-响应协议引擎之间进行的通信会话2600。如在图26中示出的,协议引擎2602通过传输包括识别启动会话用途的GUID的请求消息2606发起通信会话。协议引擎2604使用包括启动会话GUID的响应消息2608响应。协议引擎2602根据主设备2604的要求可选择地传输包括识别认证用途的GUID的请求消息2610。协议引擎2604使用包括认证GUID的响应消息2612响应。为了在正常操作模式中交换数据,协议引擎2602传输多个请求消息2614,每个请求消息2614包括识别被协议引擎2602支持的用途的GUID。协议引擎2604使用多个响应消息2616响应,每个响应消息2616包括所述多个请求消息2614的相应的请求消息的GUID。此外,所述多个响应消息2616中的某些可以包括非请求的异步消息,如果主设备从批准向所有的从设备报告的另一个从设备接收数据的话。为了结束通信会话,协议引擎2602传输包括识别停止会话用途的GUID的请求消息2618。协议引擎2604使用包括停止会话GUID的响应消息2612响应。
应当意识到,本发明不限于上文列出的和本文描述的实施方案中的每个,而是,本发明的各种实施方案可以被单独地或与其他的实施方案组合地实践。
虽然已经因此描述了本发明的至少一个实施方案的多个方面,但是将意识到,各种改变、修改和改进将被本领域的技术人员容易地想到。这样的改变、修改和改进意图是本公开内容的一部分,并且意图在本发明的精神和范围内。据此,上文的描述仅为实例。
Claims (17)
1.一种用于交换信息的系统,包括:
存储器;
第一通信链路;
至少一个处理器,其实施第一协议,所述至少一个处理器被耦合于所述存储器和所述第一通信链路并且被配置为:
通过所述第一通信链路接收包括第一全局唯一标识符的第一请求消息;
响应于接收到所述第一请求消息,启动通过所述第一通信链路的通信会话;
提供包括所述第一全局唯一标识符的第一响应消息;
通过所述第一通信链路接收第二请求消息,所述第二请求消息包括帧开始字段、帧长度字段、数据字段、数据长度字段、和全局唯一标识符字段,所述帧开始字段存储指示所述第二请求消息的类型的值,所述帧长度字段存储指示所述第二请求消息的长度的值,所述数据字段存储数据,所述数据长度字段存储指示所述数据字段的长度的值,所述全局唯一标识符字段存储识别第二用途的第二全局唯一标识符的值;
把所述数据写入被所述第二全局唯一标识符指示的位置;
读取被存储在所指示的位置处的信息;以及
提供包括所述第二全局唯一标识符和所述信息的第二响应消息。
2.根据权利要求1所述的系统,其中所述第一请求消息包括:
帧开始字段,其存储指示所述第一请求消息的类型的值;
帧长度字段,其存储指示所述第一请求消息的长度的值;
数据长度字段,其存储指示数据字段的长度的值;以及
全局唯一标识符字段,其存储识别第一用途的值,当所述第一用途被所述至少一个处理器执行时将启动通信会话。
3.根据权利要求1所述的系统,其中所述数据包括数组索引和其他的数据并且所述第二请求消息包括:
帧开始字段,其存储指示所述第二请求消息的类型的值;
帧长度字段,其存储指示所述第二请求消息的长度的值;
数据长度字段,其存储指示数据字段的长度的值;
全局唯一标识符字段,其存储识别第二用途的值;
索引字段,其存储所述数组索引;以及
存储所述其他的数据的所述数据字段。
4.根据权利要求1所述的系统,其中所述至少一个处理器还被配置为:
通过所述第一通信链路接收包括第三全局唯一标识符和第四全局唯一标识符的第三请求消息;
确定所述第一协议是否支持由所述第四全局唯一标识符识别的第四用途;以及
提供第三响应消息,该第三响应消息包括所述第三全局唯一标识符、所述第四全局唯一标识符、描述所述第四用途的信息和识别被所述第一协议支持的另一个用途的第五全局唯一标识符。
5.根据权利要求4所述的系统,其中所述第三请求消息包括:
帧开始字段,其存储指示所述第三请求消息的类型的值;
帧长度字段,其存储指示所述第三请求消息的长度的值;
发现GUID字段,其存储识别第三用途的值;以及
请求GUID字段,其存储识别所述第四用途的值。
6.根据权利要求1所述的系统,还包括:
存储器映射表,其被布置在所述存储器内,所述存储器映射表存储操作信息和配置信息;
第二通信链路,其被耦合于所述至少一个处理器,其中所述至少一个处理器还实施不同于所述第一协议的第二协议并且还被配置为:
通过所述第二通信链路接收包括对所述存储器映射表的位置的更新的消息;
把所述更新存储在所述存储器映射表的所述位置处;以及
提供第三响应消息,该第三响应消息包括所述更新和识别利用存储在所述存储器映射表的所述位置处的更新的数据的用途的第三全局唯一标识符。
7.根据权利要求6所述的系统,其中所述第一通信链路包括通用串行总线(USB)链路并且所述第二通信链路包括串行链路。
8.根据权利要求6所述的系统,其中所述第一协议是请求-响应协议并且所述第二协议是串流协议。
9.一种用于交换信息的系统,包括:
存储器;
第一通信链路;
至少一个第一处理器,其被耦合于所述存储器和所述第一通信链路并且被配置为:
生成第一请求消息,该第一请求消息包括识别第一用途的第一全局唯一标识符,所述第一用途当被至少一个第二处理器执行时将启动通信会话;
把所述第一请求消息在所述第一通信链路上传输;
接收包括所述第一全局唯一标识符的第一响应消息;
生成第二请求消息,该第二请求消息包括帧开始字段、帧长度字段、数据字段、数据长度字段、和全局唯一标识符字段,所述帧开始字段存储指示所述第二请求消息的类型的值,所述帧长度字段存储指示所述第二请求消息的长度的值,所述数据字段存储数据,所述数据长度字段存储指示所述数据字段的长度的值,所述全局唯一标识符字段存储识别第二用途的第二全局唯一标识符的值,该第二用途受所述至少一个第二处理器实施的协议支持;
把所述第二请求消息在所述第一通信链路上传输;以及
接收第二响应消息,该第二响应消息包括所述第二全局唯一标识符和具有与所述数据相同的值的信息。
10.根据权利要求9所述的系统,其中所述第一请求消息包括:
帧开始字段,其存储指示所述第一请求消息的类型的值;
帧长度字段,其存储指示所述第一请求消息的长度的值;
数据长度字段,其存储指示数据字段的长度的值;以及
全局唯一标识符字段,其存储识别所述第一用途的值。
11.根据权利要求9所述的系统,其中所述数据包括数组索引和其他的数据并且所述第二请求消息包括:
帧开始字段,其存储指示所述第二请求消息的类型的值;
帧长度字段,其存储指示所述第二请求消息的长度的值;
数据长度字段,其存储指示数据字段的长度的值;
全局唯一标识符字段,其存储识别所述第二用途的值;
索引字段,其存储所述数组索引;以及
存储所述其他的数据的所述数据字段。
12.一种用于使用第一计算机交换信息的方法,所述方法包括:
通过所述第一计算机生成包括第一全局唯一标识符的第一请求消息,所述第一全局唯一标识符识别第一用途,所述第一用途当被第二计算机执行时将启动在由所述第一计算机和所述第二计算机共享的链路上的通信会话;
把所述第一请求消息在所述链路上传输;
接收包括所述第一全局唯一标识符的第一响应消息;
生成包括数据和第二全局唯一标识符的第二请求消息,所述第二全局唯一标识符识别被所述第二计算机支持的第二用途,其中生成所述第二请求信息包括在帧开始字段内存储指示所述第二请求消息的类型的值,在帧长度字段内存储指示所述第二请求消息的长度的值,在数据长度字段内存储指示数据字段的长度的值,在全局唯一标识符字段内存储所述第二全局唯一标识符的值,以及在所述数据字段内存储所述数据;
把所述第二请求消息在所述链路上传输;以及
接收第二响应消息,所述第二响应消息包括所述第二全局唯一标识符和具有与所述数据相同的值的信息。
13.根据权利要求12所述的方法,其中生成所述第一请求消息包括:
在帧开始字段内存储指示所述第一请求消息的类型的值;
在帧长度字段内存储指示所述第一请求消息的长度的值;
在数据长度字段内存储指示数据字段的长度的值;以及
在全局唯一标识符字段内存储识别所述第一用途的值。
14.根据权利要求12所述的方法,其中所述数据包括数组索引和其他的数据并且生成所述第二请求消息包括:
在帧开始字段内存储指示所述第二请求消息的类型的值;
在帧长度字段内存储指示所述第二请求消息的长度的值;
在数据长度字段内存储指示数据字段的长度的值;
在全局唯一标识符字段内存储识别所述第二用途的值;
在索引字段内存储所述数组索引;以及
在数据字段内存储所述其他的数据。
15.根据权利要求12所述的方法,还包括:
生成包括第三全局唯一标识符的第三请求消息,所述第三全局唯一标识符识别第三用途,该第三用途当被所述第二计算机执行时将确定所述第二计算机是否支持被第四全局唯一标识符识别的第四用途;
把所述第三请求消息在所述链路上传输;以及
接收第三响应消息,该第三响应消息包括所述第三全局唯一标识符、所述第四全局唯一标识符、描述所述第四用途的信息和识别被所述第二计算机支持的另一个用途的第五全局唯一标识符。
16.根据权利要求15所述的方法,其中生成所述第三请求消息包括:
在帧开始字段内存储指示所述第三请求消息的类型的值;
在帧长度字段内存储指示所述第三请求消息的长度的值;
在发现GUID字段内存储识别所述第三用途的值;以及
在请求GUID字段内存储识别所述第四用途的值。
17.根据权利要求12所述的方法,还包括
通过所述链路接收所述第一请求消息;
响应于接收到所述第一请求消息,启动所述通信会话;
响应于接收到所述第一请求消息,提供所述第一响应消息;
通过所述链路接收所述第二请求消息;
响应于接收到包括所述数据的所述第二请求消息,把所述数据写入被所述第二全局唯一标识符指示的位置;
响应于接收到所述第二请求消息,读取被存储在所述位置处的信息;以及
响应于接收到所述第二请求消息,提供所述第二响应消息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/182,723 | 2011-07-14 | ||
US13/182,723 US8819170B2 (en) | 2011-07-14 | 2011-07-14 | Communication protocols |
PCT/US2012/042216 WO2013009425A1 (en) | 2011-07-14 | 2012-06-13 | Communication protocols |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103782566A CN103782566A (zh) | 2014-05-07 |
CN103782566B true CN103782566B (zh) | 2015-11-25 |
Family
ID=46513828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280044118.3A Active CN103782566B (zh) | 2011-07-14 | 2012-06-13 | 用于交换信息的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8819170B2 (zh) |
EP (1) | EP2732595B1 (zh) |
CN (1) | CN103782566B (zh) |
AU (1) | AU2012283124B2 (zh) |
WO (1) | WO2013009425A1 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120102324A1 (en) * | 2010-10-21 | 2012-04-26 | Mr. Lazaro Rodriguez | Remote verification of user presence and identity |
CN102387042B (zh) * | 2011-11-22 | 2014-03-12 | 华为技术有限公司 | 自动配置的方法和系统以及网络节点 |
CN104126182B (zh) | 2011-12-30 | 2018-02-09 | 施耐德电气It公司 | 远程通信的系统和方法 |
KR101569643B1 (ko) * | 2012-03-02 | 2015-11-16 | 엘에스산전 주식회사 | 통신 장치 및 통신 방법 |
US20150113602A1 (en) * | 2012-05-08 | 2015-04-23 | Serentic Ltd. | Method and system for authentication of communication and operation |
US9065810B2 (en) * | 2013-01-30 | 2015-06-23 | Ebay Inc. | Daisy chain distribution in data centers |
US9338088B2 (en) * | 2013-04-08 | 2016-05-10 | Google Inc. | Communication protocol for multiplexing data streams over UDP |
US9229894B2 (en) | 2013-04-09 | 2016-01-05 | Apple Inc. | Protocol conversion involving multiple virtual channels |
US10353837B2 (en) | 2013-09-09 | 2019-07-16 | Qualcomm Incorporated | Method and apparatus to enable multiple masters to operate in a single master bus architecture |
US9519603B2 (en) | 2013-09-09 | 2016-12-13 | Qualcomm Incorporated | Method and apparatus to enable multiple masters to operate in a single master bus architecture |
US9690725B2 (en) | 2014-01-14 | 2017-06-27 | Qualcomm Incorporated | Camera control interface extension with in-band interrupt |
US9996488B2 (en) | 2013-09-09 | 2018-06-12 | Qualcomm Incorporated | I3C high data rate (HDR) always-on image sensor 8-bit operation indicator and buffer over threshold indicator |
KR20160070171A (ko) | 2013-10-09 | 2016-06-17 | 퀄컴 인코포레이티드 | CCIe 프로토콜을 통한 에러 검출 능력 |
US9684624B2 (en) | 2014-01-14 | 2017-06-20 | Qualcomm Incorporated | Receive clock calibration for a serial bus |
WO2015162754A1 (ja) * | 2014-04-24 | 2015-10-29 | 三菱電機株式会社 | 制御システム、マスタ局、およびリモート局 |
CN105337928B (zh) * | 2014-06-24 | 2019-09-13 | 阿里巴巴集团控股有限公司 | 用户身份识别方法、安全保护问题生成方法及装置 |
WO2016033539A1 (en) * | 2014-08-29 | 2016-03-03 | Memory Technologies Llc | Control for authenticated accesses to a memory device |
US9870462B2 (en) * | 2014-09-22 | 2018-01-16 | Intel Corporation | Prevention of cable-swap security attack on storage devices |
JP6635800B2 (ja) * | 2016-01-21 | 2020-01-29 | キヤノン株式会社 | 監視システム、及び、監視システムの制御方法 |
US10484484B2 (en) | 2016-02-05 | 2019-11-19 | International Business Machines Corporation | Context-aware task processing for multiple devices |
US10044798B2 (en) * | 2016-02-05 | 2018-08-07 | International Business Machines Corporation | Context-aware task offloading among multiple devices |
US10404779B2 (en) | 2016-07-26 | 2019-09-03 | Schneider Electric It Corporation | Cloud assisted management of devices |
WO2018066355A1 (ja) | 2016-10-04 | 2018-04-12 | ソニー株式会社 | 受信装置、送信装置、及び、データ処理方法 |
DE102016125128B3 (de) * | 2016-12-21 | 2018-03-29 | Beckhoff Automation Gmbh | Datenübertragungsverfahren, Kommunikationsnetzwerk und Master-Teilnehmer |
KR101942905B1 (ko) | 2017-02-14 | 2019-01-28 | 엘에스산전 주식회사 | 통신 데이터 모델링 방법 |
US10965474B1 (en) * | 2017-02-27 | 2021-03-30 | Apple Inc. | Modifying security state with highly secured devices |
JP6817557B2 (ja) * | 2017-05-22 | 2021-01-20 | パナソニックIpマネジメント株式会社 | 通信制御方法、通信制御装置、及び通信制御プログラム |
US20190239140A1 (en) * | 2018-01-30 | 2019-08-01 | Qualcomm Incorporated | Wlan performance while coexisting with bluetooth low energy communications |
DE102018201433A1 (de) * | 2018-01-31 | 2019-08-14 | Zf Friedrichshafen Ag | Übertragungssystem für Steuerdaten |
CN110708319A (zh) * | 2019-10-10 | 2020-01-17 | 广州趣丸网络科技有限公司 | 服务请求的处理方法及装置 |
CN111654470B (zh) * | 2020-05-13 | 2021-08-24 | 北京理工大学 | 一种机器人系统状态监测方法、设备及存储介质 |
CN111740949B (zh) * | 2020-05-13 | 2021-08-24 | 北京理工大学 | 一种机器人系统加密控制方法、设备及存储介质 |
CN111855222A (zh) * | 2020-08-13 | 2020-10-30 | 长沙市健科电子有限公司 | 一种车辆水泵的测试控制方法和装置 |
DK181360B1 (en) * | 2020-11-24 | 2023-09-01 | Falcom As | Communication system with accessory device configuration |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1771695A (zh) * | 2003-05-30 | 2006-05-10 | Lg电子株式会社 | 家庭网络系统 |
CN101395597A (zh) * | 2006-03-06 | 2009-03-25 | Lg电子株式会社 | 继承设备注册方法、数据传送方法和继承设备认证方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4506324A (en) | 1982-03-08 | 1985-03-19 | The United States Of America As Represented By The Secretary Of The Navy | Simulator interface system |
JP2802088B2 (ja) | 1989-02-06 | 1998-09-21 | 株式会社日立製作所 | プロトコル選択切替方法 |
GB9026347D0 (en) | 1990-12-04 | 1991-01-23 | Racal Res Ltd | Improvements in or relating to data communications |
JP2636534B2 (ja) | 1991-03-22 | 1997-07-30 | 三菱電機株式会社 | 通信システム |
US6125122A (en) | 1997-01-21 | 2000-09-26 | At&T Wireless Svcs. Inc. | Dynamic protocol negotiation system |
US5968136A (en) | 1997-06-05 | 1999-10-19 | Sun Microsystems, Inc. | Apparatus and method for secure device addressing |
EP1124351A3 (en) | 2000-02-11 | 2003-11-05 | Alcatel USA Sourcing, L.P. | Communication protocol for nodes connected in a daisy chain |
US20040059815A1 (en) | 2001-01-24 | 2004-03-25 | Buckingham Duane W. | Guest room service and control system |
US7003676B1 (en) | 2001-05-10 | 2006-02-21 | Advanced Micro Devices, Inc. | Locking mechanism override and disable for personal computer ROM access protection |
US7111050B2 (en) | 2001-08-02 | 2006-09-19 | International Business Machines Corporation | Private memory access in multi-node system |
US7536450B2 (en) * | 2001-09-17 | 2009-05-19 | Ricoh Company, Ltd. | System, method, and computer program product for sending remote device configuration information to a monitor using e-mail |
US7308576B2 (en) | 2001-12-31 | 2007-12-11 | Intel Corporation | Authenticated code module |
US7107459B2 (en) | 2002-01-16 | 2006-09-12 | Sun Microsystems, Inc. | Secure CPU and memory management unit with cryptographic extensions |
US20040088541A1 (en) | 2002-11-01 | 2004-05-06 | Thomas Messerges | Digital-rights management system |
US7107357B2 (en) * | 2003-08-11 | 2006-09-12 | Teamon Systems, Inc. | Communications system providing shared client-server communications interface and related methods |
US7107310B2 (en) * | 2003-08-11 | 2006-09-12 | Teamon Systems, Inc. | Communications system providing enhanced client-server communications and related methods |
US7519698B2 (en) | 2003-09-26 | 2009-04-14 | Ricoh Co., Ltd. | Method and system for extracting information from networked devices in a multi-protocol remote monitoring system |
CN100484148C (zh) | 2003-09-29 | 2009-04-29 | 株式会社日立制作所 | 信息终端装置、信息共享方法、使用它们的p2p系统及指针系统 |
US7526534B2 (en) * | 2004-07-16 | 2009-04-28 | Cassatt Corporation | Unified system services layer for a distributed processing system |
US20060036748A1 (en) * | 2004-07-28 | 2006-02-16 | Nusbaum Edward S | Apparatus and method for computerized information management |
US7551631B1 (en) * | 2005-05-06 | 2009-06-23 | Sun Microsystems, Inc. | System for routing independent paths in an infiniband network |
US9660808B2 (en) | 2005-08-01 | 2017-05-23 | Schneider Electric It Corporation | Communication protocol and method for authenticating a system |
US7796589B2 (en) | 2005-08-01 | 2010-09-14 | American Power Conversion Corporation | Communication protocol |
US7561599B2 (en) | 2005-09-19 | 2009-07-14 | Motorola, Inc. | Method of reliable multicasting |
TWI452883B (zh) | 2006-02-14 | 2014-09-11 | Interdigital Tech Corp | Wlan服務中提供可靠多播服務方法及系統 |
US8429300B2 (en) * | 2006-03-06 | 2013-04-23 | Lg Electronics Inc. | Data transferring method |
US8897193B2 (en) | 2006-08-01 | 2014-11-25 | Samsung Electronics Co., Ltd. | Multicast packet transmitting method over wireless communication network and wireless communication network system using the method |
FR2916598A1 (fr) | 2007-05-24 | 2008-11-28 | Thomson Licensing Sas | Procede de transmission de paquets de donnees et procede de reception correspondant |
US7565470B2 (en) | 2007-12-04 | 2009-07-21 | Holylite Microelectronics Corp. | Serial bus device with address assignment by master device |
-
2011
- 2011-07-14 US US13/182,723 patent/US8819170B2/en active Active
-
2012
- 2012-06-13 CN CN201280044118.3A patent/CN103782566B/zh active Active
- 2012-06-13 WO PCT/US2012/042216 patent/WO2013009425A1/en active Application Filing
- 2012-06-13 AU AU2012283124A patent/AU2012283124B2/en not_active Ceased
- 2012-06-13 EP EP12735364.7A patent/EP2732595B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1771695A (zh) * | 2003-05-30 | 2006-05-10 | Lg电子株式会社 | 家庭网络系统 |
CN101395597A (zh) * | 2006-03-06 | 2009-03-25 | Lg电子株式会社 | 继承设备注册方法、数据传送方法和继承设备认证方法 |
Also Published As
Publication number | Publication date |
---|---|
US8819170B2 (en) | 2014-08-26 |
WO2013009425A1 (en) | 2013-01-17 |
US20130018979A1 (en) | 2013-01-17 |
EP2732595B1 (en) | 2015-04-15 |
AU2012283124B2 (en) | 2017-01-12 |
AU2012283124A1 (en) | 2014-02-06 |
EP2732595A1 (en) | 2014-05-21 |
CN103782566A (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103782566B (zh) | 用于交换信息的系统和方法 | |
US8549198B2 (en) | Communication protocol | |
US7796589B2 (en) | Communication protocol | |
US9660808B2 (en) | Communication protocol and method for authenticating a system | |
US11012256B2 (en) | Connection unit, monitoring system and method for operating an automation system | |
CN102904749B (zh) | 采用安全设备保护网络装置的方法、安全设备和数据网络 | |
US10901392B2 (en) | Method and system for monitoring a plant of process automation | |
US9544300B2 (en) | Method and system for providing device-specific operator data for an automation device in an automation installation | |
KR102177411B1 (ko) | 물리적 단방향 암호화 원격 모니터링을 통해 산업 제어 시스템을 관리하는 방법 | |
CN1535401A (zh) | 过程自动化系统和用于过程自动化系统的过程装置 | |
CN112422557B (zh) | 一种工控网络的攻击测试方法及装置 | |
US11516229B2 (en) | Control device and control system | |
AU2020104272A4 (en) | Blockchain-based industrial internet data security monitoring method and system | |
CN108429820A (zh) | 一种物联网应用层的通信方法、系统及终端设备 | |
CA2357444A1 (en) | System and methods for automatic negotiation in distributed computing | |
CN104169817A (zh) | 用于在自动化设备中控制安全关键过程的控制装置和用于使控制装置参数化的方法 | |
EP3078167B1 (en) | Method, secure element and system for monitoring controller area network devices | |
JP4611679B2 (ja) | 通信装置、通信システム、通信方法及びプログラム | |
CN113645175B (zh) | 数据通信方法、装置、设备及计算机可读存储介质 | |
JP4611676B2 (ja) | 通信装置、通信システム、通信方法及びプログラム | |
KR102432837B1 (ko) | 일방향 엣지 게이트웨이 | |
US20220373991A1 (en) | Self-testing automation system | |
Lee et al. | An implementation of convergence security solution for overcoming of security vulnerabilities in industrial control communication network | |
JP4509675B2 (ja) | 通信装置、通信システム及び通信方法 | |
JP2021144487A (ja) | データダイオードの設定更新方法、データダイオードの設定更新プログラムおよびデータダイオード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |