改进型分布式核心操作系统的制作方法

文档序号:7962637阅读:251来源:国知局
专利名称:改进型分布式核心操作系统的制作方法
技术领域
本发明一般涉及计算机;网络系统,更具体地涉及计算机网络系统上的分布式操作系统。
背景技术
操作系统(OS)为负责控制和管理计算机资源的系统软件。典型OS可进行计算机应用软件和硬件之间的通信。OS允许应用软件访问计算机硬件并进行计算机的基础系统操作,例如磁盘访问、存储器管理、任务调度和用户接口。此外,OS也负责提供网络连接。
计算机网络提供在多个互连计算机间共享文件和外围装置的机制。理想情况下,计算机网络应该允许所有计算机和应用程序访问所有网络资源,优化集体资源(collective resource)。为了达到这一结果,分布式操作系统已经被开发出来。然而,典型的分布式OS受到很多限制。首先,分布式OS可为多层系统一层用于本地环境,而另一独立的层用于网络环境。这产生了开发人员和用户需要了解的两个不同的操作系统。另外,因为本地层和网络层的接口显著不同,应用程序可被写入以在一层或另一层上操作,但不能被写入以同时在两层上操作。也就是,应用程序的网络版本可能不在单个计算机上运行,且单机版本可能不运行在网络上。
此外,网络软件将客户计算机和服务器作为不同装置处理。如果用户期望中央计算机为多个远程计算机提供文件,则中央计算机必须被指定为服务器,而远程计算机被指定成为客户机。因为服务器和客户计算机由操作系统给予不同的能力,这样可能会限制网络的灵活度。例如,可能不能使两个计算机相互间共享文件,这是因为,一个必须被指定为服务器,而另一个被指定为客户机。一般情况下,服务器可能不访问存储在客户机上的文件。
计算机网络系统已经被设计并被优化成处理一组指定资源和配置。例如,大型计算机系统可以包括具有大容量存储区域的大型计算机和打印机组。较小的终端或计算机可作为客户机以针对网络和软件的形式访问该大型机。该计算机系统可能不具有如因特网一样的利用通信发展的灵活度。
消息传递分布操作系统已经被开发来克服这些问题。一种典型消息传递操作系统在申请人为van der Veen(“van der Veen et al.”)等的美国第6,697,876号专利中被予以说明,其公开在此处作为参考。van derVeen等说明了一种具有单层体系结构的可被应用于包括因特网通信链路的灵活性网络(flexible network)环境和单机计算机上的分布式操作系统。这可通过使用消息传递操作系统并通过向网络管理器发送非主节点(off-node)消息来达到,该网络管理器能引导并接收非主节点消息。
此外,这些系统中的进程间控制(IPC)应该为可靠的。但是,一些现有分布式操作系统受到由以下功能欠缺而导致的传输性能限制(1)可靠处理瞬时通信故障和快速节点重启,(2)提供适于链路可靠性的传输协议,和(3)允许在任意媒介组合上进行传输。因为节点经常通过诸如因特网的第三方通信网络被连接,这可以保证节点间的物理通信线路的完整性。瞬时通信故障可能锁住客户进程,浪费资源且妨碍系统整体性能。
由此,需要提供一种用于管理分布式消息传递操作系统的节点之间的通信的可靠方法,其可提高在瞬时通信故障和快速节点重启过程中的处理的可靠性,并且可以通过适于链路灵活性和/或抽象媒介选择的适当的协议提高数据传输的性能,以允许在通信链路的任意组合上实现不同方案。

发明内容
公开了一种在分布式操作系统中管理通信以克服由以下功能欠缺而导致的传输性能限制的方法(1)可靠处理瞬时通信故障和快速节点重启,(2)提供适于链路可靠性的传输协议,和(3)允许在媒介的任意组合上进行传输。此处说明的该系统和方法提供一种可靠的节点到节点的会话协议,该会话协议提供了高性能的消息传送和多接口管理和支持。这可通过在可以动态使用节点间的多个接口的单一连接上在操作系统的两个节点间传输所有数据来达到。也可实现不同媒介选择方案以使用户指定特定数据传输的接口。
对本领域的技术人员来说,在考察以下附图和详细说明后,本发明的其它系统、方法、特性和优点将会或将变为显而易见的。所有这些附加系统、方法、特性和优点被包括在该说明书中,并且包括在本发明的范围内,被所附权利要求书保护。


