可靠多播通信的制作方法

文档序号:7609209阅读:158来源:国知局
专利名称:可靠多播通信的制作方法
技术领域
本发明的一个实施例涉及通信和计算机系统;更具体地说,一个实施例尤其涉及可靠多播通信,例如可以包括指定哪个或哪些节点对消息作出确认,以及/或者是立即对消息作出确认还是延迟对消息作出确认,该过程尤其可以与路由器、分组交换系统、计算机系统和其他设备一起使用。
背景技术
通信工业正快速改变,以适应日新月异的技术和不断增加的客户需求。这种客户对新应用和对现有应用的提高的性能的需求正驱动通信网络和系统提供者采用具有更高速度和更大容量(例如,更宽带宽)的网络和系统。在试图实现这些目标时,许多通信提供者所采取的常用方法是使用分组交换技术。正越来越多的使用诸如因特网协议(IP)之类的各种分组技术来构建和扩展公共通信网络和专用通信网络。
多播通信通常用来从一个源向一组目的地(例如,一个或多个节点)传输信息。在许多应用中,使用不可靠的多播消息传输,接收者补偿或忽略丢失的消息。
然而,在一些应用中,必须保证向一组目的地分发的信息被每个接收者接收到,因此必须使用某些形式的可靠通信。例如,可以在发送者和每个接收者之间建立连接,同时使用可靠传输协议传输消息。然而,这种技术要求大量的资源用于产生并发送消息到每个节点,还需要原始消息的发送者处理每个确认消息。
已知的系统通过向一组接收节点发送多播消息(而不是多个单播消息),而每个接收节点向发送者发送回确认消息,从而减少发送节点发送的原始消息的数目。这虽然减少了发送者发送的消息的数目,但是仍要求对每个消息作出确认,并且发送者必须处理所有确认消息。另一种系统通过引入确认节点的分层结构来减少由发送者接收和处理的确认消息的数量,其中,多个接收节点的子集向一个或多个中间节点确认每条特定的消息,中间节点进而向发送者发送单个确认消息,这单个确认消息代表它自身和关联的多个其他接收节点。
期望还有到一组节点的其他形式的可靠通信。

发明内容
本发明公开了用于可靠多播通信的方法、设备、数据结构、计算机可读介质、机构和装置等,例如可以包括指定哪个或哪些节点对消息作出确认,以及/或者是立即对消息作出确认还是延迟对消息作出确认,该过程尤其可以与路由器、分组交换系统、计算机系统和其他设备一起使用。由于实施例及其相应的应用的数目是可扩展的,所以利用这种可靠通信方案的节点可以与不同的计算机、元件、组件或其他设备等等相对应,这些设备以某种方式连接,例如通过网络、系统总线、交换结构、线缆或任何其他通信机制。
在一个实施例中,向多个节点发送多播消息,多播消息包括对一个或多个被指定要对该消息作出确认的节点的指示、序列号或其他消息标识值,并且还可能包括对是请求立即确认还是请求延迟确认的指示。如果接收消息的节点被指定对该消息作出确认,则该节点作出相应的响应,这可以包括请求任何丢失的消息,以及/或者发送对从该节点发送其上一确认消息起它已接收到的消息的确认消息。


