CN101124754A - 用于并行通信的系统和方法 - Google Patents
用于并行通信的系统和方法 Download PDFInfo
- Publication number
- CN101124754A CN101124754A CNA2005800111342A CN200580011134A CN101124754A CN 101124754 A CN101124754 A CN 101124754A CN A2005800111342 A CNA2005800111342 A CN A2005800111342A CN 200580011134 A CN200580011134 A CN 200580011134A CN 101124754 A CN101124754 A CN 101124754A
- Authority
- CN
- China
- Prior art keywords
- path
- data
- instruction
- parallel communications
- paths
- 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.)
- Pending
Links
Images
Abstract
本文提供了用于在多条并行通信路径上进行数据通信的系统和方法。并行通信系统和方法的实施例可发现、表征和利用各种网元中的多种资源,为网络应用提供所需的通信目标和性能级别。这些系统和方法可动态适应网络资源的变化以持续提供所需的通信性能。
Description
相关申请的交叉引用
本申请要求2004年2月19日提出、指定序列号为60/546034、题为“在通信系统中动态发现、表征和聚合并行资源的方法”(Approaches to Dynamically Discover,Characterize,and AggregateParallel Resources In Communication Systems)的美国临时专利申请的优先权并受益于该申请,该申请通过引用全部结合于本文中。
技术领域
本发明一般涉及用于进行数据通信的系统和方法,并且更具体地说,涉及用于在多条并行数据通信路径上进行数据通信的系统和方法。
背景技术
考虑到预计诸如因特网等基于分组的数据网络在将来起到的关键作用,为使这些网络更好地工作、费用更低和速度更快进行了大量的研究。然而,尽管大多数网络有巨大的资源,但大部分是按序在两个网络之间传递数据。例如,广泛使用的因特网协议(IP)只支持在任何两个实体之间的单路径路由选择。
从而,一般而言分组数据网络及具体而言因特网具有固有的特征,这些特征可能允许通过超越有序数据通信属性而在性能、成本、功能和灵活性上实现改进。也就是说,将数据通信并行使得许多分组数据网络的性能出现根本的提高。
尝试了各种形式的并行数据通信,但一般具有多个缺陷。例如,诸如简单聚合、链路捆绑和信道结合等各种形式的并行数据通信系统隐含着需要同类的网络资源才运行良好。从而,这些技术通常假定聚合的资源将提供一致且可预测的性能特征。因此,通过在接收端适当的缓冲在多个资源上分割数据的简单的利用方案在动态网络环境中无法实现有效的聚合。网络的同类性和/或一致性不存在时,采用的过分简单化的策略不会产生所需的性能。
美国专利6625161(“161专利”)描述了使用一种简单聚合的变体的通信系统。具体而言,161专利涉及一种用于组合多个并行通信信道以仿真单个高带宽通信信道的系统。持续的分组流组成业务聚量(traffic aggregate)并指配给与多个并行通信信道相关联的队列。给队列的业务聚量的指配和再指配是基于测量与每个并行通信信道的队列长度相关联的队列负载比而动态执行。将现有的和将来的分组组合为业务聚量是基于分组共享的共用属性,如共用源和目的IP地址。
然而,像其它简单聚合技术一样,161专利的系统具有多个缺陷。例如,由于分组在接收端重组,因此,聚合的性能取决于具有最低性能的路径。
最低路径性能缺陷的示例可通过具有两条路径的简单聚合系统说明,第一路径具有比第二路径更大的带宽。沿第一路径输送十个分组中的八个分组,并且这八个分组在1毫秒内到达目的地。由于整个通信尚未接收完,因此,在剩余的两个分组到达前,这八个分组在接收方缓冲。沿第二路径输送剩余的这两个分组,但剩余的这两个分组到达目的地需要500毫秒。从而,整个通信在至少500毫秒内不可用于目的地。因此,一些情况下,特别是在路径不具有类似网络特征的情况下,简单聚合系统不会提高整体网络性能。
此外,简单聚合系统一般未设计为沿通信路径适当地处理变化的网络条件,并且不会在现有网络内无缝安装和操作。
从而,需要的是这样一种并行通信系统:能够与同类和异类网元一起工作(各个网络资源的性能特征具有和不具有多样性);能够适应变化的网络环境;能够部署为现有网络的重叠;以及不需要更改网络应用便可获得益处。
发明内容
本文提供了用于在多条并行通信路径上进行数据通信的系统和方法。
用于在并行数据路径上传递数据的方法的一个实施例包括通过重复确定路径属性而表征多条并行数据路径中的每条路径,多条并行数据路径定义发送节点与接收节点之间的单虚拟连接;以及通过多条并行数据路径调度数据传输以满足目标函数,该调度基于路径属性。
用于在并行数据路径上传递数据的系统的一个实施例包括配置为从指令执行系统获取并执行指令的处理器。可执行指令通过重复确定路径属性而表征多条并行数据路径中的每条路径,并且多条并行数据路径可定义发送节点与接收节点之间的单虚拟连接。指令还可包括用于通过多条并行数据路径调度数据传输以满足目标函数的指令,该调度基于路径属性。
用于调度数据传输的指令还可包括:用于沿多条并行数据通信路径中的第一路径调度第一数据传输以在目的地接收的指令;以及用于沿多条并行数据通信路径中的第二路径调度第二数据传输的指令,第二数据传输被调度以关于第一分组按预定顺序在接收节点接收。
用于在并行数据路径上传递数据的系统的另一示范实施例包括用于通过重复确定路径属性而表征多条并行数据路径中的每条路径的工具,多条并行数据路径定义发送节点与接收节点之间的单虚拟连接;以及用于通过多条并行数据路径调度数据传输以满足目标函数的工具,该调度基于路径属性。
本领域的技术人员在查看以下附图和详细说明时将或可明白其它系统、方法、特性和/或优点。旨在将所有此类附加系统、方法、
特性和/或优点包括在此说明内并且它们受随附权利要求书的保护。
附图说明
图中的组件不必相对于彼此按比例画出。类似的标号在几个视图中指示相应的部件。
图1示出能够在多条并行通信路径上传递数据的示范并行通信系统的实施例。
图2示出用于在图1的网络内提供并行通信的并行连网收发信机的实施例的方框图。
图3示出公司WAN的实施例,该WAN跨越多个具有多个如图2所示的并行连网收发信机的远程办公点以利用多条并行通信路径。
图4示出示范方法的实施例,该示范方法包括用于在多条并行通信路径上传递数据的步骤。
具体实施方式
本文公开了用于在多条并行通信路径上进行数据通信的系统和方法。这些并行通信系统和方法可发现、表征和利用通信系统的各种网元中的多种资源,为网络应用提供所需的通信目标和性能级别。这些系统和方法可动态适应网络资源的变化以持续提供所需的通信性能。
虽然这些系统和方法可在七个国际标准组织的开放系统互连(ISO/OSI)网络层中的任何层上或之间实施,但并行通信系统的一个实施例实施为处理IP业务以利用多种网络资源的第4层(传输)协议技术。
图1示出示范并行通信系统20。经由并行通信系统20传递数据可称为被封装在数据分组内。然而,不要求数据为任何特殊形式,而是可以是例如段、帧、字节或比特的形式。
并行通信系统20的一个实施例可包括发送方并行通信收发信机22和接收方并行通信收发信机24。每个并行通信收发信机22和24可常驻在与路由器无关的独立单元中,该单元可以部署在要利用多样性的网络26的某部分的任一侧。
网络26例如可以是局域网(LAN)、广域网(WAN)或因特网。如图1中示为实心黑圆的遗留网络节点28可以是例如现有的连网的计算装置,如路由器。在一些实施例中,可修改遗留网络节点28以提供特定的情报给并行通信收发信机22和24。然而,通常遗留网络节点28不需要修改便可在系统中使用。因此,无需在网络26内更改现有基础设施。
图1的实施例示出源计算装置30和目的计算装置32,它们分别经由连接34和36与并行通信收发信机22和24进行通信。源计算装置30和目的计算装置32可概括称为通信端点,并表示任何数量的可使用并行通信收发信机22和24以利用网络26的多样性的计算装置。连接34和36可表示任何数量的有线或无线连接,并可表示一个或多个还可包括多个其它连网的计算装置的网络。
在本示例中,发送方并行通信收发信机22负责通过网络26将始发于源计算装置30的数据分组发送到接收方并行通信收发信机24。接收方并行通信收发信机24负责接收发送方并行通信收发信机22发送的分组并将它们转发到目的计算装置32。虽然收发信机22和24分别称为发送方和接收方,但应理解,每个收发信机可等同配置为作为并行通信数据的发送方和接收方两者操作。然而,为简明起见,图1的特定示例示出通过网络26的单方向(从左到右)数据分组传送,并示出反方向(从右到左)的确认(ACK)分组传送。因此,在一些实施例中,可通过网络26以相反的方向发送数据分组和确认分组,收发信机24充当发送方并且收发信机22充当接收方。
另外,为简明起见,只示出两组并行通信收发信机、连接和端点。然而,任何数量的通信收发信机可与网络26接口以使相关联的通信端点利用网络26。
源计算装置30和目的计算装置32可包括多个使用网络26在这些装置之间传送分组数据的应用。例如,源计算装置30可包括用于将数据发射到目的计算装置32上的客户端应用的服务器应用。类似于遗留网络节点28,与源计算装置32和目的计算装置34相关联的应用可能不知道并行通信收发信机22和24,并且不需要更改设计或操作。
连接可描述为两个网络实体之间的端对端通信链路,与分组如何到达目的地无关。例如,连接38表示并行通信收发信机22与24之间的端对端通信链路。连接在本文中可称为“虚拟”连接,这是因为实际上连接可能表示形成端对端链路的多条路径。
因此,路径可描述在两个实体之间(即在虚拟连接上)数据分组可经过的多条路由之一。例如,路径40(实线)表示数据分组沿连接38经过的第一路径。类似地,路径42(虚线)和路径44(短划线)表示数据分组沿连接38可经过的第二和第三路径。路径40、42和44可称为并行路径,因为它们表示分组数据同时经由网络26传播的三条不同路由。虽然图1中只示出三条路径,但可存在多条由任何数量节点形成的、在连接上分组可经过的路径。此外,应理解,路径可包括单条点对点链路,并且还可包括在单个物理连接上的多个虚拟电路。在一些实施例中,虚拟电路可经由例如端口号或多协议标签交换(MPLS)标签寻址。
并行通信收发信机22和24配置为利用并行路径以将一个或多个目标函数中的每个函数的服务级别提供给端点。示范目标函数可以是带宽、延迟、抖动、丢失率、安全、弹性和成本的度量。服务级别可指但不限于所需的带宽量或可允许的延迟、抖动、丢失率、安全、弹性或成本。
例如,通过寻求并聚合一旦并行组合后便具有所需带宽量的路径,可提供所需的带宽量。与此相比,一些应用可能需要较少的带宽,但要求改进延迟和抖动性能。例如,因特网协议上传送的话音(VoIP)主要要求具有小于100Kbps带宽的连接,但要求较严格的延迟、抖动和数据丢失控制。此外,如果昂贵的3G数据路径和便宜的802.11数据路径为VoIP呼叫服务,则可能优先考虑成本最小化。从而,通过并行通信收发信机22和24选择多条具有用于满足所需服务级别的最有利特征的并行路径,并然后通过所选择的路径适当地调度数据分组传输,可调节目标函数。
图2示出并行通信模块46的实施例的体系结构的方框图,该模块可在发送方并行通信收发信机22内执行以实施并行通信系统和方法。虽然未示出,但接收方并行通信收发信机24可使用相同或类似的体系结构。
一般地说,并行通信收发信机22可包括多种有线和/或无线计算装置中的任何一种,如膝上型计算机、PDA、手持式或基于笔输入的计算机、台式计算机、专用服务器计算机、微处理器计算装置、嵌入式设备、路由器、连网装置等等。无论其特定布置如何,并行通信收发信机例如可包括可连接显示器、存储器、海量存储装置、网络接口、处理装置和输入/输出接口的总线。
相关联的处理装置可包括任何定制或商用处理器、在几个与并行通信收发信机相关联的处理器当中的中央处理单元(CPU)或辅助处理器、基于半导体的微处理器(以微芯片的形式)、宏处理器、一个或多个专用集成电路(ASIC)、多个适当配置的数字逻辑门及其它熟知的电配置,这些电配置包括单独的和各种组合的离散单元以协调计算系统的整体操作。
输入/输出接口为数据的输入和输出提供任何数量的接口。例如,这些组件可与用户输入装置接口,用户输入装置可以是键盘或鼠标、按钮、触敏屏、指示笔(stylist)等。显示器例如可包括计算机监视器或用于PC的等离子屏幕或手持式装置上的液晶显示器(LCD)。
存储器可包括易失性存储单元(例如,随机存取存储器(RAM,如DRAM和SRAM等))和非易失性存储单元(例如,ROM、硬盘驱动器、带、CDROM等)的组合中的任何一种。存储器还可包括本机操作系统、一个或多个本机应用、仿真系统或用于多种操作系统和/或仿真硬件平台中任何一种的仿真应用、仿真操作系统等。
上述每个模块及任何子模块可包括用于实施逻辑函数的可执行指令的有序列表。以软件实施可执行模块时,应注意的是,系统可存储在任何计算机可读介质上以供任何计算机相关系统或方法使用或与其结合使用。在本文档的上下文中,计算机可读介质是电子、磁性、光学或其它物理装置或设备,可包含或存储计算机程序以供计算机相关系统或方法使用或与其结合使用。可执行模块可包含在任何计算机可读介质中以供指令执行系统、设备或装置使用或与其结合使用,如基于计算机的系统、包含处理器的系统或可从指令执行系统、设备或装置获取指令并执行指令的其它系统。
在本文档的上下文中,“计算机可读介质”基本上可以是可存储、传递、传播或传送程序以供指令执行系统、设备或装置使用或与其结合使用的任何东西。计算机可读介质例如可以是但不限于电子、磁性、光学、电磁、红外或半导体系统、设备、装置或传播介质。计算机可读介质的更具体示例(非详尽列表)会包括如下:具有一根或多根线的电连接(电子)、便携式计算机盘(磁性)、随机存取存储器(RAM)(电子)、只读存储器(ROM)(电子)、可擦除可编程只读存储器(EPROM、EEPROM或闪存)(电子)、光纤(光学)和诸如数字通用盘(DVD)或光盘只读存储器(CD-ROM)等光学介质。注意,计算机可读介质甚至可以是打印有程序的纸张或另一适用介质,这是因为可经纸张或其它介质的光学扫描以电子方式捕获程序,而后编译、解释,或者在必要时以合适的方式进行处理,并然后存储在计算机存储器中。
并行通信模块46可包括两个主要的子模块:核心引擎48和路径引擎50。核心引擎48主要负责连接相关(per-connection)功能,并且路径引擎50主要负责路径相关(per-path)功能和状态。这些模块的二分是为了形成一个可能的优于不区分路径与连接功能的现有技术的优势。
虽然功能指系统采用的“行为”或“算法”,但此类行为和算法可处理和维护在本文中可称为“状态”的数据结构。从而,可为单个连接创建多个连接状态。同样地,对于在路径级维护的功能,如拥塞控制,可为每条路径维护多个状态(例如可用速率)。
诸如TCP等传统的第4层技术在诸如连接管理、拥塞控制、可靠性和流控制等功能方面具有集成设计。然而,此类设计对于有效的并行通信存在固有的缺陷,这是因为集成操作并不区分路径相关特征和连接相关特征。
然而,不同于TCP,并行通信收发信机22和24可将网络的各种功能分离成路径相关和连接相关功能。例如,上述并行通信系统可将流控制、连接管理和连接可靠性视为连接级功能,并且可将路径管理、拥塞控制、吞吐量估计、丢失估计、延迟估计及其它网络参数估计关联为路径相关功能。
将网络功能分离成路径相关和连接相关功能(及相关联的状态)以并行使用资源的可能益处的一个示例可在网络具有两条并行路径P1和P2的情况中示出。路径P1和P2例如可分别具有50个单位和100个单位的可用吞吐量。在此示例中,连接最大化地使用这两条路径。因此,连接的总速率能够以150个单位操作。
使用称为线性增加/成倍递减(LIMD)的TCP拥塞控制机制时,如果路径P1出现丢失,则TCP(它不维护分离的状态或执行分离的功能)设计为将整个连接的速率减半。从而,连接的总速率降低为75个单位。
然而,即使假定这两条路径是在尽力而为的网络中使用(这种情况下速率减半是“正确的”行为),理想的反应也会是只在具有丢失的路径上而不是在整个连接上将速率减半。
从而,通过从连接分离各条路径的功能(及相关联的状态),可单独维护每条路径。从而,在此示例中,P1的速率可减半为25个单位,而沿P2的速率(100个单位)保持不受影响,所以总速率为125个单位。因此,与不分离连接和连接中的每条路径的传统方案相比,可在性能方面实现极大的改进。换而言之,通过将每条路径理解为独立的实体并如此处理它们,实现此改进。
至此已一般性地描述了连接和路径的概念,现在将描述并行通信会话的概念。具体地说,每个并行通信会话一般可与并行通信模块46相关联,并因此描述核心引擎48实例及其相关联的基于配置的触发器创建的路径引擎50实例的特定集合。例如,触发器可例如经由用户接口进行配置。
例如,触发器可基于特定的应用、应用类型、源-目的地址、源-目的地址和端口进行配置。在并行通信收发信机收到匹配配置的触发器的分组并且尚未为该匹配的触发器设置通信会话时,可实例化(instantiate)新会话。由于每个会话实例可包括其自己的核心引擎48及相关联的数据结构,因此,每个会话可具有其自己的独立于任何其它会话实例的目标函数。
触发器例如可基于特定的应用,如VoIP业务或ftp业务。因此,核心引擎48可配置为部分基于满足一个或多个匹配会话实例的目标函数来调度分组以被接收。对于VoIP,目标函数可以是减少抖动,并且对于ftp业务,可以是使吞吐量最大化。从而,发送通信收发信机可接收被调度以由多个核心引擎48实例传输的分组。在一些情况下,即使目的端点可能相同,但可基于每个会话的目标函数而使用不同的路径和调度集合。
触发器例如可基于目的地址。在一个实施例中,触发器配置可设为为每个检测到的新目的IP地址创建新会话。如果并行通信收发信机收到具有目的IP地址“X”的新分组,则将创建对应于“X”的新并行通信会话。对于接收的任何其它具有目的地址“X”的分组,这些分组可由该会话服务,该会话可包括其自己的核心引擎48和路径引擎50实例。
至此已描述了并行通信会话的概念,现在将更详细地描述与其组件、路径引擎50和核心引擎48相关的更多细节。通常,路径引擎50负责跟踪路径相关功能,包括路径表征并确保在路径内分组的可靠输送。与路径引擎50相比,核心引擎48可负责连接相关操作,如连接管理、连接可靠性、流控制和调度。核心引擎48还可为特殊连接维护有关并行路径的信息。核心引擎48可配置为网络业务的主接口。例如,在图2的实施例中,核心引擎48经由分别用于发送和接收分组的并行通信发送器模块64和并行通信接收器模块64与基础IP层62接口。核心引擎48可包括多个模块,包括连接处理器69、分配器(dispatcher)模块68、数据处理器模块70、发送缓冲区61、丢失显现(loss exposure)模块74、并行通信ACK发射机模块76、LIMD仿真器模块78、资源发现模块79及调度器模块80。下面将关于核心引擎48并且在路径引擎50的交互作用的范围内更详细地解释这些和其它模块的功能。
关于路径引擎48,图2示出多个路径引擎50实例,可创建这些实例以使每条路径用于网络中。此外,例如可为将使用给定路径的每个新连接(或会话、应用等,这取决于配置到系统中的业务分离粒度)创建该路径的路径引擎实例。例如,在连接的第一分组到达并行通信收发信机时可创建路径引擎50的实例。
路径引擎50的每个实例可包括路径表征模块52,用于表征相关联的路径以确定路径属性。更具体地说,虽然路径表征模块52通常可处理多个其它功能,但当路径属性随着时间变化时,路径表征模块52可重复确定路径属性。路径属性的示例可包括用于在特殊路径上传送的数据的吞吐量、带宽、延迟、抖动、丢失率、成本和安全的瞬时值、平均值及分布。实际上,许多网络路径具有动态条件,例如,不同时期具有不同吞吐量、带宽、延迟、数据丢失、抖动、数据流、成本和/或安全。实际上,路径可完全停止起作用。因此,重复确定(例如定期、动态、持续和/或随机等)路径特征,从而捕获动态路径条件。
路径表征可以是积极或消极表征。积极表征可包括将报头添加到分组,分组包括可用于以推断方式确定属性(例如时戳)的信息。与此相比,消极表征可使用已经嵌入在数据中(例如在TCP报头中)的信息来以推断方式确定属性,或者可从收到分组或未收到分组而推断路径属性。例如,通过观察TCP确认,系统可断定发生丢失或未发生丢失。
消极表征可包括监视沿各种路径输送的数据分组的特征。一些实施例可包括再使用现有的第4层技术协议操作来执行路径表征的能力。因此,通过理解传输协议操作(例如TCP),系统可配置为有效地再使用传输协议的机制来执行路径表征。从而,路径表征可利用对诸如TCP传输层等更高层协议的这种了解。
该模块不必确定路径的所有属性。相反,只需收集特定目标(例如带宽量、抖动或成本)所需的那些属性。例如,在图2的实施例中,一个目标函数是使带宽最大化。从而,在本实施例中,路径表征模块52一般可用于表征每条路径的带宽。具体地说,路径表征模块52可确定并持续跟踪通过对应路径发送的数据量,以便确定要通过特定路径发送的数据量。因此,拥塞控制(路径相关功能)与连接可靠性(连接相关功能)分离。
路径的拥塞控制一般涉及确定要经由路径发送的数据量。在一些实施例中,将拥塞控制作为路径相关功能处理可能是有利的,这至少是因为每条路径具有不同的带宽特征,并且流过每条路径的业务可以不同。从而,通过分离拥塞控制,可更有效地利用具有异类特征(例如不同带宽、抖动、成本、安全等)的路径。从而,路径表征模块52可配置为与核心引擎48进行通信,以便让核心引擎48知道何时特殊路径可用于数据传输。
在一个实施例中,每个路径引擎50实例可使用由TCP使用的基于拥塞窗口的带宽估计机制。具体地说,路径引擎50中的带宽估计器可将拥塞窗口用作路径引擎的对应路径的带宽延迟积(容量)的近似值。拥塞窗口可基于如TCP拥塞控制机制使用的线性增加/成倍递减(LIMD)策略进行维护。LIMD实现了在遗留因特网流之间公平共享路径带宽。
路径引擎50还可使用TCP拥塞控制机制的慢启动阶段来探测可用带宽。在慢启动阶段,路径表征模块52可为每个接收的ACK分组将拥塞窗口增加二。拥塞窗口的阈值可用于确定从慢启动到拥塞避免的过渡点。阈值为丢失发生时拥塞窗口值的一半。在拥塞避免阶段,路径表征模块52例如可为每个接收的ACK分组将拥塞窗口大小加一。
路径表征模块52通过第三个连续重复ACK分组的接收检测到丢失时,路径表征模块52可配置为将拥塞窗口减半,并继续拥塞避免阶段。如果路径表征模块52通过等待ACK分组的计时器截止检测到丢失,则路径表征模块52可配置为将拥塞窗口大小减少到一并继续慢启动阶段。
路径表征模块还可通过明确地使用诸如TCP友好的速率控制(TCP)、保证的TCP(GTCP)、二项式拥塞控制(BCC)等机制来执行路径属性估计,属性可包括诸如但不限于带宽、丢失、延迟、抖动等参数。在一些实施例中,路径表征模块可使用自定义的估计方案来执行路径属性估计,该方案例如可为每个参数维护平均值和偏差值。该估计方案还可包括使用从每个接收的ACK了解的信息、通过适当的加权平均技术来更新参数。例如,在时间Tt发送的数据分组的ACK在时间Tr到达,平均延迟值可更新如下:
Delayavg=k*Delayavg+(1-k)*(Tr-Tt) (Eq.1)
其中,k可以是小于一并大于零的常数值。例如,k可设为介于0.75与1.0之间的某个值,这可避免对网络瞬变的快速反应。
通常,报头生成器模块56生成要发送到核心引擎48的路径报头。路径报头可包括诸如但不限于最新往返时间(RTT)估计、路径级序号、端口信息、校验和、路径级ACK序号、流控制信息及指示以上哪些字段有效的标志等路径信息。核心引擎48生成可与此路径报头组合以形成并行通信报头的连接报头。连接报头可包括诸如但不限于连接标识符、数据分组的连接序号、连接级ACK序号、在使用的传输路径数及在使用的接收路径数等连接信息。正如将关于核心引擎48更详细描述的一样,并行通信报头然后可与分组一起发射。
报头生成器模块56可配置为在路径表征模块52请求时为数据分组创建路径报头。路径表征模块52的请求可为报头生成器模块56提供要包括在要创建的报头中的信息。例如,路径表征模块52可提供路径级序号和最新往返时间(RTT)估计等。
路径表征模块52可配置为通过send_data()调用、经由接口58将报头生成器模块56创建的路径报头发送到核心引擎48。具体地说,send_data()调用可向(核心引擎48的)调度器模块80指示可通过与进行调用的路径引擎50实例相关联的路径发送数据分组。路径报头中的信息可由(核心引擎48中的)调度器模块80用于通过所识别的路径调度分组输送。下面将关于调度器模块80更详细地描述用于通过该路径调度数据分组输送的示范算法。
路径表征模块52可通过指示在各种条件下发送新分组的能力来隐含估计可用带宽。例如,在一个实施例中,路径表征模块52可在以下条件下将send_data()调用发送到调度器模块80:
(i)指示成功接收前一发射的分组,(例如收到前一发射的分组的ACK)。
(ii)路径表征模块52的阶段(例如带宽探测或正常操作);和/或
(iii)如果决定要发送的附加分组数是分数,则小于一的任何值被累积直至随后的增加允许完整分组的传输。
核心引擎48可包括发送缓冲区61,该缓冲区可用于保存多个要在并行通信路径40、42和44上传送的标准分组。标准分组可以是不包括并行通信报头的分组,如典型的TCP分组或UDP分组。例如,标准分组例如可以是从源计算装置30发送到发送方并行通信收发信机22或者从接收方通信收发信机24发送到目的计算装置32的那些分组。因此,在收到来自路径表征模块52的路径报头时,核心引擎48可通过检查发送缓冲区61中要发送的数据分组数量来确定是否有数据分组准备就绪可以发送。
如果发送缓冲区61中存在数据分组,则核心引擎48挑选下一未绑定的分组(缓冲区中在绑定(binding)数据结构中不具有绑定的分组),将分组绑定到路径表征模块52发送的报头,并经由并行通信发送器64将它发出。
然而,如果发送缓冲区61中不存在数据分组,则核心引擎48可通过指示不存在要发送的数据分组来响应路径表征模块52(例如在接口60上)。此指示可称为FREEZE命令。在从核心引擎50收到FREEZE命令时,路径表征模块52可配置为停止带宽估计,并且还可通知路径报头生成器模块56核心引擎48在发送缓冲区61中没有分组。路径引擎50可配置为在从核心引擎48收到发送缓冲区61中有数据分组排队的指示时重新激活带宽估计和报头生成功能。此指示可称为由核心引擎48发送的RESUME命令。
路径表征模块52还可配置为经由接口58通知核心引擎48带宽估计的变化。例如,路径表征模块52可配置为在路径表征模块52收到前一发射的分组的ACK分组时更新带宽估计。此ACK分组例如可从位于核心引擎48中的分配器模块68传递,这将在下面更详细地论述。
通常,可靠性模块54可确保沿与路径引擎50实例相关联的关联路径可靠输送分组。应理解的是,为实现路径可靠性与每个连接的可靠性的有效分离,核心引擎50可配置为处理连接可靠性。从而,下面关于核心引擎48更详细地论述连接可靠性。
关于路径可靠性,可靠性模块54可配置为从分配器68接收ACK,并且利用累积的和选择性ACK来确定是否已正确接收分组。例如,使用累积的确认时,收到预定数量的重复确认产生分组丢失的推断。例如,如果三个重复ACK连续提供相同的序号,则推断出对应于该序号的分组丢失(并因此应重新发射)。
使用选择性ACK时,接收方向发送方提供更具体的信息以识别丢失的分组。例如,接收方可向发送方指示收到分组5-11、13-29和31-48。因此,发送方可推断分组12和30已丢失(并因此应重新发射)。
此外,如果服务的连接是TCP流,则可靠性模块54可配置为再使用TCP报头。具体地说,如上所述,TCP报头中的ACK序号可由系统用于交换有关丢失分组的信息。
至此已描述了路径引擎50的一般功能,现在将更详细地描述核心引擎48。如上所述,核心引擎48可负责诸如但不限于连接管理、连接可靠性、流控制和调度等连接相关操作。应理解的是,核心引擎48的一些实施例可不包括所有这些特性,并且其它实施例可包括多种其它特性。
在一些实施例中,流控制可能不是必要的,这是因为目的地维护的缓冲量可能是执行流控制的决定因素。因此,目的收发信机可配置为通知源收发信机可用的接收缓冲量。因此,源可使用此信息来调整其发送速率以避免目的缓冲区溢出。从而,在一个实施例中,发送并行通信收发信机中使用的缓冲区大小与在目的并行通信收发信机使用的缓冲区大小相同,以避免由于接收缓冲区溢出而丢弃通信。
在图2的实施例中,核心引擎48可包括分配器模块68,用于将使用并行通信接收器模块66、经由接口从IP层62接收的输入分组分类。具体地说,分配器模块68可检查输入分组的报头以确定内容类型(例如数据或ACK)。从而,将数据分组转发到数据处理器模块70,并且将ACK分组转发到ACK处理器模块72。
然而,在将分组转发到数据处理器模块70或ACK处理器模块72之前,连接处理器69可检查分组以识别分组是否与已知的连接相关联。如果连接未知,则连接处理器69可为新发现的连接创建适当的数据结构。
通常,数据处理器模块70可处理从分配器模块68接收的数据分组。数据处理器模块70可配置为基于收到的分组的类型来执行多个操作。具体地说,数据处理器模块70可配置为检测接收的分组是否包括并行通信报头。
例如,回顾图1,发送方并行通信收发信机22从源计算装置30接收不具有并行通信报头的标准数据分组。从而,数据处理器模块70在发送缓冲区61中缓冲接收的数据分组以通过网络26实现最终传输。
与此相比,并行通信收发信机24在并行路径40、42和44的任何组合上从并行通信收发信机22接收并行通信数据分组(例如封装在并行通信报头中的那些分组)。在并行通信收发信机24接收并行通信数据分组时,数据处理器模块70可从数据分组中去除连接报头,并从报头中抽出连接信息。核心引擎48可根据连接报头更新对应的连接变量和数据结构。例如,核心引擎48可更新RTT值,清除发送缓冲区中已收到ACK的分组,并更新等级(rank)数据结构,这将在下面更详细地描述。
数据处理器模块70还可从数据分组中去除路径报头,并经由接口60将路径报头转发到与对应路径相关联的路径引擎50。对应路径例如可根据路径报头中的路径序号和/或源与目的地址确定。路径引擎50然后可将ACK发回发送并行通信收发信机。ACK可指示数据分组的成功接收,并可包括有关数据分组传输的信息,如从数据分组复制的RTT值。数据处理器模块70可负责聚合接收的数据分组以最终输送到目的端点装置。一旦去除并行通信报头,数据处理器模块70便可经由并行通信发送器接口64将得到的标准数据分组发送到IP层,该分组可以是标准TCP数据分组。在一个实施例中,数据处理器模块70可配置为执行条件重组。也就是说,数据处理器模块70可配置为仅在接收的数据满足要求重新同步的条件时才将接收的数据重新排序。条件重组进程例如可如调度模块80所调度的一样,将接收的数据重新排序成要接收它们的预定顺序。
例如,数据处理器模块70可只根据以下两个条件之一将分组发送到IP层:(i)更高协议层是要求按序输送的协议层(例如TCP),并且数据分组是按序分组,或者(ii)更高协议层不是要求按序输送的协议层。然后可将标准数据分组传送到端对端连接的最终目的地,此处为目的计算装置32。如果两个条件均未满足,则将数据分组保存在数据缓冲区中直至新数据分组到达。对于每个收到的数据分组,核心引擎可基于上述条件排出(drain)尽可能多的缓冲分组。
在收到ACK分组时,分配器模块68将分组转发到ACK处理器模块72。通常,ACK处理器模块72通过处理连接和路径报头并提供相关联的连接相关和路径相关反馈,从而提供可靠性和拥塞控制。
更具体地说,ACK处理器模块72还可基于收到的分组类型来执行多个操作。例如,如果ACK处理器模块72检测到接收的ACK分组是并行通信ACK分组(例如通过检测到并行通信报头),则ACK处理器模块72可从数据分组中去除连接报头,并从报头中抽出连接信息。此外,由于收到确认,因此,ACK处理器模块72可配置为从发送缓冲区61中去除对应的数据分组。
ACK处理器模块72还可从并行通信ACK分组中去除路径报头,并经由接口60将路径报头转发到路径引擎50。ACK处理器模块72还可将标准ACK分组转发到丢失显现模块74,标准ACK分组可以是TCP ACK分组。
通常,丢失显现模块74帮助源计算装置30适应多条路径的聚合带宽。更具体地说,丢失显现模块74选择性地向数据源(例如源计算装置30)显现分组数据丢失,目标是使源适应路径的聚合速率,从而避免数据源出现利用不足或超出的可能性。
LIMD仿真器模块78可与丢失显现模块74结合使用,以仿真符合线性增加/成倍递减(LIMD)传输策略的TCP发送方的行为。LIMD仿真器模块78可仿真TCP发送方在接收相同数量的ACK分组时会执行的相同拥塞控制机制。在图2的实施例中,LIMD仿真器模块78可例如经由emul_ack()调用由丢失显现模块74通知接收的ACK传输。此外,LIMD仿真器模块78可配置为将发送的分组数重置为零,并在它从丢失显现模块74收到对应的查询时返回发送的分组数。例如,为确定发送的分组数而对LIMD仿真器模块78进行的查询可用于确定是否应向发送TCP显现丢失。从而,在显现丢失时,重置查询用于重置LIMD仿真器模块78的操作。
在一个实施例中,丢失显现模块74可将除指示丢失的那些ACK分组外的所有ACK分组转发到源。在收到指示丢失的ACK分组时,丢失显现模块74可比较pkts_sent和Tn。变量pkts_sent和Tn可分别对应于并行通信发送器64和LIMD仿真器78发送的分组数。Tn的值例如可由丢失显现模块74调用LIMD仿真器78的emul_num()函数而获得。
如果Tn-pkts_sent>μ,其中μ是可配置的常数阈值,则丢失显现模块74可将ACK分组转发到IP层,将变量pkts_sent重置为0,并调用LIMD仿真器模块78的emul_reset()函数以将从LIMD仿真器发送的分组数重置为0。否则,如果Tn-pkts_sent<μ,则丢失显现模块74可配置为丢弃ACK分组。丢失显现模块74还可在将每个ACK分组转发到IP层时通知LIMD仿真器模块78。此通知例如可经由emul_ack()调用进行。
如果从目的地收到ACK分组,用缺少并行通信报头指示,则ACK处理器模块将分组转发到并行通信ACK发射机模块76。在从ACK处理器模块72收到标准ACK分组时,并行通信ACK发射机模块76请求ack_mapping数据结构,确定对应的路径引擎,并向对应的路径引擎50请求路径报头。ack_mapping数据结构例如可为沿特定路径到达的分组维护适当的序号。通过维护序号和相关联的路径,可沿相同的路径发送对应于分组的ACK。
对应的路径引擎50返回识别的ACK分组的对应路径报头。并行通信ACK发射机模块76然后可将接收的ACK分组与包括路径报头和连接报头的并行通信报头封装在一起。ACK发射机模块76然后可经由并行通信发送器64将构建的并行通信ACK分组发送到IP层62,以将ACK分组输送到发送方并行通信收发信机。
资源发现模块79可消极或积极地发现可用的资源以通过网络26传送数据。例如,在图1的实施例中,资源可以是节点28和其它并行通信收发信机22与24,它们连接形成了路径40、42和44。在消极地监视业务时,资源发现模块79从IP层62接收数据分组,并从每个分组抽出IP报头以确定每个网络分组的源和目的节点。从而,通过确定分组中的源和目的节点,可推断出在这些节点之间存在路径。
发现的源和/或目的节点可以是可能的并行通信收发信机。例如,如果收到的分组包括并行通信报头,则资源发现模块可推断源和/或目的地是并行通信收发信机。
在发现可能的并行通信收发信机时,资源发现模块79可然后通过发射发现分组(例如“PING”)到网络资源来证实发现的资源,发现分组例如可包括并行通信报头。其它收到此PING的并行通信收发信机可配置为通过以封装有并行通信报头的ACK分组确认PING而响应。在一些实施例中,响应的并行通信收发信机可配置为在其它已知的并行通信收发信机之间供应有关响应的并行通信收发信机服务的连接、已知路径和路径特征的信息。
从而,资源发现模块79还可通过从外部得到资源的身份而“发现”资源,如从其它网络资源(例如并行通信收发信机、路由器等)或经由配置接口(可经由图形用户界面显示)。虽然可为资源发现模块79提供资源的标识,但资源发现模块79可如上所述通过发射可包括例如并行通信报头的发现分组(例如“PING”)到网络资源来证实发现的资源的可用性。
资源发现模块79还可执行网络范围的发现分组广播以了解网络中的其它并行通信收发信机,这与定点(pointed)PING不同。这种情况下,所有收到广播的发现分组的并行通信收发信机可配置为以适当的ACK消息响应来指示其存在。
另外,资源发现模块可通过重复发射发现分组到诸如并行通信收发信机等已知节点来维护发现的资源的状态,以确定在路径上接收和可能重新发射数据的节点的可用性。
一旦资源被发现,中间资源之间的各条链路便用于提取两个并行通信收发信机之间的一条或多条路径。参照图1,各个节点28之间的链路被提取到形成单虚拟连接38的每条路径40、42和44中。一旦路径被提取,核心引擎48便将该路径存储为用于在连接上传送数据的可能资源。在发现可使用该路径的新连接时,可创建路径引擎的新实例。
沿路径实际指引数据可包括经由多个并行通信收发信机或遗留节点传送数据,这可通过使用诸如但不限于IP中的IP封装、最小IP封装或源路由选择等广泛采用的路由选择标准来执行。由于这些技术广泛用于经由特殊路径的数据强制,因此,路径内的中间节点无需是其它并行通信收发信机,并且实际上可以只是支持采用的路由选择标准的遗留路由器。然而,在一些实施例中,可能必需为并行通信收发信机提供支持所支持的路由选择标准的遗留路由器的标识(例如通过外部配置)。
通常,调度器模块80智能地调度要发射的分组以实现目标函数(例如带宽最大化/吞吐量、延迟最小化、抖动减少、成本降低、安全、可靠性增加(及丢失率)和/或弹性)。应理解的是,目标函数可以是函数的组合(例如增加带宽和减少抖动)。调度器模块80可另外配置为满足目标函数所需的服务级别(例如带宽量、可允许的抖动、成本级别等等)。分组调度可基于诸如但不限于已知路径的身份、动态更新的路径特征、存储的有关路径和/或连接的状态信息等信息并通过利用对更高层(例如TCP)行为的了解。
例如,如上所述,目标函数可以是使带宽最大化或减少在特殊连接上的抖动。从而,从源计算装置30到达发送方并行通信收发信机22的分组分别被指配给多条输出路径40、42和44,以按大致相同的次序和/或在目的并行通信收发信机所需的同步程度内到达目的并行通信收发信机24。
数据可被调度以关于其它调度的数据按预定顺序在目的地接收。例如,预定顺序可对应于:在调度器接收数据的次序、源计算装置30发射数据的次序、数据顺序信息(例如用于表示数据通信中分组的特殊顺序的数据,如在数据分组报头中嵌入的数字顺序)或要从并行通信发送器发射数据到目的端点的次序。
因此,虽然分组可能实际上是在目的收发信机24被无次序地接收,但调度发射分组使得无次序接收最小化,因而降低了抖动并提高了带宽。
调度器模块80使用路径的动态表征连同其他信息一道来持续适当地调度分组。例如,如果路径表征模块52确定一条路径的可用带宽已减少,则调度器模块80可使用此表征信息来调整和调度较少的分组来通过受影响的路径传送。类似地,如果确定路径是完全中断,则可调度分组在其它路径上传送。
从而,为有效地使在每条路径上传送的数据同步,调度器模块80可配置为预测在每条路径上发送的每个分组的到达时间。例如,到达时间可至少部分基于路径表征模块52提供的RTT估计。另外,在一些实施例中,调度器模块80可配置为考虑要在每条路径上传送的数据的到达概率。例如,到达概率可从诸如特殊路径的丢失率等路径属性导出。因此,基于路径的动态特征而重新分布分组。
回顾图2,在操作中,调度器模块80可向路径引擎50的实例请求路径报头。在收到路径报头时,调度器模块80可从发送缓冲区61选择要传输的数据分组。调度器模块80将所选择的数据分组与并行通信报头封装在一起,该报头包括来自路径引擎50的适当的路径报头和包含连接信息的连接报头。调度器模块80可将与并行通信报头封装在一起的数据分组经由发送器接口64发送到IP层62。调度器模块80还可更新适当的数据结构。
在论述调度器80使用的示范算法的详情之前,更详细地描述调度器模块80可使用的多个数据结构。绑定数据结构82在路径相关基础上维护,并通常可用于存储对应路径的连接序号和对应路径序号的映射。具体地说,对于调度器80发送到IP层的每个数据分组,核心引擎48在绑定数据结构82中维护有关路径的本地序号与连接序号之间的映射。
类似地,在收到数据分组时,核心引擎48维护相同的结构。具体地说,在从PVN发送方收到数据分组时,数据处理器模块可将连接序号和对应路径序号的映射插入对应路径的绑定数据结构中。
活动(active)数据结构84可存储可用于数据传输的路径的身份。例如,在确定可通过相关联的路径发送数据时,特定路径的路径引擎50的实例可通过发送send_data()调用到调度器80而指示此准备状态。然而,如果数据分组在发送缓冲区中不可用,则核心引擎48可调用FREEZE函数,并且调度器模块可将对应的路径添加到活动数据结构84。数据分组位于发送缓冲区61中时,调度器80可将RESUME调用发到对应于活动数据结构84中识别的每条路径的路径引擎50实例。
等级数据结构86可存储用于确定发送缓冲区中要发送的数据分组的等级的信息。具体地说,对于经由路径j发送的每个发射的数据分组i,并行通信发送器64将具有时戳Ti+2*RTTj的元素插入等级数据结构86,其中,Ti是发射该数据分组的时间,并且RTTj是经由路径j经历的往返时间。例如,RTT值可从RTT数据结构获得。
RTT数据结构88可存储特殊路径的往返时间估计。具体地说,在通过send_data()调用从路径引擎50收到特殊路径的RTT估计时,调度器模块80可在RTT数据结构中更新(或插入)对应的项。
未决(pending)数据结构90用于存储准备好发射或重新发射的连接序号。
至此已描述了调度器模块80使用的数据结构,现在将更详细地描述调度器模块80使用的算法。应理解的是,虽然(路径引擎50的)路径表征模块52可确定要经由特定路径发送的数据量,但调度器模块80确定发送缓冲区61中的哪些特定分组要经由每条路径发送,这通过相应地绑定这些分组而进行。
因此,为确定发送缓冲区61中的哪些特定分组要经由每条路径发送,考虑对应于路径j的路径引擎50实例在时间T发送具有路径序号s的路径报头的情况。调度器模块80通过send_data()调用接收该路径报头并从等级数据结构确定对应分组的等级。
通过统计等级数据结构86中值小于T+RTTj/2的项的数目来确定分组的等级。调度器模块80查找具有连接序号i的分组作为未决数据结构90中要发送的第k个分组。
如上所述,未决数据结构90可包括仍要发射或重新发射的分组的连接序号。在未决数据结构90中找到特定分组后,调度器80用(j,s)更新绑定数据结构82中分组i的项,并在等级数据结构86中插入项(i,T+3/2*RTTj)。最后,调度器80使用连接报头中的序号i,将连接报头和接收的路径报头附加到数据分组,并将它经由并行通信发送器64发送到IP层。收到ACK分组时,删除等级数据结构86中的对应项。
在连接内分组的可靠输送还可由调度器模块80处理。具体地说,调度器模块80可如上所述基于调度策略从发送缓冲区发射分组。此外,调度器模块80可删除其ACK已到达(指示分组在目的并行通信收发信机成功接收)的分组。
因此,与(由路径引擎50中的可靠性模块54处理的)路径可靠性相比,可由核心引擎48的调度器模块80确保经由连接可靠输送分组。换而言之,不考虑分组到达接收并行通信收发信机所使用的特定路径,发送并行收发信机的核心引擎48可配置为承担在连接上可靠输送数据分组的责任。
至此已描述了路径引擎48和核心引擎50,现在将描述通过所述系统和方法可利用的多个示范特性。例如,动态重新指配特性可用于防止由于对应路径引擎对任何路径容量的错误估计而导致的分组丢失。例如,路径表征模块52可能高估路径的容量,例如,正好是在路径中发生拥塞前。这种高估可导致在拥塞窗口最近已减小的路径中出现不想要的数据放慢。
例如,路径pi的拥塞窗口可表示为cwndi。如果量为cwndi的数据被指配给路径pi,并且拥塞窗口大小减为在pi的拥塞窗口外的量为cwndi/2的数据,则数据传输将受阻,直至拥塞窗口cwndi展开。从而,其它路径中的传输可能由于路径pi中分组输送的延迟而放慢。
然而,通过利用路径拥塞控制与连接可靠性之间存在的分离,可减轻此问题。具体地说,路径发生拥塞时,路径引擎50的路径表征模块52可减小拥塞窗口(例如,如果通过重复的确认检测到则减半,以及如果存在超时则减为一)。
如上所述,如果对应路径的路径表征模块52减小拥塞窗口,则路径表征模块52可将该减小通知调度器模块80。调度器模块80然后可松开在拥塞窗口外的被绑定到有关路径的序号的数据分组。
因此,如果另一路径在其拥塞窗口中有空间,并且发送send_data()调用,则可将未绑定的数据重新指配给该路径。原路径在从拥塞恢复后调用send_data()时,调度器模块80可将发送缓冲区中存储的新数据分组绑定到路径引擎50发送的路径报头。从而,此动态重新指配算法可用于提高并行通信的性能,从而减轻由各条路径的变化的网络条件引起的问题。
可通过上述系统和方法利用的另一示范特性可称为冗余剥离。虽然上述动态重新指配策略重新指配在特殊路径的拥塞窗口外的分组,但无论路径的状态如何,动态重新指配策略可能无法有效地处理可能不在拥塞窗口外的第一分组。
不过,未能经由路径输送第一分组可能阻止经由聚合连接的数据流,这是因为分组将不以有序输送的方式到达。例如,如果有关路径受多个超时或经由相应路径的数据流完全停止的影响,则这是可能的。
幸运的是,通过使用冗余剥离策略,可减轻这些问题。具体地说,根据冗余剥离策略的一个实施例,调度器模块80可配置为以冗余方式将发生超时的路径的拥塞窗口中的第一数据分组剥离(stripe)到另一路径上。从而,数据分组的绑定更改到新路径(但还将数据分组指配给了旧路径用于传输)。通过在旧路径中留下数据分组的副本(例如不是简单的重新指配),旧路径将需要发送至少一个分组以从超时中恢复。
已描述了实施例,其中,所有或几乎所有情报(例如资源的可用性、资源的表征、目标功能等)常驻在发送并行通信收发信机内。然而,相当一部分的情报可分布到接收并行通信收发信机或在任何中间节点内。例如,沿路径的中间网络资源(例如节点、遗留路由器或另一并行通信收发信机)可供应有关节点了解的、可用于直接或间接确定路径特征的其它网络资源的信息。另外,接收并行通信收发信机可执行路径发现和路径表征的任务,并且发送并行通信收发信机可定期请求信息以向调度器模块提供来自接收并行通信收发信机的必需的信息,从而有效地在提供的路径上传送数据以满足所需的目标。从而,实施所需的计算能力和范围(footprint)可分布到整个网络。
虽然图1示出两组并行通信收发信机、连接和端点,但任何数量的通信收发信机可与网络26接口以便为相关联的通信端点而利用网络26。例如,如图3所示,诸如公司WAN100的网络可表示为四个分别位于旧金山、亚特兰大、芝加哥和西雅图的远程办公点102、104、106和108。
这四个远程办公点102、104、106和108中的各个可分别包括并行通信收发信机110、112、114和116。另外,这四个远程办公点102、104、106和108中的各个可包括一个或多个子网络118、120、122和124(例如LAN或WAN)以连接多个通信端点(未示出)。
各自站点的各个并行通信收发信机110、112、114和116可具有到其它站点的直接连接,由通信链路110、112、114、116、118和120表示。每条通信链路110-120可表示各个收发信机110、112、114和116之间的端对端通信连接,它们可包括任何数量的根据关于图1和图2所述的实施例所利用的网络资源。
在图3中的示例中,不聚合网络资源的现有网络管理技术无法动态改变网络的拓扑来满足特定的业务需要。例如,考虑不使用上述实施例的系统和方法并且任何两个站点之间的峰值带宽使用率为100Mbps的情况。在没有并行通信收发信机110、112、114和116的情况下,必须在每个站点之间为链路126-136供应100Mbps的带宽以满足峰值带宽要求。
与此相比,通过在各个远程站点安装并行通信收发信机110、112、114和116,实现了利用站点之间各条路径的能力。因此,在上述示例中,对于完全连接的网络拓扑,由于在任何两个站点之间存在至少三个并行连接,因此,为站点到站点的链路供应33.3Mbps的带宽是足够的。
从而,示范公司WAN100示出,通过进一步提取包括并行通信收发信机110、112、114和116之间的多条路径的各条链路以形成新的单连接,可进一步利用多个单虚拟连接。例如,由链路126和128、132以及134和136形成的路径形成三条路径,可将这三条路径提取到并行通信收发信机112与114之间的单虚拟连接中。应理解的是,还可提供其它路径,如由链路126、130、136和/或134、130和128形成的路径。
公司WAN100的示例示出,可能已被资源发现模块79(图2)发现的中间并行通信收发信机可特别有用,表现在发送收发信机可能指示中间并行通信收发信机沿任何已知的可能提取路径重新发射分组。这些中间并行通信收发信机可描述为沿提取路径的“反射点”。例如,在从收发信机112将数据发射到收发信机114中,可指示中间收发信机110和116直接将数据传递到收发信机114,或者经由其它中间收发信机(例如按顺序沿路径126、130和136并经由中间收发信机110和116)传递。此路由指示例如可包括在并行通信报头中。
发送并行通信收发信机可(例如使用IP中的IP封装、最小IP封装或源路由选择)指示中间并行通信收发信机将分组指引到其它已知的并行通信收发信机,它们可以是其它中间或目的并行通信收发信机。
已将并行通信的实施例一般性地描述为具有发送和接收并行通信收发信机两者。然而,在一些实施例中,输送到接收节点的数据不必由并行通信收发信机接收。更确切地,发送并行通信收发信机可在多条路径上调度数据传输来在接收节点接收以满足目标函数,其中,接收节点本身是目的端点。在此类实施例中,发送并行通信收发信机可通过外部途径(例如通过外部配置)了解路径属性,这是因为发送并行通信收发信机可能在其资源表征方法中无法与目的端点合作。
上述并行通信的实施例可描述为用于在并行数据路径上传递数据的方法,并且上述系统的功能可视为提供多个可执行的步骤以有效地在并行数据路径上传递数据。
然而,具体地说,一种上述的并行通信方法138可包括发现可用于通过网络26传送数据的资源的步骤140。例如,资源可以是可形成路径的多种网络实体,如节点、遗留路由器或并行通信收发信机。发现步骤140可包括广播包括请求接收节点发射确认分组的数据分组,以及从可以是并行通信收发信机的接收节点接收确认分组。资源还可通过从外部源提供的资源信息发现(例如从网络资源发射或通过其它外部配置)。还可通过监视数据业务以发现发送和接收节点而发现资源,这些节点可以是并行通信收发信机。
在发现资源时,可通过重复发射分组到已知的资源而维护这些已知的资源。从而,可维护已知的并行收发信机接收数据传输的可用性。重复的传输可以以任何时间间隔持续、定期或随机发生。
步骤142可包括从接收的数据分组收集路由信息,并从抽出的路由信息中提取至少一条在发送节点与接收节点之间的路径。多条提取的并行数据路径可定义发送节点与接收节点之间的单虚拟连接。可指示中间并行通信收发信机使用诸如IP中的IP封装、最小IP封装或源路由选择等路由选择标准来沿路径将数据分组指引到其它已知的并行通信收发信机。
步骤144可包括将网络功能分离成路径相关功能和连接相关功能。路径相关功能可包括可用速率估计、延迟估计、丢失估计及拥塞控制,并且连接相关功能可包括流控制、连接管理及连接可靠性。该分离还可包括基于触发器创建会话,该会话包括用于维护路径相关功能的核心引擎和至少一个用于维护路径相关功能的路径引擎。每条路径和连接的数据结构可得到维护。
步骤146可包括通过重复确定路径属性而表征多条并行数据路径中的每条路径。具体地说,路径属性可以是用于在特殊路径上传送的数据的带宽、延迟、抖动、丢失率、成本和安全的瞬时值、平均值及分布中任何一个的测量。
步骤148可包括通过多条并行数据路径调度数据传输以满足目标函数,并且此调度可基于路径属性、更高层协议或特定应用。目标函数可包括为连接提供以下各项的级别:带宽、延迟、抖动、丢失率、安全、弹性或成本。
调度步骤还可包括预测要在多条并行数据通信路径中的每条路径上传送的数据的到达时间和/或到达概率,并然后在预定的同步程度内在接收节点使数据的到达时间同步。例如,调度步骤可包括沿多条并行数据通信路径中的第一路径调度数据传输以在目的地接收。调度步骤还可包括沿多条并行数据通信路径中的第二路径调度第二数据传输。第二数据传输可被调度以关于第一分组按预定顺序在接收节点接收。
在步骤150,在并行路径上传送的数据例如可在接收节点聚合并重组以形成原数据通信。例如,接收的第一和第二数据传输可仅在以下情况时才重组:未按预定顺序接收第一和第二传输;以及确定更高层协议要求按预定顺序输送第一和第二传输。
在步骤152,然后可将接收的(并可能重组的)数据发射到目的端点。
上述并行通信系统和方法的实施例可以以多种方式部署。例如,系统和方法可实施为客户机和服务器上的用户空间库、端点客户机和服务器上的内核空间软件、独立的网元或者嵌入式网元。
图1-3的并行通信系统实施例是包括独立网元的并行通信收发信机内的实施示例。上述并行通信系统的这种部署可能是有利的,因为它不需要更改通信端点或遗留网络基础设施(除在要利用的网络资源的任一侧物理插入独立的网元外)。这些系统和方法利用具有中间并行通信收发信机的通信端点之间存在的路径多样性。由于并行通信收发信机能够聚合资源及将单资源的提取提供给在每个端点执行的应用,现有的网元无需重新配置或了解并行通信收发信机的存在。
上述的系统和方法不是针对所使用的特定网络技术,并且无需更改本来的现有网络应用。这些系统和方法可动态地表征给定网络设置中可能的并行程度,并使用网络输送并行化的性能到应用。这些系统和方法能够适应定义的目标函数,并包括范围从网络中端系统上的简单软件下载到与网元本身充分集成的灵活的部署策略。
应强调的是,对上述实施例可进行许多变化和修改。所有上述修改和变化均将包括在此公开内容范围内的本文中,并受随附权利要求书的保护。
Claims (51)
1.一种用于在并行数据路径上传递数据的方法,包括:
通过重复确定路径属性而表征多条并行数据路径中的每条路径,所述多条并行数据路径定义发送节点与接收节点之间的单虚拟连接;以及
通过所述多条并行数据路径调度数据传输以满足目标函数,所述调度基于所述路径属性。
2.如权利要求1所述的方法,其中调度数据传输的步骤还包括:
沿所述多条并行数据通信路径中的第一路径调度第一数据传输以在所述接收节点接收;以及
沿所述多条并行数据通信路径中的第二路径调度第二数据传输,第二数据传输被调度以关于第一分组按预定顺序在所述接收节点接收。
3.如权利要求1所述的方法,还包括:
仅在以下情况时才在所述接收节点重组所接收的第一和第二数据传输:
未按所述预定顺序接收第一和第二传输;以及
确定更高层协议要求按所述预定顺序输送第一和第二传输。
4.如权利要求1所述的方法,还包括:
预测要在所述多条并行数据通信路径中的每条路径上传送的数据的到达时间。
5.如权利要求4所述的方法,还包括:
预测要在所述多条并行数据通信路径中的每条路径上传送的数据的到达概率。
6.如权利要求4所述的方法,还包括:
在预定的同步程度内在所述接收节点使所述数据的到达时间同步。
7.如权利要求1所述的方法,还包括:
广播包括请求接收并行通信收发信机发射确认分组的数据分组;以及
从所述接收并行通信收发信机接收确认分组。
8.如权利要求7所述的方法,还包括:
提取至少一条到所述接收并行通信收发信机的路径。
9.如权利要求1所述的方法,还包括:
监视数据业务以发现发送并行通信收发信机和接收并行通信收发信机;以及
提取至少一条所述发送并行通信收发信机与所述接收并行通信收发信机之间的路径。
10.如权利要求1所述的方法,还包括:
将网络功能分离成路径相关功能和连接相关功能。
11.如权利要求10所述的方法,还包括:
基于触发器创建会话,所述会话包括用于维护所述路径相关功能的核心引擎和至少一个用于维护所述路径相关功能的路径引擎。
12.如权利要求10所述的方法,还包括:
为所述多条并行数据路径中的每条路径维护数据结构。
13.如权利要求10所述的方法,其中从以下各项组成的组中选择所述路径相关功能:可用速率估计、延迟估计、丢失估计和拥塞控制。
14.如权利要求10所述的方法,其中从以下各项组成的组中选择所述连接相关功能:流控制、连接管理和连接可靠性。
15.如权利要求1所述的方法,其中所述目标函数是为所述虚拟连接提供以下项的一个或多个级别:吞吐量、带宽、延迟、抖动、丢失率、安全、可靠性、弹性或成本。
16.如权利要求1所述的方法,其中所述路径属性是用于在特殊路径上传送的数据的吞吐量、带宽、延迟、抖动、丢失率、成本、安全、可靠性、弹性或成本的瞬时值、平均值及分布中的一个或多个的测量。
17.如权利要求1所述的方法,其中所述调度步骤还基于对更高层网络协议或应用的了解。
18.如权利要求1所述的方法,还包括:
重复发射分组到多个已知的并行通信收发信机,以确定所述已知的并行通信收发信机接收所述数据传输的可用性。
19.如权利要求1所述的方法,还包括:
指示中间并行通信收发信机使用从以下项组成的组中选择的路由选择标准将数据分组指引到其它已知的并行通信收发信机:IP中的IP封装、最小IP封装和源路由选择。
20.如权利要求1所述的方法,其中所述通过所述多条并行数据路径调度数据传输的步骤还包括:
调度所述数据以传输到所述接收节点,所述接收节点从以下项组成的组中选择:并行通信收发信机和目的端点。
21.一种用于在并行数据路径上传递数据的系统,包括:
用于通过重复确定路径属性而表征多条并行数据路径中的每条路径的工具,所述多条并行数据路径定义发送节点与接收节点之间的单虚拟连接;以及
用于通过所述多条并行数据路径调度数据传输以满足目标函数的工具,所述调度基于所述路径属性。
22.如权利要求21所述的系统,其中所述用于调度数据传输的工具还包括:
用于沿所述多条并行数据通信路径中的第一路径调度第一数据传输以在所述接收节点接收的工具;以及
用于沿所述多条并行数据通信路径中的第二路径调度第二数据传输的工具,第二数据传输被调度以关于第一分组按预定顺序在所述接收节点接收。
23.如权利要求21所述的系统,还包括:
用于仅在以下情况时才在所述接收节点重组所接收的第一和第二数据传输的工具:
未按所述预定顺序接收第一和第二传输;以及
确定更高层协议要求按所述预定顺序输送第一和第二传输。
24.如权利要求21所述的系统,还包括:
用于预测要在所述多条并行数据通信路径中的每条路径上传送的数据的到达时间的工具。
25.如权利要求24所述的系统,还包括:
用于预测要在所述多条并行数据通信路径中的每条路径上传送的数据的到达概率的工具。
26.如权利要求24所述的系统,还包括:
用于在预定的同步程度内在所述接收节点使所述数据的到达时间同步的工具。
27.如权利要求21所述的系统,还包括:
用于广播包括请求接收并行通信收发信机发射确认分组的数据分组的工具;以及
用于从所述接收并行通信收发信机接收确认分组的工具。
28.如权利要求27所述的系统,还包括:
用于提取至少一条到所述接收并行通信收发信机的路径的工具。
29.如权利要求21所述的系统,还包括:
用于监视数据业务以发现发送并行通信收发信机和接收并行通信收发信机的工具;以及
用于提取至少一条所述发送并行通信收发信机与所述接收并行通信收发信机之间的路径的工具。
30.如权利要求21所述的系统,还包括:
用于将网络功能分离成路径相关功能和连接相关功能的工具。
31.如权利要求30所述的系统,还包括:
用于基于触发器创建会话的工具,所述会话包括用于维护所述路径相关功能的核心引擎和至少一个用于维护所述路径相关功能的路径引擎。
32.如权利要求30所述的系统,还包括:
用于为所述多条并行数据路径中的每条路径维护数据结构的工具。
33.如权利要求22所述的系统,其中所述用于调度的工具还基于对更高层网络协议或应用的了解。
34.如权利要求21所述的系统,还包括:
用于重复发射分组到多个已知的并行通信收发信机以确定所述已知的并行通信收发信机接收所述数据传输的可用性的工具。
35.如权利要求21所述的系统,还包括:
用于指示中间并行通信收发信机使用从以下项组成的组中选择的路由选择标准将数据分组指引到其它已知的并行通信收发信机的工具:IP中的IP封装、最小IP封装和源路由选择。
36.如权利要求20所述的系统,其中所述用于通过所述多条并行数据路径调度数据传输的工具还包括:
用于调度所述数据以传输到所述接收节点的工具,所述接收节点从以下项组成的组中选择:并行通信收发信机和目的端点。
37.一种用于在并行数据路径上传递数据的系统,包括:
配置为从指令执行系统获取并执行指令的处理器,所述指令包括:
用于通过重复确定路径属性而表征多条并行数据路径中的每条路径的指令,所述多条并行数据路径定义发送节点与接收节点之间的单虚拟连接;以及
用于通过所述多条并行数据路径调度数据传输以满足目标函数的指令,所述调度基于所述路径属性,所述用于调度数据传输的指令还包括:
用于沿所述多条并行数据通信路径中的第一路径调度第一数据传输以在所述接收节点接收的指令;以及
用于沿所述多条并行数据通信路径中的第二路径调度第二数据传输的指令,第二数据传输被调度以关于第一分组按预定顺序在所述接收节点接收。
38.如权利要求37所述的系统,所述指令还包括:
用于仅在以下情况时才在所述接收节点重组所接收的第一和第二数据传输的指令:
未按所述预定顺序接收第一和第二传输;以及
确定更高层协议要求按所述预定顺序输送第一和第二传输。
39.如权利要求37所述的系统,所述指令还包括:
用于预测要在所述多条并行数据通信路径中的每条路径上传送的数据的到达时间的指令。
40.如权利要求39所述的系统,所述指令还包括:
用于预测要在所述多条并行数据通信路径中的每条路径上传送的数据的到达概率的指令。
41.如权利要求39所述的系统,所述指令还包括:
用于在预定的同步程度内在所述接收节点使所述数据的到达时间同步的指令。
42.如权利要求37所述的系统,所述指令还包括:
用于广播包括请求接收并行通信收发信机发射确认分组的数据分组的指令;以及
用于从所述接收并行通信收发信机接收确认分组的指令。
43.如权利要求42所述的系统,所述指令还包括:
用于提取至少一条到所述接收并行通信收发信机的路径的指令。
44.如权利要求37所述的系统,所述指令还包括:
用于监视数据业务以发现发送并行通信收发信机和接收并行通信收发信机的指令;以及
用于提取至少一条所述发送并行通信收发信机与所述接收并行通信收发信机之间的路径的指令。
45.如权利要求37所述的系统,所述指令还包括:
用于将网络功能分离成路径相关功能和连接相关功能的指令。
46.如权利要求45所述的系统,所述指令还包括:
用于基于触发器创建会话的指令,所述会话包括用于维护所述路径相关功能的核心引擎和至少一个用于维护所述路径相关功能的路径引擎。
47.如权利要求45所述的系统,所述指令还包括:
用于为所述多条并行数据路径中的每条路径维护数据结构的指令。
48.如权利要求37所述的系统,其中所述用于通过所述多条并行数据路径调度数据传输的指令还基于对更高层网络协议或应用的了解。
49.如权利要求37所述的系统,所述指令还包括:
用于重复发射分组到多个已知的并行通信收发信机以确定所述已知的并行通信收发信机接收所述数据传输的可用性的指令。
50.如权利要求37所述的系统,所述指令还包括:
用于使用从以下项组成的组中选择的路由选择标准将数据分组指引到其它已知的并行通信收发信机的指令:IP中的IP封装、最小IP封装和源路由选择。
51.如权利要求37所述的系统,其中所述用于通过所述多条并行数据路径调度数据传输的指令还包括:
用于调度所述数据以传输到所述接收节点的指令,所述接收节点从以下项组成的组中选择:并行通信收发信机和目的端点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US54603404P | 2004-02-19 | 2004-02-19 | |
US60/546,034 | 2004-02-19 | ||
US11/063,284 | 2005-02-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101124754A true CN101124754A (zh) | 2008-02-13 |
Family
ID=39086109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800111342A Pending CN101124754A (zh) | 2004-02-19 | 2005-02-22 | 用于并行通信的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101124754A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611612A (zh) * | 2010-12-21 | 2012-07-25 | 微软公司 | 数据中心环境中的多路径通信 |
CN107113054A (zh) * | 2014-12-11 | 2017-08-29 | 天波网络有限责任公司 | 使用低延时/低数据带宽和高延时/高数据带宽通道的通信方法和系统 |
CN110730248A (zh) * | 2019-10-24 | 2020-01-24 | 北京大学 | 一种多路径传输中继设备 |
CN115037671A (zh) * | 2021-03-04 | 2022-09-09 | 华为技术有限公司 | 多路径聚合调度方法及电子设备 |
-
2005
- 2005-02-22 CN CNA2005800111342A patent/CN101124754A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611612A (zh) * | 2010-12-21 | 2012-07-25 | 微软公司 | 数据中心环境中的多路径通信 |
CN107113054A (zh) * | 2014-12-11 | 2017-08-29 | 天波网络有限责任公司 | 使用低延时/低数据带宽和高延时/高数据带宽通道的通信方法和系统 |
CN110730248A (zh) * | 2019-10-24 | 2020-01-24 | 北京大学 | 一种多路径传输中继设备 |
CN115037671A (zh) * | 2021-03-04 | 2022-09-09 | 华为技术有限公司 | 多路径聚合调度方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102084627B (zh) | 通过网络传输数据的方法 | |
US9621384B2 (en) | Systems and methods for communicating data over parallel data paths | |
CN104205942B (zh) | 多跳错误恢复 | |
CN101682442B (zh) | 用于第2层链路聚合的动态负载均衡 | |
CN1783852B (zh) | 使用web服务可靠消息通信协议的高效消息传输 | |
CN100552626C (zh) | 用网络栈同步和上载已卸载网络栈连接的方法 | |
CN101502048B (zh) | 分组网中部分故障的分层处理和传播 | |
US7827295B2 (en) | Protocol stack | |
CN102090030A (zh) | 通过网络传输数据的方法 | |
CN101668005B (zh) | 一种基于发送端多接入通道的数据传输加速引擎方法 | |
CN104756451A (zh) | 用于lag接口上网络流的动态负载平衡的方法 | |
CN104272708A (zh) | 带有到服务器群组的无状态第一级分组分布和到群组内某个服务器的有状态第二级分组分布的二级分组分布 | |
US8467390B2 (en) | Method and system for network stack tuning | |
JPH10126446A (ja) | Tcpネットワーク内のデータ端末 | |
CN104995884A (zh) | 分布式无交换机互连 | |
CN101124754A (zh) | 用于并行通信的系统和方法 | |
CN101883047B (zh) | 多网络接口设备的数据并发传输方法 | |
CN101621530B (zh) | 基于光路共享的负载均衡网络资源调度方法及其装置 | |
CN102138136A (zh) | 用于为MP订户提供QoS的方法和设备 | |
JP4110205B1 (ja) | データ転送処理装置およびデータ転送システム | |
Dan et al. | SOPA: source routing based packet-level multi-path routing in data center networks | |
CN102668470B (zh) | 用于在通信网络中分配通信管道的方法和分配单元 | |
JP4110150B2 (ja) | データ転送処理装置およびデータ転送システム | |
Sabetghadam | MMPTCP: A Novel Transport Protocol for Data Centre Networks | |
MXPA06009481A (en) | Systems and methods for parallel communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080213 |