CN101072167B - 通过通信系统传输信息的方法和系统 - Google Patents
通过通信系统传输信息的方法和系统 Download PDFInfo
- Publication number
- CN101072167B CN101072167B CN2007101040171A CN200710104017A CN101072167B CN 101072167 B CN101072167 B CN 101072167B CN 2007101040171 A CN2007101040171 A CN 2007101040171A CN 200710104017 A CN200710104017 A CN 200710104017A CN 101072167 B CN101072167 B CN 101072167B
- Authority
- CN
- China
- Prior art keywords
- data
- centroid
- stage
- sequence number
- multicast
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L12/5602—Bandwidth control in ATM Networks, e.g. leaky bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及进行可靠多播数据报和屏障的方法和系统。一些实施例中,系统包括中心节点,该中心节点能够存储从多播组的数据源接收的数据。数据源与分布式集群计算系统中的计算机关联。中心节点能够将所接收的数据多播到多播组中的多个数据目的地。数据目的地与分布式集群计算系统中的计算机关联。中心节点能够接收每个数据目的地的确认,并向数据源发送确以。
Description
技术领域
本发明涉及数据通信,更具体地说,涉及进行可靠的多播数据报和屏障。
背景技术
传统计算中,通常使用单个计算机系统进行数据操作,由计算机内的单个或几个中央处理器(CPU)进行操作。对数据的操作包括数值计算或者数据库访问等。CPU在所存储的包含执行代码的程序的控制下执行操作。所述代码可以包括一系列指令,这些指令由CPU执行并导致计算机对数据进行特定的操作。计算机执行操作的能力通常用每秒百万条指令(MIPS)或者每秒百万条操作来衡量。
过去,计算机性能的提高依赖于集成电路技术的进步,通常称为“摩尔定律”。摩尔定律认为集成电路设备的速度随着时间以可预见的、恒定的速率增加。但是,技术上的局限开始限制在集成电路设备上维持预定的改进速度。
增加计算机性能的另一种方法是计算机架构的改变,例如,使用并行处理。在并行处理方法中,计算机系统使用多个CPU,这多个CPU一起执行数据操作。并行处理计算机提供的计算性能随着并行处理的CPU的增加而增加。并行处理计算机系统的体积以及高花费使其成为特殊的计算机系统,限制了经济的、可行的应用这种系统的范围。
作为大规模平行计算系统的一个替换方案是集群计算(clustercomputing)。在集群计算中,通过网络连接的多个小型计算机可一起工作以执行数据操作。能够以相对低的成本在通用计算机、个人计算机或者服务器上实施集群计算系统。在集群计算环境中,集群中的计算机像并行处理CPU在内部总线上交换信息一样,通过网络交换信息。可以扩大集群计算系统以包括网络超级计算机。这种协作地设置、协同工作以进行数据操作的计算机可称为高性能计算机(HPC)。
集群计算让跨越网络分布的多个处理器协同工作以解决计算强度大的计算问题,使系统相对于单处理器计算机具有较高的计算性能。
在很多分布式计算系统中,计算机与计算集群中的其他计算机传输信息。传输信息使用的一种方法是多播。一些传统的分布式集群计算系统在应用网关服务器上使用多播。作为多播发起方的计算机,或者源端计算机,向应用网关服务器发送信息。接收数据的计算机组,称为多播组。应用网关服务器接着存储所接收的信息的副本,并将信息传输给多播组中的每个计算机。应用网关服务器可通过可靠的通信协议将信息传输给多播组,例如通过传输控制协议(TCP)。在接收到表示多播组内的每台计算机都已经接收到该信息的指示符时,应用网关服务器将不再需要存储该信息。因此,将从应用层网关服务器的存储器释放该信息。在大规模的集群计算系统中,应用网关服务器所需要的存储器的数量成为一种负担,它降低了集群计算系统的性能和/或成本效率。即使将消息存储限制到非永久性介质如系统存储器,这种负担依然很重。
除了在计算机群内的计算机之间分发信息之外,还需要协调每台计算机所执行的处理任务。协调每台计算机所执行任务的工作称为同步。同步包括将计算任务分割成阶段(stage),阶段也称为时隙(epoch)。计算集群内的每台计算机都在它们相应的部分时隙内执行不同的任务。计算集群内的计算机在指定的时隙内对全部数据的不同部分进行操作。但是,在一些情况之下,计算机是否开始后续时隙依赖于集群中的另一台计算机是否已经完成必需的时隙。计算机在执行后续时隙的处理时,可能依赖于必需的时隙中处理的数据结果。
在一些传统的分布式集群计算系统中,使用旗语(semaphore)、令牌或者其他锁定技术来处理同步的问题,这些技术让计算机在满足先决条件的时候执行操作。例如,必需时隙的完成就是所需要的先决条件已经满足的例子。
比较本发明后续将要结合附图介绍的系统,现有技术的其它局限性和弊端对于本领域的普通技术人员来说是显而易见的。
发明内容
本发明提供一种进行可靠多播数据报和屏障的系统和/或方法,如下文结合至少一副附图所示和/或在权利要求中所述。
根据本发明的一方面,提供一种通过通信系统传输信息的方法,所述方法包括:
在多播交换设备中存储从位于多播组中的数据源接收的数据;
将所接收的数据多播到所述多播组中的多个数据目的地;
释放至少一部分用于存储所述接收的数据的资源;以及
在收到来自所述多个数据目的地中的每一个的确认后,向所述数据源发送确认。
优选地,所述接收的数据包括进站本地序列号。
优选地,所述方法还包括将所述进站本地序列号转换成全局序列号。
优选地,所述方法还包括确定与每个所述数据目的地对应的偏移差分。
优选地,所述方法还包括基于所述对应的偏移差分,计算每个所述数据目的地的出站本地序列号。
优选地,所述多播的接收的数据包括所述计算得出的对应于每个所述数据源的出站本地序列号。
优选地,所述方法还包括从所述多播组中的站点成员接收进度消息,所述进度消息包括阶段号指示符。
优选地,所述方法还包括比较所述阶段号指示符的值和与所存储信息相关联的值。
优选地,所述方法还包括响应所接收的进度消息,基于所述比较向所述站点成员发送确认消息。
优选地,所述方法还包括响应所接收的进度消息,基于所述比较向所述多播组中的每个站点成员发送状态更新消息。
根据本发明的另一方面,提供一种机器可读的存储器,其中存储有计算机程序,所述计算机程序具有至少一个用于通过通信系统传输信息的代码段,所述代码段机器执行并控制所述机器执行以下步骤:
在多播交换设备中存储从位于多播组中的数据源接收的数据;
将所接收的数据多播到所述多播组中的多个数据目的地;
释放至少一部分用于存储所述接收的数据的资源;以及
在收到来自所述多个数据目的地中的每一个的确认后,向所述数据源发送确认。
优选地,所述接收数据包括进站本地序列号。
优选地,所述机器可读的存储器还包括用于将所述进站本地序列号转换成全局序列号的代码。
优选地,所述机器可读的存储器还包括用于确定与每个所述数据目的地对应的偏移差分的代码。
优选地,所述机器可读的存储器还包括用于基于所述对应的偏移差分,计算每个所述数据目的地的出站本地序列号的代码。
优选地,所述多播的接收的数据包括所述计算得出的对应于每个所述数据源的出站本地序列号。
优选地,所述机器可读的存储器还包括用于从所述多播组中的站点成员接收进度消息的代码,所述进度消息包括阶段号指示符。
优选地,所述机器可读的存储器还包括用于比较所述级号标识符的值和与所存储信息相关联的值的代码。
优选地,所述机器可读的存储器还包括用于响应所接收的进度消息,基于所述比较向所述站点成员发送确认消息的代码。
优选地,所述机器可读的存储器还包括用于响应所接收的进度消息,基于所述比较向所述多播组中的每个站点成员发送状态更新消息的代码。
根据本发明的另一方面,提供一种通过通信系统传输信息的系统,所述系统包括:
中心节点,其存储从位于多播组中的数据源接收的数据;
所述中心节点将所接收的数据多播到所述多播组中的多个数据目的地;
所述中心节点释放至少一部分用于存储所述接收的数据的资源;以及
所述中心节点在收到来自所述多个数据目的地中的每一个的确认后,向所述数据源发送确认。
优选地,所述接收的数据包括进站本地序列号。
优选地,所述中心节点将所述进站本地序列号转换成全局序列号。
优选地,所述中心节点确定与每个所述数据目的地对应的偏移差分。
优选地,所述中心节点基于所述对应的偏移差分,计算每个所述数据目的地的出站本地序列号。
优选地,所述多播的接收的数据包括所述计算得出的对应于每个所述数据源的出站本地序列号。
优选地,所述中心节点从所述多播组中的站点成员接收进度消息,所述进度消息包括阶段号指示符。
优选地,所述中心节点比较所述阶段号指示符的值和与所存储信息相关联的值。
优选地,所述中心节点响应所接收的进度消息,基于所述比较向所述站点成员发送确认消息。
优选地,所述中心节点响应所接收的进度消息,基于所述比较向所述多播组中的每个站点成员发送状态更新消息。
比较本发明后续将要结合附图介绍的系统,现有技术的其它局限性和弊端对于本领域的普通技术人员来说是显而易见的。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是根据本发明的一个实施例的用于可靠多播数据报和屏障的示范性分布式集群计算系统环境的示意图;
图2是根据本发明的一个用于可靠多播的示范性系统的结构示意图;
图3是根据本发明的一个实施例的MST-MPA协议栈上的示范性可靠多播的示意图;
图4是根据本发明的一个实施例的SCTP协议栈上的示范性可靠多播的示意图;
图5是根据本发明的一个实施例的用于可靠多播数据报的系统的示范性数据结构示意图;
图6A是根据本发明的一个实施例的用于可靠多播数据报的系统中多播数据报分发过程的示意图;
图6B是根据本发明的一个实施例的用于可靠多播数据报的系统中的消息交换的示意图;
图7是根据本发明的一个实施例的用于屏障的系统的数据结构的示范性示意图;
图8是根据本发明的一个实施例的在屏障系统中分发状态标记符信息的示意图;
图9是根据本发明的一个实施例进行可靠多播数据报的方法的示范性步骤的流程图;
图10是根据本发明的一个实施例进行屏障的方法的示范性步骤的流程图。
具体实施方式
本发明的一些实施例涉及可靠地进行多播数据报和屏障的方法和系统,所述系统包括中心节点,该中心节点能够存储接收自多播组中数据源的数据。数据源与分布式集群计算系统中的计算机关联。中心节点能够将所接收的数据多播到多播组的多个数据目的地。数据目的地与分布式集群计算系统中的对应多个计算机关联。中心节点能够接收每个数据目的地的确认。中心节点能够向数据源发送确认。
在本发明的各种实施例中,中心节点用于将来自数据源的数据多播到多播组的多个数据目的地。可以实施本发明的一个示范性配置包括星形配置,在星形配置中,中心节点通信地连接到多播组内的每个数据目的地。数据源向中心节点发送多播数据,中心节点随后将数据多播到多播组内的每个数据目的地。
中心节点会存储所接收的数据,直到数据已经多播到多播组内的每个数据目的地。中心节点随后释放分配给所接收的数据的资源。但是,数据源会继续给发往中心节点的数据分配存储资源。中心节点继续为状态信息分配存储资源,这些状态信息与与数据到每个数据目的地的多播情况有关。中心节点上用于存储状态信息的资源的数量可少于用于存储接收数据的资源的数量。
由中心节点来存储所接收的数据将限制中心节点的可扩展性(scalability)。在本发明的一些实施例中,中心节点可改为存储所需的用于确定何时向数据源发送确认的数据。数据源会保留数据的副本,直到中心节点发送确认。在中心节点上存储数据包括可选的增强。
中心节点会收到来自多播组中一个或多个数据目的地的确认,确认它们收到了以多播方式分发的数据。中心节点可存储用于识别每个已发送确认的数据目的地的信息。中心节点响应所接收的来自多播组内每个数据目的地的确认,向数据源发送确认。该确认与数据源之前发送的多播数据相对应。所述确认告知数据源:已经成功完成向多播组多播数据。数据源随后释放之前分配的用于存储发往中心节点数据的资源。
根据本发明的一方面,中心节点可用作通信网络中的交换设备。中心节点可用于在分布式计算集群内的节点之间传送数据,而不需要在传送完成之前一直存储数据。
在一些传统系统中,中心节点的功能由应用网关服务器实现。当数据源向应用网关发送将要多播到多播组的数据时,应用网关存储所接收的数据,将所接收的数据多播到多播组内的多个数据目的地,并继续分配资源以存储所接收的数据。随后,应用网关接收多播组内的数据目的地的确认。在收到到每个数据目的地的确认后,应用网关释放之前为存储数据而分配的资源。在用作应用网关时,中心节点可减轻数据源上的跟踪任务,该任务用于对到多播组内目的地的数据传输情况进行跟踪。这将要求中心节点存储数据,直到多播组内的每个目的地确认接收到数据为止。
在本发明中心节点用作交换设备的一些实施例中,要求数据源存储数据,而中心节点执行收集和关联来自每个数据目的地的确认的任务。
本发明的一些实施例可用于在分布式集群计算系统中和/或在多播组内实现同步。这种方法包括栅栏(fencing)或者栅栏柱(fenceposting)。栅栏柱代表状态标记,其代表计算节点、或者集群计算环境中的节点已经完成的处理阶段。本方法包括节点在完成时隙相关联的任务时,向中心节点发送进度消息。节点可以是多播组内或者分布式集群计算系统内的站点成员(station member)。进度消息包括阶段号指示符。阶段号指示符表示该时隙已完成,以及该时隙在节点所完成的多个时隙中的次序信息。每个完成的时隙与一个阶段号相关联。与阶段号指示符有关的值将与存储在中心节点的栅栏柱标记表中的值进行比较。栅栏柱标记表包括与其他节点发送到中心节点的阶段号指示符有关的一个或多个值。基于这种比较,中心节点响应所接收的进度(progress)消息,向多播组中的每个节点或者每个站点成员发送进度更新消息。进度更新消息可指出多播组中每个节点已经处理完成的最小号时隙对应的最小阶段号。
收到进度更新消息的每个节点都使用进度更新消息中包含的信息来判断使其开始处理下一时隙的任务的先决条件是否已经满足。在这里,进度更新消息中包含的信息可用于定义屏障。屏障包括先决条件,即节点开始处理与后续时隙有关的任务之前需要满足的先决条件。屏障可通过在分布式集群计算系统中一个或多个节点上完成必要时隙来满足。可独立于其他节点为一个或多个节点定义与屏障有关的先决条件。
图1是根据本发明的一个实施例的用于可靠多播数据报和屏障的示范性分布式集群计算系统环境的示意图。参考图1,图1示出了网络102、中心节点104、多个辐条节点(spoke node)106a、108a、110a和112a,以及对应的多个数据库应用程序106b、108b、110b和112b。网络102包括使得多个使辐条节点106a能够与其他辐条节点108a和/或中心节点104进行通信的通信媒介和/或通信设备。在本发明的一些实施例中,中心节点104和/或辐条节点106a的功能可以但不限于在计算机系统中实现。例如,中心节点104的功能可位于与辐条节点106a不同的计算机系统中,或者与一个或多个辐条节点位于一个计算机系统中。
中心节点104以及辐条节点106a、108a、110a和112a连接到网络102。例如,辐条节点106a、108a、110a和112a中的一个或多个可分别执行相应的数据库应用程序106b、108b、110b和112b。通常,可在辐条节点和/或中心节点上并发执行多个软件进程,例如数据库应用程序。
在本发明的一些实施例中,多播组包括辐条节点106a、108a、110a和112a。例如,在星形配置中,中心节点104使多播组中的一个辐条节点如106a能够通过中心节点104将数据多播到包括辐条节点106a、108a、110a和112a的多播组。数据库应用程序例如应用程序106b通过网络102向中心节点104发送数据,实现将数据多播到多个数据库应用程序106b、108b、110b和112b。辐条节点106a可将数据发往中心节点104。中心节点104随后通过网络102将数据多播到多个辐条节点106a、108a、110a和112a。
中心节点104以及辐条节点106a、108a、110a和112a能够使用多种协议来通过网络102发送、接收和/或多播数据。其中很多协议由互联网工程任务组(IETF)的标准文档定义。这些标准文档包括请求注解(RFC)文档。可用于建立网络连接的一个示范性通信协议是传输控制协议(TCP)。RFC 793公开了基于TCP的通信,本文引用了其中的全部内容。用于在网络上路由在网络连接中传输的信息的一个示范性协议是互联网网协议(IP)。RFC 791公开了根据IP的通信,本文引用了其中的全部内容。用于在网络上传输或者路由信息的一个示范性媒介是以太网,其应用于有线和无线介质的部分分别由电器和电子工程师协会(IEEE)802.3和802.11定义,本文引用了其中的全部内容。
TCP可称为可靠通信协议。通过TCP向数据目的地如中心节点104发送数据的数据源如辐条节点106a,能够预期的接收到数据目的地对所发送的数据进行响应而发出的确认。如果数据源在发送数据那一刻后的指定时间段内没有接收到确认,数据源将在随后的时刻重新发送数据。进行可靠通信的必要条件还要求数据源存储已发送的数据,直到接收到数据目的地的确认。
本发明的一些实施例可使用任意可靠通信协议在辐条节点和中心节点之间进行点到点通信。一个示范性的可靠通信协议是TCP,但是可靠通信协议不局限于TCP,例如它还可以是MST-MPA和SCTP等。
中心节点104随后向多播组内的每个辐条节点106a、108a、110a和112a发送数据。中心节点104在发送数据时使用可靠协议如TCP。接着,中心节点至少释放一部分用于存储所接收数据的资源。中心节点继续存储与发送到每个辐条节点的数据有关的标识符和/或状态信息。随后,中心节点104接收到来自辐条节点的确认,表明对应的辐条节点已经接收到多播数据。中心节点104更新每个确认中包含的标识符信息,以更新对应的状态信息。在中心节点104收到每个辐条节点的确认之后,向最初发送多播数据的辐条节点106a发送确认。辐条节点106a响应所接收的确认消息,释放用于存储发往中心节点104的多播数据的资源。
图2是根据本发明的一个用于可靠多播的示范性系统的结构示意图。参考图2,图中示出了网络102、中心节点202、辐条节点206。中心节点202包括网络接口卡(NIC)212、处理器214、系统存储器220和总线222。NIC 212包括TCP卸载引擎(TOE)241、存储器234、网络接口232和总线236。TOE 241包括处理器243、连接点245和可靠多播点247。辐条节点206包括NIC 242、多个处理器244a、246a和248a、多个远程应用程序244b、246b和248b、系统存储器250和总线252。NIC 242包括TOE 272、存储器264、网络接口262和总线266。TOE 272包括处理器274、连接点276以及可靠多播点277。
处理器214包括合适的逻辑、电路和/或编码,可用于发送、接收和/或处理数据。处理器214可用于控制中心节点202的操作和/或执行应用程序代码,例如数据库应用程序。处理器214可连接到总线222。处理器214通过总线222来发送和/或接收数据,以此执行协议处理。例如,协议处理与上层协议有关。例如,上层协议可用于连接应用程序。处理器214还执行与接收以及在随后在多播组中分发多播数据有关的协议处理。
系统存储器220包括合适的逻辑、电路和/或编码,可用于存储、写入和/或获取、或者读取信息、数据和/或可执行代码。系统存储器220包括多种随机访问存储器(RAM)技术,例如DRAM。
NIC 212包括合适的电路、逻辑和/或编码,使中心节点202能够与网络如以太网中发送和/或接收数据。NIC 212连接到网络102。NIC 212连接到总线222。NIC 212使中心节点202可靠地将信息从辐条节点106a多播到多播组内的多个辐条节点106a、108a、110a和112a。
TOE 241包括合适的逻辑、电路和/或代码,以执行协议处理和/或在中心节点202中提供可靠的多播服务。在本发明的一些实施例中,TOE 241使用包括多种协议的协议栈。在本发明的一个实施例中,协议栈包括多个可靠多播协议。可靠多播协议使TOE 241能够接收来自数据源的多播数据。数据源关联到多播组。可靠多播协议使TOE 241能够将所接收的多播数据发送到与多播组关联的多个数据目的地。
在本发明的一个示范实施例中,TOE 241在将所接收的多播数据发送到多个数据目的地时,使用基于多流标记符的协议数据单元对齐(MST-MPA)(multi-streamed marker based protocol data unit aligned)协议。在本发明的另一个示范实施例中,TOE 241在将所接收的多播数据发送到多个数据目的地时,使用流控制传输协议(SCTP)。TOE 241使用TCP来将所接收的多播数据可靠地传输到多个数据目的地。例如,多流式的可靠多播协议使TOE241通过使用对应的多个TCP隧道,来实现将所接收的多播数据传输到每个数据目的地。TCP隧道定义一组TCP连接组合。例如,在TOE 241和其中一个数据目的地之间建立的TCP隧道将包括多个TCP连接。2005年11月8日申请的美国专利申请11/269,005提供了额外的关于TCP隧道的信息,本文引用了其中的全部内容。可靠多播协议的可靠通信特征使得TOE 241可将收到的多播数据发往多个数据目的地,并处理来自每个数据目的地的与所发送的多播数据有关的确认。2005年11月8日申请的美国专利申请11/269,422提供了额外的关于MST-MPA和SCTP的信息,本文引用了其中的全部内容。
存储器234包括合适的逻辑、电路和/或编码,能够存储和/或获取信息、数据和/或代码。存储器可存储多播数据,多播数据将在存储器234中分配到物理资源,以便进行存储。所存储的多播数据可用于随后的检索。存储器234能够输出所检索的多播数据,并将其发送到直接/间接通信连接到存储器234的其他设备、组件和/或子系统。存储器234能够保存所存储的多播数据,和/或随后检索该多播数据,直到用于存储的资源被释放。可基于所接收的让存储器234删除所存储的多播数据的指令来释放物理资源,或者基于所接收的指示将物理资源分配用于存储后续的二进制信息的指令来释放该物理资源。存储器234可使用多种存储媒介技术,例如易失性存储器(voatile memory)如随机访问存储器(RAM),和/或非易失性(nonvolatile memory)存储器如电可擦除可编程只读存储器(EEPROM)。
网络接口232包括合适的逻辑、电路和/或编码,用于发送和/或接收数据。网络接口连接到网络102。网络接口232连接到总线236。网络接口232通过总线236接收比特。例如,比特与多播数据关联。网络接口232随后将比特转换为数据形式,其中包括电和/或光信号,以及为网络媒介如以太网制定的对应规范中指定的相关时间参数、信号振幅、能量和/或功率级别。数据形式也包括一个或多个帧信息比特,用于标识数据形式的开始与结束。数据形式可通过网络102传输。
网络接口232通过网络102接收信号,该信号可包括一个或多个标识所接收数据的开始处和结束处的帧信息比特。在数据开始处和数据结束处之间的接收信号可包括比特形式的多播数据。所接收的信号可转换成的二进制形式,这种二进制形式包括基于所检测的电和/或光信号的比特,以及为网络媒介如以太网制定的对应规范中指定的相关时间参数、信号振幅、能量和/或功率级别。网络接口232随后通过总线286发送与二进制信息有关的比特,例如多播数据比特。
处理器234包括合适的逻辑、电路和/或编码,可用于执行TOE 241内的至少一部分协议处理任务,这些任务与在多播组内可靠分发多播数据有关。
可靠多播点247包括可由处理器243执行的计算机程序和/或代码,用于接收来自辐条节点或者数据源的数据,并将所接收的数据多播到多播组中的多个辐条节点或者数据目的地。可靠多播点247使用连接点245提供的点到点连接,将从其中一个辐条节点接收的消息传递到多播组内的多个辐条节点,以及汇总所接收的来自辐条节点的确认,产生单个确认,该单个确认将发往数据源。
可靠多播点247通过可靠的点到点连接如TCP隧道和/或TCP连接接收数据报,该数据报包括来自数据源的数据。可靠多播点247分配用于存储所接收的数据报的资源。
所接收的数据报包括进站序列号。例如,进站序列号与TCP隧道和/或TCP连接关联。可靠多播点247用于将进站序列号转换为全局序列号。可靠多播点247使用全局序列号来组织所接收的多个数据报,例如,组织通过TCP隧道和/或TCP连接接收的数据报,以便随后在多播组内分发。
可靠多播点247用于建立和/或维护偏移差分表(table of offsetdifferential)。偏移差分表包括多个对应于与多播组关联的多个数据目的地的偏移值。可靠多播点247选择与多播组内选定的数据目的地对应的偏移值。所选择的偏移值与关联到数据报的全局序列号的值相加,以计算与数据报关联的出站序列号。随后,与出站序列号关联的数据报传输到选定的数据目的地。与出站序列号关联的数据报使用TCP隧道和/或TCP连接将数据报传输到数据目的地。
可靠多播点247用于分配资源,该资源用于存储状态信息,该状态信息与数据报到数据目的地的传输情况有关。例如,状态信息表明,与出站序列号有关的数据报已经通过例如TCP隧道和/或TCP连接传输到数据目的地。状态信息也表示在等待来自数据目的地的、表明已收到数据报的确认等。
可靠多播点247可重复上述过程,将数据报发送到多播组内的其他数据目的地。将数据报传输到多播组内的每个数据目的地之后,可靠多播点247可用于释放之前分配的、用于存储之前接收的数据报的资源。
可靠多播点247可在每个消息中添加标识符,以便接收器能够识别消息源。当可靠点到点协议具有“多流式”能力时,例如具有SCTP或者MST-MPA能力时,可靠多播点247将源端标识符转换成流标识符。当所用的点到点协议不具有这种能力时,可靠多播点247将原始消息封装在数据包中,除原始消息外,该数据包中还包括原始源的标识符。
可靠多播点247可用于通过可靠的点到点协议,接收来自数据目的地的表明已经成功接收所传输的数据报的确认。对应的出站序列号在接收确认中传输。可靠多播点247用于根据所接收的确认修改对应的状态信息。例如,所修改的状态信息表明,已经从对应的数据目的地接收到确认,该确认表明对应的数据目的地已经成功地接收到之前传输的数据报。
可靠多播点247可重复上述过程,来接收到多播组内后续数据目的地的确认。在收到多播组内的每个数据目的地的确认之后,可靠多播点247可通过例如TCP隧道和/或TCP连接向数据源发送确认。
连接点245包括计算机程序和/或代码,例如,这些程序和/或代码可由处理器243执行以进行TCP协议处理。一个示范性的协议处理包括建立TCP隧道。
网络接口262与网络接口232基本相同。网络接口262连接到总线266。网络接口262也可连接到网络102。存储器264与存储器234基本相同。存储器264连接到总线266。处理器274与处理器234基本相同。连接点276与连接点245基本相同。系统存储器250与系统存储器220基本相同。系统存储器250连接到总线252。
处理器244a包括合适的逻辑、电路和/或编码,用于发送、接收和/或处理数据。例如,处理器244a能够执行应用程序代码、数据库应用程序等。处理器244a可连接到总线252。处理器244a也执行协议处理,这些协议处理与在传送多播数据以在多播组内分发多播数据有关。
本地应用程序244b包括代码,该代码可由处理器244a执行,使处理器244a能够执行与一个或多个应用程序如数据库应用程序有关的功能。本地应用程序244b也可控制处理器244a执行有关步骤来传送多播数据,以在多播组内分发多播数据。
处理器246a与处理器244a基本相同。处理器246a可连接到总线252。本地应用程序246b与本地应用程序244b基本相同。处理器248a与处理器244a基本相同。处理器248a连接到总线252。本地应用程序248b与本地应用程序244b基本相同。
NIC 242包括合适的电路、逻辑和/或编码,使辐条节点206能够发送和/或接收来自网络如以太网的数据。NIC 242连接到网络102。NIC 242也连接到总线252。NIC 212使辐条节点206向中心节点104提供可靠的信息传送,这些信息随后将多播到多播组内的多个辐条节点106a、108a、110a和112a。
TOE 272包括合适的电路、逻辑和/或编码,以在辐条节点206内执行协议处理和/或提供可靠多播服务。TOE 272可连接到总线252。TOE 272可连接到总线266。在本发明的一些实施例中,TOE 272使用包括多种协议的协议栈。在本发明的一个实施例中,协议栈包括可靠多播协议。可靠多播协议使TOE 272能够向中心节点传输源数据。可靠多播协议也使TOE 272能够传输对应的信息,该信息指示中心节点104将所传输的源数据多播到多播组内的每个辐条节点106a、108a、110a和112a。辐条节点206和中心节点104与多播组关联。
可靠多播协议也使TOE 272能够在随后接收确认,该确认是对中心节点104所发出的源数据做出的响应。点到点传输协议例如TCP,使TOE 272启动计时器,该计时器与向中心节点104发送源数据有关。当计时器发生超时事件时,点到点传输协议使TOE 272重新发送之前向中心节点传输的源数据。
可靠多播协议也使TOE 272接收来自中心节点104的多播数据。可靠多播协议使TOE 272响应对多播数据的接收,使TOE 272向中心节点104传输确认,如可靠点到点传输协议提供的一样。
在本发明的一个示范实施例中,TOE 272向中心节点104传输源数据和/或从中心节点104接收多播数据时,使用MST-MPA协议。在本发明的另一个示范实施例中,TOE 272使用SCTP向中心节点104传输源数据和/或从中心节点104接收多播数据。TOE 272使用TCP以可靠地将源数据传输到中心节点104,和/或从中心节点104接收多播数据。多流式的可靠多播协议使TOE 272可实现源数据的发送,和/或接收多播数据,例如通过使用一个或多个TCP隧道实现。本发明的一方面,可靠多播协议使TOE 272向中心节点104传输源数据。在本发明的另一方面,可靠多播协议使TOE 272接收中心节点104的多播数据。
可靠多播点277包括可由处理器274执行的计算机程序和/或代码,用于向中心节点104发送源数据,和/或从中心节点104接收多播数据。可靠多播点277用于通过TCP隧道和/或TCP连接向中心节点104传输数据报,该数据报包括源数据。可靠多播点277传输与数据报有关的信息,该信息指示中心节点104向多播组内的每个辐条节点传输数据报。可靠多播点277可用于分配资源,该资源用于存储所发送的数据报。分配资源以存储所发送的数据报,至少直到接收到来自中心节点104的对应的确认为止。所传输的数据报包括源序列号。例如,源序列号与可靠点到点连接有关。
可靠多播点277可用于分配资源,该资源用于存储与数据报到数据目的地的传输情况有关的状态信息。例如,状态信息表明,与源序列号有关的数据报已经通过可靠点到点协议传送到中心节点104。一个示范性的状态信息还可表明正在等待确认。在接收到确认之后,可靠多播点277可用于释放之前分配的、用于存储之前所传输的数据报的资源。
按照所选协议的惯例,可靠多播点277用于通过可靠点到点协议,向中心节点104传输表明已经成功接收到多播数据的确认。
在操作时,中心节点202和辐条节点206关联到包括多个辐条节点的多播组。远程应用程序244b控制处理器244a向与多播组的关联的多个辐条节点传输源信息。该源信息可存储在系统存储器250中。处理器244a可向系统存储器250发送指令,该指令控制系统处理器250获得该源信息的副本,该副本随后通过总线252传输到TOE 272。
可靠多播协议277控制处理器274使用源数据来产生数据报。该数据包与在数据报内传输的源序列号关联。可靠多播点277控制处理器274指示存储器264分配资源用于存储该数据报。可靠多播点277也控制处理器274指示存储器264分配资源以存储状态信息,该状态信息与随后到中心节点202的数据报的传送情况有关。
连接点276控制处理器274执行建立可靠点到点连接的步骤,该点到点连接将辐条节点206中的连接点276通信连接到中心节点202中的连接点245。可靠多播点277可控制连接点276建立和/或选择点到点可靠连接,该点到点可靠连接与向多播组内的每个辐条节点206分发多播数据有关。
可靠多播点277控制处理器274指示处理器264获取数据报的副本,该副本随后传输到网络接口262。连接点276可控制处理器274指示网络接口262使用选定的点到点连接,以通过网络102将数据报传输到中心节点202。可以修改状态信息,以表明与源序列号关联的数据报已经通过选定的TCP隧道和/或TCP连接传输到中心节点202,正等待中心节点202的确认。
可靠多播点277控制处理器274在传输数据报那一刻启动定时器。如果没有接收到确认,定时器将在超时时间段后过期。如果定时器过期,可靠多播点277可控制处理器274执行一些步骤,用于向中心节点102重新传送先前传送的数据报。数据报的重传过程与上文描述的数据报传送过程相同。状态信息也包括与定时器有关的信息。
中心节点202中的网络接口232通过网络102接收数据报。连接点245使处理器243确定数据报是通过TCP隧道和/或TCP连接收到的,这说明所接收的数据报包含作为多播数据分发到多播组中每个辐条节点206的信息。可靠多播点247控制处理器243指示存储器234分配资源以存储收到的多播数据。可靠多播点247控制处理器243指示存储器234分配资源以存储状态信息,该状态信息与确保多播组中多播数据的分发有关。状态信息包括进站序列号信息,进站序列号信息的值可基于所接收的数据报确定。例如,状态信息也包括传送数据报的TCP隧道和/或TCP连接的标识符。在将所接收的多播数据存储到存储器234之前,可靠多播点247控制处理器243产生全局序列号。可以修改多播数据以包括全局序列号。
可靠多播点247可控制将所接收的多播数据传送到多播组内关联的每个辐条节点206。将多播数据传输到多播组内的一个辐条节点206时,可靠多播点247执行一个流程,该流程基本上与将多播数据传输到多播组内的其余辐条节点时执行的流程相同。
可靠多播点247可控制处理器243将多播数据传输到辐条节点206。可靠多播点247可控制处理器243指示存储器234获取多播数据的副本。可靠多播点247可控制处理器产生偏移差分表。处理器243选择与辐条节点206对应的偏移值。处理器243基于全局序列号以及偏移值计算出站序列号。所获取的多播数据的副本可以修改,以包括出站序列号。可靠多播点247可控制处理器243使用经修改的多播数据的副本来产生多播数据报。
可靠多播点247也可控制处理器分配资源以存储状态信息,该状态信息与多播数据报到辐条节点206的传输情况有关。
连接点245可控制处理器243执行步骤,该步骤可建立或者选择TCP隧道和/或TCP连接等,该TCP隧道和/或TCP连接通信地连接到连接点245和连接点276。所建立的和/或所选择的TCP隧道和/或TCP连接可用于将多播数据报从中心节点202传输到辐条节点206。
连接点245可控制处理器243指示网络接口232来使用所选择的点到点连接,以通过网络102将多播数据报传输到辐条节点206。可以修改与多播数据报有关的状态信息,以表明与出站序列号关联的多播数据报已经通过例如选定的TCP隧道和/或TCP连接传输到辐条节点206,,正在等待来自辐条节点206的确认。
辐条节点206中的网络接口262可通过网络102接收多播数据报。连接点276使可靠多播点277能够控制处理器274执行与接收多播数据报有关的步骤。可靠的点到点协议控制处理器274响应所接收的数据报,产生确认。该确认随后被传输到中心节点202中的点到点协议。可靠多播点277控制处理器274在确认中传输出站序列号信息,该信息包含在所接收的多播数据报中。该确认通过例如对应的TCP隧道和/或TCP连接传输到可靠多播点247。
连接点276控制处理器274执行步骤,该步骤将控制选择TCP隧道和/或TCP连接,该TCP隧道和/或TCP连接通信地连接连接点275和连接点276。可靠多播点277控制连接点276选择TCP隧道和/或TCP连接,以传输基于TCP隧道和/或TCP连接的确认,该确认用作对应的所接收多播数据报的收条。
可靠多播点277可控制处理器274指示网络接口262使用选定的TCP隧道和/或TCP连接,以通过网络102将确认传输到中心节点202。
中心节点202中的网络接口232可通过网络102接收确认。该确认中包含的信息可通过连接点245传输到可靠多播点247。可靠多播点247使用该确认中包含的信息来控制处理器243修改与对应的多播数据报有关的状态信息。可靠多播点247使用该确认中包含的序列号信息来表示多播数据报,该多播数据报对应于所接收的确认。所修改的状态信息可以表示该确认的接收。
将取得的多播数据报的副本传输到多播组内的辐条节点206之后,可靠多播点247控制处理器243指示存储器234释放资源,该资源之前被分配用于存储从辐条节点206接收的数据报。
在接收到多播组中的每个辐条节点206的确认之后,可靠多播点247控制处理器243产生确认,该多点确认将被传输到可靠多播点277。
可靠的点到点协议控制处理器243产生本地确认,该本地确认随后被传输到辐条节点206。可靠的点到点协议控制处理器243通过对应的TCP隧道和/或TCP连接传输该确认中包含的进站序列号。连接点245控制处理器243执行步骤,该步骤控制对TCP隧道和/或TCP连接的选择,该TCP隧道和/或TCP连接通信地连接到中心节点202的连接点245以及辐条节点206中的连接点276。可靠多播点247控制连接点245选择TCP隧道和/或TCP连接以传输确认,例如,基于用于接收对应的数据报的TCP隧道和/或TCP连接进行选择。
可靠多播点247控制处理器243指示网络接口232使用选定的TCP隧道和/或TCP连接,通过网络102将确认传输到辐条节点206。
中心节点202中的网络接口262能够通过网络102接收确认。包含在该确认中的信息可通过连接点276传输到可靠多播点277。可靠多播点277使用该确认中包含的信息来控制处理器274修改与对应的数据报有关的状态信息。可靠多播点247可使用该确认中包含的序列号信息来标识与所接收的确认对应的数据报。所修改的状态信息可防止基于超时时间段设定的定时器超时。
在传输确认之后,可靠多播点247控制处理器243指示存储器234释放之前分配用于存储对应的状态信息的资源。
在接收到确认之时,可靠多播点277控制处理器274指示存储器停止对应的定时器,并防止基于超时时间段而设定的定时器过期。处理器274指示存储器264释放之前分配用于存储之前传输对应的源信息和/或状态信息的资源。
图3是根据本发明的一个实施例的MST-MPA协议栈上的示范性可靠多播的示意图。参考图3,图3示出了在MST-MPA上的可靠多播协议栈302。在MST-MPA上的可靠多播协议栈302包括上层协议304、可靠多播协议306、直接数据放置协议(direct data placement protocol,DDP)308、基于标记的PDU对齐协议(MPA)310、TCP 312、IP 314以及以太网协议316。NIC 212或者242包括与可靠协议306、DDP 308、MPA协议310、TCP 312、IP 314以及以太网协议316有关的功能。
上层协议304包括使辐条节点206选择源信息的方法,所述源信息作为多播数据传输到多播组内的每个辐条节点。可靠多播协议306制定了使辐条节点206向中心节点202传输多播数据的各种方法。中心节点202随后将多播数据传输到与辐条节点206关联的多播组中的每个辐条节点。DDP 308能够将信息从例如辐条节点206的应用程序用户空间复制到中心节点202的应用程序用户空间,而不需要进行将信息复制到内核空间的中间复制过程。这种方法称为“零复制”(zero copy)法。
MST-MPA协议310包括通过TCP连接实现辐条节点206和中心节点202之间通信的方法。TCP 312以及IP 314包括根据工程任务组(IETF)定义的合适协议通过网络交换信息的方法。以太网层316包括根据IEEE定义的合适的标准通过网络交换信息的方法。
图4是根据本发明的一个实施例的SCTP协议栈上的示范性可靠多播的示意图。参考图4,图4示出了在SCTP上的可靠多播协议栈402。在SCTP上的可靠多播协议栈402包括上层协议304、可靠多播协议306、直接数据放置协议(DDP)308、流式传输控制协议(SCTP)410、IP 314以及以太网协议316。NIC 212或者242包括与可靠协议306、DDP 308、SCTP协议410、IP 314以及以太网协议316有关的功能。上层协议304、可靠多播协议306、直接数据放置协议(DDP)308、IP 314以及以太网协议316与图3所述基本相同。SCTP410可包括与MPA协议310和TCP 312等效的功能。
2005年11月8日申请的美国专利申请11/269,422公开了关于MST-MPA、SCTP以及DDP的其他信息,本文也参考了其中的全部内容。
图5是根据本发明的一个实施例的用于可靠多播数据报的系统的示范性数据结构示意图。参考图5,图中示出了中心节点502。中心节点包括全局数据504以及多个辐条数据506、508、510、512、514、516、518和520。中心节点502表示图2所示的中心节点202。多个辐条数据506、508、510、512、514、516、518和520对应于多播组中的多个辐条节点206。辐条数据包括状态信息,该状态信息与中心节点202和对应的辐条节点206之间的通信有关。全局数据504包括状态信息,该状态信息与中心节点202与多播组中的多个辐条节点之间的通信有关。中心节点502通过一个或多个TCP隧道和/或TCP连接与多个辐条节点206进行通信,该多个辐条节点206对应于多个辐条数据506、508、510、512、514、516、518和520。
在一个方案中,全局数据504包括中心节点202接收到的一组确认,该组确认响应分发到多播组中的每个辐条节点206的多播数据。中心节点202将多播数据传输到多播组内的每个辐条节点206。中心节点202维持全局数据,该全局数据包括状态信息,该状态信息表示多播组中的哪个辐条节点已经确认接收到多播数据报。例如,中心节点202基于该全局数据传输确认。
一些方案中,辐条数据包括信息和序列号,该信息包含在中心节点202响应包含多播数据的数据报的接收而传输的确认中,该序列号与中心节点与对应辐条节点206之间传输的数据报和/或确认有关。出站差分(outbounddifferential)与每个辐条数据块相关联。出站差分表示偏移值,该偏移值对应于多播组内的辐条节点206。辐条数据也包括进站序列号,用入站X1、入站X2和入站X3表示,其与从指定的辐条节点206接收的数据报D1、D2和D3有关。例如,对应于辐条数据块506的入站X1、入站X2和入站X3的值可能与对应于辐条数据块508的入站X1、入站X2和入站X3的值不同。对应的进站序列号入站X1、入站X2和入站X3在每个辐条数据块中被转换成全局序列号全局Y1、全局Y2和全局Y3。基于与对应的辐条数据块有关的出站差分值,以及基于全局序列号的值,可以计算出中心节点202传输到对应各辐条节点206的每个数据报的出站序列号。
图6A是根据本发明的一个实施例的用于可靠多播数据报的系统中多播数据报分发过程的示意图。参考图6A,图中示出了示范的多个数据报602a、602b、602c、604a、604b、604c、606a、606b、606c、606d、606e、606f、610a、610b、610c、610d、610e、610f、612a、612b、612c、612d、612e、612f以及示范的偏移差分表。该多个数据报602a、602b、602c、604a、604b、604c包括由中心节点分发到多播组中的多个辐条节点的多播数据。示范的多播组包括中心节点104、辐条节点106a和108a。多个数据报602a、602b、602c由辐条节点106a传输到中心节点104,用标签A表示。多个数据报604a、604b、604c由辐条节点108a传输到中心节点104,用标签B表示。
数据报602a包括示范的进站序列号2000,数据报602b包括示范的进站序列号3000,数据报602c包括示范的进站序列号4000;数据报604a包括示范的进站序列号6000,数据报604b包括示范的进站序列号7000,数据报604c包括示范的进站序列号8000。
从辐条节点106a接收到数据报602a、602b、602c之时,中心节点104产生全局序列号。数据报602a可对应于数据报606a。示范进站序列号2000被转换成全局序列号12000。数据报602b对应于数据报606b,示范进站序列号3000被转换成13000。数据报602c对应于数据报606c,示范进站序列号4000被转换成14000。
从辐条节点108a接收到数据报604a、604b、604c之时,中心节点104产生全局序列号。数据报604a可对应于数据报606d。示范进站序列号6000被转换成全局序列号15000。数据报604b对应于数据报606e,示范进站序列号7000被转换成16000。数据报604c对应于数据报606f,示范进站序列号8000被转换成17000。
中心节点104可将多个数据报606a、606b、606c、606d、606e以及606f分发到多播组内的每个辐条节点106a和108a。
中心节点104通过参考由标签C表示的偏移查分表中包含的值,分别确定与辐条节点106a、108a对应的偏移值。示范的与辐条节点106a对应的偏移值是10000,示范的与辐条节点108a对应的偏移值是16000。
基于与数据报606a、606b、606c、606d、606e、606f有关的全局序列号,以及基于与辐条节点106a有关的示范偏移值,中心节点104能够计算多播数据报的出站序列号,该出站序列号被传输到辐条节点106a。如标签D所示,该多个数据报610a、610b、610c、610d、610e和606f被传输到辐条节点106a。
数据报610a包括示范的出站序列号22000,数据报610b包括示范的出站序列号23000,数据报610c包括示范的出站序列号24000,数据报610d包括示范的出站序列号25000,数据报610e包括示范的出站序列号26000,数据报610f包括示范的出站序列号27000。
基于与数据报606a、606b、606c、606d、606e、606f有关的全局序列号,以及基于与辐条节点108a有关的示范偏移值,中心节点104能够计算多播数据报的出站序列号,该出站序列号被传输到辐条节点108a。如标签E所示,该多个数据报、612a、612b、612c、612d、612e和602f被传输到辐条节点108a。
数据报612a包括示范的出站序列号31000,数据报612b包括示范的出站序列号32000,数据报612c包括示范的出站序列号33000,数据报612d包括示范的出站序列号34000,数据报612e包括示范的出站序列号35000,数据报612f包括示范的出站序列号36000。
图6B是根据本发明的一个实施例的用于可靠多播数据报的系统中的消息交换的示意图。参考图6B,图中示出了在发送方辐条节点和中心节点之间的消息交换,以及在中心节点和多播组之间的消息交换,发送方辐条节点、中心节点和多播组如图6B中所标示。发送方辐条节点表示将多播数据传输到中心节点的辐条节点,该多播数据随后被通过多个多播数据报传输到与多播组关联的对应的多个辐条节点。多播组包括多个辐条节点。
步骤621中,发送方辐条节点存储将要传输给中心节点的源数据。在发送方辐条节点上分配资源以存储源数据。步骤622中,发送方辐条节点将包括源数据的数据报传输给中心节点。在步骤626a,…,626n中,中心节点将对应的多播数据报传输到与多播组关联的每个辐条节点。在步骤628a,…,628n中,每个接收方辐条节点响应接收到的对应的多播数据报,向中心节点发送确认。步骤630中,中心节点向发送方辐条节点发送确认。在步骤631中,发送方辐条节点释放之前分配的用于存储源数据的资源。
在本发明的另一个实施例中,中心节点104可用于在分布式集群计算系统中实现同步。图7是根据本发明的一个实施例的用于屏障的系统的数据结构的示范性示意图。参考图7,图中示出了中心节点702。该中心节点包括全局数据704以及多个辐条数据706、708、710、712、714、716、718和720。中心节点702表示中心节点202。多个辐条数据706、708、710、712、714、716、718和720对应于多播组中的多个辐条节点206。辐条数据包括状态信息,该状态信息与时隙或者栅栏柱有关,表示正由集群计算环境中的辐条节点执行的计算任务的状态。全局数据包括状态信息,该状态信息与时隙或者栅栏柱有关,该状态标记是表示集群计算环境中每个辐条节点已经完成的最小的处理阶段号的状态标记符。
辐条节点106a可完成一个时隙,该时隙对应于与状态标记符有关的栅栏柱。辐条节点106a向中心节点104发送进度消息。中心节点104向辐条节点106a发送确认消息。进度消息包括基于状态标识符的信息。与辐条节点106a有关的辐条数据706基于状态标记符保持状态信息local_sent。全局数据704包括与集群计算环境中每个辐条节点已经完成的最小的处理级号有关的信息。
与每个辐条数据块关联的是出站差分。出站差分表示对应于集群计算环境中的辐条节点206的偏移值。在本发明的一些实施例中,对于每个辐条数据块706、708、710、712、714、716、718和720,与出站差分有关的值可以是0。基于与全局数据704关联的最小阶段号信息,以及基于与辐条数据706有关的local_sent状态信息,可以计算出每个辐条数据块的相对最小状态标记符local_acked。传输到集群计算环境中的每个辐条节点206的确认消息包括相对最小状态标记符的值local_acked。
图8是根据本发明的一个实施例的在屏障系统中分发状态标记符信息的示意图。参考图8,图中示出了多个进度消息802、804和806、栅栏主标记表808以及多个进度更新消息810、812和814。进度更新消息810对应于进度消息802,进度更新消息812对应于进度消息804,进度更新消息814对应于进度消息806。
辐条节点106a向中心节点传输进度消息802,如标签A所示。进度消息802包括状态标记值,该状态标记值表示辐条节点106a已经完成第5阶段计算任务。辐条节点108a向中心节点传输进度消息804,如标签B所示。进度消息804包括状态标记值,该状态标记值表示辐条节点108a已经完成第7阶段计算任务。辐条节点110a向中心节点传输进度消息806,如标签C所示。进度消息806包括状态标记值,该状态标记值表示辐条节点110a已经完成第8阶段计算任务。
中心节点104接收每个进度消息802、804和806。对应的状态标记值存储在栅栏柱标记表808中。栅栏主标记表808中的项目对应于集群计算环境中的辐条节点。例如,状态标记值stage_5与辐条节点106a关联,状态标记值stage_7与辐条节点108a关联,状态标记值stage_8与辐条节点110a关联。
中心节点104检查与栅栏主标记808中的每个项目有关的值,以确定最小处理阶段号。例如,示范的最小处理阶段号是stage_5。中心节点104响应接收到的辐条节点106a的进度消息802,传输进度更新消息810。进度更新消息810包括基于栅栏主标记表808的内容的最小阶段号信息stage_5。进度更新消息810可传输到辐条节点106a,如标签D所示。中心节点104响应接收到辐条节点108a的进度消息804,传输进度更新消息812。进度更新消息812包括基于栅栏主标记表808的内容的最小阶段号信息stage_5。进度更新消息812可传输到辐条节点108a,如标签E所示。中心节点104响应接收到辐条节点110a的进度消息806,传输进度更新消息814。进度更新消息814包括基于栅栏主标记表808的内容的最小阶段号信息stage_5。进度更新消息816可传输到辐条节点110a,如标签F所示。
图9是根据本发明的一个实施例进行可靠多播数据报的方法的示范性步骤的流程图。参考图9,步骤902中,中心节点104接收发送方辐条节点106a的多播数据。中心节点和辐条节点之间的通信连接称为辐条(spoke)。所接收的多播数据包括本地序列号。
步骤906中,中心节点104将与所接收的多播数据有关的进站本地序列号转换成全局序列号。步骤908中,中心节点104执行查找操作,以确定多播组中的每个辐条节点106a、108a、110a和112a的偏移差分。计算对应的出站序列号。在步骤912中,包括多播数据的多播数据报被传输到多播组中的每个辐条节点。对应的出站序列号与每个多播数据报关联。步骤914中,中心节点104响应每个对应的多播数据报,接收确认。步骤916中,中心节点104将确认传输到发送方辐条节点。
图10是根据本发明的一个实施例进行屏障的方法的示范性步骤的流程图。。参考图10,步骤1002中,中心节点104通过辐条接收辐条节点106a的进度消息。该进度消息包括阶段号指示符。步骤1004中,中心节点104将所接收的阶段号指示符存储到栅栏主标记表808中与辐条节点106a关联的位置上。在步骤1006中,比较所接收的阶段号指示符的值与存储在栅栏主标记表中的其他阶段号指示符的值,所示其他阶段号指示符是从来自其他辐条节点的信息中收到的。
步骤1008中,确定所接收的阶段号指示符的值是否表示栅栏主标记表808中最低阶段号的值。如果是,则步骤1012中,中心节点104向辐条节点106a传输进度更新消息,该进度更新消息包括最小阶段号值,该最小阶段号值基于步骤1002中接收的阶段号指示符的值。中心节点104随后响应所接收的进度消息,在进度更新消息中将最小阶段号值传输到每个辐条节点。
如果步骤1008中,确定所接收的阶段号指示符值不表示栅栏主标记表808中最低阶段号的值,那么,在步骤1010中,中心节点104向辐条节点106a传输确认,该确认包括当前最小阶段号值。
另一方面,通过通信系统传输信息的系统包括中心节点202,中心节点202能够存储从多播组的数据源接收的数据。示范的多播交换设备包括中心节点202。示范的数据源包括辐条节点106a。示范的多播组包括多个辐条节点106a、108a、110a和112a。存储所接收的数据,要求在中心节点202上分配资源,例如在存储器234中分配资源。中心节点202能够将所接收的数据多播到多播组中的多个数据目的地。示范的数据目的地包括多个辐条节点106a、108a、110a和112a。中心节点202可释放至少一部分分配的用于存储接收数据的资源。例如,所释放的资源包括存储器234的至少一部分。资源的释放不会马上导致马上清除或者擦除存储在所释放资源中的接收数据,但是所释放的资源随后可用于其他的目的,例如存储后来的数据。响应接收到的来自每个数据目的地的确认,中心节点202将确认发送到数据源。
数据包括进站本地序列号。中心节点202将进站本地序列号转换成全局序列号。与每个数据目的地对应的偏移差分将被确定。中心节点202基于对应的偏移差分计算每个数据目的地的出站本地序列号。对所接收的数据进行多播包括计算与每个数据目的地对应的出站本地序列号。
在另一个实施例中,中心节点202能够接收多播组中的站点成员的进度消息。进度消息包括阶段号指示符。示范的站点成员包括辐条节点106a。阶段号指示符表示完成了与对应时隙关联的处理。中心节点202比较与阶段号指示符有关的值以及与所存储的信息有关的值。所存储的信息包括与接收自多播组的其它站点成员的进度消息有关的值。基于这种比较,中心节点202响应该进度消息,或者向该站点成员发送确认消息,或者向多播组内的每个站点成员发送进度更新消息。发送到之前发送状态消息的站点成员的状态更新消息包括确认。
本发明的一些实施例使用任何的可靠传输协议,以在辐条节点和中心节点之间通信。通过可靠传输协议的消息多播保留消息边界,能够表示消息的发送源。例如,MST-MPA和SCTP就是典型的可靠传输协议,可用于保留消息边界,以及将消息对齐到不同的流。例如,多播协议可对齐每个流,以供一个源终端使用。
当TCP用作可靠传输协议时,可根据多播消息定义数据包。该数据包包括消息长度、发送源以及将要多播的数据。
例如,当使用TCP时,从中心节点到辐条节点的多播栅栏消息的编码将被简化。例如,消息长度是固定的。示范的消息长度包括1个字节。例如,消息具有消息序列计数器的相关优点。在一些使用MST-MPA或者SCTP的实施例中,消息可包括0个字节的有效载荷。
相应地,本发明可以通过硬件、软件,或者软、硬件结合来实现。本发明可以在至少一个计算机系统中以集中方式实现,或者由分布在几个互连的计算机系统中的不同部分以分散方式实现。任何可以实现所述方法的计算机系统或其它设备都是可适用的。常用软硬件的结合可以是安装有计算机程序的通用计算机系统,通过安装和执行所述程序控制计算机系统,使其按所述方法运行。在计算机系统中,利用处理器和存储单元来实现所述方法。
本发明还可以通过计算机程序产品进行实施,所述程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中时,通过运行,可以实现本发明的方法。本文件中的计算机程序所指的是:可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能:a)转换成其它语言、编码或符号;b)以不同的格式再现。
本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。
Claims (9)
1.一种通过通信系统传输信息的方法,其特征在于,所述方法包括:
在多播交换设备中存储从位于多播组中的数据源接收的数据;
将所接收的数据多播到所述多播组中的多个数据目的地;
释放至少一部分用于存储所述接收的数据的资源;
从所述多播组中的站点成员接收进度消息,所述进度消息包括阶段号指示符;
将所接收的阶段号指示符存储到栅栏主标记表中与数据源关联的位置上;
比较所述阶段号指示符的值和存储在栅栏主标记表中的其它阶段号指示符的值,所述其它阶段号指示符的值是来自其它数据源的信息中收到的;
判断所接收的阶段号指示符的值是否表示栅栏主标记表中最低阶段号的值,如果是,则向数据源及多个数据目的地传输进度更新消息,该进度更新消息包括最小阶段号值;如果否,则向数据源传输确认,该确认包括当前最小阶段号。
2.根据权利要求1所述的方法,其特征在于,所述接收的数据包括进站本地序列号。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括将所述进站本地序列号转换成全局序列号。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括确定与每个所述数据目的地对应的偏移差分。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括基于所述对应的偏移差分,计算每个所述数据目的地的出站本地序列号。
6.一种通过通信系统传输信息的系统,其特征在于,所述系统包括:
中心节点,其存储从位于多播组中的数据源接收的数据;
所述中心节点将所接收的数据多播到所述多播组中的多个数据目的地;
所述中心节点释放至少一部分用于存储所述接收的数据的资源;
所述中心节点从所述多播组中的站点成员接收进度消息,所述进度消息包括阶段号指示符;
所述中心节点将所接收的阶段号指示符存储到栅栏主标记表中与数据源关联的位置上;
所述中心节点比较所述阶段号指示符的值和存储在栅栏主标记表中的其它阶段号指示符的值,所述其它阶段号指示符的值是来自其它数据源的信息中收到的;
判断所接收的阶段号指示符的值是否表示栅栏主标记表中最低阶段号的值,如果是,则向数据源及多个数据目的地传输进度更新消息,该进度更新消息包括最小阶段号值;如果否,则向数据源传输确认,该确认包括当前最小阶段号。
7.根据权利要求6所述的系统,其特征在于,所述接收的数据包括进站本地序列号。
8.根据权利要求7所述的系统,其特征在于,所述中心节点将所述进站本地序列号转换成全局序列号。
9.根据权利要求8所述的系统,其特征在于,所述中心节点确定与每个所述数据目的地对应的偏移差分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/433,287 US7849211B2 (en) | 2006-05-12 | 2006-05-12 | Method and system for reliable multicast datagrams and barriers |
US11/433,287 | 2006-05-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101072167A CN101072167A (zh) | 2007-11-14 |
CN101072167B true CN101072167B (zh) | 2010-08-11 |
Family
ID=38001990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101040171A Expired - Fee Related CN101072167B (zh) | 2006-05-12 | 2007-05-14 | 通过通信系统传输信息的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7849211B2 (zh) |
EP (1) | EP1855415A1 (zh) |
CN (1) | CN101072167B (zh) |
TW (1) | TWI410079B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078651B2 (en) * | 2008-01-24 | 2011-12-13 | Oracle International Corporation | Match rules to identify duplicate records in inbound data |
US8942112B2 (en) * | 2008-02-15 | 2015-01-27 | Cisco Technology, Inc. | System and method for providing selective mobility invocation in a network environment |
JP4998316B2 (ja) * | 2008-02-20 | 2012-08-15 | 富士通株式会社 | 通信システム及び通信処理方法並びにノード |
US9215588B2 (en) | 2010-04-30 | 2015-12-15 | Cisco Technology, Inc. | System and method for providing selective bearer security in a network environment |
EP2685664A1 (en) | 2012-07-12 | 2014-01-15 | Thomson Licensing | Multicast transmission using a unicast protocol |
JP2014059606A (ja) * | 2012-09-14 | 2014-04-03 | Yamaha Corp | 信号処理システムおよびプログラム |
US20160191508A1 (en) * | 2014-12-31 | 2016-06-30 | Nexenta Systems, Inc. | Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System |
CN106850804A (zh) * | 2017-02-07 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种海量存储系统减少网络连接数量的方法 |
CN107483306A (zh) * | 2017-07-28 | 2017-12-15 | 深圳怡化电脑股份有限公司 | 一种通信方法、通信系统及存储介质 |
US11012446B2 (en) * | 2018-12-13 | 2021-05-18 | Silicon Laboratories, Inc. | Multicast splitting |
US10833885B2 (en) | 2018-12-20 | 2020-11-10 | Silicon Laboratories, Inc. | Efficient multicast group creation |
CN111709623A (zh) * | 2020-06-04 | 2020-09-25 | 中国科学院计算机网络信息中心 | 高性能计算环境评价方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484403A (zh) * | 2002-09-20 | 2004-03-24 | 华为技术有限公司 | 网络系统中内容分发的方法 |
CN1571531A (zh) * | 2003-07-15 | 2005-01-26 | 北京三星通信技术研究有限公司 | 多媒体广播与组播业务中公用控制信息可靠传输的方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511168A (en) * | 1993-07-01 | 1996-04-23 | Digital Equipment Corporation | Virtual circuit manager for multicast messaging |
GB2288096B (en) | 1994-03-23 | 1999-04-28 | Roke Manor Research | Apparatus and method of processing bandwidth requirements in an ATM switch |
US6370571B1 (en) * | 1997-03-05 | 2002-04-09 | At Home Corporation | System and method for delivering high-performance online multimedia services |
US6600496B1 (en) * | 1997-09-26 | 2003-07-29 | Sun Microsystems, Inc. | Interactive graphical user interface for television set-top box |
US6272127B1 (en) | 1997-11-10 | 2001-08-07 | Ehron Warpspeed Services, Inc. | Network for providing switched broadband multipoint/multimedia intercommunication |
US6563793B1 (en) | 1998-11-25 | 2003-05-13 | Enron Warpspeed Services, Inc. | Method and apparatus for providing guaranteed quality/class of service within and across networks using existing reservation protocols and frame formats |
AU5285200A (en) * | 1999-05-24 | 2000-12-12 | Adaptec, Inc. | Reliable multi-unicast |
US6658463B1 (en) * | 1999-06-10 | 2003-12-02 | Hughes Electronics Corporation | Satellite multicast performance enhancing multicast HTTP proxy system and method |
US7213005B2 (en) * | 1999-12-09 | 2007-05-01 | International Business Machines Corporation | Digital content distribution using web broadcasting services |
US6782527B1 (en) * | 2000-01-28 | 2004-08-24 | Networks Associates, Inc. | System and method for efficient distribution of application services to a plurality of computing appliances organized as subnets |
US20020035681A1 (en) * | 2000-07-31 | 2002-03-21 | Guillermo Maturana | Strategy for handling long SSL messages |
US7366769B2 (en) * | 2000-10-02 | 2008-04-29 | Schlumberger Technology Corporation | System, method and computer program product for a universal communication connector |
US7240105B2 (en) * | 2001-01-26 | 2007-07-03 | International Business Machines Corporation | Distributed multicast caching technique |
US6918013B2 (en) * | 2001-07-16 | 2005-07-12 | Bea Systems, Inc. | System and method for flushing bean cache |
US9061207B2 (en) * | 2002-12-10 | 2015-06-23 | Sony Computer Entertainment America Llc | Temporary decoder apparatus and method |
US8366552B2 (en) * | 2002-12-10 | 2013-02-05 | Ol2, Inc. | System and method for multi-stream video compression |
US8711923B2 (en) * | 2002-12-10 | 2014-04-29 | Ol2, Inc. | System and method for selecting a video encoding format based on feedback data |
US7574526B2 (en) * | 2003-07-31 | 2009-08-11 | International Business Machines Corporation | Multicast group management in infiniband |
US8996420B2 (en) * | 2003-11-21 | 2015-03-31 | Intel Corporation | System and method for caching data |
CN1271823C (zh) * | 2004-01-07 | 2006-08-23 | 华为技术有限公司 | 无线局域网中业务隧道的拆除方法 |
US20070204275A1 (en) * | 2005-08-29 | 2007-08-30 | Rhysome, Inc. | Method and system for reliable message delivery |
US20070218998A1 (en) * | 2005-09-12 | 2007-09-20 | Arbogast Christopher P | Download and configuration method for gaming machines |
-
2006
- 2006-05-12 US US11/433,287 patent/US7849211B2/en active Active
-
2007
- 2007-02-27 EP EP07004091A patent/EP1855415A1/en not_active Withdrawn
- 2007-05-11 TW TW096116834A patent/TWI410079B/zh not_active IP Right Cessation
- 2007-05-14 CN CN2007101040171A patent/CN101072167B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484403A (zh) * | 2002-09-20 | 2004-03-24 | 华为技术有限公司 | 网络系统中内容分发的方法 |
CN1571531A (zh) * | 2003-07-15 | 2005-01-26 | 北京三星通信技术研究有限公司 | 多媒体广播与组播业务中公用控制信息可靠传输的方法 |
Also Published As
Publication number | Publication date |
---|---|
TW200816706A (en) | 2008-04-01 |
EP1855415A1 (en) | 2007-11-14 |
US7849211B2 (en) | 2010-12-07 |
TWI410079B (zh) | 2013-09-21 |
US20070266174A1 (en) | 2007-11-15 |
CN101072167A (zh) | 2007-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101072167B (zh) | 通过通信系统传输信息的方法和系统 | |
CN100547420C (zh) | 可靠多播通信 | |
CN1697354B (zh) | 用组播和单播协议可靠传输数据的方法及接收数据的主机 | |
CN1754374B (zh) | 带有网关负载分配的网络地址转换 | |
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
CN102035751A (zh) | 一种数据的传输方法和设备 | |
US20200213144A1 (en) | Methods and network nodes for providing coordinated flowcontrol for a group of sockets in a network | |
CN114553799B (zh) | 基于可编程数据平面的组播转发方法、装置、设备及介质 | |
CN103597794A (zh) | 用于提供关于数据数组关联的信息以及用于转发数据数组的设想 | |
CN108667817A (zh) | 报文转换系统和报文转换方法 | |
JP2000324155A (ja) | マルチキャスト通信システム | |
CN102571545A (zh) | 在IPv4网络中传递信息的方法和装置 | |
CN101072087A (zh) | 基于缓冲管理的多链路冗余的实现方法 | |
CN101184032B (zh) | 一种堆叠系统设备通讯的方法 | |
CN1960281B (zh) | 具有虚拟线卡的虚拟网络交换系统及其传输方法 | |
CN100576787C (zh) | 一种在维护终端与后台设备之间进行大数据量安全传送的方法 | |
CN103999404A (zh) | 针对服务质量支持的第三版互联网组管理协议 | |
CN101510901B (zh) | 一种分布式设备间的通信方法、通信设备和通信系统 | |
CN115022424B (zh) | 水电lcu控制器网卡虚拟控制方法、系统、设备及其介质 | |
CN101834791B (zh) | 一种组播报文转发方法 | |
CN112689000A (zh) | 一种基于vnc工具的远程桌面控制系统及方法 | |
JP6202650B1 (ja) | 通信システム及び通信方法 | |
CN102289340A (zh) | 数据稽核平台及方法 | |
US7890954B2 (en) | Method and system for communicating between application software | |
US7860920B2 (en) | Multicast enabled web-based application data distribution |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100811 Termination date: 20170514 |
|
CF01 | Termination of patent right due to non-payment of annual fee |