可参照以下附图和说明对本发明有更好的理解。附图中的组件不必按比例绘制,而是着重强调说明本发明的原理。此外,在此图中,相似参考数字指定不同视图的相对应部分。
图1示意出用于实现分布式操作系统的示例性物理布局图;图2示意出用于分布式操作系统的示例性消息框图;图3示意出用于管理在分布式操作系统内的节点到节点的通信的说明性方法;图4示意出用于在分布式操作系统内的节点到节点通信的网络管理器的示例性逻辑结构;图5示意出用于建立在分布式操作系统的节点之间的节点到节点的连接的示例性方法;图6示意出用于管理在分布式操作系统中的多个网络接口上的传输的示例性方法;图7示意出用于从分布式操作系统中的本地节点传输数据的示例性方法;图8示意出用于在分布式操作系统中的远程节点接收数据的示例性方法。
具体实施例方式
图1中示出用于实现分布式操作系统的说明性物理布局图。该布局图包括经由通信网络140互连的本地计算机系统110和远程计算机系统112。尽管本地计算机系统110和远程计算机系统112被说明为具有一定特性,但系统的物理配置和电子组件仅作为用于说明本发明的一个实例来显示。相似地,允许两个计算机系统110和112之间的消息传递的通信网络140也可采用多种物理形式和不同通信协议。由于在两个计算机系统110和112之间传递的数据为消息,则该数据是与通信所用媒介无关的。因此,通信网络的类型与本发明关联性很小。
图1所示的本地计算机系统110包括可执行应用程序的本地客户处理器160。本地客户处理器160可与其所处本地区域中的其它装置经由局域网进行通信,该局域网可以以本领域中所知的方式实现。这些本地装置可包括本地消息传递操作系统118、一个或多个本地服务器120和122、以及本地网络管理器124。
本地消息传递操作系统118和本地网络管理器124一般可以是以可执行形式存储在计算机可读介质上的软件程序,该计算机可读介质诸如随机存取存储器(RAM)、只读存储器(ROM)、光盘(CD-ROM)或磁存储介质(硬盘驱动器或可移动磁盘)。本地操作系统118和本地网络管理器124也可以由硬件或其他本领域已知手段实现。
本地消息传递操作系统180可为各个本地处理器160、120和122所访问。除了作为进程间控制手段传递消息外,操作系统一般提供诸如数据输入和输出以及定时服务的功能,这些功能可经由存储在相似的存储器介质上的外部子程序提供。该消息传递操作系统通过建立每个处理器160、120和122,以及本地网络管理器124之间的通信信道和连接处理它们之间的通信。
远程计算机系统112具有相似配置,包括消息传递操作系统核心(operating system kernel)126、远程服务器128和远程网络管理器130。在这种配置中,消息传递操作系统核心126处理远程服务器128和远程网络管理器130之间的通信,而远程网络管理器130可经由通信网络140与本地网络管理器124进行通信。远程网络112的组件将具有与本地网络110中的相对应组件相似的特性。
与本地网络110相似,远程网络112的配置仅为说明本发明的一个实例。显然,可产生无限种配置,其为本领域的技术人员所知。在该范围的一端,网络可包括单个电路板上的两个处理器,这两个处理器互连以相互间进行通信。或者,网络可包括遍布世界的数千个处理器,这些处理器在不同类型的通信链路上互连。术语“远程”意思为分开;其不意味着表达任何空间或距离信息。
分布式操作系统分两个阶段处理从本地客户处理器160向远程服务器130传递的消息。客户方110实际上将本地网络管理器124视为对本地客户处理器160的假定服务器。相似地,远程网络管理器130生成其传递给远程服务器128的虚拟消息;远程网络管理器130充当类似远程服务器128的客户。
本地和远程操作系统118和126在本领域中已知为消息传递操作系统。例如,消息传递可提供整个系统的进程间控制(IPC)。一般情况下,消息为其内容不具有特殊意义的从一个进程传输到另一个进程的字节分组。消息中的数据对于消息的发送方和接收方具有意义,但对于任何其它方无意义。
消息传递不仅允许进程相互间传输数据,而且还提供同步执行一些进程的手段。在它们发送、接收并应答消息时,进程经历影响它们可以何时运行和运行多久的不同的“状态的改变”。获知它们的状态和优先级后,操作系统118和126可最大可能地有效调度所有进程以优化可用处理器资源。
在客户方,即计算机系统110上,运行在本地客户机160的应用程序知道远程服务器128的非节点地址。本地核心操作系统180可在其不具有相应的节点标识的本地映射时将任何消息识别为非节点消息。操作系统118可将未识别的消息视为非节点的,且可将这样的消息引导到连接本地网络管理器124的本地客户机160,本地网络管理器124操作均为本领域中所知的线程和进程。线程是作为组被调度和执行的编程步骤的适当尺度的集合。另一方面,进程可被视为线程的“容器”,其限定线程将被执行在其中的地址空间。进程包括至少一个线程。
将消息传递引向信道164和多个连接,而不是直接在线程与线程之间进行。希望接收消息的线程首先创建信道164,而希望将消息发送到该线程的另一线程必须首先通过“附加”到信道构成到信道164的连接。实现本地客户处理器160和本地网络管理器124之间消息的传输的不同手段为本领域技术人员所知,且本发明并不限于经由此处所述的信道和连接的传输。
信道164由消息核心调用(kernel call)来实现,并且由服务器使用以接收消息。服务器使由客户线程“连接”建立的到信道的连接可用。一旦建立连接,客户可在该连接上发送消息。如果进程中的一些线程附加到相同信道164,则单个连接可在线程间共享。信道164和连接可在进程中由小整数标识符命名。客户连接可直接映射到文件描述符中。
信道164可具有三个与其相关的队列一个用于等待消息的线程、一个用于已经发送了还没有被接收的消息的线程、而另一个用于发送了已经被接收到的消息但还没有应答的线程。而在这些队列的任一个中,等待线程被阻塞。在其它应用程序中,信道164可以以不同方式安排。
该消息阻塞通常遵循图2中的状态图。在图2中,粗体的函数或消息用第一线程发出,而斜体函数或消息用目标线程发出。同样,如果因为进程必须等待消息协议的某部分结束而不被允许继续执行,则进程被称为被阻塞。尽管涉及UNIX(POSIX)函数调用的特定可移动操作系统接口,但其不以任何方式限制权利要求的范围。线程可通过调用MsgSendv()函数并从准备状态250移动到发送阻塞状态252来传输消息到目标线程,直到目标线程使用MsgReceive()函数向回发送消息。这将初始线程置于应答阻塞状态254。当目标线程已经处理了消息,其利用MsgReplyv()函数向初始线程回传应答消息,并且返回准备状态250。如果线程执行MsgReceivev()函数调用而没有之前发送的消息未决的情形,则该线程将是接收阻塞256的状态,直到目标线程调用MsgSendv()函数以将消息回送到初始线程。该阻塞维持线程的同步执行。
尽管该阻塞方案确保处理同步,如果通信网络140中发生了临时故障,其间远程网络管理器130试图将应答传输到本地网络管理器124时,则可能出现问题。如果中断持续足够的时间,传输层将最终尝试传输应答。因为远程网络管理器130不能与本地网络管理器124进行通信,应答不能被传输,本地客户机160将永远保持应答阻塞状态。应该注意到,无论是否出现底层通信错误,都可能出现应答阻塞问题。例如,通信中断可能由服务器节点的快速重启、缓冲器超过限度、从网络物理断开等触发。
图3中所示的流程图公开了解决这些问题的方法。本地节点处的处理器可生成以远程节点为目的地的消息;该消息可在步骤310被转发到本地网络管理器124。在响应中,本地网络管理器124可在步骤320判断是否存在对远程节点的节点到节点的连接。如果不存在连接,本地网络管理器124可在步骤330产生到远程节点的连接。如果连接在本地节点和远程节点之间存在,本地网络管理器124可在步骤340判断连接是否有效。如果连接不再有效,本地网络管理器124可在步骤350拆除无效连接,并在步骤330建立新的连接。一旦判断在本地节点和远程节点之间存在有效连接,或如果建立了新的连接,则本地网络管理器124可以在步骤360在一个或多个接口上向远程网络管理器130传输消息。
术语“传输”已经被用于说明从一个装置到另一个装置的消息传送。该术语被普遍使用,且防止与消息类型“发送”和“接收”相混淆。同样地,如上所述,本地和远程网络管理器124和130之间的通信网络140可采用本领域所知的多种形式,因为只有消息需要被传输。例如,步骤360处的传输可使用TCP/IP协议网络进行实现。
为了实现图3中所示的方法,本地网络管理器124可以包括图4所示的本地核心接口层410、本地媒介选择层420、本地传输层430。本地核心接口层410可负责与消息传递操作系统核心118进行交互。本地传输层430可包括本地计算机系统110的各网络接口的实例432和实例434。各实例可负责跨越其相关的接口传输数据。本地媒介选择层420可负责管理节点到节点的连接,并管理在传输层接口实例432和434上的消息的传输。
远程网络管理器130可具有类似配置,包括远程核心接口层440、远程媒介选择层450、和可以包括各网络接口的实例462和实例464的远程传输层460。这些远程分层440、450和460可执行远程计算机系统112上的与本地计算机系统110的对应本地分层410、420和430相对应的功能。尽管此处说明的功能被说明为与本地网络管理器124和远程网络管理器130的特定分层相对应,可以使用已知技术的几乎无限种方法来提供这些功能。
如上所述,本地节点首先可以生成向远程节点的传输请求。该传输请求可被视为任意长度的字节序列,且可包括与远程节点相对应的节点描述符。传输请求可由本地网络管理器124接收,例如,通过本地核心接口层410进行接收。本地核心接口层410可随后将该请求传递到本地媒介选择层420,层420可判断是否存在对远程节点的节点到节点的连接,并且如果不存在则建立新的节点到节点的连接。本地媒介选择层420可维护系统的每个远程节点的传输连接结构。传输连接结构可被用于控制本地和远程节点之间连接的状态信息等,且可被存储在本地媒介选择层420内部。传输连接结构可在由节点描述符标记的链表(link list)中被维护,从而,本地媒介选择层420可快速判断是否存在请求中所引用的远程节点的传输连接结构。可替换地,诸如散列链表(hashed linked list)等的其它数据结构可被用于维持传输连接结构。
传输连接结构可包括与连接状态、一对节点描述符、一对连接标识符以及头和尾指针相对应的组件。其它组件可被添加或替代。连接状态组件可包括定义连接状态的数据结构。例如,连接可具有与用于建立节点到节点连接的分组相对应的多个状态中的一个状态,这将在下文详述。该对节点描述符可与本地和远程节点的节点描述符相对应。例如,该对节点描述符可包括用于远程节点的本地节点的节点描述符和用于本地节点的远程节点的节点描述符。传输连接结构的典型数据字段可如表1.0中所示。

