用于通用数据交换网关的方法和装置的制作方法

文档序号:6418858阅读:508来源:国知局

专利名称::用于通用数据交换网关的方法和装置的制作方法
背景技术
:发明领域本发明涉及计算机网络协议网关,特别是涉及适于电源线联网系统的网关。相关技术的描述计算机特别是个人计算机的广泛应用,造成了计算机网络数量的迅速增长。将两台或多台计算机联网到一起允许计算机共享信息、文件资源、打印机等。把两台或多台个人计算机和打印机连接到一起形成一个网络,原则上,是一个简单的任务。计算机和打印机可以使用一根电缆简单地连接到一起,并且在计算机上安装必要的软件。在网络术语中,电缆是网络介质,计算机和打印机是网络节点。网络节点使用一个或多个协议,如传输控制协议、网间协议(TCP/IP),进行相互“对话”。网关用于执行从一个协议到另一个协议的协议转换,这样使用不同协议的网络能够相互连接。例如,Prodigy网络服务具有用于在它的内部专用电子邮件格式和国际互联网电子邮件格式之间进行转换的一个网关。标准网络协议,一般在设计时假设每个网络节点都是一个具有基本的数据处理和存储能力的“智能”设备。例如,一台典型的个人计算机(PC)有足够的处理和存储能力,来处理几乎任何网络协议。但是,一台典型的打印机是一个“哑的”设备,并不具有必须的处理和存储能力。一些制造商提供允许打印机被连接到网络的网络打印机适配器。该打印机适配器,是提供类似于全配置个人计算机的数据处理和存储能力的单板计算机。该网络打印机适配器,因此把“哑的”打印机转换为一个“智能”设备。尽管网络打印机适配器确实起作用,但是它们的价格相对昂贵,因此不适于在一些家庭和小型办公环境中使用。此外,该打印机适配器也不适于用来将其它非PC设备连接到网络。例如,用户经常希望将哑的设备,如户外的灯、报警系统、电话系统等诸如此类的设备,连接到他们的计算机网络。购买网络适配器插件,来把这些哑设备的每一个变为一个智能设备,将不可避免地费用昂贵。用于智能设备的协议一般称为“网络协议”。用于哑设备的协议经常称为“控制协议”。在性能和复杂性两方面,网络协议与控制协议都大不相同。由于这些不同,设计用于在网络协议之间进行数据转换的网关,一般不适于在控制协议之间进行数据转换的任务。而更为困难的任务,是在网络协议和控制协议之间进行数据转换。已有的家庭用控制/自动产品,倾向于使用基于对等模型的控制协议而不是集中式的客户/服务器模型。这严重限制了这些产品的应用,因为每个节点需要在本地存储状态信息和规则。由于缺少容易使用的、集中式的用户接口部件,配置网络很困难。而且,在竞争产品间(如X-10和CEBus)的互操作性基本上是不可能的。发明概述通过提供一个低成本、容易使用、灵活、可靠并且可伸缩的网关结构,解决了这些以及其它的问题,该结构允许在一个或多个网络协议和一个或多个控制协议之间进行数据转换。各种不同的协议能够在相同的物理网络介质上同时使用。该网关也提供使网络协议以隧道方式通过一个选定的协议和集中控制。因此,为数据和控制网络的终端用户,尤其是在家庭和小型办公环境中,该网关提供了极大的益处。通过使用所述网关,终端用户可以容易而方便地把传统上相互独立、互不兼容的网络联网成为一个普遍可访问的、集中管理的“超级网络”,该网络连接计算机、打印机、报警系统、家庭设备、照明系统和电话系统等。该网关提供一个集中式节点数据库,支持传统的协议如TCP/IP,规则引擎以及面向目标类库接口。使用普通的、容易使用的图形用户接口,如国际互联网浏览器,该网关提供广泛的家庭/小型办公室自动化和控制能力。通过自动的设备发现,简化了配置。通过备用服务器提供的系统容错性能,增强了对集中式节点数据库的访问。当与电源线网络一起使用时,该网关提供在电源线上分配不同类型的数据流的能力。例如,拥有电缆调制解调器或其它类型的高速国际互联网连接的网络用户,可以把国际互联网业务分配到家庭/办公室中的任何地点,而不需要除了已有的电力线以外的附加附加线路。音频数据也很容易通过电源线在整个家庭/办公室中分配。该网关提供的路由处理器,允许实际上任何传统的数据联网服务和现在通用的协议,在电源线上被路由。附图的简要描述当与以下列出的附图一起阅读时,在本
技术领域
内熟练的人员,从以下的详细描述中,将很容易地意识到公开的本发明的优点和特征。图1是具有如个人计算机的智能节点和如外部安全照明的哑节点的网络的一个框图。图2是七层OSI网络模型的框图。图3是通用的网关结构的框图。图4是展示服务器激活算法的框图。图5是展示一个规则的各部分的数据图表。图6是用于智能设备的一个PLX网络模型的框图。图7是用于哑设备的一个PLX网络模型框图。图8是展示介质访问算法的一个流程图。图9A是展示活动的网络服务器发信号(spitting)算法的一个流程图。图9B是展示客户发信号(spitting)算法的一个流程图。图10是展示活动的网络服务器轮询算法的一个流程图。图11是展示一个PLX逻辑组隔离(LoGI)包的字段框图。图12是展示一个PLX原始数据包的字段的框图。图13是展示一个PLX令牌包的字段的框图。图14是展示一个PLX直接确认(DACK)包的字段的框图。图15是展示一个PLX掩码的排队插入包(LIPG)的字段的框图。图16是展示一个PLX直接排队插入(LIPD)包的字段的框图。图17是展示一个PLX内部主机包的字段的框图。图18是展示一个PLX公共应用语言(CommonApplicationLanguage)(CAL)请求包的框图。图19是展示一个PLXCAL响应包的框图。图20是展示一个PLX单个信道传输状态包的框图。图21是展示一个PLX多信道传输状态包的框图。图22是展示一个PLX包定时的一个定时图。在图中,任何三位数字的第一位数字,一般标识组件第一次出现的图的号码。使用四位参考号码的地方,前两位数字标识图的号码。在一个典型的网络环境中,网络介质100配置为承载不同数据协议的数据业务。因此,如图1中例子所示,计算机103可以使用TCP/IP协议与计算机104通信,而计算机104使用一控制协议,如在公开的本申请中标为附录A的部分中所描述的电源线交换(PLX)协议,与照明系统118进行通信。附录A包括申请号为09/211950,标题为“电源线交换协议的方法和装置”的美国申请的部分,在此引证作为参考。一个通用的网关作为一个软件程序,在一台计算机上运行,如计算机104上。该通用的网关在不同的网络协议之间,以及不同的物理网络之间,提供连接。例如,如图1中所示,该通用的网关作为一个软件程序,在计算机104上运行,连接TCP/IP协议到PLX协议,因此允许计算机103与照明系统118通信。在计算机104上运行的通用网关软件,也提供在各自的物理网络之间的数据传输,因此允许在各自的物理网络上的设备相互通信。在图1中,该通用的网关提供在网络130和照明系统118之间的数据传输。该通用的网关与分层的网络协议兼容。为智能节点(如计算机103和104)配置的大部分网络,是基于由开放系统接口(OSI)委员会开发的一个网络结构模型。该OSI结构定义了一个网络模型,其中列出了在一个通信系统中的每一个单独的硬件和软件层,层之间的内部相关性,以及每一层所执行的单一功能。图2展示了该OSI结构被分为七个层,从最低到最高为物理层201;数据链路层202;网络层203;传送层204;对话层205;表示层206;和应用层207。每层使用直接在其下面的层,并且为直接在其上面的层提供服务。在一些实施中,一层可能本身由多个子层组成。一层是两个或多个通信设备或计算机的软件和/或硬件环境,一个特定的网络协议在该通信设备或计算机中运行。一个网络连接可以被看成为一组或多或少独立的协议,每一个在不同的层或级中。最低层管理在不同节点的硬件之间直接的节点到节点的通信;最高层由用户应用程序组成。每层使用在其下面的层,并且为在其上面的层提供服务。在一个主机上的每个联网组成部分的硬件或软件,使用适用于它的层的协议,与在另一个节点上的相应的组成部分(它的“对等”)进行通信。这样的分层协议有时被称为对等协议。分层协议的优点,在于由一层到另一层传递信息的方法,被清晰地确定为协议的组成部分,并且防止了在一个协议层内的改变影响到另一个协议层。这简化了设计和维护通信系统的任务。物理层201是OSI分层的模型中的最低层。它涉及网络中电的和机械的连接,包括介质访问控制(MAC)部分。介质访问控制是指对于数据传输介质100(例如网络电缆)的控制和访问。物理层201被数据链路层202使用。数据链路层202是OSI模型中的由下数的第二层。数据链路层202把数据分成帧(为了在物理层201上发送),并接收确认帧。数据链路层202执行错误检测和重传未被正确接收的帧。数据链路层202为网络层203提供一个无差错的虚拟信道。数据链路层202被典型地分为一个高的子层,逻辑链路控制(LLC),和包括介质访问控制(MAC)的部分的一个低的子层。网络层203是OSI七层模型中的由下数的第三层。网络层203决定通过数据链路层202的由发送者到接受者的数据包的路由,并且被传送层204使用。最常用的网络层协议是IP。传送层204(或“主机-主机层”)是OSI模型中处于中间的层。传送层204决定怎样使用网络层203,来提供一个虚拟的无差错的、点对点的连接,因此第一个节点可以传送信息到第二个节点,并且信息将未被破坏地和以正确的次序到达。传送层204建立和释放节点间的连接。对话层205是OSI模型中的由上数的第三层。对话层205使用传送层204来建立在不同节点上的过程间的连接。对话层205处理安全性和对话的建立。表示层206是OSI模型中的由上数的第二层。表示层206执行如文本压缩、编码或格式转换等功能,来消除节点间的差异。表示层206允许在应用层中不兼容的过程,通过对话层进行通信。应用层207是OSI模型中的最高层。应用层207与用户对于网络的视图(如格式化的电子邮件信息)相关。表示层206为应用层207提供独立于在网络上使用格式的熟悉的本地数据表示。应用层协议的例子包括远程登录、文件传送协议(FTP)、简单网络管理协议(SNMP)、简单邮件传送协议(SMTP)、网间控制报文协议(ICMP)、NetWare核心协议(NCP)、路由信息协议(RIP)、服务广告协议(SAP)、一般的文件传送协议(TFTP)、系统错误容限协议(SFTP)。图3展示了通用网关300的结构,以及该通用网关300如何与其它软件组成部分,如应用程序、硬件驱动等,相互作用。应用程序302,使用一组网关基础级304,与网关300进行通信。网关基础级304与数据库访问模块306、事件处理器310、调度320、运行时间操作系统服务(RTOS)311进行通信。数据库访问模块306包括一被调用的信息储存库(一节点数据库)308。节点数据库308可以组织为数据库、链接列表、表、图、容器等。数据库访问模块306还与事件处理器310以及有效负荷/协议处理装置312通信。该有效负荷/协议处理装置包括一个或多个有效负荷/协议处理器,如原始数据处理器316、流式数据处理器317和CAL控制处理器318。事件处理器310还与规则引擎314以及调度320进行通信。调度320还与RTOS311、规则引擎314、PLX设备驱动322以及传统设备驱动326进行通信。该PLX设备驱动包括PLX控制设备驱动323(用于哑设备)和PLX数据设备驱动324(用于智能设备)。网关300提供由一个协议到另一个协议的协议转换,这样两个使用不同协议的网络可以互联。该网络可以是真正的、物理网络,也可以是虚拟网络(如,只存在于软件中)。网关300在传统协议和主要的(如所需的)协议(如电源线协议)之间提供接口。传统协议这一术语并不限于以前使用的协议。传统协议这一术语,而是指除了主要协议以外的其它任何协议。传统设备驱动包括,如X-10驱动329CEBus驱动332。而且每个传统设备驱动,可选择地,包括用于使传统设备驱动与网关适配的一个调整(shim)。在一个实施例中,电源线协议作为主要协议,但是网关300并非如此限定。因此,主要协议可以是任何协议,包括,如TCP/IP、IPX、ADSL以及在本公开文本其它地方所列或本领域内所知的任何协议。对于流式传统设备驱动362,如以太网驱动362和ADSL驱动364,网关提供了传统堆栈352。传统堆栈352支持OSI协议堆栈,如TCP/IP堆栈353和SPX/IPX堆栈354。传统堆栈352与流式传统设备驱动362以及路由处理器355通信。路由处理器355与流式传统设备驱动362、传统堆栈352以及有效负荷/协议处理装置312通信。传统堆栈352还与传统应用350通信。网关300作为不同类型网络之间的一个链接点,为控制和数据网络两者提供支持,其中控制和数据网络包括但不限于以太网、数字用户线(DSL和ADSL)、电源线交换(PLX)、X-10以及CEBus。网关300具有两个主要功能,即节点管理和数据路由。作为节点管理者,网关300负责发现、列举、检索、存储以及处理网络节点状态信息。状态信息存储在节点数据库308中。节点数据库308基于Generic公共应用语言(CAL)技术规格。EIA-600中定义的CEBus,是用于控制总线设备的一种工业标准控制语言。EIA-600为用于家庭的LAN中的公共应用语言提供了一个框架。GenericCAL在EIA-721系列标准(包括EIA-721.1、EIA-721.2、EIA-721.3和EIA-721.4)中定义。CEBus工业委员会(CIC)定义了一个家庭即插即用(HPP)技术规格,通过为使用GenericCAL定义“语法”规则,该HPP技术规格使框架细节化。HPP技术规格为家庭中的产品和系统,细节化了一组行为特征,这些行为特征允许产品或系统根据家庭中的状态采取行动。例如,该技术规格定义了家庭内的不同状况,如“居住者不在”或“居住者在家睡觉”,来允许系统采取适当的行动,如启动安全系统、关闭室内的灯或设置温度。HPP技术规格也包括用于开发基于Windows’95PC的家庭控制应用的信息。EIA-600中定义的公共应用语言,提供了用于在多个产业部门(如娱乐、计算机、加热/制冷、厨房设备等)生产的家庭LAN产品中通信的一个框架。每个产业部门定义产品使用语言的“应用环境”(如语法规则)。作为支持组织建立了CIC,该组织协助多个产业部门开发“协调的”应用环境。对于那些为基于CAL的可互操作产品,寻求家用LAN市场的产业部门,CIC的HPP是兼容的应用环境的一个纲要。CEBus/GenericCAL技术规格全部在此引证,作为参考。网关300也提供规则引擎314,规则引擎监视节点状态变化,并根据状态变化,根据使用通用的规则定义语言(RDL)的语法定义的规则,采取行动。通过使用调度控制块(DCB),网关300也处理数据流和路由任务。路由处理器355提供这样的功能,如TCP/IP隧道通过PLX、代理服务器以及网址翻译等。提供调整(shim)(328、330),用于允许基于非PLX电源线的节点无缝隙地插入PLX网络。网关基础级304提供被用户接口和系统管理应用302使用的面向对象的API库。网关300进一步提供支持,允许使用传统的、非通用的网络API(MFC、TLI、套接字、家庭API等)与网络节点进行通信。这允许传统网络数据(以太网、ADSL等)的透明的数据流在网络上通过,包括控制网关300使用Java和WebBrowser管理的节点的能力。节点数据库308是由网关300存储的节点数据储存库。节点数据包括由每个客户节点得到的节点配置文件夹,事件序列,客户节点联编和规则。网关300的其它组成部分,通过一组访问方法306访问节点数据库308。事件处理器310和规则引擎314,负责当客户节点中状态发生变化,作为结果而发生的行为。规则引擎314翻译与状态变化相关的规则,并负责规划通知或作为规则求值结果可能触发的CAL发送请求。规则引擎314与节点数据库308和事件处理器310一起工作。事件处理器310处理事件序列和执行事件通知。这些事件通知包括到网关300其它组成的内部通知,和到已经注册以接收事件通知的应用302的外部通知。在网关300和应用302之间的互操作通过网关基础级304完成。调度320负责管理网关300运行时的操作,包括发送/接收序列处理、线路初始化以及管理等。需要管理的网关活动包括应用CAL发送请求、原始流式数据请求、接收事件和后台管理任务。调度320提供普通的接口到网络设备驱动322、326,允许支持不同类型的网络节点,而不需要对于驱动322、326服务的潜在的网络控制器硬件的详细信息。设备驱动322、326直接与网络通信硬件(USB或并行端口PLX节点、X-10调整(shim)、CEBus调整(shim)等)通信,并且处理数据链路层202功能(如产生/翻译MAC头、低级定时等)。直接与潜在的硬件对话的驱动322、326部分,是典型的平台式技术规格,用于支持不同类型的可能存在于驱动和硬件之间的连接(如通用串行总线(UBS)、并行端口、防火端口、PCI插槽、ISA插槽、串行端口等)。网关300提供调整(shim)组成328、330,用于处理由传统的X-10和CEBus节点接收的控制数据到网关300使用格式的转换。在有效负荷/协议处理装置312中的有效负荷/协议处理器316-318,负责解释和执行接收的包数据。数据处理器316-317与路由处理器355共同工作。路由处理器355解释原始数据包的头。路由处理器355也查询地址和路由表,该表协助导向在不同的传统协议堆栈352和传统的流式驱动362之间的数据流。为了维护在不同的平台和操作系统上编码的可移植性,平台特定编码在RTOS311提供的平台抽象层中被隔离。典型的运行时服务包括线路计划、储存器管理、中断处理、时钟、同步、优先权计划和初始化等。网关300中的许多组成,直接或间接地与节点数据库308相互作用。最初建立和维护数据库的任务,主要由调度320、驱动322、326以及有效负荷/包处理装置312处理。用户接口和管理应用,通过网关基础级304访问和/或修改节点数据库308。节点数据库308是结构化的,这样实时访问快且高效。在速度/存储使用之间进行了折衷,通常其中存储器使用效率比访问速度被赋予更高的优先权。在一些实施例中,节点数据库308的部分,存储在非挥发性储存器中。节点数据库308包含客户节点配置和节点状态信息。这包括与每个客户节点相关的使用环境、对象和实例变量(IV)信息。在使用网络命令和网络请求的节点发现过程中,获得这个信息。这个信息中,动态的IV存储在永久性储存器中。对于大多数对象(不包括节点控制和环境控制),这包括定义节点状态的当前值IV。节点数据库308也包含一些节点确定的信息。在每个节点存在的节点环境之外,节点数据库308包含包括用于节点管理的对象的数据库服务器环境。该数据库服务器环境包括网络节点列表对象,该对象中包含网关300了解的客户节点地址矩阵。通过一组普通的访问方法306访问节点数据库308。由于大多数访问直接或间接来自网络信息,数据库访问方法306,使用典型的网络取得(Get)和设置(Set)方法,负责取得和设置变量值。这种方法包括GetValue、GetArray、SetValue、SetArray、SetON和SetOFF。哪种方法适用,决定于所作用的实例变量的类型。例如,CAL网络定义了四种IV数据类型布尔型(GetValue、SetValue、SetON、SetOFF),数值型(GetValue、SetValue),字符串型(GetValue、SetValue),和数据型(GetArray、SetArray)。大部分时候,这些方法使用一组相似的键,它们确定起作用的数据和输入变量的任何数值。每种方法随后返回所请求的信息(如果有)和状态。例如,作用于CALIV的用于以上方法的普通的原型如下ENUM_STATUS&lt;method&gt;(NodeID,ContextID,ObjectID,IVID,args,…,*retumVal)在此例中,NodeID,ContextID,ObjectID和IVID为键。对于非CAL目标,使用不同的一组键。当在一个实例变量上进行设置时,通过事件处理器310产生事件通知到规则引擎314,指示一个状态变化已经发生。然后,规则引擎314翻译关于发生变化的实例变量的规则/报告状态,如果已经规定了操作,则通过事件处理器310规划事件。这样做的结果可能是通过调度320发送一个网络请求,或者通过基础级304通知到较高层应用302。如上文所述,当产生一个访问请求来GET或SET一个节点IV时一般要提供四条信息(或键)。这些信息包括一NodeID,一ContextID,一ObiectID和一IVID。NodeID是设置过程中分配的节点地址(这可以在制造时或在运行时动态设置)。对于PLX网络,这是一个4字节字段,取值在0x00000001和0xffffffef之间;高于此范围的地址专供广播和其它PLX特定应用。对于非PLX网络,一般需要进行一些地址映像/翻译。路由处理器355负责地址翻译。ContextID长度为2字节,其高字节为一个可选择的应用环境编号,取值范围为0xA0-0xDE或在未被使用时为0。ContextID的低字节是一个应用等级值,取值范围为0x00-0x9E(这些在通用CAL技术规格中定义)。ObiectID是一个1字节的目标编号值,取值范围为0x01-0x3E。IVID为一个ASCII码字符(或字符串),其在一个给定的应用环境和目标类型之中确定一实例变量。通过一组应用环境描述一个节点;每种应用环境包括一组目标;每个目标包括一组IV。数据库是结构化的,这样访问给定所述四条信息的一个IV,包括以下查询算法。1)NodeID映像到一个节点列表入口(一般使用一散列算法),其中每个节点指向一应用环境记录矩阵。ContextID未定义,这样它可以被用作到所需的应用环境记录的直接索引,因此,在此出现线性查询。一个节点一般仅有几个(2或3个)应用环境。每个应用环境记录包含到一个目标记录矩阵的一个指针(或一个链接的列表)。2)ObiectID是格式型的,这样它可以用作到所需目标记录的一个直接索引。每个目标记录包含到IV记录矩阵的一个指针。3)线性检索用于定位所需的IV,基于IVID将作用于此IV。这样操作是有效的,因为大部分客户节点只在节点数据库308存储几个IV。大部分GET/SET请求与所述IV的当前值有关。如果当前值总是存储在IV列表的开头,则几乎不需要扩展的线性检索。网关300用于填充网络节点列表的发现过程,根据节点类型的不同而不同。对于使用CAL的典型的PLX节点,使用以下算法1)在网络上广播一个CAL“连接测试程序(Ping)”请求(一般在初始化过程中完成此操作,但也可以定期进行)。这种请求的格式与其它任何CAL命令/请求的格式相似,并使用以下参数ContextClass=0(通用的应用环境),ObjectNumber=1(节点控制目标),Method=50h=PING_REQUEST(未在普通CAL技术规格中定义),IV=&lt;任何IV均可&gt;。这种请求与标准CAL请求不同,标准CAL请求可以直接发送到一个节点或者广播到所有节点。连接测试程序(Ping)请求不需要来自接收者的导典型的CAL格式响应包。2)接收CAL连接测试程序(Ping)请求的节点,发回一个CAL连接测试程序响应到发送的节点。尽管这个包被称为一个“响应”,该包的语法与传统的CAL响应包不同。该响应在次序上不同,以允许连接测试程序请求被作为广播发送。除了方法编码为51h而不是50h之外,响应包的格式(它实际上类似CAL命令/请求,而不是CAL响应)与连接测试程序请求相似。3)当网关300由未列在网络节点列表中的一个节点接收到一个连接测试程序响应时,网关300增加该节点到列表中,并把该节点的IV信息加入到节点数据库308。4)可选择地,网关300发送一个CAL请求,到节点列表中的在一定长度的时间内未收到信息的任何节点。如果该节点无法响应,它被由列表中移去。5)当一个客户节点加电或复位时,也发送连接测试程序响应包。对于传统的控制节点(如X-10或CEBus节点),根据该节点的传统技术规格,节点发现过程不同。网关300在调整(shim)328,330协助下,处理这些节点。调整(shim)328,330对于上述的CAL节点发现方法和非PLX驱动使用的传统方法都了解。作为对一个连接测试程序请求的响应,该调整(shim)把连接测试程序请求转换为在传统控制网络上执行节点发现所需的相同请求(或请求组)。当节点被发现后,调整(shim)328,330产生连接测试程序响应包,并把它们上传到网关300的较高层。对于网关300的其余部分来说,这些传统的控制节点是PLX节点。以下将进一步论述调整(shim)328,330。网关300允许用户接口和管理应用302通过基础级304访问节点数据库308。在这方面,网关300作为应用服务器。为了增强应用302对节点数据库308的可访问性,网关300支持多个应用服务器的存在,其中一个服务器作为活动的应用服务器,其它作为备用应用服务器。每个服务器存储相同的节点数据库308,并通过侦听网络业务、监视网络节点状态变化,相应地更新它的节点数据库308,保持它的节点数据库308的信息与其它节点的信息一致(同步)。但是,活动的应用服务器是真正评估与状态变化相关的规则并执行所需的事件通知的仅有节点。如果活动的应用服务器由于某些原因变得无法工作,则一台备用服务器将检测到这种情况并成为“活动的”。在图4中,展示了一个应用服务器节点402激活的过程,由同步框404开始,在此,节点402更新其节点数据库308。更新节点数据库308之后,过程前进到一个判定框406。在判定框406中,如果该节点处于活动的服务器状态,则过程前进到活动的服务器框408;否则,过程前进到备用服务器框420。在完成活动的服务器框408后,过程前进到判定框412。在判定框412中,如果检测到服务器静止请求,则过程前进到设定备用框410;否则,过程前进到判定框414。如果在判定框414中,检测到一客户请求,过程前进到响应框416;否则,过程返回同步框404。在完成设定备用框410或响应框416后,过程返回同步框404。在备用服务器框420完成后,过程前进到判定框422。在判定框422中,如果检测到一个未被确认的客户请求,过程前进到设置活动的框424;否则,过程返回到同步框404。在完成设置活动的框424后,过程前进到通知框426,通知其它应用服务器高性能节点当前服务器节点将成为活动的。在框426完成后,过程返回到同步框404。当客户节点中发生状态变化时,将会涉及到规则引擎314和事件处理器310。因为当执行设置(SET)方法时发生状态变化,所以每个SET方法通过事件处理器310将变化通知规则引擎314。然后,规则引擎314检查是否存在与所改变的IV相关的任何规则,并决定是否需要事件通知。规则可以由用户通过用户接口使用基础级304,把不同的节点相互结合来创建。对于一些不需要明确的用户定义的节点和常规操作,也存在默认规则。规则可以简单或复杂。简单规则是那些特征为用户节点之间是一对一或一对多结合关系的规则。简单一对一规则的举例,如“如果照明开关A切换到开状态,则接通照明灯泡A。”一对多规则的举例,如“如果照明开关A切换到开状态,则接通照明灯泡A、B、C和D。”复杂规则处理多对一或多对多结合(如“如果照明开关A切换到开状态并且用户具有安全间距,则接通照明灯泡A、B、C和D。”)。网关300为规则定义提供一个通用的语法,称为通用RulesDefinitionLanguage(RDL)。图5是展示规则的各部分以及应用502与规则504之间相互作用的结构图。如图5中所示,应用502创建包括规则504的一个或多个规则。规则504可以包含涉及条件表示506的“if”描述。条件表示506可以包括一个或多个常量506、一个或多个运算符512以及一个或多个IV。在规则504中的一个“then”子句确定返回到应用502的通知514。每个常量包含一个值。每个运算符包含一个运算标识符(ID)。每个IV包括一个ID、一个值和一个触发状态(state)。触发状态(state)包括边缘触发和非边缘触发。每个通知包括一个通知ID和一个信息ID。一个规则包括一个事件和一个操作。该操作是一个应用明确的字符串矩阵。事件是一个描述是否网络上存在给定状态的逻辑表达。使用以下语法确定事件字符串。该语法具有未定义的终端符号整型_常量(integer_constant)、字符型_常量(character_constant)、浮点_常量(floating_constant)和字符串(string)。注意标识符终端具有确定的格式。插入记号‘^’或磅符号‘#’后的第一个integer_constant是一个十六进制的节点地址。第二个(可选择的)integer_constant是一个十六进制的CAL应用环境编号。第三个integer_constan是一个十六进制的CAL应用环境类型。第四个integer_constant是一个十六进制的CAL目标编号。character_constant是一个CAL实例变量(IV)。在标识符之前的插入符号确定一个“边缘触发的”或“justchanged”iv。磅符号表示该iv是“level”或“已有值”。一个规则只能有一个“边缘触发的”标识符。规则语法IFOR表达THENACTION表达OR表达AND_表达OR_表达AND_表达AND_表达等式_表达AND_表达&amp;&amp;等式_表达等式_表达关系_表达等式_表达==关系_表达等式_表达!=关系_表达关系_表达相加_表达关系_表达&lt;相加_表达关系_表达&gt;相加_表达关系_表达&lt;=相加_表达关系_表达&gt;=相加_表达相加_表达相乘_表达相加_表达+相乘_表达相加_表达-相乘_表达相乘_表达初始_表达相乘_表达*初始_表达相乘_表达/初始_表达相乘_表达%初始_表达初始_表达标识符常量字符串(OR表达)标识符^integer_constant.integer_constantoptoptinteger_constant.integer_constant.character_constant#integer_constant.integer_constantoptoptinteger_constant.integer_constant.character_constant常量整型_常量(integer_constant)字符型_常量(character_constant)浮点_常量(floating_constant)ACTION表达通知_就用_为_此_规则_注册发送_PLX_包_到_节点对于包含嵌入的使用传统的语法(如RDL之外的一种语法)规则的非PLX节点,规则引擎314(在调整(shim)328,330的帮助下)把传统语法转换为RDL语法。调度320负责导向出现在网关300中的命令和操作流。在初始化过程中,调度320调用RTOS311来创建用于管理运行时操作的不同的处理器线程。按照优先级顺序列表,所述处理器线程包括1)接收有效负荷线程,2)原始数据(流式)传输线程,3)CAL传输线程,以及4)低优先级的空闲线程(可选用的)。以上所列的大部分处理器线程,发送包到客户节点。在调用一个设备驱动发送的例程之前,这些线程首先在TxFreeCount信号装置上等待(静止),该信号装置表明所述驱动能够处理发送请求。而且,CAL发送线程确保CAL包不被发送到处于“延迟”模式的客户。延迟模式将在下文论述。调度320还管理处理器线程所作用的队列。处理器线程和其它网关300组成部分调用调度320,来增加并移去包到/由队列。调度320使用调度控制块来描述CAL请求/响应包和原始数据流片段。DCB结构定义(用C/C++语法)如下TypedefstructsDCB{void*link;UNITE8*buffer;UNIT32destDevAddress;UNITE32srcDevAddress;UNIT16TimeStamp;UNIT16reservedl;UNIT8destSocket;UNIT8srcSocket;UNIT8sequenceNo;UNIT8bufferSize;UNIT8controlInfo;UNIT8reserved2[5];}tDCB,*PDCB;其中link域可以由DCB拥有者用于任何用途。它典型地用于DCB队列管理。buffer和bufferSize域指向并定义DCB所描述的包/片段数据的长度。destDevAddress和srcDevAddress确定与DCB相关的目标和源节点。destSocket和srcSocket可以用于进一步确定在节点中的目标/源应用。timeStamp域被网关300用来协助处理不同的时效条件。sequenceNo用于排序包,主要用于原始数据包流。controlInfo域用来储存用于指明需要DCB和相关数据包的特定特征/处理的不同位域和标志。这些位控制诸如数据加密、授权和数据流等特性。reservedl和reserved2域由网关300在内部使用,并被外部应用使用。所述接收有效负荷线程一般是由调度320发起的最高优先级线程,并且无论何时当设备驱动322、325把接收的包排队后,就执行。在设备驱动322、325中的中断/轮询服务例程,可以优先于此线程。此线程负责从接收队列移去包,并把包传递给有效负荷/协议处理装置312来进一步处理。此线程一直执行到接收队列变空为止(或者可以直到达到一些门限为止)然后处于静止直至排队更多的接收包之后。当以下两个条件成立时,原始数据传输线程执行1)一个原始数据/流式传输请求已被一个应用排队;和2)任何具有更高优先级的线程/中断处理器已执行结束。原始传输线程在发送队列中得到另一个入口,并把它传给适当的设备驱动发送例程。这个过程一直重复到在发送队列中没有任何报告,或已经达到一些门限。原始数据传输线程然后处于静止,直到安排了新的传输之后。CAL传输线程与原始数据线程相似。两者之间的主要差别在于CAL传输线程处理不同的发送队列。CAL传输线程根据CAL请求事件工作。CAL请求事件一般作为应用304的请求结果而被安排。这些应用请求被调度320放到CAL发送队列上。该CAL传输可以用于读(GET)和写(SET)储存在远端节点中或节点数据库308中的状态信息。CAL传输也可以由内部的和外部的状态变化来产生,所述状态变化触发由规则引擎314翻译的规则中定义的事件。空闲线程在系统中工作在低优先级并且是可选择的。如果被选用,该空闲线程处理在较高优先级线程执行时被不确定地延迟而可以不受影响的低优先级任务。低优先级任务一般包括以下操作1)储存器管理和垃圾收集任务;2)发送看门狗/连接测试程序(Ping)包来检测和老化无响应节点;和3)使高速缓存数据库信息与非高速缓存(持久的)备份储存同步。如果支持空闲线程,则调度320提供到其它模块的接口,这样可以计划空闲线程调用低优先级任务。设备驱动322、326接收来自调度320的一般请求(由调度控制块或DCB描述),并把这些请求转换为适合于潜在的网络节点的I/O请求。设备驱动322、326也处理由网络硬件接收的包,并创建DCB,该DCB然后被传递到调度320用于进一步处理。网关300与设备驱动322、326仅通过调度线程部分接口。设备驱动322、326提供的到调度320的接口包括传递一个DCB的一个驱动发送(DriverSend)接口。介质抽象组成(MAC)模块建立一个MAC头,并起始实际的到网络控制器硬件的包发送。一驱动中断/轮询在有效负荷接收队列上的例程队列接收事件,该事件然后由接收有效负荷线程在后边的阶段处理。以下的大部分论述,假设设备驱动驱动一个基于PLX的节点。但是,提供到较高层的接口是通用的,这样网关也支持其它的设备驱动。提供调整(shim)328、330以允许网关300无隙地支持基于非PLX的节点如X-10和当地CEBus节点。当一个驱动,如PLX控制驱动323安装后,一个驱动初始化模块,把驱动所服务的网络接口硬件置于一个功能状态。初始化完成之后,驱动323和硬件就准备好发送和接收包。驱动初始化部分一般包括设置一接收处理ISR/轮询例程,确定/保留硬件资源,以及开始任何管理线程。一般一个时效线程用于检查传输超时和设备驱动/硬件死机问题。发送时,调度320使用一DCB,把包/片段数据地址以及控制信息提供给驱动323。驱动323然后创建适当的MAC头,并起始传输。能够同时处理的传输数量是一个依赖与硬件/固件的值(在此称为TxFreeCount),该值可以在初始化时读出。在把传输数据复制到网络控制器后,DriverSend例程启动一个发送时效计时器。此时,除非同步地收到表明传输完成的响应(在发送之后,DriverSend例程返回之前),该传输将一直处于一种“悬挂”状态,直到网络硬件指示传输完成状态。当传输处于悬挂状态时,只要网络控制器还有可用的缓存空间,这由TxFreeCount定义,就可以继续进行更多的发送。一旦悬挂的发送数量等于TxFreeCount,DriverSend例程就被锁住(意味着不可以出现更多的发送),并且保持锁住状态,直到接收到传输成功状态或传输超时状态之后,ISR/轮询例程为它解锁。驱动中断/轮询服务例程(或ISR处理器)以最高优先级在系统中运行(尤其是中断应用环境中),并负责解释/去除接收的包的MAC头,并且使用调度320排队包,以被适当的有效负荷处理器用于后期处理。接收包为以下类型之一1)内部(或本地)控制/状态包;2)CAL命令/请求包;3)CAL立即响应包;4)CAL延迟响应;5)原始流数据。内部控制/状态包主要用于表示传输完成或错误状态。在ISR处理器中传输状态包的处理,一般根据状态所用的传输包类型(如CAL/原始、本地/远端)的不同而不同。对于原始片段和CAL包,如果状态指示传输已经成功完成,则ISR例程调整TxFreeCount以允许下一个发送进行。万一发生超时错误,CAL传输首先将重传适当的次数直到发送成功,或达到最大重传次数而放弃。对原始数据片段传输超时的处理与对CAL传输的处理相似,例外的是,在一些情况下(取决于原始数据流的特性和接收方的设置),可能需要一些附加的重传处理。原始流片段一般使用包排队来协助管理数据流。根据接收原始流应用的需要,对于超时重传码,不仅需要重传超时的传输,而且需要重传额外的悬起的原始传输(那些具有较高序列号的),而不管这些悬起的传输是否成功结束。这将协助确保接收的应用或路由处理器将以升序接收包。接收的应用/路由器将丢掉无序的包。CAL请求/响应和原始流包由ISR处理器排队,然后由接收有效负荷线程和适当的有效负荷/协议处理器处理。特殊的处理还被用于CAL包,来核实没有新的CAL请求被发送到CAL响应正在悬起的远端节点。另外,如果从远端节点接收到一个CAL请求,一般,在适当的CAL响应发送之前,不允许发送任何新的CAL包到该节点。对于传统的控制网络设备驱动(如X-10驱动328和CEBus驱动332),调整(shim)323,330提供允许这些非PLX驱动使用网关300的接口。传输时,调整(shim)328,330检查由调度320发送的CAL包,并把这些包转换为潜在的传统驱动/设备能识别的等价格式。接收时,调整(shim)328,330把接收的传统数据转换为CAL格式,建立一个DCB,并把该DCB传给调度320。在发送和传输过程中,调整(shim)328,330一般执行一些地址翻译,把4字节的DCB地址转换为潜在的传统驱动使用的地址格式。接收到的包可能包含CAL控制信息或原始流数据(可能包括打印机数据、隧道的以太网/ADSL数据等)。这些有效负荷由有效负荷/协议处理装置312提供的适当的有效负荷/协议处理器处理。CAL处理器318包括CAL翻译器,该翻译器负责解释和处理由控制网络节点接收的CAL请求/响应控制包。有效负荷处理器线程把CAL包由客户传到CAL处理器,用于进一步处理。CAL翻译器也提供一些基本的CAL解释例程到其它处理CAL信息的网关组成部分。当调度320调用CAL处理器318时,调度把指向CAL信息的一个指针放到其它数据中,传到发出包的客户节点地址,以及所要作用的客户节点地址。除了包是由应用302发出的那些情况之外,这两个地址一般相同。CAL信息被分类为命令(一般也称为请求)或响应信息。来自客户节点的CAL命令,一般是状态改变通知,告诉网关300“设置我的状态变量为一些新的值”的一些结果。特殊功能客户,如那些由应用304控制的客户,根据客户的请求,也发送CAL命令来取得或设置其它客户状态(实例)变量。这些包一般需要在下一部分所描述的特殊处理。CAL命令包可以包含一个或多个命令。单个命令CAL包的格式&lt;contextID&gt;&lt;object#&gt;&lt;method/macro&gt;[&lt;IV&gt;[&lt;arguments&gt;]]CAL翻译器把信息分成它的组成部分,映象方法标识符到适当的数据库访问方法,然后使用该ID和变量参数调用该数据库访问方法。数据库访问方法306执行被请求的操作,并且如果IV被改变,就通知规则引擎314。规则引擎314评估施加于改变的IV的任何规则,并且如果被许可,就通过上述的事件处理器310计划事件通知/行动。客户节点使用CAL响应包响应CAL命令。CAL响应的形式为&lt;statustoken&gt;[&lt;returneddata&gt;],其中&lt;statustoken&gt;是响应类型的一个一字节指示(完成、失败false或错误),&lt;returned&gt;数据是作为命令信息结果而返回的任何数据。当接收到这些包之一时,把它与原始CAL命令/请求相联系。当客户立即响应请求时,这种联系相对容易。当响应被延迟时,响应复杂一些。在发送对前一个请求的响应之前,客户不可以发送CAL请求包到网络上,这使得这种联系成为可能。网关300不发送请求到处于“延迟”模式的客户。这允许网关300,按客户储存发送到客户的最后请求(或命令)。当接收到客户响应后,这个信息允许CAL处理器318决定怎样处理返回的信息。原始数据处理器316处理非CAL接收数据。网关300支持可以在不同的应用中发起的多个同时的数据流。原始数据处理器316区分原始数据流的方法,涉及套接字段,单独的套接字编号与每个原始数据流类型相联系。原始数据流的例子包括以太网/ADSL网络包、打印机数据、音频流及其它类似数据。除了检查套接字编号之外,原始数据处理器316极少分析原始数据。包数据以及相联系的DCB然后被传递到负责那个套接字编号的路由处理器355。路由处理器355提供允许网关300由传统数据网络(以太网、ADSL、令牌环等)重定向网络数据业务到所需网络的功能。例如,使用网关300来重定向网络数据业务由一个传统网络到诸如PLX电源线网络的一个网络,提供了许多需要的特征,包括但不限于1)允许扩展传统的以太网,来容纳基于电源线的节点,而不需要附加的以太网电缆连接;2)允许宽带数据在电源线上传送;3)对于基于电源线的网络客户,允许代理服务器性能;4)允许使用隧道技术使传统协议堆栈(TCP/IP、PX/IPX、NetBEUI等)通过电源线。路由处理器355执行的一个重要任务是地址翻译。在初始化时,路由处理器355获得在由网关300发起的DCB传输中用作srcDevAddress的4字节地址。路由处理器355,把这个地址翻译成适于处理器与其通信的传统堆栈和/或驱动的形式。以下部分将描述路由处理器355使用隧道技术,使网络数据包通过使用DCB的不同协议(如PLX协议)。使用隧道技术是把一个由第一个协议的包封装或包装到用于第二个协议的包内。封装的包然后通过第二个协议传过网络。到达它的目的地之后,封装的包被拆封,并现出来自第一个协议的原始包。在初始化过程中,路由处理器355设置前述的地址映象/翻译表。路由处理器355也了解每个DCB支持的包/片段的最大长度。路由处理器355从调度320获得这些信息。不同的路由处理器355通过使用套接字编号来确定。公知的套接字地址可以为专门使用保留或在初始化过程中动态地获得。当路由处理器355由传统堆栈或驱动获得一个目标为电源线设备的发送请求时,路由处理器355把要发送的数据分成不大于所支持的最大DCB数据长度的片段。然后创建DCB,并把序列号赋给每个片段。第一个片段总是序列号为0,最后的片段具有序列设置的高位。可选择地,如果在其它层中校验和功能不能满足要求,路由处理器355可以把校验和加到包中。这些DCB包然后传给调度320,用于在原始发送序列上排队。这将唤醒原始发送线程,为了在电源线上传输,该线程把DCB传递给适当的设备驱动。设备驱动完成每次传输时,Tx状态标记到DCB中,DCB被返回到路由处理器355。在所有的DCB被返回后,路由处理器355执行传统协议所需的发送完成操作。由于超时/重传问题由调度320和设备驱动处理,并且在许多情况下也由传统堆栈处理,路由处理器355可以选择不执行任何附加的重传操作。由于路由处理器355可能同时由多个发送者接收数据片段,接收处理稍微复杂一些。另外,在一些情况下,片段可能顺序不对或被丢掉。路由处理器355有一个能够处理所有这些可能性的接收模块。一般,当有效负荷/协议处理器316传递一个开始DCB/片段到路由处理器之一时,该DCB/片段被放到为发送地址保留的接收队列上。当收到每个DCB后,接收者检查最后片段序列号或接收超时。当所有片段被收到并通过完整性校验后,路由处理器355执行传统协议/驱动所需的步骤,来指示接收事件。这一般将涉及重组包和可能复制相关的接收数据到传统模块352提供的缓冲器之中。在每个接收DCB所描述的被处理后,DCB被返回到自由DCB列表。网关基础级304是基于面向对象的概念(如Java、C++、smalltalk等),它为不同类型的应用提供一种访问和管理节点信息的方法,所述节点信息储存于节点数据库306、规则引擎314、事件处理器310以及网关300提供的其它服务之中。这允许终端用户应用302为终端用户提供很宽范围的有用性能。例如,网关基础级304使独立的应用和Jave浏览器程序能够列举、监视并控制节点数据库308中描述的节点。通过使用规则定义语言(RulesDefinitionLanguage)定义简单或复杂的规则,这些应用/程序可以定义节点之间的不同组合。通过把应用302自己注册为事件通知目标,也可以使应用302在变化发生时了解数据库变化。尽管以上对于本发明的特定实施例进行了描述和说明,但是本领域内的熟练人员仍然可以对其进行不同的改变和改进,而不背离附录A之后的权利要求中所定义的本发明的范围和精神。附录APLX协议一个廉价的、易于使用的、灵活的、可靠的、并且可伸缩的网络结构/协议,该网络结构/协议允许多个智能的和哑的节点通过一个共用的数据/控制信道进行通信。该联网协议允许网络上的任何节点把自己指定为活动的网络服务器。该活动的网络服务器轮询基于一个排队卡的客户节点。未激活的节点被自动从排队卡移去,因而减少不必要的轮询业务量。这种结构减少了冲突,而为真正的数据传输保留了带宽。该协议提供了为控制和数据联网两者所需的支持。通过在网络上分配时隙,并允许两个智能节点互相直接对话且由活动的网络服务器仲裁,为流式数据和同步数据提供支持。该活动的网络服务器也能够分配单独的数据信道,因此大量的数据业务可以独立于该主网络的运行地流动。作为活动的网络服务器的该网络节点,可以在动态的基础上更换,并且典型地由在一个静止的网络上起始一个传输请求的第一个节点决定。客户节点由使用寻址隔离模式的动态轮询进行寻址。该PLX结构,包括PLX协议,非常适于使用在建筑内已有的电力电源导线(电源线)作为网络介质的网络。使用已有的电源线来传输数据意味着用户不需要安装网络电缆。该PLX结构为网络节点提供强大的、确定性的媒体接入能力。节点通过使用寻址隔离模式的动态轮询进行寻址。提供了一个可行的数据信道,用于诊断、变元传送和一般的数据传送的应用系统。在一个实施例中,该PLX协议提供了全球单一的识别码、节点文件夹和32位的虚拟寻址能力。这使得该PLX协议与即插即用型的网络相兼容。在一个实施例中,该PLX结构提供了诸如同级、多个服务器、简单的配置、安全、数据报检测、多种数据格式以及优先权计划的特征。错误检测,如CRC和校验和以及数据完整性能力是一些PLX实施例的一部分。该PLX结构用于智能节点、哑的节点,并且该结构用于从简单控制到复杂数据流的数据处理。在一个实施例中,PLX可以由状态(state)机器逻辑或一个微控制器来实施。一个流线型的低端的节点(哑的节点)可以被实施来使用整个PLX能力的一个子集。中端的节点,如器具,适合在此公开的该协议。高端的节点(智能节点),如PC、PBX、内部通信/监视系统、打印机、鼠标以及其它数据密集型的节点也可以在PLX结构中找到适用性。该PLX为数据链路层、网络层和传送层定义了操作规则。在一个实施例中,PLX包括数据链路层的介质访问控制(MAC)部分。该MAC协议是管理怎样以及何时物理介质能够被每个节点访问的一组规则。在一个实施例中,该MAC协议使用一个减少在电源线上发生冲突的动态中心分布式令牌传递结构。该PLX结构允许网络上的任何节点指定自己作为负责仲裁令牌请求的活动的网络服务器。当节点为非激活状态时,它们进入一种“静止”状态,因而减少了任何不必要的“轮询”业务量。这种结构减少了冲突,而为真正的数据传输保留了宝贵的带宽。该PLX结构,在一些方面,是一个为控制和数据两方面联网所需的支持包的客户/服务器联网结构。通过在网络上分配时隙,并允许两个智能节点互相直接对话且由活动的网络服务器仲裁,能够为流式数据和同步数据提供支持。该活动的网络服务器也能够分配单独的数据信道,因此大量的数据业务可以独立于该主网络的运行地流动。作为活动的网络服务器的该网络节点,可以在动态的基础上更换,并且典型地由在一个静止的网络上起始一个传输请求的第一个节点决定。另外,该活动的网络服务器是独立于应用服务器地被选定的。应用服务器典型地在一固定节点位置。该网络服务器可以是任何能胜任的服务器节点。在一个实施例中,PLX提供组合的介质访问能力,包括一个为在未激活的(静止的)网络介质上的最初访问的数据报检测算法,被为插入到一个激活的网络上的中心控制的令牌传递跟随。这有效地把多个访问与一个无冲突的、令牌传递型的环境,以及确定性的附加的益处联系在一起。在一个实施例中,PLX用一个数据报的出现,来决定最初的介质可访问性。特别是通过匹配一个特定的前同步码/长度序列组合,来检测该数据报。在一个实施例中,通过使用一个仅仅传递令牌到在系统上的激活的节点的、集中式动态轮询算法,PLX减少在网络上的业务量。一旦一个节点变为非激活的,该节点就被从轮询的列表中移去。这种选择性的轮询过程,是基于节点通过一个被称为“在总线上发信号(spitting)”,把它们自己插入到轮询的列表中的能力。这种发信号(spitting)过程,提供对于轮询列表的实时的、飞击式(on-the-fly)插入。这种发信号(spitting)过程,允许多个节点响应被视为一个单个的系统响应。这个系统响应允许活动的服务器节点(正在进行轮询的节点)来进一步把要求插入到轮询列表的特定的节点区分出来。从轮询列表中实时的、飞击式(on-the-fly)的退出(de-insertion)插入由一个老化(aging)过程提供。经过一个预先定义的时间段后,如果他们没有使用令牌,未激活的节点最终被从轮询列表中移去(分离插入)。在一个实施例中,如果一个节点未能响应一个令牌请求,该时效过程进一步被加速。在一个实施例中,基于介质的带宽能力,轮询列表被设置为一个固定的容量(节点的数量)。传输具有较低的优先权的数据(如用于照明系统的控制数据)的节点,被从轮询列表中移去,目的是为传输具有较高的优先权的数据(如音频/视频流式数据)的节点让出空间。在一个实施例中,在该PLX中的介质访问控制(MAC)层,通过使用一个备用的接收缓冲器和忙响应信号交换,提供一种自我调节机制。在一个实施例中,自我调节是通过提供一个MAC报头,在每个节点中的用于保持该MAC报头的一个拷贝的足够大的接收区来完成。即使一个节点被先前的包请求完全淹没,通过一个忙响应,这个被淹没的节点也能够对一个请求作出响应。该忙响应通知正在传输的节点,正在传输的节点必须截止它的包突发或序列,因此根据每个接收节点的能力协调该系统。一个节点的加电时的自动通告特征,提供了远端数据库服务器的再同步。在一个新节点加电时,该新节点将通告它新出现在介质上。在一个实施例中,PLX提供优选的服务器选择和kick-start算法。因为PLX是一个客户/服务器型的结构,一个单个的节点被典型地选定来仲裁介质访问。在一个典型的电源线网络上,并非所有的节点要建立为平等的。因此,PLX的一个实施例允许一个用户选择一个处于最中心位置(如邻近一个开关板)的节点作为优选的“活动的网络服务器”。如果该优选的服务器未激活,远端的节点可以激活该优选的服务器。一个简单的唤醒算法允许一个未激活的优选的服务器再次变为激活的。在一个客户/服务器模型中,开始,一个节点请求访问介质的令牌。一旦一个客户节点被发给令牌,在一个特定的时间内,它可以接管该介质。在此期间,它可以与系统上的任何节点直接通信,而独立于服务器的涉及之外。在此期间结束后,介质访问控制被释放回服务器节点。因此,介质的仲裁首先以客户/服务器的方式进行,接下来是一个对等关系的时隙。在一个实施例中,PLX包括一个动态的仲裁服务器。该仲裁到介质访问的服务器,基于活动性被动态地指定。当第一个要传输包的节点,发现系统是“未激活的”,并且经过唤醒优选的服务器(如果有一个存在)的几次尝试后,出现这种动态的指定,承担活动的网络服务器的职责。在PLX网络上,任何具有服务器能力的节点都能成为活动的网络服务器。在一个实施例中,本网络协议提供了通过电源线介质发送和接收流式数据。在一个实施例中,流式数据包括数字语音数据。在一个实施例中,流式数据包括数字视频数据。在一个实施例中,通过电源线介质,该网络协议被用来提供数字PBX型功能和/或数字内部通信功能。在家里已有的电源线上,该网络协议可以被用来扩展宽带数字联网服务(如DSL、电缆、ISDN等)遍及家里。该网络协议可以同时处理和管理三种或多种联网业务控制业务;数据业务;以及流式数据业务(流多媒体数据)。该网络协议提供区分优先权方案,以根据一个给定的节点的联网需求(如一个为语音设备决定的需求),允许有保证的访问时间。PLXOSI模型图2中示出的OSI上面的五层203-207中的每一层,都给网络应用增加了有效的开销。如图3所示,PLX使用被称为公共应用语言(CAL)的一个相对小的应用层607,和一个相对小的传送/网络层603,来补充下边的数据链路层602和物理层601。601-603和607中的每一层,都被典型地表示在PLX顺从性节点中。如图3所示,PLX数据联网节点(智能节点),也可以包括在应用层207、网络层203和传送层204中的传统的OSI网络性能(如TCP/IP,IPX,Windows,NetWare,等)。PLX顺从性节点典型地包含数量减少的控制信息,该控制信息仅使用PLX堆栈的在PLX节点之间传递,如包含在601-603和607层中的。PLX物理层PLX物理层601处理与网络硬件、网络电缆,并且典型地,包括实际的硬件本身相接口的硬件细节。PLX物理层包括诸如调制技术、使用的频率、输出功率等属性。在一个实施例中,PLX使用如下所述的数字电源线(DPL)技术。PLX数据链路层PLX数据链路层602处理与介质100接口的细节,如寻址能力、介质仲裁计划、间隙之间的间隔、退出算法等。数据链路层602典型地包括一个报头,其中包括源/目的地址、长度和错误检测/校正数据,如循环冗余校验(CRC)或校验和数据。PLX网络层网络/传送层603,有时被称为网间网层,负责为数据包在网络上由一个地点到另一个地点进行路由。在PLX内,网络层603典型地处理使用在一个MAC报头字段中的系统、单个节点、套接字、和网络地址字段。PLX传送层PLX网络/传送层603,为驻留在其上面的应用层607,提供在两个主机之间的一个数据流。传送层603也包括序列号和/或请求/应答型的确认信息。与OSI传送层203相比,在PLX中,传送层603被减小规模并连成一个整体,来允许控制应用。传送层603提供请求/应答信号交换算法、重传算法、超时算法等。PLX几乎完全在一个MAC报头的控制字段中,实施网络/传送层603。PLX应用层PLX应用层607处理应用的细节,并且根据正在使用的是何种传输,PLX应用层607可以使用信号交换协议和/或请求/应答协议来确保包的发送。在OSI各层的协议中存在大量的重复字段。这种重复转换为更多的开销,使用更多的空间,并且需要附加的处理能力。在PLX协议中,许多OSI字段并不需要而被典型地省略掉。包括在不同的OSI协议中的不同的元件的检测,显示出数据链路层602在没有上面三层时,可以作许多过滤。这种过滤是有益的,因为数据链路层602经常典型地被限制在也负责硬件问题的硬件逻辑中,如多个节点为相同的通信信道竞争(如多个网卡为相同的网络连线竞争)。在一个实施例中,一个特定的网络节点的网络硬件,过滤除了目的地为该特定的网络节点的数据包以外的所有的东西。在这样的一个系统下,节点仅需要对一个数据包的数据部分进行语法分析。用于DPL的两个协议PLX优先地定义了两个协议用于数字电源线(DPL);一个低级协议和一个高级协议。低级协议定义。该低级协议提供了数据链路层602的一个限定,并限定了如何从相同的介质100,以相对较少的联网和传送功能进行包的过滤、发送和接收。高级协议定义。PLX节点包含数量减少的控制信息。每一个PLX节点使用一个通用的应用层607来控制特殊的节点属性。这允PLX系统可以具有不管节点类型的特征。在硬件报头被分离出来后,应用层607译码或分析控制信息。物理层数字电源线(DPL)技术规格PLX协议是一个多用途的协议,该协议可以与许多种类型的网络介质(如数据传输系统)一起使用,网络介质包括光传输、光纤传输、射频传输系统、双绞线传输系统、同轴电缆传输系统、卫星传输系统、数字电源线(DPL)系统等。DPL系统,也称为电源线载波系统,使用电力供给连线(如建筑物中的110伏特交流(VAC)电路)来承载数字数据。在一个实施例中,PLX协议被用于具有DPL的连接中,该DPL具有一个单个的低速率信道(350-1000kbps)、约为5.6MHz的低速载频、约为80dB或更好的动态范围、低的带宽使用率(依赖于速率,但约为1MHz)。在一个实施例中,PLX协议被用于具有DPL的连接中,该DPL具有多个速率信道(共4-8mbps)、直至30MHz或更高的高速载频、和约为80dB或更好的动态范围。在一个典型的DPL系统上,在数据之前的传输载波被典型地允许为至少20微秒,并且直到接收器检测不到载波为止,发送器停止发送之间的时间可以为15微秒或更长。低级协议层PLX技术规格从简单的控制到复杂的数据流网络,该PLX协议大小可调。在一个实施例中,该PLX协议被适配为可以权衡GenericCAI技术规格的大部分特征。在EIA-600中定义的CEBus,是用来控制总线设备的一种工业标准控制语言。EIA-600为用在家庭中的LAN中的通用应用语言提供了一个框架。GenericCAI在EIA-721系列标准(包括EIA-721.1、EIA-721.2、EIA-721.3和EIA-721.4)中定义。CEBus工业委员会(CIC)定义了一个家用的即插即用(HPP)技术规格,通过为使用该语言定义“语法”规则,该技术规格具体化了该框架。该HPP技术规格细节化了家庭中的产品和系统的一组行为特征,这将允许它们基于家庭的状态采取行动。例如,该技术规格区分了家庭中的不同条件,如“居住者不在”或“居住者在家并在睡觉”,来允许家庭系统采取适当的行动,如启动安全系统、关掉内部电灯,或设置温度。HPP技术规格也包括为开发基于Windows′95PC的家庭控制应用的信息。在EIA-600中定义的通用应用语言,为不同工业部门(如娱乐、计算机、加热/制冷、厨房用具等)生产的家庭中LAN产品之间的通信提供了一个框架。每个工业部门定义它的产品所使用语言的“应用环境”(如语法规则)。CIC作为支持组织被创立,该组织帮助不同的工业部门开发“协调的”应用环境。对于那些追求具有基于可互操作的产品的CAL的家庭LAN市场的工业部门,CIC的HPP是协调的应用环境的纲要。CEBus/GenericCAL技术规格在此全部插入作为参考。介质访问概述PLX可以是具有中心控制的令牌传递计划或DSMA/CTP的数据报检测多访问协议的特征。因为多个对等体被允许访问相同的物理介质100,PLX提出了为每个节点把数据放到介质100上时,使用的一组通用的规则。PLX从不同数量的协议集成了几个特征,来创建一个单独的、高效的、确定性的环境。PLX提供数据报检测。每个PLX节点可以检测介质100的业务量,如果介质100目前静止时,指定它自己。通过一个有组织的令牌传递型机制避免冲突。PLX包括为处理到介质的访问而选择一个单独的、中心的仲裁节点的方法。该中心节点(活动的服务器)负责确保在一个活动的系统上有一个令牌。PLX使用选择性的动态轮询来提供设计的简化、实施的简易性、无冲突的访问、系统的接收和随后释放令牌、和用于数据的可靠传递(请求/应答)的一个确认序列。当节点是“未激活”时,PLX提供维持“静止的”介质100的能力。典型地,在PLX中,只有“激活的”节点在介质100上通信。为即插即用功能,PLX也提供一个全球寻址计划,和隔离多节点争用介质100的一种算法。PLX也为流应用提供时间确定机制、或确保的时隙,和为快速回转时隙(times)而提供减少的单元长度(包长度)。PLX提供多速率支持、热交换、确认(athentication)和安全、控制和管理包。此外,在高层协议中,PLX提供许多控制联网的功能。结果,通过应用许多不同拓扑的先进功能,介质访问的方法被高度地优化。介质访问方法介质访问方法列出了用于获取对介质100的访问的规则。PLX获取对介质100的访问的方法典型地包括三步;1.数据报检测或“侦听”;2.在总线上发信号(spitting);和3.中心控制的令牌传递。根据在系统上出现的令牌,节点具有作为活动的网络服务器节点或作为一个客户节点的特征。在一个PLX系统上,对介质100的起始访问是通过侦听活动来完成,然后自我指定为活动的网络服务器,最后是活动的网络服务器的系统的中心控制的令牌传递。图5是展示介质访问算法的一个流程图,PLX用该算法来仲裁哪个节点被允许在介质100上“通话”。图5中的流程图由一个加电和通告过程框801开始,其中每个节点在加电后,通告它在介质100上的出现。通告完成后,过程前进到一个判定框802。该节点(空闲的)在判定框802处循环,直到接收到一个传输(Tx)准备好的命令,据此,过程前进到一个判定框803。如果在判定框803中,节点不在排队卡上或者节点是活动的服务器,过程前进到一个数据报判定框804;否则,过程前进到一个判定框816。在判定框816中,如果该节点接收到令牌,那么过程前进到一个传输包框814;否则,过程前进到一个超时(timeout)判定框810。在判定框810中,如果未发生超时,则过程返回到判定框816;否则,过程前进到数据报检测框804。在传输包框814中,过程传送一个传输包并前进到一个轮询框815。在轮询框815中,活动的网络服务器轮询激活的节点,如与图7相关的描述的那样,或者返回,如果节点是客户。完成轮询框815后,过程前进到一个判定框802。在数据报检测框804中,节点侦听介质一段特定的时间,然后前进到一个判定框805。在过程框804的侦听阶段中,如果介质醒来,则过程前进到一个LIP请求判定框806;否则,过程前进到过程框812。在过程框812中,节点发送一个“唤醒”包,并前进到一个判定框814。在判定框814中,如果已经发送了三个唤醒包而未得到响应,则过程前进到一个自我指定框813;否则,过程返回到数据报检测框804。在自我指定框813中,节点指定自己作为活动的服务器节点,并且过程前进到传输包框814。在LIP请求判定框806中,过程检测LIP请求的出现。如果没有LIP请求出现,过程前进到一个超时判定框809,否则,过程前进到一个过程框807。在超时判定框809中,过程检测来看一个特定包的时效期间是否已经过去。如果该期间已经过去,则过程返回到判定框802;否则,过程返回到LIP请求判定框806。在过程框807中,节点在总线上发信号(spit)然后前进到一个判定框808。在判定框808中,过程检测来看该节点是否已经被选中(draft)。如果节点被选中(draft),则过程返回到接收令牌判定框816;否则,过程返回到LIP请求判定框806。框802、803、810和814-816,是中心控制的令牌传递算法的部分。框804、805和811-813,是数据报检测(侦听)算法的部分。框806-809是在总线上发信号(spitting)算法的部分。如图5所示,开始的访问介质100是根据介质是“睡眠的”或“醒来的”,通过两种不同的方法之一来完成。如果介质是睡眠的,一个期望访问的节点将自我指定为活动的网络服务器。如果介质100是激活的(也就是说,正在被一个活动的网络服务器使用),则一个期望访问的客户节点将向该活动的网络服务器请求访问。该活动的网络服务器维持一个发出访问请求的客户节点排队卡。通过被称为“在总线上发信号(spitting)”的一个过程,一个客户节点请求被放到排队卡上。典型地任何具有服务器性能的节点,都可以指定自己作为活动的网络服务器,但是,在一个给定的节点中,并不要求包括服务器性能的特性。一旦一个活动的网络服务器被选定,它必须能够建立并维持包括一个要被轮询的激活的节点列表的一个“排队卡”。当所有激活的节点变为静止后(通过一个老化过程),活动的网络服务器释放作为活动的服务器的当前状态,并且介质100再次变为静止的(睡着的)。典型地,活动的网络服务器是被一个要在介质100上传输的节点自我指定的。当一个节点沉默一段时间后,该激活的节点被从排队卡上移去。当一个具有较高优先权数据的节点需要访问排队卡时,激活的节点也将被从排队卡上移去。排队卡典型地有一个最大的时隙(slots)数量。换句话说,排队卡有一个最大的可以进入排队卡的节点数量。时隙(slots)数量一般由在介质100上可用的带宽和不同的节点所需的带宽决定。如果N是排队卡中时隙的最大数量,t是一个特定的节点可以保持令牌的最长时间(以毫秒计),那么每个激活的节点至少约每隔N*t毫秒获得一次令牌。因此,排队卡提供决定机制,在此机制中一个激活的节点将在一个规则的、可预测的基础上得到轮询。例如,流式视频数据具有比流式音频数据更高的优先权。因此,如果N个流式视频节点已经进入到排队卡上,一个流式音频节点请求进入到排队卡上将被拒绝。但是,当该流式音频节点每次请求进入到排队卡上时,将被发给令牌。这说明了排队卡的一个属性。列在排队卡上的节点将被自动轮询,因此将在一个规则的基础上获得令牌而不必请求令牌。未列在排队卡上的节点,只有在请求令牌后或一个请求被放到排队卡上后,才收到令牌。一个特定的节点提供的数据的优先权,决定于与在如下所述的节点文件夹目标中共同描述的网络级别字段。对于一个特定的节点的网络级别,也可以在该节点地址(设备类型字段)的最高四位中找到。节点信号标志每个PLX节点管理两个本地信号标志,这些信号标志反应系统当前的状态和在系统中节点的涉及。这些信号标志帮助节点决定是否需要开始侦听过程。典型地,节点管理这两个信号标志,因为它们被用来获得到介质100的访问(当节点要传输时)。第一个信号标志反映“系统状态”。系统的状态是“正在使用(awake)”或“静止(asleep)”,这决定于介质100是否处于激活的状态(如,在介质100上检测到包)。第二个信号标志被称为“本地节点状态”。该本地节点状态反映一个节点的三个可能的状态之一,如下(1)该节点是一个活动的网络服务器节点;(2)该节点是一个激活的客户节点,或(3)该节点是一个未激活的客户节点。本地节点状态说明一个节点是否应开始侦听算法,该节点是否目前在排队卡上(正在被轮询),或该节点目前是活动的服务器。“系统状态”信号标志每个节点对系统是否正在使用或处于静止得出各自的结论。这个结论是基于排队插入请求包(LIP)在介质100上的出现。当一个节点检测到一个LIP包时,系统状态信号标志变为正在使用。如果经过一段时间后,LIP包未被检测到,该节点把系统状态切换为静止。这含义是,如果一个活动的网络服务器存在,它应该不时地发送LIP包来使客户节点保持于正在使用状态。一个节点使用这个信号标志来决定是否它必须侦听介质100。只有当系统状态为静止时,节点才需要通过一个侦听过程来争用介质100。“本地节点状态”信号标志在一个客户节点的最后传输后,活动的网络服务器,将持续一至十秒,分配令牌(轮询)到目前在它的排队卡上的这个客户节点。在此时,活动的网络服务器确定该节点完成了传输,并使该节点“老化”,从排队卡上去掉。客户节点必须能够检测这个。当客户节点正在接收到令牌时,它被认为是激活的。当客户节点目前没有接收到令牌,它被认为是未激活的。只有当通过一个称为“在总线上发信号(spitting)”的处理过程,被活动的网络服务器插入到排队卡中后,一个未激活的客户才能在介质100上传输。下表A1列出了可能的节点信号标志状态,和对于在介质上传输来说每个状态的含义。<tablesid="table1"num="001"><table>系统状态节点状态下一步传输行动正在工作激活的在排队卡上等待令牌正在工作未激活的不在排队卡上在总线上发信号(Spit)静止激活的不良状态侦听,然后指定作为服务器静止未激活的侦听,然后指定作为服务器</table></tables>表A1.有一个准备好的新的传输的节点的下一步行动数据报检测或“侦听”上文所讨论的系统状态信号标志,是决定一个节点是否开始侦听的主要因素。它也是决定节点是否应把自己指定为活动的网络服务器,或是否接受作为一个客户的顺从角色的主要因素。典型地,侦听只在开始在一个静止的系统上传输前执行。如果有任何节点在介质100上传输,则一个活动的网络服务器早已被选定来发送LIP包和仲裁令牌的分配,并且系统正在使用中。如果系统正在使用,节点应作为一个客户。当一个节点确定它有一个包准备好发送到介质100上,并且系统状态信号标志是静止,该节点执行一个侦听过程来决定它的下一步,并在这个起始过程中把冲突减到最小。这应是在PLX网络上,两个节点可能为介质100竞争的仅有的期间,并且会发生可能的未知冲突。因而,提供了一个加强的补偿算法。有两个在侦听中寻址的可能的情况(1)节点刚加电并需要传输它的“通告”或“CAL-ping”包,来宣布它加入到当前系统;或(2)节点是未激活的并正在尝试唤醒系统。在其中任一情况,如果一个服务器在侦听时被检测到,该节点应立即开始查找一个LIP包。一个LIP包将允许该节点插入到活动的网络服务器的排队卡上,并进行随后的令牌传递和节点传输。开始“侦听/连接测试程序(Ping)”通告一旦一个节点加电,则通过发送一个广播CAL-ping包,该节点通告其在系统中的出现。通过“推进”信息而不是总是尝试去“取出”信息,这样使得自动发现机制更加强大。因为刚刚加电的节点,没有关于系统的历史记录,与一个普通的唤醒过程相比,它的侦听算法稍有不同。在广播一个CAL-ping包之前,初始的侦听可能持续800ms。这是通过对业务实际侦听一段限定的时间,然后在那段时间内随机地传送一个广播唤醒包三次,如果该节点存在,允许优选的服务器轮询这个节点。这个序列重复三次,在每次结束时,广播一个CAL-ping包到所有节点,表明已成功地进入到系统上。侦听/连接测试程序(Ping)过程的这个序列由伪代码给出如下1)a)侦听介质100,持续一个小于125ms的随机数量的时间长度(查找一个LIP包)。b)发送一个广播唤醒包三次,其中间隔600μs间隙空间。c)继续侦听,以完成一整个125ms的时间段。2)a)侦听介质100,持续一个小于125ms的随机数量的时间长度(查找一个LIP包)。b)发送一个广播唤醒包三次,其中间隔600μs间隙空间。c)继续侦听,以完成一整个125ms的时间段。3)a)“侦听”介质100,持续一个小于125ms的随机数量的时间长度(查找一个LIP包)。b)发送一个广播唤醒包三次,其中间隔600μs间隙空间。c)继续“侦听”,以完成一整个125ms的时间段。4)指定作为活动的网络服务器,并且发送一个“CAL-ping”包来表明出现。5)取消指定作为活动的网络服务器。以上侦听/连接测试程序(ping)过程在节点加电后立即发生,因此这个过程所用的执行时间一般并非很长。如下所述,运行时的唤醒过程,经常被执行,因此理想地具有一个短的执行时间。运行时“侦听/唤醒”序列一旦一个节点加电后并在系统上通告它的出现,该节点开始工作在一种运行时模式中。在该节点运行时模式工作中,如果一个节点需要传输一个包到一个静止的系统上,它经过一个相似的事件序列,来尝试并唤醒一个优选的服务器。如果优选的服务器不存在,并且没有活动的网络服务器存在,那么该节点指定它自己作为活动的网络服务器,并开始轮询客户节点。为侦听/唤醒算法的一个伪代码列表给出如下。在如下给出的算法之外,为了更快的响应时间,节点也可以选择性地监视介质100并使用本地节点信号标志来反映系统的状态。该本地节点信号标志与唤醒包一起使用来进一步减少与这个过程相关的等待时间。1)a)侦听介质100,持续一个小于125ms的随机数量的时间长度(查找一个LIP包)。b)发送一个广播唤醒包三次,其中间隔600μs间隙空间。c)继续“侦听”,以完成一整个125ms的时间段。2)a)侦听介质100,持续一个小于125ms的随机数量的时间长度(查找一个LIP包)。b)发送一个广播唤醒包三次,其中间隔600μs间隙空间。c)继续侦听,以完成一整个125ms的时间段。3)a)侦听介质100,持续一个小于125ms的随机数量的时间长度(查找一个LIP包)。b)发送一个广播唤醒包三次,其中间隔600μs间隙空间。c)继续侦听,以完成一整个125ms的时间段。4)指定作为活动的网络服务器,并且发送一个“CAL-ping”包来表明出现。5)取消指定作为活动的网络服务器。在总线上发信号(Spitting)当系统上的一个节点有一个包准备好要发送,并且系统处于工作状态(一个活动的网络服务器存在并正在分配令牌)时,“发信号(spitting)”过程发生。该活动的网络服务器是被授权来允许在介质100上访问的唯一节点。该活动的网络服务器的排队卡是一个机制,通过这个机制,未激活的客户节点可以获得到介质100的访问。各节点发信号(spit)来进入活动的网络服务器的排队卡。在典型的运行时工作期间,网络将呈现两种状态之一静止状态或工作状态。根据网络当前的状态,发信号(spitting)过程稍有不同。静止和工作状态当活动的网络服务器确定没有节点目前需要服务(发送包),网络进入静止状态,并且作为结果,停止传送令牌。使网络停止活动之前,在一个特定的时间内,活动的网络服务器发送一系列掩码组LIP(LIPG)请求包。如果LIPG请求包序列没有得到来自任何客户节点的响应,活动的网络服务器变为未激活状态,并且网络变为静止状态。请求传输的节点到网络上的后续进入,随后通过上文所述的通常的争用处理、侦听算法来完成。工作状态象征特定网络上的节点,这些节点正在与一个或多个远端节点交换信息。在工作状态,介质访问由活动的网络服务器和它的排队卡控制。通过使用为目前在排队卡上的节点的一个令牌传递计划,和通过为尝试进入到排队卡上的节点的发信号(spitting),减少了冲突。“在总线上发信号(spitting)”序列在总线上发信号(spitting)的序列允许活动的网络服务器周期性地发送一个LIPG包。静止的客户节点被允许响应LIPG包。一旦发现一个响应,该活动的网络服务器发送一个未掩码的LIPD请求到所有的节点,希望得到带有需要令牌的节点的地址的一个单独响应。如果多于一个节点竞争令牌,将见不到响应,并且活动的网络服务器进入一个节点隔离序列。图6A和6B分别说明了一个活动的网络服务器和客户节点在总线上发信号(spitting)的过程。在图6A中,一个活动的网络服务器在总线上发信号(spitting)的过程,始于起始框901,此时开始一个节点变为活动的网络服务器。该过程由起始框901前进到一个轮询框902。在轮询框902中,活动的网络服务器轮询当前在排队卡上的所有节点。一旦轮询结束,该过程前进到发送框903。在发送框903中,活动的服务器发送一个未掩码的LIP请求,然后前进到一个判定框904。在判定框904中活动的服务器检测LoGI响应。如果收到一个LoGI响应,则过程前进到一个过程框905;否则,该过程返回到轮询框902。在过程框905中,该活动的网络服务器发送一个未掩码的LIPD请求,然后前进到一个判定框906。在判定框906中,活动的服务器检测一个直接ACK(DACK)响应。如果一个单独的DACK响应被接收到,则该过程前进到一个过程框907。如果多个DACK响应被接收到,或者如果没有接收到DACK响应,则该过程前进到一个节点隔离框910。在过程框907中,发送DACK响应的客户节点被加到排队卡上,然后过程返回到轮询框902。在过程框910(开始节点隔离算法)中,过程初始化一个LIPG掩码,并前进到一个过程框911。在过程框911中,该掩码被更新(如在掩码中的一个下一位被切换),并且过程前进到一个发送框912。在发送框912中,一个掩码的LIPG请求被发送,并且过程前进到一个判定框913。在判定框913中,过程检测一个LoGI响应。如果一个LoGI响应被接收到,过程前进到一个判定框915,否则,过程前进到一个过程框914。在过程框914中,在过程框911中最近被切换的掩码位,被恢复到切换前的值,并且过程前进到一个判定框915。在判定框915中,如果掩码中所有的位已经被切换,过程前进到一个过程框916,否则,过程返回到过程框911。在过程框916中,活动的网络服务器发送一个掩码的LIPG请求,并前进到一个判定框917。在判定框917中,如果一个DACK响应被接收到,则过程前进到一个过程框907;否则,过程返回到轮询框902。过程框903-907是一个服务器发信号(spitting)起始的序列的部分。过程框910-917是一个服务器发信号(spitting)节点隔离序列的部分。图6B是展示客户发信号(spitting)算法的一个流程图,在一个正在工作的网络上的一个客户,由一个开始框931开始。由开始框981,过程前进到一个判定框982,在此检测发送状态。如果该发送状态是“已准备好”,则过程前进到一个判定框983;否则,过程前进到一个空闲框988(该空闲框返回到判定框982)。在判定框983中,如果节点已经接收到系统令牌,则过程前进到一个发送框989;否则,过程前进到一个判定框984。在发送框989中,该节点发送一个数据包,然后过程返回到判定框982。在判定框984中,如果该节点接收到一个LIPD请求,则过程前进到一个过程框990;否则,过程前进到一个判定框986。在判定框986中,过程检查超时或系统静止状态。如果过程检测到超时和静止,则过程前进到一个过程框987,在此当前的节点指定它自己作为活动的服务器。在过程框990中,由LIPD的掩码与当前节点的节点地址相比较,并且过程前进到一个判定框991。在判定框991中,如果掩码与该节点匹配,则过程前进到一个响应框992;否则,过程返回到判定框982。在响应框992中,该节点响应网络服务器(恰当地带有一个LoGI或DACK),并且过程返回到判定框982。组LIP(LIPG)查询当网络正在工作时,活动的网络服务器定时地广播组LIP查询。一个组LIP(LIPG)查询,要求从任何数量的节点的一个逻辑的组隔离(LoGI)响应。在一个无冲突的机制中的一个正在工作的网络期间,这种机制给客户节点一个机会来被插入到排队卡上。LoGI包的优点在于,多个节点可以同时发送这种包(假设它们在同一个时间段上),结果将是一个单独的LoGI包。因此,由接收的节点看来,多个LoGI响应结果是一个单独的LoGI包。起始的LIP序列包是一个未掩码的组LIP(LIPG)查询,该未掩码的组LIP(LIPG)查询被发送来确定是否网络上的任一节点要开始LIP序列以插入到排队卡。如果发现一个LoGI响应,可能仅仅是一个单个的节点要插入,因此下一步发送一个未掩码的直接的LIP(LIPG)包。如果未发现一个直接的响应,则发送带有一个掩码地址的作为组包的后续的LIPG包。这是一个艰巨而低效的隔离机制,用来隔离一个特定的节点以插入到排队卡。这是通过系统地传送一个位掩码实现的,该位掩码一次隔离远端节点32位地址的一个单个的位。如果两个或多个冲突的节点同时请求令牌,必须执行这种隔离机制。直接的LIP(LIPD)查询直接的LIP(LIPD)查询被作为由一个LIPG查询的一个LoGI响应的结果发送。该LIPD查询的目的是加速LIP过程,这通过发送一个未掩码的LIPD请求到所有节点,希望只有一个单个的节点响应(这应是大部分时候的情况)。这个LIPD包由包括响应节点的地址的一个普通的DACK响应来响应。如果是一个单个的节点响应,则响应被发现,并且该节点的地址被恰当地加入到排队卡上。但是,如果LIPD请求未被发现,(由于多个节点同时响应)则活动的网络服务器继续隔离,通过普通的隔离算法,使用LIPG包来只选择竞争的节点中的一个,插入到“排队卡”。因此,该LIPD包仅仅用来加速隔离过程,希望仅仅有一个单个的节点响应请求。节点隔离序列如果一个节点响应起始的LIPG,但是由于某种原因由LIPD查询未发现一个单个的响应,则活动的网络服务器自动地进入节点隔离。隔离序列使用要求一个LoGI响应的LIPG包。这允许多个同时的响应被活动的网络服务器发现。通过发送带有第一个地址(最低有效的)位组的一个包,“活动的网络服务器”开始这个序列。当且仅当这个特定的地址位与它们自己的相匹配时,需要发送的节点响应这个包。这一算法是一种简单的“与”,随后和原始的掩码相比较。如果两个值相匹配,则用一个LoGI响应这个包。该活动的网络服务器,然后发送具有未用的预先匹配的掩码的下一个包,这个包带有下一个位组。再次,当整个位序列匹配时,节点将响应。如果没有节点响应,活动的网络服务器清除当前位,并重传这个包。这个过程将继续直到所有32位被识别并发现一个匹配。这时,单独地被识别的节点被加到活动的网络服务器的排队卡。中心控制的令牌传递(轮询)当系统正在工作时,希望给包括在排队卡上的每个节点(通过发信号(spitting)过程)一个确定性的时隙,在此时隙中节点可以访问介质100。进一步还希望给每个节点相同的机会在繁忙的介质100上发送。以太网缺乏上述的两个优点中的任何一个,而令牌环具有以上两个优点。令牌环具有一个缺点,它需要每个节点了解它的上行和下行邻居的地址,并且需要一个令牌持续存在/循环。传统的令牌环网络的开销需求,与PLX所关注的的哑节点不兼容。而且,一个电源线网络的特别的联网需求,也并非有益于这样严格的令牌循环。因此PLX引入具有一个动态的排队卡的中心控制的令牌传递(CTP)机制。在CTP中,活动的网络服务器节点负责确保一个令牌存在、每个需要令牌的节点得到它、静止的节点可以醒来并接收令牌、并且令牌被以一个确定性的方式公平地分配。在CTP下,活动的服务器以外的节点被作为客户来引用。活动的网络服务器的职责,是通过前述的数据报检测或侦听过程,自我指定的。经过一段预先确定的在介质100上无活动的时间段后,活动的网络服务器的职责被释放。在一个实施例中,活动的服务器的职责,经过无活动的约5秒钟后,被释放。在系统活动中,该活动的网络服务器负责轮询在排队卡中的每个客户节点,也允许新节点有机会通过发信号(spitting)过程把它们自己插入到排队卡中。图7是展示网络服务器轮询算法的一个流程图,由开始框1001开始,在此一个节点变为活动的服务器。过程由开始框1001前进到一个判定框1002,在此过程确定发送一个周期性的LIP包的需求。如果需要一个LIP包,则过程前进到过程框1010,否则,过程前进到一个过程框1003。在过程框1010中,节点执行与图6A一起描述的活动的服务器发信号(spitting)过程。在完成过程框1010后,过程前进到过程框1003。在过程框1003中,过程获得在排队卡中的下一入口,并前进到一个判定框1004。在过程框1004中,如果排队卡上的所有入口都已处理过(也就是,如果所有的客户节点都已经有一次机会讲话),则过程前进到一个过程框1011;否则,过程前进到一个过程框1005。在过程框1011中,令牌被分给活动的服务器(因此允许活动的服务器讲话),并且过程前进到过程框1005。在过程框1005中,令牌被发给从排队卡上得到的下一个节点,并且过程前进到一个判定框1007。在判定框1007中,如果一个响应超时发生,则过程前进到过程框1012;否则,过程前进到一个判定框1007。在判定框1007中,如果客户节点没有使用令牌,则过程前进到过程框1012。在过程框1012中,一个激活的节点的计数被减少,并且过程前进到判定框1008。在判定框1008中,如果所有的节点都是未激活的,则过程前进到一个过程框1009;否则,过程返回到判定框1002。在过程框1009中,活动的服务器回复为一个未激活的客户节点。包的类型和格式一个PLX网络上的包,可以根据包的目的使用不同的格式。不同的包的格式可以方便地分组为三个不同的类别。一种格式允许多个节点同时发送/接收相同的响应包而没有干扰或解调问题。这些包被称为逻辑组隔离(LoGI)包,并且主要被用来广播/重广播和确认。其它两种类型的包,被称为原始数据有效负荷包和命令有效负荷包,当一个单个的节点在任何给定点在线上通信时使用这两种包。一个原始数据有效负荷包,被一个需要发送/接收与它的应用有关的信息的应用使用。来自主节点的包是原始数据有效负荷包,任何CAL包也是原始数据有效负荷包。一个PLX命令有效负荷包被用来管理介质访问和流。PLX命令包在适配器的固件和硬件中产生和终结,并且不被传递到主节点上。PLX命令包便于令牌、确认、排队插入等的平滑流动,是所有的PLX网络所固有的。逻辑组隔离(LoGI)响应包当一个节点发出一个组请求(一个可能得到多个同时响应的请求)到网络上时,使用第一种形式。因为PLX希望是一个较少冲突的、或在一些情况下无冲突的环境,所以很难检测到冲突。因此,同时响应是可能的。如图8所示的LoGI包1100,包括一个两字节的NULL字段,跟着多个两字节的全“1”字段,并由一个两字节的NULL字段结束。在这种包中的数据是非常秘密的,但是它确实达到它的帮助分离组响应到一个单个的节点的目的。一个掩码的LIPG包一个在LoGI包之前。掩码意味着多于一个节点可以与掩码的地址匹配,因此,多个同时响应可能发生。LIPG包在后文描述。通过加长一个特定包中的1序列,LoGI包也可以包含一些非常简单化的数据。加长的包必须与一个时间位移一起使用,来标识不同类型的响应。广播包使用这种特性,来允许由一个或多个节点以同时的方式标识的一个忙的响应。有效负荷包第二种形式被用来在网络上承载一个有效负荷。这是用在网络上的最普通的形式,并且是用于发送和接收有用的数据信息的有效的形式。有效负荷包使用另外的两种形式,这两种形式指明接收者的范围以及它们期望收到何种形式的响应。它们具有组寻址(典型的广播包)和直接寻址的包类型。因为只期望一个单个的响应,所以组寻址的包只能接收LoGI响应包,而直接寻址的包接收直接的ACK确认或DACK包。有效负荷包类型进一步细分为两个不同的类型,这两种不同的类型决定在包中有效负荷的使用。它们是原始数据包和PLX命令包。原始数据包图9示出了一个原始数据包1200的格式,格式中包括一个前同步码字段1201、一个长度字段1202、一个长度字段1203、一个控制字段1204、一个目标地址字段1205、一个源地址字段1206、一个序列字段1207、一个确认字段1208、一个DSK字段1209、一个SSK字段1210、一个有效负荷字段1211和一个CRC字段1212。原始数据包1200由一个活动的服务器节点或客户节点发送。长度字段1202、长度字段1203、控制字段1204、目标地址字段1205、源地址字段1206、序列字段1207、然后为确认字段1208、DSK字段1209和SSK字段1210,是一个MAC报头1215的组成部分。有效负荷字段1211包括要被一个适当的有效负荷处理器分析的应用层信息。主机PC和CAL译码器是有效负荷处理器的例子。在一个实施例中,原始数据包1200有一个三字节的前同步码字段1201,一个13-15字节的MAC报头1215、一个直至255字节的有效负荷部分1211和一个2字节的CRC1212。PLX(外部的)命令包通过为两个节点通过简短的包序列通信提供一个方法,PLX命令包被使用以便于数据流上下介质100。关于PLX命令包的变化的描述如下令牌包一个PLX令牌包1300的格式如图10所示,包括前同步码字段1201、长度字段1202、长度字段1203、控制字段1204、目标地址字段1205和CRC字段1212。长度字段1202、长度字段1203和控制字段1204,分别具有0x05、0x05和0x17的(十六位进制)值。令牌包1300被发送到直接的地址节点,并请求有效负荷包的两种中的一种。不需要留意的节点应简单地直接确认(DACK)(状态字段设置为0x03),意思是它们没有任何东西要表示并且将不使用该令牌。客户节点在正在工作的网络上传送之前,需要调用一个令牌(通过LIP过程)。只要一个客户节点继续使用令牌,活动的网络服务器将继续交给它令牌。但是,如果客户节点重复地以一个“令牌未被使用”的响应来回应,则活动的网络服务器将使该节点老化并且该节点被从排队中移去。一个令牌包包括通常的MAC报头(减去一个源地址)和CRC,但是,数据字段未被使用(数据字段的长度为0)。令牌只能来自地址固定为0xfffffffe的“活动的网络服务器”,因此不需要源地址字段。直接确认(DACK)包一个PLX令牌包1400的格式如图11所示,包括前同步码字段1201、长度字段1202、长度字段1203、控制字段1204、目标地址字段1205、一个状态字段1401和CRC字段1212。长度字段1202、长度字段1203和控制字段1204,分别具有0x06、0x06和0x07的(十六位进制)值。一个DACK包被一个接收节点发送,来确认包或包序列的接收有效。DACK包只由直接地址信息包返回(LIPD包除外)。一个DACK包被用来终结在网络上两个节点间的典型的信号交换序列,并且结果涉及三个节点…1)活动的网络服务器、2)请求的节点和3)响应的节点。(如果活动的网络服务器是当前请求的目的地,请求/响应节点也可以是“活动的网络服务器”。)该DACK的状态字段根据接收包的节点类型(活动的网络服务器或客户节点)改变。DACK包送回请求的节点(由响应的节点),释放控制给请求的节点来继续一个包流,DACK包送回“活动的网络服务器”(由请求的节点),释放控制给“活动的网络服务器”,表示一个包流的结束。如果一个响应或DACK包没有接收到,请求的节点负责重复请求一个包。该DACK包包括一个典型的MAC报头和CRC,以及一个1字节有效负荷。状态字段包括被接收包的信息,并在这个字段中被返回。状态字段1401的值列在表A2中。表A2.DACK状态字段1101的值DACK节点描述0x0全部接收缓冲区满(失败)0x1全部失败(多信道响应)0x2服务器令牌由节点使用0x3服务器令牌未被节点使用0x4服务器令牌响应唤醒请求0x9全部打印机序列编号错误0xa全部打印机未插入错误0xb全部打印机脱机错误0xc全部打印机一般错误0xd全部打印机无纸错误0xe全部打印机不能识别错误0xf全部成功应当注意,这些信息是在实际的介质100本身上被传递,并且可能不是传递到主机节点的状态。请见关于内部PLX包的部分,关于被传递到主机的状态信息的更多信息的Tx状态。排队插入包(LIPD和LIPG)图12展示了一个PLXLIPG包1500的格式,PLXLIPG包包括前同步码字段1201、长度字段1202、长度字段1203、控制字段1204、目标地址字段1205、一个掩码字段1501和CRC字段1212。长度字段1202、长度字段1203和控制字段1204,分别具有0x09、0x09和0x23的(十六位进制)值。图13展示了一个PLXLIPD包1600的格式,PLXLIPD包包括前同步码字段1201、长度字段1202、长度字段1203、控制字段1204、目标地址字段1205、一个NULL字段1601和CRC字段1212。长度字段1202、长度字段1203和控制字段1204,分别具有0x09、0x09和0x23的(十六位进制)值。排队插入包(LIP)被定时地由“活动的网络服务器”发送,以允许新接收的成员进入已有的排队卡。这是由两个单独的包来完成的,它们都被广播到正在侦听的节点。第一个包,LIPG包1500,包含LIP掩码字段1501。在用一个LoGI响应回应之前,该掩码1501必须与远端的地址相匹配。第二个包,LIPD包1600,通过使响应的节点用包含它的源地址(以便插入到排队卡中)的一个DACK包来响应,被用来加速插入过程。因此,LIPG包被掩码,并且具有在LIP掩码字段中的一个相应的位序列。一个节点应使用一个LoGI包来响应LIPG包。相似地,LIPD包未被掩码,意思是,任何希望进入排队卡的节点(这意味着该节点并未在排队卡上),应使用一个DACK来响应。有效负荷包帧格式以下是可能出现在一个有效负载类型的包中的每个字段的描述。这对原始数据和PLX命令包类型两者都成立。尽管前同步码/开始序列并不是包格式的部分,但是它是预先确定的位模式,这种位模式被用来进行检测载波、把硬件与输入的包同步、决定位计数或在当前包内的后续字节的线速率。前同步码的长度由建立一个有效载波的出现和在线路上同步所需的位计数时间的最小值决定。前同步码1201的位模式为值序列0xaa第一个同步字节0x31第一个同步字节0xnn速率/第三个同步字节速率(或第三个同步)字节确定输入数据(由长度字节1202开始)的速率,概述如下值速率0x55低速率-650k0xdd中速率-1000k0x99高速率-1.19m0x11保留最后,该前同步码之后是两个双重的长度字节1202-1203,1202-1203描述包的长度。这些字节将以新的速率进入。长度字段长度字段1202-1203被用来指示输入包的长度。长度字段1202-1203被硬件使用(在缺少载波检测信号时)来确定有效包的接收。一旦包的长度达到后,就为有效性检测CRC字段1212。一个PLX包的长度因此最好限制在总共256字节之内(不包括前同步码字段1201和CRC字段1212)。长度包括MAC报头1215(控制、地址等)、可选字段和有效负荷字段1211。长度字段被重复两次(1202、1203)来确保输入数据流的有效性(它作为前同步码的一个延伸)。在包接收开始前,长度字段1202-1203必须相互匹配(前同步码也匹配)。控制字段如上文所示,有效负荷包可以是以下两种类型之一PLX命令包或原始数据包。PLX命令包类型可以进一步分类为两个子类型外部和内部PLX命令。内部PLX命令包,是指通过本地连接(USB、1584、串行等)在硬件和主机节点的驱动之间的信号交换。外部PLX命令包,是指在电源线介质100本身上的信号交换包,它管理对介质100的访问。控制字段1204根据包的类型而改变,如表A3所示,每一个位表示一个特定的定义。表A3控制字段1204中的位位PLX(外部)PLX(内部)原始(非PLX)0包_类型(1)包_类型(1)包_类型(0)1PLX_子类型(1)PLX_子类型(0)原始_ACK_类型02PLX_ACK_类型保留(0)原始_ACK_类型13保留(0)保留(0)密码4外部_子类型内部_子类型套接字5外部_子类型内部_子类型保留(0)6外部_子类型内部_子类型PID7外部_子类型内部_子类型保留(0)包类型包类型位被用来指示一个给定的包是否是PLX类型、原始数据类型或非-PLX类型。因为PLX协议请求得到不同的处理,并在大多情况下由微控制器固件处理,并且原始数据包典型地由一个单独的应用或主机软件处理,所以在控制字段中进行区分是有益的。原始数据包,典型地包含要被传递到适当的应用软件的原始有效负荷信息。这种情况的一个例外,是包含微控制器中的翻译器的部分和在主机中的部分的CAL包。位0包类型1PLX命令包=10原始数据包=0PLX子包类型PLX命令典型地为两种形式之一。第一种形式是来自电线的由另一个节点的一个请求,第二种形式是来自主机的一个请求,来自主机的请求并不送到电线上。因为微控制器固件对这两种类型的响应进行区分,并且这两种类型彼此是完全独立的,所以建立这个位。位1PLX子包类型1外部的PLX命令包=10内部的PLX命令包=0PLXACK类型令牌和DACK命令包被用来传送到介质100访问的权利,并终结一个序列,在此“活动的网络服务器”暂时释放对介质100的控制到另一个节点。另外两个PLX命令包,LIPG和LIPD,要求一个响应包。该响应类型是LoGI类型或DACK类型两者之一。这个位确定节点应使用什么类型的响应。位2PLXACK类型1用一个DACK响应=10用一个DACK响应=0PLX子包外部的类型PLX技术规格,提供在一个中心控制的(服务器仲裁令牌)令牌传递系统中,两个节点之间的无连接的、有确认的和无确认的数据传送服务。这些位允许这种通信进行。在一个客户开始发送前,活动的网络服务器把一个直接的令牌放到介质100上。一个客户节点,使用直接返回活动的网络服务器节点的一个DACK响应包,终结到介质100的访问权利。当轮询客户节点时,活动的网络服务器维持激活的节点的一个排队卡。为进入到排队卡上,一个客户节点恰当地响应一个直接的LIP请求(LIPD)或一个组LIP请求(LIPG)。节点一旦在排队卡上,它们将被轮询,并且它们可以以确认的或非确认的形式,发送和接收具有有效负荷信息的包。以下是一个在介质100上被允许的有效的PLX子包外部的类型的一个表。位(7、6、5、4)字节的值包的子类型00000x07DACK00010x17令牌00100x27LIPD0x23LIPG其它…保留注如果一个DACK/GACK未被请求的节点,在预先确定的间隙间隔要求内接收到,则发送的节点(请求的或响应的)负责重传该请求(响应)。PLX子包内部的类型PLX技术规格允许在一个主机节点上,如一台PC上,存在协议端口。周期性地,该主机节点需要访问在所连接的节点上的信息,主机节点物理上与该节点连接。这被认为是一个内部的PLX请求,因为该请求是为所连接的节点而发,并且一般不应被放到电线上来被发送到一个远端的节点。以下是可能的内部PLX子类型的描述。位(7、6、5、4)字节的值包的子类型11110xf1信号交换错误00010x11CAL请求00100x21CAL响应00110x31Tx状态11xx保留内部的子类型被从主机发送并被硬件吸收,并且一个适当的响应被返回到主机节点。内部的包从来不被发送到介质100上。因而,这种包类型不在有效负荷包部分下定义,但是在PLX(内部的)主机包定义的部分中。原始ACK类型原始ACK类型确定了什么类型的响应应跟随在当前的原始数据包之后。响应类型具有以下四种形式之一突发(无响应)、双LoGI、LoGI和DACK。突发的类型是自我说明性的,包被一个接一个地发送。一个突发序列的最后一个包,应当具有一个指定的不同的ACK确认类型(为完成该突发序列,使用一个响应)。一个双LoGI序列允许发送组或广播请求。如果一个节点不能缓存这个包,则该节点在第一个间隙间隔内响应,如果该节点正确地接收和分析这个包,则它在一个延迟的间隙间隔内响应。LoGI响应被导向一个单个的节点,并且是最有效的响应机制。一个LoGI包的长度具有最高的带宽利用率,但是不能包含关于响应的很多信息。DACK响应被导向一个特定的节点,但是与LoGI类型相比,能够包含响应内的很多信息。位(2、1)包的子类型00突发01双LoGI10LoGI11DACK密码密码位允许由验证字节开始的包内容被加密。一个加密方案使用一个256位Diffie-Hellman信号交换来进行密钥交换,此后,一个秘密的32字节矩阵被通过介质100安全地发送。随后的事务可以为安全通信使用加密矩阵。位3密码当前的包被加密=1当前的包未被加密=0套接字典型地,一个PLX原始数据有效负荷包将包含以下字段长度。字段长度前同步码12013字节长度1202、903重复的2字节控制12041字节目的地址12054字节源地址12064字节有效负荷12110-255字节CRC12122字节当同一个节点上有多个应用时,通过使用一种机制来使包能够被路由到在一个特定的节点地址中的适当的应用。这些类型的应用使用一个套接字字段。第一个字节是目标套接字地址,而第二个字节是源套接字地址。因此,由于设定这个位,MAC报头的长度增加2个字节。当使用时,这个字段将紧跟着确认字节字段,并且如果以下的位被置1,则它就被包括进来。位4套接字1包括套接字字段0不包括套接字字段协议ID(PID)每个包都包含能够被较高级协议,如IPX、TCP/IP或CAL,解析的信息。PLX仅仅被用作传送装置,以封装要穿过网络被发送/接收的这些类型的包。典型地,较高级的解析程序存在于一个主机系统上;但是,需要硬件来包含CAL解析功能的一个最小设置。这样,硬件解析CAL请求,并把所有的其它请求交给适当的有效负荷处理程序。一些协议信息可以驻留在硬件中(如在ROM、FLASH存储器等之中),其它协议信息由主机节点解析。这个位决定是否需要硬件协议处理器来开始解析这个包。位6协议ID(PID)1协议ID存在(微解析)0协议ID不存在(原始-主机解析)原始包的含义是数据的第一个字节不是这种类型的协议的一个字节编码,而是协议报头本身的第一个字节。具有PID解析性能的包译码第一个字节编码来决定由哪个协议解析这个包。以下是当PID位被设定时可用的选择。第一个数据字节代表解析当前的包所需的协议类型字节的值定义类型0xff保留n/a0xfe完成的包cebusResp0xfd失败的包cebusResp0xfc错误的包cebusResp0xdf-0xfb保留n/a0xa0-0xde前后关系编号(CAL)cebusCmd0x9f保留(CAL)cebusCmd0x00-0x9e前后关系级别(CAL)cebusCmd目的地址字段目的地址字段1205包含当前包的目的节点。当一个节点有一个请求或响应另一个节点的请求时,它把响应包的目的地址,放到目的地址字段1205中。如果该节点只能与活动的网络服务器或数据库服务器通信,它将把那个地址放到目的地址字段1205中。否则,目的地址一般由请求包的源地址字段1206中得到。一些PLX地址是众所周知的。这些众所周知的PLX地址列出如下地址描述0x00000000-0xffffffef有效的单个节点地址0xfffffff0-0xfffffffc保留0xfffffffd应用服务器节点地址0xfffffffe活动的网络服务器节点地址0xffffffff广播节点地址源地址字段源地址1206包含用于当前包的节点地址。当一个节点有一个请求或响应另一个节点的请求时,它把它自己的节点地址,放到源地址字段1206中。该节点地址使用8字节GUID的一部分,与节点的类型结合,形成一个四字节的节点地址。使用由GUID的最低有效的7个半字节,并将节点的类型盖写节点地址的最高有效半字节(第8半字节)。例如If…GUID=0x123456789ABCDEFANDNoteType=0x03Then…SourceAddress=0x39ABCDEFEndIf序列编号字段序列字段1207为一个主机应用,提供重建或重组一个数据包或序列的能力,为了在介质100上传输,该数据包或序列被分为较小的包。重复的序列编号可以被抛弃,而未收到的序列编号可以被重传。编号为较长的数据流提供了数据完整性。在序列字段1207内的值决定于应用,并且如果需要,可以为另一个应用使用。确认字段确认字段1208允许每个包在接收完成前被确认。确认字段1208典型地通过对于加密矩阵的第一个两字节求异或而被植入(seeded)。因此,在一个安全系统内的所有节点将植入(seeded)相同的确认值,并且所有这些节点都应通过这个确认程序。该确认字段为增强完整性被进一步加密。有效负荷字段数据有效负荷字段1211被用来为接收节点提供信息。有效负荷数据的第一个字节可以包含决定怎样解析内容的一个字节编码。这个第一个数据字节与上文所述的原始(RAW)位共同使用。循环冗余检验(CRC)字段在已发送的包中,循环冗余检验(CRC)字段1212被用来提供一个可靠的错误检测技术。为了确认,根据完成和比较,它被重新评估。不能通过这项检测的包被抛弃。CRC算法被选得足够高效而且简单,以提供理想水平的可靠性而没有不适当的开销(在软件和硬件中)。提供一个这样的CRC算法是理想的,该算法足够快可以为发送和接收的包进行实时的(on-the-fly)CRC计算。实时计算(当一个位或字节被收到,CRC就被更新,而不是等待整个包被收到,对于发送也是同样)不是强制性的,但是有助于系统的总的处理能力和性能。在一个实施例中,G(X)由G(x)=x16+x15+x11+x8+x6+x5+x4+x3+x+1给出。PLX(内部的)主机包PLX内部的主机包永远不到介质100上,这样,包的描述看起来较简单。不需要前同步码1201,不需要重复的长度字段1202、903,不需要地址字段1205、906,也不需要CRC字段1212。图14展示了一个PLX内部的主机包的格式,包括一个长度字段1701、一个控制字段1702和一个数据字段1703。数据字段1703包含控制字段指定的任何东西。如前面的控制字段的定义(它也应用于PLX内部的主机包)所示,存在在硬件和主机节点间通过的许多包,它们促进业务流。以下是每种类型的包的定义。CAL请求包图15展示了一个CAL请求包1800的格式,包括一个长度字段1701、一个控制字段1702和一个CAL数据字段1803。控制字段1702的值为0x11。一个CAL请求包1800被主机节点发送到硬件节点,以接收表示在硬件上的CAL信息。因为PLX节点可以具有应用编码或独立于硬件/ASIC的一个主机处理器,CAL信息也可以在这两个独立的处理器之间传播。这样,主机处理器从所连接的节点定时地收集CAL信息。CAL响应包图16展示了一个CAL响应包1900的格式,包括一个长度字段1701、一个控制字段1702和一个CAL响应字段1903。控制字段1702的值为0x21。由于与上文所述同样的原因,一个CAL响应包被由硬件节点发往所连接的主机节点。这个响应包1900作为对一个在前的CAL请求包1800的响应而被发送。Tx状态包(单信道、速率)图17展示了一个单信道CAL响应包2000的格式,包括一个长度字段1701、一个控制字段1702和一个数据字段1903。控制字段1702的值为0x21。图18展示了一个多信道CAL响应包2100的格式,包括一个长度字段1701、一个控制字段1702和一个数据字段2103。控制字段1702的值为0x31。有两种格式的Tx状态包。一种格式是为单信道、单速率的应用,使用时控制字段的值为0x21。第二种格式是为多信道、多速率的解决方案,使用时控制字段的值为0x31。单信道、单速率的解决方案只有两个可用的Tx缓冲区,这两个Tx缓冲区的状态被定时地通过一个内部的PLX信号交换传回主机节点。这些Tx状态包的目的是闭合关于被从主机节点交给硬件的显著的传送事件的环。经常,在一个DACK包内被返回的相同的值,为了与这个发送事件有关的信息,将被传递给主机,但是,很多时候DACK是到一个外部的PLX事件,在此情况下,该DACK值不应被交给主机节点。当主机节点发起传送请求时,该DACK值被交回给主机节点。相应地,PLX使用如下所示的重复的DACK状态值。在介质上得到的DACK状态值0x0=接收缓冲区满(失败)0x2=令牌被节点使用(未被传给主机)0x3=令牌未被节点使用(未被传给主机)0x4=令牌响应“唤醒”请求(未被传给主机)0x9=打印机序列编号错误0xa=打印机未插入错误0xb=打印机脱机错误0xc=打印机一般错误0xd=打印机无纸错误0xe=打印机未知错误0xf=成功值0x9到0xe来自打印机节点的DACK响应。打印机响应值被未改变地传回主机节点。值0xf是一个成功的DACK响应,如果是主机发起请求,则这个值被未加改变地传回主机节点。值0x2到0x4是到外部的PLX命令包的DACK响应值,不应被传回主机节点。唯一奇怪的状态值是0x0,0x0在电线上的意思是接收节点忙,因此无法接收包。硬件识别这种状态并将重传这个包(经常是节点并非忙)一个特定数量的次数。如果接收节点在一段非常长的时间一直处于忙状态,则该包被最终放弃,并且一个“失败-0xf”响应状态被传回主机节点。一个0x0的值被传回主机节点不表示任何含义。这是传输事件未被完成的缺省值,主机节点将等待直到一个非零状态被放入这个字段中。值0x1从来不在电线上被返回。如果一个节点接收到一个有错误数据的包,它仅简单地不响应这个包,发送的节点将被要求重传这个包。只有当一个发送包超时并达到它的最大重传次数,值0x1才被传回主机。以下是一个展示一般被返回主机节点的Tx状态值的表(注意这些值并非在所有的情况下与DACK响应值相同)Tx状态数据字段值0x0=对此Tx缓冲区无Tx状态0x1=失败(Tx超时或接收缓冲区满)0x9=打印机序列编号错误0xa=打印机未插入错误0xb=打印机脱机错误0xc=打印机一般错误0xd=打印机无纸错误0xe=打印机未知错误0xf=成功这个意思是以下的DACK信息未被通过一个内部的Tx状态包传给主机节点。未传给主机节点的另外的Tx状态信息0x0=接收缓冲区满(失败)0x2=令牌被节点使用(未被传给主机)0x3=令牌未被节点使用(未被传给主机)0x4=令牌响应“唤醒”请求(未被传给主机)Tx状态字节被进一步分为两部分,每部分半字节,代表两个Tx缓冲区状态。在Tx状态字段中的值以及它们各自的含义列出如下。Tx状态值举例0x0f=第一个Tx缓冲区成功发送0xf0=第二个Tx缓冲区成功发送0xff=两个Tx缓冲区成功发送0x1f=第二个Tx缓冲区失败,第一个Tx缓冲区成功等…Tx状态包(多信道、速率)Tx状态包的第二种格式用于多信道、多速率的解决方案。全部前面论述的关于单信道Tx状态包,以及它如何与DACK值相关,依然适用。不同点在于,包含在多信道/速率Tx状态包中的数据信息的量。该包将基本包含一个代表每个信道的单个的前文定义的状态字节。结果是多个数据字节,每个字节代表一个具有两个独立的Tx缓冲区的单个的信道。包定时、间隔和重发为在介质100上传输的所有的包,必须符合严格的定时要求。这些定时要求是使该系统平稳而无冲突地运行的规则。为了恰当地运行,必须严格地、强制性地坚持这些规则。在平时运行中,一个“活动的网络服务器”出现在系统上,并且仲裁所有激活的节点到介质100的访问。以下假设适用于这样一个出现在介质100上的激活的状态。在介质100上未激活,意味着每个节点都处于静止状态,并且在指定节点作为“活动的网络服务器”前,必须经过平常的“侦听”过程。进一步,该PLX系统的特征在于确认的信号交换序列。确认包要在特定的时间间隔内被返回。除了确认包(DACK、LoGI或双LoGI)外,传送任何信息前都需要令牌包。活动的网络服务器是具有传送令牌和LIP包权利的唯一节点。客户节点仅仅传送有效负荷和确认包。典型的包定时图19是展示包定时和间隔的一个定时图。包定时的定义涉及第一个参考时间2202和第二个参考时间2204。第二个参考时间跟着第一个参考时间2202,之间有一个平均的包间间隙(I/Gap)50μs(微秒)。以上所示的图假定一个运行在650kbps的系统的定时。除了间隙定时外,所有的值都应被调整为如表A4所给出,表A4中上标1表示一个参考第一个参考2202的时间,上标2表示一个参考第二个参考2204的时间。表A4包定时350kbps700kbps1.2mbps1.4mbps最小I/Gap115μs15μs15μs15μs平均I/Gap150μs50μs50μs50μs前同步码130μs65μs38μs33μsLoGI包2140μs70μs40μs35μsDloGI包2185μs92μs54μs46μsDACK2335μs168μs98μs84μsTxRetryLoGI1205μs103μs61μs52μsTxRetryDACK1400μs200μs117μs100μsTxRetryDloGI1320μs160μs94μs80μs内部令牌13+ms3+ms3+ms3+ms在平时状态下,典型的包定时需要接收包的节点在一个预先确定的时间内响应。除LoGI/双LoGI确认包外,这个响应时间对于所有的包是一致的。因此,包定时的两种情况是1)LoGI/双LoGI响应和2)所有的其它响应。其它包定时在一个特定的时间内,节点把一个包传回有效负荷包发出的节点,突发包和确认包除外,它们不需要响应包。响应包的类型可以是DACK包、LoGI包或有效负荷包。响应包符合上文中图19所示的间隙间隔需要。最小的响应时间典型地长于15微秒,最大的响应时间典型地不应超过50微秒。如果一个发送节点未接收到前面的发送的确认,为了增加传递的可靠性,它必须开始一个重传过程。这个重传过程典型地在最长的可能的确认序列或一个DACK包加上最长的可能间隙间隔或在650kbps时约700微秒后开始。节点特定信息每个节点用一个特定数量的信息配置,形成了该特定节点的特性。PLX节点需要这个最小量的信息,以在系统上实现完全的功能。唯一标识、可寻址性和全球唯一标识(GUID)当一PLX节点插入一个电力系统中时,它可以马上准备好行动。每个节点具有一个烧入的序列号,其中最低有效的28位被用作该节点运行时的地址。这并不能确保全球的单一性,但是她确实限定了可能性,因为你找到具有冲突地址的两个节点的机会是1比268百万。这个运行时的长地址只轻微减少吞吐量,但是在简单化系统时(因为节点从工厂出来时已预先设置),它增强了即插即用的能力并使用容易。普通的设备环境和节点文件夹目标CEBus/GenericCAL兼容节点,至少有一个普通的设备环境和一个具有相关的实例变量(IVs)的节点控制目标。PLX背离CEBus/GenericCAL定义的报告条件和节点寻址,(两者都与该PLX客户/服务器结构有关,而与CEBus/GenericCAL的对等结构相反。因此,PLX重新定义了普通的设备环境/节点控制目标,作为具有稍微不同的IV描述的节点文件夹目标。而且,每个PLX顺从性节点包含与节点文件夹目标相关的实例变量。每个节点都负责包含一个预先定义的属性组,该属性组标识节点并把节点放到具有一般已知属性的一组节点类型中。每个节点的节点文件夹目标信息,最好被硬性编码进在该节点中的非挥发性存储器中。该信息根据请求被发送到服务器。一个节点文件夹目标由一个实例变量的列表组成。每个PLX节点至少包括,一个普通的设备环境(0x00)、一个节点文件夹目标(0x01)和特定的实例变量(IV),如以下表A5所示(其中R/W表示读/写)。表A5<tablesid="table3"num="003"><table>字节)hR/Wdarea_address用于路由和网络标识目的(1字节)。这个IV总是全球可读(与network_name一起)。aR/Wdunit_address用于直接寻址包的节点ID(4字节)tRdnetwork_class定义设备的网络种类,并将被用于重写该设备MAC地址的最高四位,以区分令牌分配的优先次序。以下是优先次序和与网络类型相关的值0x01视频系统Ⅰ0x02视频系统Ⅱ0x03音频系统Ⅰ0x04音频系统Ⅱ0x05保留0x06安全系统0x07应用监视系统0x08HVAC系统0x09照明系统0x0a应用系统0x0b数据联网系统0x0c保留0x0d保留0x0e保留0x0f通用系统fRdbuffering以字节为单位的接收缓冲区大小xRcproduct_rev产品修订等级(ASCⅡ字节)bR/Wddynamic-mask包括可以由一个单个位表示特征的一些动态节点功能。位0混合模式1=允许</table></tables>下表A6列出了被“应用服务器”存储、管理和维护,并存在于应用服务器的数据库中的客户IV。因此,客户不需要涉及有关存储或提供关于这些IV的信息。仅为主要情况的通用设备环境的部分,也是一个规则目标(0x03),该规则目标使用由CAL定义的数据存储目标,以及为我们的目的而定义的一些单独的IV。表A6规则目标允许远端的节点使用一个方法,来在规则列表中增加(继承)、删除(不继承)以及查看(获取矩阵)规则。通过提供一个通用的设备环境,该网络能够包含一个节点列表。节点能够包含一个设备环境列表。节点能够有每个设备环境的一个目标列表。给出目标列表,节点也能够包含特定的实例变量。许多这些列表在GenericCAL技术规格中(而不是网络和节点列表)被说明。当被要求时,节点使用上文所示的为它的特定配置的节点文件夹的特定的部分进行响应。该节点文件夹允许一个自动配置特定节点的方法,该节点在所考虑的网络中是唯一的。为了被唯一地标识,重复的节点能够提供另一水平的的配置。安全通过一个两步过程实现安全。开始,在网络上加电的每个节点立即被放入公共网络中。公共网络是为所有节点分配的默认的网络,它们为所有其它的公共节点所见,并且它们的确认ID被赋值为NULL。一旦一个节点,通过下述的密钥交换过程变为安全时,它的确认ID变为由加密矩阵规定的一个值。每个节点被指派到这个专用/安全网络,它们被给与32字节的矩阵,由此它们加密或解密随后的包。这是通过一个被称为Diffie-Hellman的密钥交换技术,使用一个256位密钥实现的。使用一个有效的取幂算法,来减少被用在密钥交换中计算数值所需的时间。一旦加密矩阵被存储在网络上每个节点的存储器中,就执行加密和解密。在一个实施例中,加密和解密使用了基于一个带反馈异或的一个流密码技术。也可以使用其它算法,包括,例如,DES、RC4、MD5等等。附加的特征报告状态详细说明因为与它们在CAL下相比,在PLX下报告状态被不同地处理,该PLX处理规则的方法在此示出。这些变化用来说明在一个严格的CAL报告状态方法中的许多限制。不同点在下表A7中示出。表A7与GenericCAL相比PLX的优点CebusCALPLX每个目标一个规则每个目标多个规则每个目标一个有效的IV每个目标多个有效的IV只有简单规则简单的和复杂的规则固定的规则灵活的规则因为PLX规则存在于服务器上,与在GenericCAL下的分布式规则相对,通过它的单个的、功能强大的引擎,PLX在它如何处理规则上,功能更强大。PLX客户节点将它们的IV中的变化,汇报到服务器。任何IV变化都如此。当服务器检测到一个IV变化时,该服务器查看变化的特定目标/IV组合,该服务器查看它的规则列表,并且该服务器测试每个规则的有效性。因此,每个目标都被配置为包含以下两个IV,这两个IV处理为特定目标建立的每个规则,相关的IV列出如下。实际的report_header、report_address、report_condition和previous_value变量,每个被保存在矩阵所指向的规则中。调用程序简单地传递这个指针(或目录)到规则引擎,而规则引擎将从主用的规则列表,解析它需要的适当的信息。非挥发性存储器使用每个节点在一个静态的存储位置,如ROM中,包含节点文件夹信息。另外,节点也可以在非挥发性存储器中,存储其它信息,如确认密钥,但是,这是一个选择,并非任何PLX顺从性节点都需要。其它的选择性的存储器需求,包括路由信息和其它的动态表。客户变化通知客户节点典型地报告状态变化到应用服务器节点。意思是,即使应用服务器告诉一个客户改变它的状态,该客户回报应用服务器它的状态已经改变。这减少了应用服务器数据库未与真正的客户节点变量同步的问题。这是所希望的,因为应用服务器包含,与客户变量的变化相关的报告的状态和规则。该客户在此方面智能较少,因此它们应当把适当的变化通知应用服务器。该应用服务器典型地不更新属于一个特定的客户节点的它的数据库变量,直到从那个客户节点接收到确认,通知该“应用服务器”该客户节点已经改变状态。权利要求1.一种配置为允许在一个计算机网络上的多个节点使用一种或多种数据协议进行通信的网关,其中使用一种介质协议在一种网络介质上传输所述的一种或多种数据协议,所述网关进一步提供一个应用编程接口,用于与所述多个节点进行通信,所述网关包括包含在一个网络上节点的信息的一个内部节点数据库;配置为用来提供一种活动模式和一种备用模式的一个软件模块,所述活动模式被配置用于维护所述内部节点数据库,并提供到所述节点数据库的访问,所述备用模式被配置用于维护所述内部节点数据库作为一个外部节点数据库的一个镜像复制。2.如权利要求1中所述的网关,其中所述内部节点数据库进一步包括根据一个客户节点的一种状态变化确定所采取的行动的规则。3.如权利要求2中所述的网关,其中所述规则是简单的规则。4.如权利要求2中所述的网关,其中所述规则是复杂的规则。5.如权利要求2中所述的网关,进一步包括配置为用于翻译所述规则的一个规则引擎。6.如权利要求2中所述的网关,进一步包括调整(shim),所述的调整配置为用于把规则翻译为一种规则定义语言。7.如权利要求2中所述的网关,其中所述状态变化包括在所述客户节点的一个实例变量中的一个变化。8.如权利要求1中所述的网关,其中所述内部节点数据库通过发布连接测试程序(Ping)请求进行更新。9.如权利要求1中所述的网关,其中所述软件模块配置为当检测到一个未被确认的客户请求后,转变为所述活动模式。10.如权利要求1中所述的网关,进一步配置为通过隧道方式使一个第一种协议通过一个第二种协议。11.如权利要求10中所述的网关,其中所述介质是一电源线,并且所述介质协议是一电源线协议。12.如权利要求1中所述的网关,其中所述介质是一电源线,并且所述介质协议是一PLX协议。13.如权利要求7中所述的网关,进一步包括配置为当在所述客户节点的一个实例变量中一个变化发生时通知一个用户应用的一事件处理器。14.如权利要求1中所述的网关,进一步包括一个面向目标的应用编程接口。15.如权利要求14中所述的网关,进一步包括一互联网浏览器,所述浏览器配置为用于提供到所述内部节点数据库中信息的一个用户接口。16.如权利要求15中所述的网关,其中所述用户接口配置为允许一个用户控制在一个电源线网络上的节点。17.一个计算机网络包括一电源线网络介质;和通过使用调度控制块,用于路由原始数据信息由所述电源线网络介质到用户应用的网关装置。18.一个网关包括一个节点数据库;用于建立并翻译调度控制块的调度装置;用于控制一网络接口适配器的设备驱动装置;和用于把所述设备控制块与所述设备驱动装置适配的调整(shim)装置。19.使用一所需的协议在一个网络上的节点之间进行通信的一种方法,所述方法包括建立包含关于所述节点信息的一节点数据库;指定一活动的网关节点来维护所述节点数据库,所述活动的网关节点提供一种或多种访问所述节点数据库的访问方法;和在一个或多个备份服务器节点中,镜像所述节点数据库。20.如权利要求19中所述的方法,进一步包括翻译和执行规则,当一状态变化在一个客户节点中发生时,所述规则确定将采取的行动。21.如权利要求20中所述的方法,其中所述规则由一个规则引擎翻译。22.如权利要求20中所述的方法,进一步包括步骤当所述状态变化发生时,产生事件通知。23.如权利要求22中所述的方法,其中所述通知提供给一调度。24.如权利要求20中所述的方法,进一步包括步骤把接收的数据翻译为一规则定义语言。25.如权利要求20中所述的方法,其中所述状态变化包括所述客户节点的一个实例变量中的一变化。26.如权利要求19中所述的方法,进一步包括发布连接测试程序(Ping)请求并侦听对所述连接测试程序(Ping)请求的响应的步骤,所述响应用于更新所述节点数据库。27.如权利要求19中所述的方法,进一步包括步骤所述活动的服务器变为静止后,激活所述备份服务器节点之一。28.如权利要求19中所述的方法,进一步包括步骤把在第一种协议中的原始包装入所述的所需协议中的封装包,并以隧道方式使所述原始包通过所述的所需协议。29.如权利要求19中所述的方法,其中所述介质是一电源线,并且所述介质协议是一电源线协议。30.如权利要求19中所述的方法,其中所述介质是一电源线,并且所述介质协议是一PLX协议。31.如权利要求19中所述的方法,进一步包括步骤在所述客户节点的一个实例变量中,一个变化发生时,通知一用户应用。32.如权利要求19中所述的方法,进一步包括步骤使用一互联网浏览器来浏览所述节点数据库中的信息。33.如权利要求19中所述的方法,进一步包括步骤使用一互联网浏览器来控制在一个电源线网络上的节点。全文摘要本发明涉及允许在一种或多种网络协议以及一种或多种控制协议之间传送数据的一种通用网关(104)。不同的协议可以在相同的物理网络介质(100)上同时使用,或在各自的网络(100,130)上同时使用。通过使用所述网关(104),终端用户可以把传统上相互独立、互不兼容的网络联网成为一个普遍可访问的、集中管理的“超级网络”。所述网关(104)提供集中式节点数据库,对传统协议的支持,规则引擎,以及面向目标级别的程序库接口。通过备用服务器节点提供的系统容错性能,增强对该集中式节点数据库的高可靠性访问。此外,所述网关(104)提供在电源线上分配不同类型的数据流的能力。所述网关(104)提供的路由处理器,允许在电源线上路由实际上任何传统的数据联网服务,如TCP/IP。文档编号G06F13/00GK1296585SQ99803953公开日2001年5月23日申请日期1999年1月21日优先权日1998年1月22日发明者A·沃拜克,T·N·李申请人:英特罗杰斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1