所附权利要求书具体阐述了本发明的特征。结合附图从下面的详细描述中,可以最好地理解本发明及其优点,在附图中图1是示出了根据本发明一个实施例彼此通信的节点的示例的框图;图2A是示出了在一个实施例中用于发送多播消息的过程的流程图;图2B是示出了在一个实施例中用于接收和处理确认消息的过程的流程图;
图3是示出了在一个实施例中用于接收和处理多播消息和发送确认消息的过程的流程图;以及图4A到图4C是示出了在一个实施例中使用的各种消息的框图。
具体实施例方式
本发明公开了用于可靠多播通信的方法、设备、数据结构、计算机可读介质、机构和装置等,例如可以包括指定哪个或哪些节点对消息作出确认,以及/或者是立即对消息作出确认还是延迟对消息作出确认,该过程尤其可以与路由器、分组交换系统、计算机系统和其他设备一起使用。
这里所述的实施例包括各种元素和限制,但是没有一个元素和限制被设想为是关键元素和限制。每个权利要求在整体上单独陈述本发明的一个方面。此外,所述的一些实施例可以包括但不限于系统、网络、集成电路芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质等。一个或多个系统、设备、组件等可以包括一个或多个实施例,实施例可以包括由相同或不同的系统、设备、组件等执行的权利要求的一些元素和限制。下文所述的实施例实现本发明的范围和精神内的各个方面和配置,同时附图示出示例性的而非限制性的配置。
这里所使用的术语“分组”指所有类型的分组或任何其他信息或数据单元,包括但不限于固定长度的信元和可变长度的分组,它们中的每个可以划分为更小的分组或信元,或者不可以划分为更小的分组或信元。这里所使用的术语“分组”还指分组自身或分组指示二者,例如但不限于分组或分组头部的全部或一部分、分组的数据结构值、指针或索引、或者任何其他部分或标识。此外,这些分组可以包含一类或多类信息,包括但不限于语音、数据、视频和音频信息。术语“项”在这里总地用来指分组或任何其他信息或数据单元或片断、设备、组件、元件、或者任何其他实体。短语“处理分组”和“分组处理”一般指基于分组的内容(例如,分组头部或其他字段)执行一些步骤或动作,并且这些步骤或动作可能或可能不包括修改、存储、丢弃、以及/或者转发分组和/或关联数据。
术语“系统”在这里总地用来描述任意数量的组件、元件、子系统、设备、分组交换元件、分组交换机、路由器、网络、计算机和/或通信设备或机制、或者它们的组件的组合。术语“计算机”在这里总地用来描述任意数量的计算机,包括但不限于个人计算机、嵌入式处理元件和系统、控制逻辑、ASIC、芯片、工作站、主机等。术语“处理元件”在这里总地用来描述任何类型的处理机构和设备,例如,处理器、ASIC、现场可编程门阵列、计算机等。术语“设备”在这里总地用来描述任何类型的机构,包括计算机或系统或它们的组件。术语“任务”和“进程”在这里总地用来描述任何类型的运行的程序,包括但不限于计算机进程、任务、线程、执行的应用、操作系统、用户进程、设备驱动、原始代码、及其或其他语言等,并且可以是交互式的和/或非交互式的、本地和/或远程执行的、前台和/或后台执行的、在用户和/或操作系统地址空间中执行的、库的子例程和/或独立的应用,并且不限于任何具体的存储器分区技术。在包括但不限于任何框图和流程图、以及消息序列图中示出的步骤、连接和对信号和信息的处理可以以相同或不同的串行或并行顺序执行,并且/或者可以由不同的组件和/或进程、线程等执行,并且/或者通过不同的连接执行,以及与其他实施例中的其他功能组合仍在本发明的范围和精神内。此外,术语“标识”总地用来描述任何方式和机制,这些方式和机制用来直接或间接确定某些内容,可以包括但不限于接收、从存储器提取、确定、定义、计算、生成等。
此外,术语“网络”和“通信机制”在这里总地用来描述一个或多个网络、通信介质或通信系统,包括但不限于因特网、专用或公共电话网、蜂窝网、无线网、卫星网、电缆网、局域网、城域网和/或广域网、电缆、电连接、总线等,以及内部通信机制,例如消息传递、进程间通信、共享存储器等。术语“消息”在这里总地用来描述信息片断,其可以包括或者可以不包括但是一般是经由一个或多个任何类型的通信机制进行通信的。
术语“存储机构”包括任何类型的存储器、存储设备或用于保存任何格式的指令或数据的其他机构。“计算机可读介质”是一个可扩展的术语,包括任何存储器、存储设备、存储机构、以及其他存储和信令机制,包括诸如网络接口卡及其中的缓冲区之类的接口和设备、以及任何通信设备和接收和发送的信号,以及计算机化的系统可以解释、接收和/或发送的其他当前和正在开发的技术。术语“存储器”包括任意随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储组件或元件。术语“存储设备”包括任何固态存储介质、盘驱动器、磁盘、联网的服务、带驱动器和其他存储器设备。存储器和存储设备可以存储要由处理元件和/或控制逻辑执行的计算机可执行的指令、以及由处理元件和/或控制逻辑操纵的数据。术语“数据结构”是一个可扩展的术语,指任何数据元素、变量、数据结构、数据库和/可被应用到数据来帮助解释数据或对数据执行操作的或一个或多个组织方案,例如包括但不限于存储器位置或设备、集合、队列、树、堆、列表、链接列表、数组、表、指针等。数据结构一般保存在存储机构中。术语“指针”和“链接”在这里总地用来标识一些机制,用于引用或标识另一个元素、组件或其他实体,并且这些可以包括但不限于对存储器或其他存储机构或其中的位置的引用、数据结构中的索引、值等。
术语“一个实施例”在这里用来引用特定的实施例,其中每次对“一个实施例”的引用可以指不同的实施例,并且在描述相关的特征、元素和/或限制时重复使用该术语并不是建立每个和所有实施例必须包括的相关特征、元素和/或限制的累积集合,尽管实施例一般可以包括所有这些特征、元素和/或限制。另外,短语“用于xxx的装置”一般包括包含用于执行xxx的计算机可执行指令的计算机可读介质。
另外,术语“第一”、“第二”等在这里总地用来表示不同的单元(例如,第一元件、第二元件)。在这里使用这些术语不一定意味着排序,例如一个单元或事件在另一个之前发生或到来,而是提供了一种区分特定单元的机制。另外,使用单数名词是非限制性的,使用单数名词一般包括一个或多个特定的事物,而不是刚好一个(例如,使用词语“存储器”一般指一个或多个存储器,而不必指定“一个存储器或多个存储器”、“一个或多个存储器”、或者“至少一个存储器”等)。此外,短语“基于x”和“响应于x”用来指示项目x的最小集合,从其可以导出或导致某些事物,其中“x”是可扩展的,并且不一定描述对其执行操作的项目的完整列表,等等。另外,短语“耦合到”用来指示两个元件或设备之间的直接或间接连接的某些级别,其中一个或多个耦合设备修改或不修改耦合的信号或传输的信息。术语“子集”用于指示一个群组,该群组包括一个集合的全部元素或者少于全部元素。术语“子树”用来指示树的全部或者少于树的全部。此外,术语“或”在这里用来标识选择结合的项目中的一个或多个,包括全部。
本发明公开了用于可靠多播通信的方法、设备、数据结构、计算机可读介质、机构和装置等,例如可以包括指定哪个或哪些节点对消息作出确认,以及/或者是立即对消息作出确认还是延迟对消息作出确认,该过程尤其可以与路由器、分组交换系统、计算机系统和其他设备一起使用。由于它们的实施例和相应的应用的数目是可扩展的,所以利用这种可靠通信方案的节点可以对应于不同的计算机、元件、组件或其他设备等等,这些设备以某种方式连接,例如通过网络、系统总线、交换结构、线缆或任何其他通信机制。
在一个实施例中,多个节点发送多播消息,多播消息包括对一个或多个被指定要对该消息作出确认的节点的指示、序列号或其他消息标识值,并且还可能包括对是请求立即确认还是请求延迟确认的指示。如果接收消息的节点被指定对该消息作出确认,则该节点作出相应的响应,这可以包括请求任何丢失的消息,以及/或者发送针对从该节点发送其上一确认消息起它已接收到的消息的确认消息。
图1示出了与一个实施例一起使用的配置中的多个节点100和112-114。节点100和112-114可以是独立的系统或组件(例如,计算机、路由器、交换系统、元件、组件、设备、线路卡、芯片等),换言之,它们基本上是可以发送、接收和处理消息的任何事物。节点100和112-114经由通信机制110(例如,网络、总线、交换系统、线缆等)连接,通过通信机制110,消息被发送给节点100和112-114的至少一个子集。
例如,节点100和112-114可以是在单个分组交换系统、路由器或其他通信设备内,并且节点112-114位于线路卡上或其他位置,而节点100位于控制卡、线路卡或其他位置。因此,节点100和112-114可以在它们之间可靠地通信,用于例如但不限于分派节点执行动作、收集统计数据、更新路由选择信息、对错误/失败条件或配置改变作出响应(例如,更新路由选择信息、重路由或丢弃分组等)。
图1还示出了在一个实施例中使用的节点100的配置。节点100一般包括用于与一个或多个其他节点可靠通信的机构和装置。例如,一个实施例包括执行这里所述的操作的进程。一个实施例包括与这里示出的框图或流程图之一相对应的进程,或者与实现权利要求的全部或一部分的任何其他装置或机构相对应的进程,其中其他内部或外部组件或设备可能实现权利要求的其他元件/限制。另外,单个或多个系统、设备、组件等可以构成一个实施例。
在一个实施例中,节点100包括处理元件101、存储器102、存储设备103和用于接收和发送分组或其他项的接口104,它们经由一个或多个通信机制109(出于说明目的,示作总线)耦合。
节点100的各种实施例可以包括更多或更少的元件。节点100的操作一般通过处理元件101利用存储器102和存储设备103执行一个或多个任务或进程来控制,例如但不限于调节值并且相应地更新一个或多个剩余量(residue amount)。
存储器102是一种计算机可读介质,并且一般包括随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件。存储器102一般存储由处理元件101执行的计算机可执行指令和/或由处理元件101操纵的数据,用于实现根据本发明一个实施例的功能。存储设备103是另一种计算机可读介质,并且一般包括固态存储介质、盘驱动器、磁盘、联网的服务、磁带驱动器和其他存储设备。存储设备103一般存储要由处理元件101执行的计算机可执行指令和/或由处理元件101操纵的数据,用于实现根据本发明一个实施例的功能。
在一个实施例中,消息的发送者知道组中的所有接收者的身份,或者至少知道需要可靠通信的那些接收者的身份。一般而言,单调增加的序列号空间用来标识消息的顺序,其中序列号在达到最大值后重新开始;但是,可以使用任何消息顺序标识机制。
在利用可靠多播通信的一个实施例中,每个接收者对每条消息作出确认。从而,对于发送到n个接收者的每条多播消息,会发送n条确认消息。在某些应用中,这工作良好。但是,在某些应用中,如果可以减少确认消息的数目同时仍在节点之间提供可靠高效的通信,则可能是有益的。
在一个实施例中,接收节点对它们已接收到但是尚未确认的消息中具有最高连续顺序号的消息作出确认,或者每隔n个消息作出确认,其中n是整数。从而,所发送的确认消息的数目一般小于(通常远远小于)被确认的消息的数目。例如,如果接收者接收到具有序列号1、2、3和6的消息,则接收者仅发送指示序列号3的确认消息,因为该消息对具有序列号1、2和3的消息作出确认。仅在接收到具有序列号4和5的消息后,接收者才对消息6作出确认(对应于序列号4、5和6)。当然,可以针对序列号4发送独立的确认消息,然后具有序列号6的确认将对应于序列号5和6。在一个实施例中,可以使用另一种标识机制来标识被标以连续的和/或非连续的序列号的消息的接收,例如,利用列表和/或位图。这是用来减少可靠通信所要求的确认消息的数目的另一种技术。
基于来自每个接收节点的确认消息,在任何时刻,消息的发送者知道每个接收节点已接收到哪些消息,并且知道所有接收节点都已接收到比已确认的一个特定最早(例如,最小)序列号小的所有消息。通过缓冲晚于该特定最早序列号的消息,发送者能够重新发送这些消息中的任何消息到对应的接收者,从而恢复已落后的任何接收者。
一个实施例以另一种方法来减少确认消息的数量,该方法可以或者可以不与另一种减少方案结合使用。在这种方案中,对于发送者发送的每条消息,发送者安排一个或多个指定的节点来对该消息作出确认,如果一个节点是指定的确认节点,则该节点将只对该消息作出确认。其余的节点处理消息,但是不发回确认。被指定的节点确认该消息,并且指示出任何丢失的消息,发送者将丢失的消息重发给该被指定的节点。例如,在一个实施例中,确认节点发送与从发送其上一确认消息起已接收或丢失的消息相对应的列表、位图或其他指示。在一个实施例中,被指定的确认接收节点对其已接收到的但是尚未确认的消息中具有最高连续序列号的消息作出确认。如果被指定的确认接收节点丢失了一条或多条消息,则该节点在确认消息或在另一个请求丢失消息的消息中向发送节点发送请求。
利用这种方案,每个节点无需对每条消息作出确认。所以对于N个接收者,假设对于所发送的每条消息,K个节点被挑选为被指定节点来进行确认,则与每个接收节点确认每条消息的情形相比,确认的数目被按因子N/K削减。更具体地说,如果每次发送仅一个节点被挑选为被指定节点来作出确认,则确认的数目按因子N减少。
例如,在一个实施例中,以轮询(round robin)方式将一个节点选为被指定节点来作出确认。当然,其他实施例也可以利用任何确定的和非确定的(例如,随机的)方式来确定被指定的节点。在本示例中,假定发送者被标识为节点0,并且在组中存在4个接收者被标识为接收者1到4。在发送者发送第一消息时,其指定节点1作为被指定节点来作出确认,对于第二消息指定节点2,对于第三消息指定节点3,对于第四消息指定节点4,然后对于第五消息指定节点1,依此类推。因此,在本示例中,没有节点可能落后超过四条消息。例如,假定接收者1确认了消息1,但是未接收到消息2、3和4。由于接收者1不是确认消息2到4的被指定节点,所以发送者不期望来自接收者1的对这些消息的确认,因此并不知道接收者1丢失了这些消息。然而,最终在接收者1被安排为确认消息5的被指定节点时,发送者确定接收者1未接收到消息2、3和4,这是由于接收者1在已接收到包括消息5和之前的所有消息之前将不确认消息5。因此,在本示例中,在组中存在M个接收节点时,节点可能至多落后M条消息。另外,不要求发送者维护每个接收者的状态;相反,仅需要维护标识出用于作出确认的当前被指定节点的最小状态,以使用于作出确认的被指定节点可以按照轮询方式或其他方式从一个接收者移动到下一个接收者。
在一个实施例中,被指定节点对从发送者接收到的每条消息作出确认(例如,存在大小为1的窗口)。在一个利用大小为1的窗口的实施例中,在发送者识别出被指定来作出确认的新的节点之前,该发送者等待接收来自被指定节点的确认,其中指定一般是利用轮询或其他确定或非确定的顺序进行的。在一个实施例中,所使用的窗口大小大于1,这可以实现更大的吞吐量。在一个窗口大小大于1的实施例中,发送者保持发送消息直到窗口满为止,并且只要接收到针对该窗口中的消息的确认,用于作出确认的被指定节点就可以移动到下一个接收者。通过挑选合适的窗口大小,发送者使发送者和接收者之间的管道充满,从而一般可以增加吞吐量。
例如,假设存在4个接收节点,即接收者1到4,并且接收者1被指定对具有序列号1到10的消息作出确认,接收者2被指定对具有序列号11到20的消息作出确认,接收者3被指定对具有序列号21到30的消息作出确认,接收者4被指定对具有序列号31到40的消息作出确认。发送者一接收到针对来自分配给接收者1的窗口的消息的确认,该发送者就可以将用于作出确认的被指定节点移动到接收者2。然而,对于N个接收者和窗口大小W,这可能导致一个接收节点落后其他接收节点N*W条消息。例如,在这种情形中,如果节点1接收到具有序列号1的消息,并且确认了该消息,但是丢失了从2到40的所有其他消息,则恢复可能被延迟到直到接收者1变为用于对具有序列号41到50的消息作出确认的被指定节点为止,这是因为发送者可能不知道丢失了消息(这是因为基于该协议发送者不必等待对节点1被指定对其进行确认的消息2到10的确认,或者对节点1未被指定对其进行确认的消息11到40的确认)。所以利用4个接收者和为10的窗口大小,相对于组中的其他接收者,一个接收者最多可能落后40条消息。因此,发送者需要缓存大量的消息,以便确保所有接收者最终将接收到该发送者发送的所有消息。因此,需要在较高的吞吐量和较低的缓冲区空间之间作出权衡。
在一个实施例中,发送窗口消息的副作用是一个或多个接收者可能用光缓冲空间,并且可能无法处理处理它们接收到的所有消息,并被迫丢弃一些消息。然而,接收节点将不对它没处理的节点作出确认。这具有使发送者慢下来的效果,这种效果在较慢的接收者跟上发送者之前是希望看到的。当发送者安排较慢的接收者作为用于作出确认的被指定节点时,该发送者将被迫等待并确定该节点接收到从上次该节点被安排为用于作出确认的被指定节点起的所有消息。例如,如果在上述情形中接收节点1是最慢的节点,当该节点变为用于对消息41到50作出确认的被指定节点时,在将用于作出确认的节点移动到下一个节点之前,发送者确定该节点已成功地接收到消息40和更小的消息,以及41到50之间的消息。
各种实施例可以挑选不同的窗口大小,例如基于可变的缓冲区大小,在轮询时间中可以发送的消息的数目等。窗口大小主要是由发送者可以缓冲的消息的数目决定的。
例如,假设发送者可以缓冲B条消息,并且接收节点为N个。由于对于窗口大小W,一个节点至多可能落后N*M条消息,所以发送者需要缓冲N*M条消息,因此缓冲空间需求为B大于等于N*W,或者W小于等于B/N。所以,在一个实施例中,B/N是在不丧失利用丢失的消息恢复节点的能力的情况下可能的最大窗口大小。如果发送者没有足够的缓冲空间,则或者可以使用更小的窗口,或者对于每条消息可以使用更多数目的被指定节点来作出确认。一个实施例指定单个节点来对一条消息作出确认。一个实施例指定多个节点来对一条消息作出确认。
例如,一个实施例指定总共N个节点中的A个节点来对每条消息作出确认,所以有N/A组节点。来自一个特定组的所有节点被指定来对一条或多条消息作出确认,然后指定下一个特定组的节点来确认一条或多条消息。
将用于单个接收节点的逻辑应用到一组节点,一组节点可能落后其他组节点最多(N/A)*W条消息(由于存在N/A个组)。例如,对于4个接收者,即接收者1到4,假设发送者指定节点1和2来确认第一窗口的消息,即消息1到10,指定节点3和4来确认第二窗口的消息,即消息11到20。在具有2组节点的本示例中,一个节点可能落后其他节点仅20条消息,与仅一个被指定接收者对每条消息作出确认的单组节点的情形相比,该情形可能落后40条消息。然而,这种方案可能导致更多的确认,这是由于在将窗口移动到下一个接收者之前,组中的所有节点都需要作出确认。对于大小可用于B条消息的缓冲区,在这种情形中,可能的最大窗口大小为(W*N/A),其小于等于B,或者说W大于等于B*A/N。
在一个实施例中,接收节点利用消息窗口的立即和延迟的确认,其中确认消息指示接收节点已接收到但是尚未确认的消息中具有最大连续序列号的消息。在利用窗口所有者概念时,用于作出确认的被指定节点无需确认窗口中的所有消息,并且一接收到对窗口中的消息之一的确认,就可以移动用于确认的被指定节点(因此,这可能有利于较早而不是较晚地接收到确认消息)。
注意,这种利用对发送给一个或多个节点的消息的立即和延迟确认的技术可以与多播消息一起使用,也可以与单播消息一起使用。例如,发送者可能利用单播消息来发送消息的窗口到接收者,并且请求立即对一些消息作出确认,而延迟对某些消息的确认。在发送具有对是否延迟对消息的确认的指示的单播消息的一个实施例中,减少了发送者接收到的确认消息的总数。
在一个实施例中,发送者可以请求对一些消息发送立即确认,或者对一些消息发送延迟确认。例如,在使用确认消息指示节点已接收到的具有最大连续序列号的消息的确认方案时,对确认的延迟给予了更多的时间用于接收更多的消息,从而特定的确认消息可能变为过时的,并且被覆盖了更宽的序列号范围的另一个确认消息所取代,这一般导致总地来看发送较少的确认消息。如前所述,在利用开窗口方案时,尽早而不是更晚得到确认消息是有利的。因此,该实施例利用了延迟确认消息和立即确认消息的组合。
在一个实施例中,发送者仅针对窗口中的第一消息请求立即确认(对于其他消息请求延迟确认),从而在接收到确认时,发送者可以移动用于作出确认的节点。例如,如果窗口大小为10,序列号为1到10,则对于消息1发送者请求立即确认(例如,通过在消息头部中或者经由另一种机制指示请求立即确认)。对于其余的消息,发送者可以指示无需立即作出确认(例如,通过在消息头部中或者经由另一种机制指示请求延迟确认)。接收者然后可以将对从2到10的消息的确认排队。响应于内部时钟期满或其他事件,接收者发送对所有其他接收到的消息作出确认的确认消息,或者在下一循环中该接收者变为用于作出确认的被指定节点时,利用对来自下一消息窗口的消息作出的立即确认消息来暗地对这些消息作出确认。
例如,在利用上述方案的一个实施例中,发送者在移动窗口之前无需等待对序列号2到10的确认到来。发送者一获得对消息1的确认,就注意到它可以移动窗口并且发送窗口中的任何余下的消息,然后将用于作出确认的节点移动到下一个接收者。到接收者1再次变为用于作出确认的被指定节点时,或者可能已接收到累积的对消息2到10的确认,或者在发送者发送新消息窗口的第一消息再次请求立即确认时,对消息2到10的确认将被包括进来。
例如,假定存在4个接收者,在接收者1下一次成为用于作出确认的被指定节点时,发送者将请求对消息41到50的确认。发送者请求针对消息41的立即确认,如果消息41被确认,则指示接收者已接收到所有中间消息。
在图2A到图2B、图3和图4A到图4C中示出了发送和确认多播消息的另一个示例。图2A是示出了在一个实施例中使用的用于发送多播消息的过程的流程图。处理开始于过程框200,然后前进到过程框202,在该过程框中过程被初始化,这可以包括诸如标识出最初指定的确认节点,以及对数据结构、缓冲区、变量等进行初始化之类的事情。在过程框204中,标识出要在多播消息中发送的信息。例如,该信息可以与群调度(gang scheduling)分派消息、一组要分发的数据(例如,路由、配置信息、流控制信息、错误等)相对应。在过程框206中,标识出一个或多个被指定的确认节点,这可以包括选择出一个或多个与针对上一消息的(一个或多个)确认节点不同的节点。如过程框208所确认的,如果要立即作出确认,在在过程框210中,设置字段来指示立即确认;否则,在过程框212中,该字段被设置来指示延迟确认。然后,在过程框214中,准备(例如,填充任何其他值,例如,序列号、地址、数据等)并发送多播消息。注意,在一个实施例中,多播消息使用多播协议(例如,到多个节点的多播地址),而在一个实施例中,多播消息与一系列单播消息相对应。然后处理返回过程框204来处理和发送更多消息。
图4A示出了一个这样的多播或单播消息400。如图所示,消息400包括源地址401(例如,标识出消息400的发送者)、多播或单播目的地地址402、对用来作出确认的一个或多个节点的指示403(例如,每个位对应于不同的节点并且标识出是否作出确认的位图、列表或者其他指示)、指明是否应立即确认的指示(例如,标志或其他值)、序列号405,一般还包括数据406,还可能包括其他字段。
图2B是示出了在一个实施例中使用的用于接收和处理确认消息的过程的流程图。过程开始于过程框240,然后前进到过程框242,在该过程框中接收到确认消息。如过程框244所确定的,如果接收到的消息包括确认,则在过程框246中,一个或多个数据结构被更新来指示一个或多个确认的消息,并且还可能执行其他处理。如过程框248所确定的,如果消息包括对任何丢失的消息的请求,则在过程框250中,发送丢失的/被请求的消息。过程然后返回过程框242。
图4B示出了在一个实施例中使用的一个这种确认消息420。如图所示,确认消息420包括源地址421、目的地地址422和对被确认的消息的指示423(例如,序列号、列表、位图、一个或多个值等)。
图4C示出了在一个实施例中使用的一个这种对丢失消息的请求的消息440。如图所示,对丢失消息的请求消息440包括源地址441、目的地地址442和对丢失的或被请求的消息的指示443(例如,一个或多个序列号、列表、位图、一个或多个值等)。
图3是示出了在一个实施例中使用的用于接收和处理多播消息并且发送确认消息的过程的流程图。处理开始于过程框300,然后前进到过程框302,在该过程框中接收到多播分组,多播分组一般具有序列号、对该接收节点是否应当确认该消息的指示,并且如果是的话还包括对是立即确认还是延迟确认的指示,并且还可能包括其他字段。在过程框304中,基于接收到的消息的序列号更新接收到的消息的数据结构。
如在过程框306中确定的,如果节点未被指定对消息作出确认,则处理返回到过程框302。
否则,如过程框308所确定的,如果有丢失的消息(例如,在数据结构中或以其他机制标识出被指示为接收到的序列号中的空缺),则在过程框310中,这些丢失的消息被请求、接收、确认、同时适当地更新数据结构,然后处理返回到过程框302。
否则,如在过程框312中所确定的,如果节点不立即确认消息,则在过程框316中,延迟确认被排队或者以其他方式被存储以用于将来处理,同时具有连续序列号的任何其他确认被清除,这是由于与该确认相对应的确认消息将被用来确认被清除的这些。如果此前未被清除,则该确认被设置为在将来的时刻发送(例如,响应于定时器期满、在延迟期间后、响应于一些其他事件等),然后处理返回过程框302。
否则,在过程框314中,发送针对该消息和任何在前消息的立即确认消息,同时从延迟确认机构中清除它们的确认,然后处理返回过程框302。
在一个实施例中,由于节点可能因为应用需求或者因为节点故障、重引导、服务等而加入或离开接收节点组,因此接收节点的数目可能随时间变化。一般而言,在接收节点组的配置改变时,可以调节开窗口参数(例如,用来作出确认的被指定节点的集合、窗口大小等)来适应这些变化。当然,对于离开接收节点组的节点,该节点向其他节点通知这种离去的优雅的退出是优选的,而不是依赖超时或其他机制来探测节点不存在。
另外,注意对于一些应用,不是所有的接收节点都将发送确认消息。例如,可能存在必须接收信息的某些关键节点,而其他节点可能仅期望被告知。因此,在一个实施例中,不对全部节点执行可靠的多播通信(例如,关键节点),同时至少一个其余节点接收消息(例如,监听多播地址)但是不参与所采用的确认方案。
考虑本发明的原理可以被应用到的许多可能的实施例,将意识到这里参考附图所述的本发明的实施例和各个方面仅是说明性的,而不应当作为对本发明的范围的限制。例如,本领域技术人员将清楚,过程框的操作中许多可以被重排在其他操作之前、之后或者基本同时被执行。另外,在各个实施例中可以使用许多不同形式的数据结构。这里所述发本发明设想了所有这种实施例,只要可以在所附权利要求书及其等同物的范围内。
权利要求
1.一种用于分发信息的方法,所述方法包括从多个节点中标识出用于对多播消息作出确认的一个或多个节点;以及发送所述多播消息到所述多个节点,所述多播消息包括对所述多个节点中的用于对所述消息作出确认的所述一个或多个节点的指示。
2.如权利要求1所述的方法,其中,所述多播消息包括对是立即确认还是延迟确认所述多播消息的指示。
3.如权利要求2所述的方法,包括如果所述多播消息是消息窗口中的第一消息,则将所述对是立即确认还是延迟确认的指示设置为指示立即确认的步骤。
4.如权利要求3所述的方法,包括如果所述多播消息不是所述消息窗口中的第一消息,则将所述对是立即确认还是延迟确认的指示设置为指示延迟确认的步骤。
5.如权利要求1所述的方法,其中,所述对多个节点中的用于对所述消息作出确认的一个或多个节点的指示指出少于所述多个节点中的全部节点。
6.如权利要求1所述的方法,包括接收与所述多播消息相对应的确认消息,并且在响应中将所述多播消息和所有先前发送的消息标识为已被确认的。
7.一种由节点执行的方法,所述方法包括接收多播消息,所述多播消息包括对至少一个被指定的确认节点的指示;以及标识出所述对至少一个被指定的确认节点的指示包括所述节点,并在响应中发送确认消息到所述多播消息的发送者。
8.如权利要求7所述的方法,其中,所述确认消息对除所述多播消息之外的至少一个其他消息作出确认。
9.如权利要求7所述的方法,其中,所述多播消息包括对是立即确认还是延迟确认所述多播消息的指示。
10.如权利要求9所述的方法,其中,所述对是立即确认还是延迟确认所述多播消息的指示与延迟确认相对应;并且所述方法包括延迟发送所述确认消息。
11.一种用于传输信息的方法,所述方法包括接收多播消息,所述多播消息包括对是否延迟确认所述多播消息的指示;以及响应于所述指示标识出延迟确认所述多播消息,延迟对所述多播消息的确认。
12.一种用于传输信息的装置,所述装置包括用于接收消息的装置,所述消息包括对是否延迟确认所述消息的指示;以及用于响应于所述指示标识出延迟确认所述消息来延迟对所述消息的确认的装置。
13.一种用于分发信息的装置,所述装置包括用于从多个节点中标识出用于对多播消息作出确认的一个或多个节点的装置;以及用于发送所述多播消息到所述多个节点的装置,所述多播消息包括对所述多个节点中的用于对所述消息作出确认的所述一个或多个节点的指示。
14.如权利要求13所述的装置,其中,所述多播消息包括对是立即确认还是延迟确认所述多播消息的指示。
15.如权利要求14所述的装置,包括用于在所述多播消息是消息窗口中的第一消息的情况下,将所述对是立即确认还是延迟确认的指示设置为指示立即确认的装置。
16.如权利要求15所述的装置,包括用于在所述多播消息不是所述消息窗口中的第一消息的情况下,将所述对是立即确认还是延迟确认的指示设置为指示延迟确认的装置。
17.如权利要求13所述的装置,其中,所述对多个节点中的用于对所述消息作出确认的一个或多个节点的指示指出少于所述多个节点中的全部节点。
18.如权利要求13所述的装置,包括用于接收与所述多播消息相对应的确认消息,并且在响应中将所述多播消息和所有先前发送的消息标识为已被确认的的装置。
19.一种由节点执行的装置,所述装置包括用于接收多播消息的装置,所述多播消息包括对至少一个被指定的确认节点的指示;以及用于标识出所述对至少一个被指定的确认节点的指示包括所述节点,并在响应中发送确认消息到所述多播消息的发送者的装置。
20.如权利要求19所述的装置,其中,所述确认消息对除所述多播消息之外的至少一个其他消息作出确认。
21.如权利要求19所述的装置,其中,所述多播消息包括对是立即确认还是延迟确认所述多播消息的指示。
22.如权利要求21所述的装置,其中,所述对是立即确认还是延迟确认所述多播消息的指示与延迟确认相对应;并且所述方法包括用于延迟发送所述确认消息的装置。
23.一种包含计算机可执行指令的计算机可读介质,所述计算机可执行指令用于执行分发信息的步骤,所述步骤包括从多个节点中标识出用于对多播消息作出确认的一个或多个节点;以及发送所述多播消息到所述多个节点,所述多播消息包括对所述多个节点中的用于对所述消息作出确认的所述一个或多个节点的指示。
24.如权利要求23所述的计算机可读介质,其中,所述多播消息包括对是立即确认还是延迟确认所述多播消息的指示。
25.如权利要求24所述的计算机可读介质,包括如果所述多播消息是消息窗口中的第一消息,则将所述对是立即确认还是延迟确认的指示设置为指示立即确认。
26.如权利要求25所述的计算机可读介质,包括如果所述多播消息不是所述消息窗口中的第一消息,则将所述对是立即确认还是延迟确认的指示设置为指示延迟确认。
27.如权利要求23所述的计算机可读介质,其中,所述对多个节点中的用于对所述消息作出确认的一个或多个节点的指示指出少于所述多个节点中的全部节点。
28.如权利要求23所述的计算机可读介质,包括接收与所述多播消息相对应的确认消息,并且在响应中将所述多播消息和所有先前发送的消息标识为已被确认的。
29.一种包含计算机可执行指令的计算机可读介质,所述计算机可执行指令用于执行由节点执行的步骤,所述步骤包括接收多播消息,所述多播消息包括对至少一个被指定的确认节点的指示;以及标识出所述对至少一个被指定的确认节点的指示包括所述节点,并在响应中发送确认消息到所述多播消息的发送者。
30.如权利要求29所述的计算机可读介质,其中,所述确认消息对除所述多播消息之外的至少一个其他消息作出确认。
31.如权利要求29所述的计算机可读介质,其中,所述多播消息包括对是立即确认还是延迟确认所述多播消息的指示。
32.如权利要求31所述的计算机可读介质,其中,所述对是立即确认还是延迟确认所述多播消息的指示与延迟确认相对应;并且所述方法包括延迟发送所述确认消息。
全文摘要
本发明公开了执行可靠多播通信的各种方法,所述方法例如可以包括指定哪个或哪些节点对消息作出确认,以及/或者是立即对消息作出确认还是延迟对消息作出确认,该过程尤其可以与路由器、分组交换系统、计算机系统和其他设备一起使用。一般向多个节点发送多播消息,多播消息包括对一个或多个被指定要对该消息作出确认的节点的指示、序列号或其他消息标识值,并且还可能包括对是请求立即确认还是请求延迟确认的指示。如果接收消息的节点被指定对该消息作出确认,则该节点作出相应的响应,这可以包括请求任何丢失的消息,以及/或者发送对从该节点发送其上一确认消息起它已接收到的消息的确认消息。
文档编号H04L12/26GK1886667SQ200480034827
公开日2006年12月27日 申请日期2004年9月30日 优先权日2003年11月25日
发明者苏达卡尔·马米拉帕里, 斯蒂芬·保罗·贝莱尔 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1