该对连接标识符可为用于下文所述的连接管理的标识符。该对连接标识符可以是媒介选择层420和450生成的单调增加计数器,以唯一识别两个节点之间的连接,从而各个连接可具有唯一的节点描述符和连接标识符对。该连接标识符可在本地媒介选择层420建立传输连接结构时生成。可替换地,该连接标识符可以以任何所知的方式生成。例如,连接标识符可分别基于本地和远程计算机系统110和112的启动数据和/或时间。
头和尾指针可定义连接的传输请求的链表,以确保各节点的传输请求的顺序传输。可替换地,其它所知技术可被用于实现各节点的传输请求的顺序传输。当建立新的传输连接结构时,头和尾指针可指向初始传输请求,甚至在连接建立前就排列请求以确保首先服务初始传输请求。在下方表2.0中示意出一个典型传输请求。
一旦传输连接结构已经被识别或建立,连接管理分组在本地节点和远程节点之间进行传输以建立节点到节点的连接。连接管理分组类型可与连接状态相对应,且可包括用于唯一识别连接的节点描述符对和连接标识符对。典型连接管理分组可包括由本地节点发送的用于启动连接的TCS_INIT分组、由远程节点发送以指示连接已经建立的TCS_REM_UP分组、由本地节点发送用于轮询有效连接的TCS_UP分组,和分别由本地和远程节点发送的用于拆除现有连接的TCS_DOWN和TCS_REM_DOWN分组。尽管连接管理分组可由本地或远程节点进行传输,连接可以是仅允许本地或发起节点(initiator node)在该连接上传输数据分组的单向连接。因此,连接可仅具有TCS_INIT或TCS_UP状态。
图5中示意出描述典型连接管理分组流程的典型流程图。连接可在表示本地和远程节点之间的连接已经被建立的TCS_INIT状态中开始。当连接处于TCS_INIT状态时,TCS_INIT分组可在步骤502处从本地节点向远程节点传输。TCS_INIT分组可包括用于远程节点的本地节点的节点描述符和本地节点的连接标识符。典型TCS_INIT分组可包括具有值4的本地连接标识符。
在接收到TCS_INIT分组时,远程节点可在步骤504判断是否存在传输接收结构用于TCS_INIT分组中引用的本地节点和连接。传输接收结构除了可以由包括在TCS_INIT分组中的节点描述符指示外,可包括与传输连接结构相似的元素。如果不存在用于本地节点的传输接收结构,通常为此情况,远程节点可在步骤506建立传输接收结构并向本地节点回传TCS_REM_UP分组。TCS_REM_UP分组可包括来自TCS_INIT分组的节点描述符和连接标识符以及用于本地节点的远程节点的节点描述符和远程节点的连接标识符。这样,TCS_REM_UP分组包括完整的节点描述符对和连接标识符对。典型TCS_REM_UP分组可包括具有值4和3的连接标识符对。
为了响应TCS_REM_UP分组,本地节点可在步骤512判断是否存在与节点描述符和连接标识符对相对应的传输连接结构。如果存在所引用的结构,本地节点可在步骤516判断现有结构的远程连接标识符字段是否为空。如果该值为空,则本地节点可在步骤520将所引用的传输连接结构用新的节点描述符和连接标识符更新。例如,传输连接结构可被更新为包括连接标识符4和3。在这点上,连接可被认为已经建立,且该连接具有TCS_UP的状态。本地节点可在步骤522在该连接上传输数据分组。类似地,远程节点可在该连接上接收数据分组。任一节点可随后通过传输TCS_DOWN或TCS_REM_DOWN分组在任何点上拆除连接。
在特定情况下,可能在连接管理进程中出现错误。例如,传输接收结构可以已经为TCS_INIT分组中所引用的节点描述符存在。如果远程节点已经具有预先存在的传输接收结构,则可能出现两种情况。第一,现有传输接收结构可具有与TCS_INIT分组相同的连接标识符。远程节点可因为一些原因而具有包括匹配的连接标识符的预先存在的传输接收结构。例如,复制TCS_INIT可由本地节点或通信网络140上的其它位置生成。可选地,本地节点可能已经重新启动并且不具有现有节点到节点连接的任何信息(即,状态信息),但已经重新生成了与旧连接相同的连接标识符。可选地,预先存在的结构可包括再次指示连接丧失同步的非匹配的连接标识符。
如果与先存在的传输接收结构存在,无论问题产生的原因,远程节点可通过在步骤508传输TCS_REM_DOWN分组拆除现有连接。TCS_REM_DOWN分组可包括单个节点标识符和连接标识符的任一,且被本地节点视为拆除引用的连接的命令。例如,本地节点可通过在步骤510删除其用于连接的传输连接结构并清除与连接相关联的任何其它状态信息来拆除连接。本地节点可随后试图重建连接。可替换地,连接标识符可被用于判断问题的原因。如果问题的原因是无害的,例如,如果TCS_INIT分组为复制分组,则预先存在的连接可被用于数据传输。
类似的错误也可在TCS_REM_UP分组被本地节点接收时出现。如上所述,TCS_REM_UP分组包括完整的节点描述符和连接标识符对,即,本地节点的一对和远程节点的一对。如果本地节点不具有与所引用的本地节点描述符和连接标识符对相对应的传输连接结构,则该节点丧失同步,并且在步骤514传输TCS_DOWN分组到远程节点以关闭连接。为了响应TCS_DOWN分组,远程节点可在步骤524破坏所引用的传输接收结构,清除任何剩余状态信息等。可选地,本地节点可具有用于远程节点的现有传输连接结构。在上述通常情况下,本地节点的传输连接结构可不包括远程节点描述符和连接标识符,或者,那些组件可被设置为诸如0的默认值。然而,由于复制分组或重启,传输连接结构可包括远程节点描述符和连接标识符对的值。在此情况下,本地节点可在步骤518破坏现有传输连接结构,并在步骤514通过传输TCS_DOWN分组拆除连接。可选地,如果判断产生错误的原因无害,则预先存在的连接可被更新并被用于数据传输。
在连接已经建立后,例如,传输请求可由本地网络管理器130通过建立如上所述用户级连接并在该用户级连接上传输数据来服务。特定节点的传输请求可由本地网络管理器顺序进行。例如,这可通过利用上述头和尾指针将用于特定连接的传输请求排队来实现。表2.0中所示为将传输请求排队的典型结构。可替换地,可生成对节点唯一的传输请求标识符,诸如单调增加的计数器。可选地,传输请求标识符可利用任何数目的所知方式生成。例如,可由本地媒介选择层420生成传输请求标识符。如上所述,传输请求可被视为任意长度的字节序列。实现传输请求标识符允许所有用户数据被一般地处理为由传输请求标识符和偏移量指示的字节的二维数组(array)。


具有节点到节点连接的两个节点之间的关系可以三种方式表示。第一,节点可具有有效通信的用户级进程。第二,节点可具有有效用户级连接,但不是当前传输数据。第三,节点上的进程间不存在用户级连接。在前两种情况的任一种情况下,媒介选择层420可保持节点到节点连接。然而,在第三种情况下,例如,如果通信已经停止预定时间,媒介选择层420可拆除节点到节点连接。可选地,或附加地,可使用其它所知用于中止连接的方法。
在本地和远程节点间存在多于一个接口处,本地媒介选择层420也可诸如通过维护接口池、网络池等负责管理在多个接口上的数据分组的传输。该池可仅包括那些可操作或有效的接口或网络,或者,该池可包括任何接口或网络。一种典型的管理多个网络接口上传输的方法如图6中的流程图所示。首先,媒介选择层420可在步骤602确定媒介选择的优选。媒介选择的优选指示媒介选择层420如何在连接上传输数据的方案。媒介选择的优选可被指定为装置路径名的一部分。例如,路径名“/net/lab2~exclusive:en0/dev/ser1”可被用于访问具有“专用”媒介选择方案的名为“lab2”的节点上的串行装置。可选地,可对限定路径名的不同媒介选择创建符号链接。可选地,或附加地,媒介选择方案可通过与路径名分开的命令进行限定。
如图6所示,数据可根据以下三种不同方案进行传输(1)“负载平衡”方案603,(2)“优选的”方案611,和(3)“专用的”方案619。本领域中的普通技术人员将理解可以实现不同附加媒介选择方案。例如,可提供允许用户在多个接口上同时传输数据分组的“冗余”媒介选择方案。
“负载平衡”方案603允许本地媒介选择层420判断哪个网络接口、或传输层实例432和434传输各分组的数据。各分组可以在能将分组最快传送到远程节点的链路上进行排队。这在多个链路可用时有效提供节点间的更高的带宽(该带宽可以为可用链路的带宽总和),并在链路不可用时提供适度降级的服务。因此,本地媒介选择层420可在步骤604确定最快接口432和434。可随后在步骤606在确定的接口432和434上传输该分组。如果出现错误,则本地媒介选择层可试图在下一个最快接口上重传该分组。因此,本地媒介选择层420可能不试图在故障接口上发送后续分组。本地媒介选择层420可以在步骤610为任何附件分组保持这种进程,直到数据已经被传输。
“优选的”媒介选择方案611允许用户指定如果可用则应该被使用的特定网络接口。因此,本地媒介选择层420可试图在步骤612在特定接口上传输数据,在步骤618循环以传输附加分组。如果接口在步骤614的传输过程中变得无效(即,在传输中出现错误),则媒介选择层420可随后选择用于传输数据的另一接口432和434。例如,本地媒介选择层420可回复到默认媒介选择方案。可选地,本地媒介选择层420可选择与优选链路最为相似的接口。多个优选的接口也可被指定从而媒介选择层420可试图在可用的第一接口上传输分组,随后在第二接口上传输,以此类推。例如,可通过设置链路的相对性能值指定多个优选物。相对性能值可基于诸如最大带宽、平均带宽、网络可用性等网络的性能特性。如图6所示,本地媒介选择层420可在步骤616试图判断是否已经指定了附加的优选的接口。如果已经指定附加的接口,则试图在该附加的接口上进行传输。如果没有指定附加接口,本地媒介选择层420可试图根据默认媒介选择方案进行传输,例如,“负载平衡”方案603。可选地或可附加地,这些方案可被组合在一起,从而媒介选择层420可在多个“优选的”611链路上有效地进行“负载平衡”603传输。
最后,“专用的”媒介选择的优选619可允许用户将传输锁定到特定链路。在“专用的”链路变为不可用的事件中,本地网络管理器124可能并不试图在任何其它接口上传输数据。可替换地,多个“专用的”619接口可被指定,从而媒介选择层420可仅在指定接口上传输信息。例如,当移动大量数据的实施需要高带宽接口时,该“专用的”媒介选择方案可被使用。利用“专用的”媒介选择方案,用户可将传输仅限制到那些满足实施需求的接口上,且在故障状态下避免使较低带宽接口过载。同样,这些方案可被结合,从而媒介选择层420可在一些“专用的”619接口上进行“负载平衡”603传输。再次参照图6,本地媒介选择层420可在步骤620在专用的接口上传输数据分组。如果指定接口发生故障,不在任何附加接口上试图进行传输。
为了实现该典型媒介选择方法,本地媒介选择层430可维护可用接口或网络池。例如,各传输层实例432和434可在其相关接口停止时通知媒介选择层。媒介选择层430可随后周期性地轮询接口以判断何时其再次正常工作。例如,包括上述节点描述符和连接标识符对的TCS_UP分组可被周期性地在不可用接口上传输。作为响应,远程媒介选择层450可传输TCS_REM_UP分组以确认链路再次可用。
本地媒介选择层420也可从本地传输层430获取性能信息。该性能信息随后可被用于根据指定的媒介选择的优选选择接口。例如,各传输层实例432和434可包括静态和动态的性能信息。各实例可维护诸如硬件性能等的静态性能信息。典型动态性能信息可包括字节计数、当前队列中传输请求的计数、以及这些请求的大小等。
在由媒介选择层420选择适当接口后,数据分组可由本地传输层430传输到远程传输层460。图7中所示为本地传输层430所执行的典型数据传输的流程图。在步骤702接收到传输请求后,本地传输层430可在步骤704验证传输长度。如果附加分组将被传输,则本地传输层可在步骤706向远程节点传输该分组。例如,本地传输层430可通过分配缓冲区、与来自请求的数据一同打包并适当调用接口驱动器来传输该分组。本地传输层430也可将节点描述符和会话层、或节点到节点、连接标识符对附加到各数据分组。典型分组数据字段被显示在表4.0中,而被包括在分组中的典型媒介选择层信息被显示在表5.0中。接下来,本地传输层430可循环以传输剩余数据。当没有将被传输的附加信息后,本地传输层430可在步骤708通过诸如分组头部中的标记设置来标记传输的最后分组,从而可通知远程节点传输完成。在所有数据已经被传输后,本地传输层430可在步骤710等待来自接收节点的响应。


图8所示为描述远程传输层460执行典型数据接收的流程图。开始时,在步骤802,分组由远程节点上的装置驱动器接收并被发送至远程网络管理器430的远程传输层460。该接收的分组包括定义指向传输中的下一分组、分组长度、头和数据缓冲器、物理地址等的指针的元素。接收的分组的典型数据字段如表6.0中所示。可选地,可在步骤804执行本领域所知的错误检测以使分组生效。其它元素可被替换或添加。

远程传输层460可连续接收分组,直到整个传输被接收。整个传输可随后在步骤808被传送到执行媒介连接服务或依情况转发用户数据到适当目的地的远程媒介选择层450。因此,远程传输层460可在步骤806判断传输是否为单个分组传输。诸如连接管理分组和小用户数据传输的单个分组传输可在步骤808被直接传递到用于进一步处理的远程媒介选择层450。可通过在分组头部中设置开始和结束标记将传输指定为单个分组传输。一般来说,传输可通过例如将传输加入接收的传输的队列而被传递到远程媒介选择层450。例如,该队列可被实现为指向由远程节点描述符的末端X比特指示的接收的序列结构的链表的指针数组。接收的分组队列结构的典型数据字段在表7.0中显示。

如果传输包括多个分组,则远程传输层可在步骤810重建该传输。例如,传输可被重建到接收的序列数据结构中。典型的接收的序列结构可被实现为给定节点描述符/连接标识符组合的接收分组的链表。该接收序列结构也可包括定义用于连接的唯一节点描述符和连接标识符、物理地址等的元素。远程传输层460可使用连接标识符,并且在步骤812,接收的分组的序列号可被用于查询预先存在的接收的序列结构。如果需要,在步骤814,新接收的序列结构被分配且被加入指针数组,随后,在步骤816,接收的分组随后被插入接收的序列结构。远程传输层460可查看接收的序列结构以顺序,即,以偏移量的顺序插入该分组。可替换地,或可附加地,该分组可被插入该结构中的任何位置。
在步骤818接收到传输的最后分组时,如由本地网络管理器124所发送,远程传输层460可在步骤S820查看接收的序列结构以验证传输已经完成。传输的最后分组可经由分组头部中的标志(flag)同样指定。如果传输完成,远程传输层460可在步骤824传输表示成功传送的ACK分组。可选地,远程传输层460可在步骤S826传输表示传输的一个或多个分组丢失的NACK分组。该NACK分组可包括描述丢失分组的空洞(hole)列表。典型空洞列表可通过由传输序列中的偏移量和长度来描述空洞而被实现,以包括传输中空洞的总数和定义列表中各空洞的数据结构。
再次参照图7,在传输了最后分组后,本地传输层430在步骤710等待来自远程传输层460的响应。本地传输层430可在步骤712接收指示成功传输的ACK分组。在此情况下,本地传输层430可向媒介选择层420指示成功。可替换地,本地传输层430可在步骤714接收指示丢失分组的NACK分组。在此情况下,可在步骤716重建并重传所引用的分组。如果在步骤718处判断给定时间后仍没有接收到响应,则本地传输层可在步骤720重建并重传序列的最后分组,且在步骤722再次等待响应。最后的分组可触发远程节点重新查看其接收到的序列,并发送ACK或NACK分组。这可允许本地节点抢修未完成的传输,在其中,发生通信中断,防止最后分组或响应分组丢失。如果在步骤724再次出现超时,则本地传输层430可在步骤726通知本地媒介选择层420。作为响应,本地媒介选择层420可从可用接口池中去除该接口,并用检测分组周期性地轮询该接口以确定其以后的可用性。典型检测的分组可包括上述TCS_UP分组。
尽管已经说明了本发明的多种实施例,对本领的那些普通技术人员来说,在本发明的范围内,存在更多实施例和实施方式。因此,本发明除了遵照所附权利要求及其等价替换外,并不受到限制。
权利要求
1.一种管理分布式消息传递操作系统中的多个节点之间通信的方法,其包括在本地节点维护将所述本地节点与远程节点互连的可用通信网络池;和共享经由所述可用通信网络池中的网络在所述本地网络和所述远程网络之间的多个分组的传输。
2.如权利要求1所述的方法,其还包括从所述可用通信网络池中选择通信网络的子集;和共享经过所述通信网络的子集中的网络在所述本地节点和所述远程节点之间的多个分组的传输。
3.如权利要求2所述的方法,其特征在于,所述通信网络的子集包括具有相似性能特性的网络。
4.如权利要求2所述的方法,其还包括为所述多个分组中的每一个分组确定所述通信网络的子集中的最快通信网络,所述最快通信网络能够比所述通信网络的子集中的其它通信网络更快地传输分组;和在所述确定的最快通信网络上传输所述相应的分组。
5.如权利要求1所述的方法,其还包括指定所述通信网络池中的一个网络作为优选的通信网络;和如果所述优选的通信网路发生故障,则经由任何其它通信网络传输多个分组。
6.如权利要求1所述的方法,其还包括指定所述通信网络池的子集作为优选的通信网络;和如果所述优选的通信网络的子集中的每个网络发生故障,则经由所述池中的任何其它通信协议传输所述多个分组。
7.如权利要求1所述的方法,其还包括指定所述通信网络池中的一个网络作为专用通信网络;和在所述专用通信网络上传输所述多个分组。
8.如权利要求1所述的方法,其还包括指定所述通信网络池的子集作为专用通信网络;和仅在所述专用通信网络的子集上传输所述多个分组。
9.一种在计算机可读介质上实现的分布式消息传递操作系统,其包括包括在本地处理器上运行的本地线程的本地节点,所述本地节点可进行传递消息和接收消息;经由至少一个网络与所述本地节点进行通信的远程节点,所述远程节点包括运行在远程处理器上的远程线程,所述远程节点可进行传递消息和接收消息;其特征在于,所述本地节点还可进行建立与所述远程节点的节点到节点的连接,以响应于接收来自所述本地线程的传输请求,管理从所述本地节点经过所述至少一个网络到所述远程节点的消息传递,和从所述远程节点接收消息,并将所述消息转发至所述本地线程,和所述远程节点还可进行建立与所述本地节点的节点到节点的连接,以响应于接收来自所述远程线程的传输请求,管理从所述远程节点经过所述多个网络到所述本地节点的消息传递,和从所述本地节点接收消息,并将所述消息转发至所述远程线程。
10.如权利要求9所述的操作系统,其特征在于,所述本地节点还可通过共享经由所述至少一个网络在所述本地节点和所述远程节点之间的多个分组的传输来进行对从所述本地节点到所述远程节点的消息传递的管理。
11.如权利要求9所述的操作系统,其特征在于,所述至少一个网络包括多个网络,并且,其中,所述本地节点还可通过选择所述多个网络的子集和共享经过所述网络的子集在所述本地节点和所述远程节点之间多个分组的传输来进行对从所述本地节点到所述远程节点的消息传递的管理。
12.如权利要求11所述的操作系统,其特征在于,所述网络的子集包括相似的性能质量。
13.如权利要求11所述的操作系统,其特征在于,所述共享传输包括为所述多个分组中的每一个确定所述多个网络中的最快网络,所述最快网络能够比在所述多个网络中的其它网络更快地传输相应分组;和在所述最快网络上传输所述相应分组。
14.如权利要求9所述的操作系统,其特征在于,所述至少一个网络包括多个网络,并且,其中,所述本地节点还可通过指定所述至少一个网络中的一个网络作为优选网络并且如果所述优选网络发生故障则经由所述多个网络中的另一网络传输所述多个分组来进行对从所述本地节点到所述远程节点的消息传递的管理。
15.如权利要求14所述的操作系统,其特征在于,所述本地节点还可通过指定所述多个网络的子集作为优选的通信网络并且仅在所述优选通信网络的子集中的每个网络发生故障时经由不在所述子集中的另一通信协议传输所述多个分组来进行对从所述本地节点到所述远程节点的消息传递的管理。
16.如权利要求9所述的操作系统,其特征在于,所述至少一个网络包括多个网络,并且,其中,所述本地节点还可通过指定所述多个网络中的一个作为专用通信网络并在所述专用通信网络上传输所述多个分组来进行对从所述本地节点到所述远程节点的消息传递的管理。
17.如权利要求16所述的操作系统,其特征在于,所述本地节点还可通过指定所述多个网络的子集作为专用通信网络并在所述专用通信网络的子集上传输所述多个分组来进行对从所述本地节点到所述远程节点的消息传递的管理。
18.如权利要求9所述的操作系统,其特征在于,所述本地节点还可通过确定所述网络的可用性并且仅在可用的网络上传递消息来进行对从所述本地节点到所述远程节点的消息传递的管理。
19.一种管理在分布式消息传递操作系统中的多个节点之间的通信的方法,其包括在本地节点维护将所述本地节点与远程节点互连的可用通信网络池;判断所述可用通信网络池中的一个网络是否发生故障;将所述发生故障的通信网络从所述池中去除;周期性地穿过所述发生故障的通信网络,从所述本地网络向所述远程网络传输维护分组;判断所述发生故障的通信网络是否已经恢复。
20.如权利要求19所述的方法,其还包括如果所述发生故障的通信网络已经恢复,则将所述已经恢复的通信网络加入到所述池。
21.如权利要求19所述的方法,其特征在于,判断所述多个通信网络中的一个网络是否发生故障的所述判断还包括接收网络驱动器已经停止的通知。
22.如权利要求19所述的方法,其还包括共享经由所述可用通信网络池中的网络在所述本地节点和所述远程节点之间的多个分组的传输。
23.如权利要求19所述的方法,其还包括从所述可用通信网络池中选择通信网络的子集;和共享经过所述通信网络的子集中的网络在所述本地节点和所述远程节点之间的多个分组的传输。
24.如权利要求23所述的方法,其特征在于,所述通信网络的子集包括具有相似性能特性的网络。
25.如权利要求23所述的方法,其还包括为所述多个分组中的每一个确定所述通信网络的子集中的最快通信网络,所述最快通信网络能够比所述通信网络的子集中的其它通信网络更快地传输分组;和在所述确定的最快的通信网络上传输所述相应的分组。
26.如权利要求19所述的方法,其还包括指定所述通信网络池中的一个作为优选通信网络;和如果所述优选通信网络发生故障,则经由所述池中的任何其它通信协议传输多个分组。
27.如权利要求22所述的方法,其还包括指定所述通信网络池的子集作为优选通信网络;和如果所述优选通信网络的子集中的每个网络发生故障,则经由所述池中的任何其它通信协议传输所述多个分组。
28.如权利要求19所述的方法,其还包括指定所述通信网络池中的一个网络作为专用通信网络;和在所述专用通信网络上传输所述多个分组。
29.如权利要求22所述的方法,其还包括指定所述通信网络池的子集作为专用通信网络;和在所述专用通信网络的子集上传输所述多个分组。
全文摘要
本发明说明了一种计算机网络系统上的改进型分布式操作系统。现有分布式操作系统具有由它们缺少以下功能而导致的传输性能限制(1)可靠处理瞬时通信故障和快速节点重启,(2)提供符合链路可靠性的传输协议,和(3)允许在通信链路的任意组合上进行传输。此处说明的该系统和方法通过提供可靠的节点到节点会话协议来解决这些问题,该会话协议提供高性能的消息传送和多接口管理和支持。这可通过在单个连接上传输该操作系统的两个节点之间的所有数据来达到,所述单个连接可动态利用节点之间的多个接口。
文档编号H04L29/06GK1881944SQ20061008851
公开日2006年12月20日 申请日期2006年6月1日 优先权日2005年6月3日
发明者A·博伊德 申请人:Qnx软件操作系统德国有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1