专利名称:用于双向通信中增加吞吐量的系统、方法和计算机程序产品的制作方法
技术领域:
本发明一般涉及主机之间双向通信的系统和方法,并且更具体地说,涉及具有增加的吞吐量的主机之间双向通信的系统和方法。
背景技术:
今天,一个组织的计算机网络已成了其循环系统。各个组织将台式工作站、服务器和主机组合成局域网(LAN)社区。这些局域网已连接到其它局域网和广域网(WAN)。系统对必须在它们需要时能够进行通信,而无论它们在网络中可能处于的位置,这已成了每天操作的一个必需。
在网络计算的早期年代,专有的连网协议是标准。然而,由国际标准化组织(ISO)引入的开放式系统互连参考模型的发展使得互连程度惊人,这通常允许最终用户应用在网络中的系统之间很好地工作。实施是基于由来自许多计算机厂商、硬件组件厂商和独立软件公司的志愿者制定的书面标准。
在过去的十年间,LAN已激增。这引发了如何将拥塞降到最小和优化吞吐量的问题重现,而此问题必须由网络管理者来解决。早期的解决方案只是将局域网分成为更少人服务的多个更小网络。这些段由桥接器连接,以形成具有局部与每段分开的业务的单个局域网。
新网络类型和WAN的进展造成了对路由器的需要。例如,因特网是由有时称为路由器的网关连接的一组网络。路由器增加了过滤和防火墙能力以在广播域上提供更多的控制、限制广播业务并增强安全性。由于嵌入的智能,路由器能够选择通过网络的最佳路径。此增加的智能还允许路由器在可能时建立到目的地的冗余路径。不过,由嵌入的智能给予的最佳路径选择能力所增加的复杂性提高了路由器的端口成本,并导致了大量的等待时间开销。包括分布式客户机/服务器数据业务、扩大的用户群体和更复杂应用的共享媒体网络造成了新的带宽瓶颈。此类拥塞导致网络响应时间不可预测、无法支持延迟敏感的应用并且网络故障率更高。
现代网络中的拥塞控制日益成为一个重要的问题。诸如万维网(WWW)的因特网应用的急剧增长已将当前的技术推到其极限,因而显然需要更快的传输和改进的拥塞控制机制。因此,许多设备厂商和服务提供商转向高级连网技术,以对涉及的复杂服务质量(QoS)管理问题提供适当的解决方案。示例包括异步传送模式(ATM)网络和新兴的因特网协议(IP)网络服务。然而,仍需要在这些更新的范例中支持现有遗留IP协议的主机。具体而言,到处存在的TCP传输层协议长期以来一直是IP网络中的主要传输协议,由web浏览器、文件/电子邮件传送服务等广为使用。
传输控制协议(TCP)是TCP/IP协议系列的一部分,它随着因特网的成功而成了全球最重要的数据通信协议之一。TCP在使用TCP/IP协议的装置之间提供可靠的数据连接。TCP在IP的顶部操作,而IP用于将数据打包成称为数据报的数据分组,并用于在网络上传输。
因特网协议(IP)是将数据在因特网上路由选择的网络层协议。因特网协议旨在允许使用由不同厂商制造的主机和路由器、包括种类不断增加的多个增加的网络类型、允许网络增长而不中断服务器并支持更高层的面向会话和消息的服务。IP网络层允许LAN“岛”的集成。
然而,IP不包含任何流控制或重新传输机制。这是TCP一般在其顶部使用的原因。更具体地说,TCP使用确认以检测丢失的数据分组。TCP/IP网络是现今所有网络中可能最重要的网络,并且在若干如上述的ATM网络的(物理)网络的顶部操作。这些基本网络可提供有关网络条件和业务的一些信息,这些信息可用于提供有关拥塞的反馈。
为管理拥塞,TCP可使用与反应拥塞控制结合的滑动窗口机制,以调整发送方的传输窗口大小。该协议视从远程接收方端发送的返回确认(ACK)分组而调整其传输特性。
然而,TCP有关的问题在于在主机(每个起到发送方和接收方的作用)之间的双向通信的某些实例中,TCP拥塞控制可能无效。更具体地说,考虑例如在根据TCP操作的主机之间的双向通信,如双向文件传送协议(FTP)通信。在此类实例中,主机可在网络上进行通信,其中,主机之一经网关或接入点耦合到网络,而在主机与网关之间的单路径链路上的通信可根据诸如点对点协议(PPP)的协议进行。在各种实例中,数据分组在主机与网关之间传播所需的时间可以对分组从源主机传播到目的主机所需的总时间有大的影响。在用户终端与因特网服务提供商(ISP)之间的电话拨号调制解调器系统中以及在移动台与分组数据服务节点(PDSN)之间的码分多址(CDMA)分组数据系统中,可找到此类单链路的示例。
在此类实例中,在主机之间进行通信期间,从一个主机(主机A)到另一主机(主机B)的数据分组一般被多路复用,带有从主机A到主机B的ACK分组。在主机A具有比主机B更大的接收窗口的实例中,在主机B的更小的接收窗口处理数据时,从主机A到主机B的更大部分数据(即,数据分组和ACK分组)可在主机A的传输窗口中备份。然而,在主机A的传输窗口中备份更大部分数据不合需要地延迟ACK分组到达主机B。以及由于延迟ACK分组到达主机B,从主机B到主机A的数据传输一般被延迟,从而导致从主机B到主机A出现不希望的慢吞吐量。
发明概述鉴于上述背景,本发明的实施例提供一种改进的系统、方法和计算机程序产品,用于增加TCP主机对之间在由双向单路径部分组成的网络系统上的双向通信吞吐量。为克服双向通信期间主机不同的接收窗口的影响,本发明实施例的系统、方法和计算机程序产品能够配置两个主机之一或两者的拥塞窗口的大小。在此方面,如下所述,每个主机的拥塞窗口可指示从相应主机在任何给定时间在确认前发射的多路复用数据量。通过配置拥塞窗口的大小,主机可进行双向通信而不会出现由于延迟的ACK分组而产生的传输延迟。
根据本发明的一个方面,提供一种用于双向通信的系统。该系统包括如主机A或主机B(在下面描述)的第一主机。第一主机能够以第一传输速率发射多路复用数据,并通过第一拥塞窗口操作。第一主机还能够以第二传输速率从能够通过第二拥塞窗口操作的如主机A或主机B中另一个主机的第二主机接收多路复用数据。例如,第一主机能够发射包括来自第一主机的第一数据和到第二主机的、响应来自第二主机的第二数据的第二确认的多路复用数据。此外,例如,第一主机能够接收包括来自第二主机的第二数据和到第一主机的、响应来自第一主机的第一数据的第一确认的多路复用数据。
有利的是,第一主机能够基于第一传输速率、第二拥塞窗口的大小、第二传输速率和第一拥塞窗口的大小,配置第一拥塞窗口的大小和/或第二拥塞窗口的大小。例如,第一主机能够配置第一传输速率和/或第一拥塞窗口的大小,使得第一传输速率和第二拥塞窗口的大小的乘积等于第二传输速率和第一拥塞窗口的大小的乘积。
更具体地说,第二主机能够从第一主机将多路复用数据接收到第二接收窗口中。第一主机随后能够基于第一拥塞窗口的最大大小配置第一拥塞窗口的大小,其中,第一主机可基于第二接收窗口的大小配置第一拥塞窗口的最大大小。
像第二主机一样,第一主机能够将多路复用数据接收到第一接收窗口中。在此类实例中,第一主机能够基于第一接收窗口的大小配置第二拥塞窗口的大小。例如,第一主机能够通过先基于第一拥塞窗口的最大大小和第一与第二传输速率而确定第一接收窗口的大小,从而配置第二拥塞窗口的大小。更具体地说,第一主机可通过将第一拥塞窗口的最大大小乘以第二传输速率,并将乘积除以第一传输速率,从而确定第一接收窗口的大小。在确定第一接收窗口的大小后,第一主机随后可将多路复用数据发射到第二主机,指示第一接收窗口的大小,使得第二主机基于第一接收窗口的大小配置第二拥塞窗口的大小。
第一主机能够持续将多路复用数据发射到第二主机和从第二主机持续接收多路复用数据。为使主机可持续进行双向通信而没有由于延迟的ACK分组而产生的传输延迟,第一主机随后能够在第一主机发射和/或接收多路复用数据时持续配置第一拥塞窗口的大小和/或第二拥塞窗口的大小。
根据本发明的其它方面,提供一种用于双向通信的方法和计算机程序产品。因此,本发明的实施例提供用于双向通信的系统、方法和计算机程序产品。本发明实施例的系统、方法和计算机程序产品能够根据主机两个方向的传输速率而直接和/或间接配置拥塞窗口的大小。通过配置其各自拥塞窗口的大小,主机可进行双向通信,并减少由于从一个主机到另一主机延迟的ACK分组而产生的延迟。因此,本发明实施例的系统和方法解决由先有技术确定的问题,并提供附加优点。
附图简述在如此概括描述本发明后,现在将参照附图,附图不必按比例画出,并且图中
图1示出根据本发明的一个实施例用于两个主机之间进行双向通信的系统;图2是根据本发明一个实施例的主机的示意方框图;图3是根据本发明的实施例、可作为主机操作的移动台的示意方框图;图4示出根据本发明一个实施例的主机的多层协议栈,其中,该协议栈包括具有7层的OSI模型;图5示出根据本发明实施例的主机的OSI功能与一般OSI模型的比较;图6示出分组流和TCP滑动窗口;图7示出一个主机与另一主机进行单向通信的网络系统;图8示出根据本发明的实施例、一对主机进行双向通信的网络系统;以及图9是示出在一对主机之间双向通信的方法中各种步骤的流程图。
发明详细说明现在,将参照示出本发明优选实施例的附图,在下文更全面地描述本发明。然而,本发明可以以许多不同的形式体现,并且不应被视为限于本文所述的实施例;更确切地,这些实施例的提供使得此公开内容将是全面和完整的,并且将本发明的范围全面传达给本领域的技术人员。类似的标号指所有图形中类似的元件。
现在参照图1,示出根据本发明的实施例用于双向通信的一般系统10。系统一般包括两个端点或主机,即,主机A 12和主机B 14。包括主机A和主机B在内的主机可以是能够经IP通信网络与其它主机通信的任何装置或实体。主机可根据多种不同的有线和/或无线技术中的如传输控制协议(TCP)的任何技术相互进行通信。系统还包括通信网络,如因特网协议(IP)通信网络16,主机A和主机B通过该网络进行通信。
主机A 12和主机B 14均可直接耦合到网络16,但在一个实施例中,两个主机之一或两者均经网关(GTW)或接入点(AP)网络实体17(称为GTW/AP)耦合到网络,图1示出主机A经此类网络实体耦合到网络。对于经GTW/AP耦合到网络的每个主机,系统一般还包括在主机(例如,主机A)与GTW/AP之间的全双工单路径部分19。主机可以以多种不同方式中的任何方式与GTW/AP进行通信,但在一个实施例中,根据点对点协议(PPP)或诸如串行线路因特网协议(SLIP)的其它类似协议进行通信。然而,如下所述,系统的一个特征在于单路径部分对TCP往返时间(RTT)有大的影响。
现在参照图2,示出根据本发明的一个实施例、能够作为主机(例如,主机A 12和/或主机B 14)或GTW/AP 17操作的实体的方框图。如图所示,该实体一般可包括连接到存储器20和接口22的处理器18。根据本发明的实施例,存储器一般包括软件应用、指令或诸如此类以供处理器执行与主机操作相关联的步骤。例如,作为主机,存储器可包括用户或主机应用,如用于根据超文本传送协议(HTTP)进行通信的常规Web浏览器、文件传送(例如,FTP)应用、Telnet应用、对等接入应用或诸如此类。另外,存储器可包括用于实施传输窗口(在下面描述)的缓冲区20a和用于实施接收窗口(在下面描述)的存储区20b。
现在参照图3,它示出根据本发明的实施例、可充当诸如主机A 12和/或主机B 14的主机的移动台的功能图。应理解的是,所示和下文所述的移动台只是说明将从本发明受益的一种终端类型,因此不应被视为限制本发明的范围。虽然示出移动台的若干实施例并将在下文为示例目的而描述,但诸如便携式数字助理(PDA)、寻呼器、膝上型计算机及其它类型的话音和文本通信系统的其它类型的移动台可容易地采用本发明。
移动台包括发射器26、接收器28和分别提供信号到发射器并从接收器接收信号的控制器30。这些信号包括根据适用蜂窝系统的空中接口标准的信令信息,并且还包括用户语音和/或用户生成的数据。在此方面,移动台能够通过一个或更多空中接口标准、通信协议、调制类型和接入类型操作。更具体地说,移动台能够根据多个第一代(1G)、第二代(2G)、2.5G和/或第三代(3G)通信协议或诸如此类中的任何协议操作。例如,移动台能够根据2G无线通信协议IS-136(TDMA)、GSM和IS-95(CDMA)操作,和/或根据3G无线通信协议CDMA2000操作。一些窄带AMPS(NAMPS)及TACS移动终端也可从本发明讲授内容中获益,双模式或更高模式电话(例如,数字/模拟或TDMA/CDMA/模拟电话)也应从中获益。
可理解,控制器30包括用于实施移动台的音频和逻辑功能所需的电路。例如,控制器可由数字信号处理器装置、微处理器装置和各种模数变换器、数模变换器及其它支持电路组成。移动台的控制和信号处理功能在这些装置之间根据其各自的能力进行分配。控制器因此还包括在调制和传输前将消息和数据以卷积方式编码和交错的功能。控制器可另外包括内部话音编码器(VC)30A,并可包括内部数据调制解调器(DM)30B。此外,控制器可包括操作可存储在存储器中的一个或更多软件应用的功能。
移动台还包括用户接口,用户接口包括常规耳机或扬声器32、振铃器34、麦克风36、显示器38和用户输入接口,所有这些接口均耦合到控制器30。允许移动台接收数据的用户输入接口可包括允许移动台接收数据的多个装置中的任何装置,如小键盘40、触摸显示器(未示出)或其它输入装置。在包括小键盘的实施例中,小键盘包括常规数字(0-9)和相关键(#、*)和用于操作移动台的其它键。
移动台还可包括存储器,如用户身份模块(SIM)42、可移动用户身份模块(R-UIM)或诸如此类,它一般存储与移动用户相关的信息元素。除SIM外,移动台可包括其它存储器。在此方面,移动台可包括易失性存储器44,如包括用于临时数据存储的高速缓存区的易失性随机存取存储器(RAM)。移动台还可包括可嵌入和/或可移动的其它非易失性存储器46。另外或作为选择,非易失性存储器可包括EEPROM、闪存或诸如此类。存储器可存储由移动台用于实施移动台的功能的多段信息中的任何段的信息和数据。例如,存储器可存储用户或主机应用,如用于根据HTTP进行通信的常规Web浏览器、文件传送(例如,FTP)应用、Telnet应用、对等接入应用或诸如此类。另外,如下面描述的,存储器可存储用于实施传输窗口的缓冲区和用于实施接收窗口的存储区。
图4示出根据本发明实施例的主机(例如,主机A 12和/或主机B 14)的协议栈,其中,协议栈可以以软件、硬件、固件或其组合方式实施。更具体地说,图4示出包括7层的开放式系统互连(OSI)模型48,包括应用层50、表示层52、会话层54、传输层56、网络层58、数据链路层60及物理层62。OSI模型由国际标准化组织(ISO)开发,并在题为“OSI参考模型”(OSI Reference Model)的ISO 7498中描述,其内容通过引用全部结合于本文中。
OSI模型48中的每层执行特定的数据通信任务、一种到其前面的层并用于该层的服务(例如,网络层58为传输层56提供服务)。进程可类似于在将通过邮政系统寄出信前将信放入多个信封中。每个随后的信封添加处理交易所需的另一层处理或开销信息。所有信封一起帮助确保信到达正确的地址,并且接收的消息与发送的消息一致。一旦整个数据包在其目的地接收后,信封便逐个被打开,直至信本身出现,与撰写时完全相同。
然而,在两个主机(例如,主机A 12和主机B 14)之间的数据通信中,每个最终用户未留意到以透明方式执行其功能的这些信封。例如,通过根据多层OSI模型操作的主机,可跟踪银行自动出纳交易,其中,根据多层OSI模型操作的主机可称为开放式系统或多层系统。在此类实例中,一个多层系统(例如,开放式系统A)可提供应用层,该层是到尝试交易的用户的接口,而另一多层系统(开放式系统B)可提供应用层,该层与银行的主机中的应用软件配合。开放式系统A和B中的对应层可称为对等层,并通过对等协议进行通信。此类对等协议为用户的应用提供通信支持,执行交易相关的任务,例如,帐户借记、分发(dispense)货币或帐户贷记。
然而,两个开放式系统(例如,开放式系统A和开放式系统B)之间的真正数据流在一个开放式系统(例如,开放式系统A,源)中是从顶部64到底部66,通过通信线路,并随后在开放式系统(例如,开放式系统B,目的地)中从底部66到顶部64。每次用户应用数据在同一系统中从一个层向下传递到下一层时添加更多的处理信息。当在另一系统中由对等层去除和处理该信息时,导致执行各种任务(纠错、流控制等)。
ISO明确定义了所有7层,下面以数据离开源时实际流经的顺序概述这些层。
第7层应用层50提供用户应用(例如,从银行自动柜员机取钱等)以与OSI应用层配合。并且如上所示,OSI应用层可在与该应用层进行通信的另一开放式系统中具有对应的对等层(例如,银行的主机)。
第6层表示层52确保用户信息(例如,从活期存款帐户中借记50美元现金的请求)是目的开放式系统可理解或解释的格式(即,1和0的排列或序列)。
第5层会话层54在开放式系统之间提供数据的同步控制(即,确保通过源第5层的比特配置与通过目的第5层的那些比特配置相同)。
第4层传输层56确保端对端连接已在这两个开放式系统之间建立,并通常是可靠的(即,目的第4层确认连接的请求,可以说是它已从源第4层收到的请求)。
第3层网络层58提供通过网络的数据的路由选择和中继(除其它内容外,在第3层的输出端,信封上添加有随后由目的第3层读取的地址)。
第2层数据链路层60包括当消息在一个开放式系统中通过此层向下传递并在另一开放式系统中通过对等层向上传递时的数据的流控制。
第1层物理接口层62包括数据通信设备机械和电连接的方式以及数据从源第1层到目的第1层通过那些物理连接移动的工具。
图5示出根据本发明实施例的主机A和/或主机B的OSI功能与一般OSI模型的比较68。更具体地说,图5示出因特网协议(IP)网络层74在OSI 7层模型70中适合的位置。如图所示,传输层72提供数据连接服务到应用,并可包含保证数据无误、无遗漏且按序送达的机制。TCP/IP模型73中的传输层通过将段传递到IP层来发送段,由IP层将它们路由选择到目的地。传输层接受来自IP层的输入段,确定作为接收方的应用,然后将数据按其发送顺序传递到该应用。
因此,IP层74执行网络层功能并在系统之间路由选择数据。数据可遍历单链路,或者可通过因特网中的若干链路中继。数据在称为数据报的单元中承载,数据报包括含第3层78寻址信息的IP报头。路由器检查IP报头中的目的地址以将数据报引导到其目的地。IP层称为无连接,这是因为每个数据报是独立路由选择的,并且IP层不保证数据报的可靠和按序送达。IP层路由选择其业务而不关心特殊的数据报属于哪个应用到应用交互。
传输控制协议(TCP)层72在使用TCP/IP协议的装置之间提供可靠的数据连接。TCP层在IP层74的顶部操作,IP层用于将数据打包成称为数据报的数据分组,并用于在数据链路层和经物理层80的基本网络上传送数据报。数据链路层可根据多个不同协议中的任何协议操作,如无线电链路协议(RLP)。像多个其它数据链路层协议一样,RLP层78提供用于在接收器未正确接收数据的情况下数据的重新传输。如将理解的,IP协议不包含任何流控制或重新传输机制。那是TCP层72和RLP层78一般在IP层74的顶部使用的原因。在此方面,TCP协议提供确认以检测丢失的数据分组。
图6示出分组流82和TCP滑动传输窗口84,它们本身可包含在存储器中,如相应主机(例如,主机A 12和/或主机B 14)的缓冲区20a(参见图2)。TCP源的一个主要特性在于它使用确定字节的滑动传输窗口,并因此确定在从接收器收到确认前可以发送的IP分组。这使得调整源的有效传输速率成为可能。
当TCP源增加滑动传输窗口84的大小时,其平均传输速率也增加。如图所示,滑动窗口在八位字节12-19的顶部。一直到11的八位字节已被发射,并且滑动窗口已移过它们。在滑动窗口内,有两个八位字节组86和88。第一八位字节组86包括从12到16的八位字节,它们已被发射90。滑动窗口中的第二八位字节组88包括尚未被发射的八位字节17-19。第二八位字节组可立即被发送92。最后,八位字节20及以上的字节94无法被发射96。八位字节12必须被确认,并且在八位字节20可被发射前,滑动窗口向前滑动。因此,TCP使用此TCP滑动窗口提供丢失的数据分组的重新传输和流控制。滑动窗口实际上是由接收器发送的窗口广告的拥塞窗口的最小值,两者均在下面描述。
图7示出TCP网络系统98,在该系统中,作为源操作的主机(例如,主机A 12)与作为接收器操作的另一主机(例如,主机B 14)进行单向通信。如图所示,主机A提供数据106到主机B,而主机B又提供确认102到主机A。如本领域的技术人员众所周知的,主机B发送包括接收窗口广告数据108的确认(ACK)分组,通知主机A主机B处理输入数据的接收窗口109的容量。因此,主机B可为流控制而通告合适的接收窗口大小。实际上,接收窗口广告指定主机B准备接受多少个附加的八位字节的数据。主机A随后可根据此广告调整其滑动窗口,但当由主机A维持的拥塞窗口110更小时除外。
第二窗口拥塞窗口110在TCP源(例如,主机A 12)内部用于降低滑动窗口的大小。通常,在计时器终止、表示数据分组已被发送但在一定的时限内无确认到达时,TCP源降低滑动窗口的大小。此类实例可表示数据分组已被丢失,这极可能是由网络拥塞引起的。然而,如下所述,当在接收器已延迟确认时,在双向通信中可发生此类实例。为防止拥塞的影响加剧,主机A通过减少滑动窗口的大小而降低其传输速率。这些窗口的关系可表示为
TWIN=MIN(对等接收窗口广告、拥塞窗口),其中,TWIN指传输窗口,即滑动窗口。原则上,拥塞窗口110和在由基本网络提供的接收窗口广告102中包括的反馈信息随后可用于同一目的,即,根据网络的负载和拥塞调整主机A的传输速率。
与图7的TCP网络系统98相反,图8示出TCP网络系统112,在该系统中,作为源和接收器两者操作的主机(例如,主机A 12)与还作为源和接收器两者操作的另一主机(例如,主机B 14)进行双向通信。如图所示,主机A提供数据(DataA)到主机B,而主机B又提供所有ACK(ACKA)到主机A。类似地,主机B提供数据(DataB)到主机A,而主机A又提供ACK(ACKB)到主机B。然而,根据诸如RLP的协议,在主机A与主机B之间的每个方向上只建立一个传输路径。因此,主机B将DataB与ACKA多路复用,并在此后将多路复用数据114提供到主机A。同样地,主机A将DataA与ACKB多路复用,并在此后将多路复用数据116提供到主机B。
如将理解的,ACKA和ACKB一般均包括相应主机(例如,主机A 12和主机B 14)的接收窗口广告数据。主机A和主机B均提供窗口广告数据,通知另一主机相应主机处理输入数据的接收窗口的容量,其中,主机A维持接收窗口117,并且主机B维持接收窗口119。主机A和主机B可根据此广告调整其相应的滑动传输窗口,但当由主机维持的拥塞窗口110更小时除外。在此方面,主机A和主机B分别维持由主机A和主机B用于降低滑动传输窗口的大小的拥塞窗口118和120。如上所述,滑动传输窗口可表示为窗口广告和拥塞窗口的最小值。
如上所述,系统10一般包括在主机A 12与GTW/AP 17之间的全双工单路径通信部分19。并且如本领域的技术人员将理解的,数据和ACK分组一般在全双工单路径部分中缓冲。如背景部分中所示,此全双工单路径部分在各种实例中可在操作时成为主机A与主机B之间数据传送路径中的瓶颈。在此类实例中,主机A与主机B之间的传输的往返时间(RTT)的大部分可归因于此全双工单路径部分,其中,RTT可定义为发送数据分组与接收相应ACK之间的时间。由于此全双工单路径部分不具有分开发射数据和ACK分组的多条路线,因此,数据和ACK分组一般缓冲在每个方向上同一先入先出(FIFO)队列中。
从主机A 12发射数据或ACK分组到主机B 14或反之亦然所需的时间(TAB)可表示为随在主机A与GTW/AP 17之间通过全双工单路径部分19发射分组所需的时间(TpathAB)和在GTW/AP与主机B之间发射分组所需的时间(TnetAB)而变化。更具体地说,以符号方式书写时,从主机A将数据或ACK分组发射到主机B所需的时间可以以符号方式表示如下TAB=TpathAB+TnetAB。在各种实例中,TpathAB比TnetAB大得多,即TpathAB>>TnetAB。例如,在无线通信中,当拥塞窗口足够大时,TpathAB可达到若干秒,而TnetAB大约为若干毫秒。那么如可以看到的,在TpathAB可达到比TnetAB长若干百倍的时间时,TnetAB对从主机A将数据或ACK分组发射到主机B所需的时间(TAB)影响很小。因此,在确定TAB时可安全地忽略在GTW/AP与主机B之间发射分组所需的时间,因而TAB≈TPathAB。
如上所示,在从主机A 12到主机B 14的路径中,从主机A到主机B的数据分组(DataA)及从主机A到主机B的用于从主机B到主机A的数据的确认(ACKB)一般缓冲在同一FIFO队列中。类似地,在从主机B到主机A的路径中,从主机B到主机A的数据分组(DataB)及从主机B到主机A的用于从主机A到主机B的数据的确认(ACKA)一般缓冲在同一FIFO队列中。在此方面,一般以对应方向的数据传输速率传送出每个缓冲区中的数据和/或ACK分组。数据或ACK分组保留在缓冲区中的时间可约等于队列长度或队列中在数据或ACK分组前面的数据量除以数据传输速率。对于队列中相同的数据量,那么,数据或ACK分组将在队列中度过几乎相同量的时间。由于DataA和ACKB通过同一队列,因此,在队列具有相同的数据量时,DataA和ACKB一般将具有相同的往返时间(即,在主机A与主机B之间的传送时间)。那么,可以看到,DataA从主机A传到主机B的时间(TDataA)等于ACKB从主机A传到主机B的时间(TACKB),即,TDataA=TACKB。类似地,DataB从主机B传到主机A的时间(TDataB)等于ACKA从主机B传到主机A的时间(TACKA),即,TDataB=TACKA。
如上所示,RTT可定义为发送数据分组与接收对应ACK之间的时间。换句话说,RTT可定义为从一个主机(例如,主机A 12)发射数据分组到另一主机(例如,主机B 14)所需的时间(TData)和从另一主机(例如,主机B)将确认发射回发射了该数据分组的主机(例如,主机A)所需的时间(TACK)之和。那么,以符号方式书写时,从主机A到主机B的RTTA和从主机B到主机A的RTTB可表示如下RTTA=TDataA+TACKA,RTTB=TDataB+TACKB并且如上所示,TDataA=TACKB和TDataB=TACKA。因此,可以看到RTTA=RTTB。
如本领域的技术人员将理解的,根据诸如TCP的协议,如果配置主机的拥塞窗口使得从该主机到另一主机的数据传送进行时无延迟,则拥塞窗口(CWIN)的大小可表示如下CWIN=RTT×速率,其中,“速率”表示从相应主机到另一主机的数据传输速率。因此,如果配置主机A 12和主机B 14的拥塞窗口使得每个主机传送数据(数据分组和ACK分组)到另一主机而无延迟,则主机A的拥塞窗口(CWINA)和主机B的拥塞窗口(CWINB)可表示为CWINA=RTTA×RateA,CWINB=RTTB×RateB重新排列以上方程式并从上面设置RTTA=RTTB,则可产生以下表达式CWINA×RateB=CWINB×RateA(1)
因此,如果主机A 12的拥塞窗口和主机B的传输速率的乘积等于主机B 14的拥塞窗口和主机A的传输速率的乘积,则主机A和主机B可彼此进行双向通信,而没有由于ACKA或ACKB的延迟接收、由拥塞窗口的减小而造成的延迟。
为说明关于在主机A 12与主机B 14之间的数据和ACK分组的传输的方程式(1)的影响,考虑一个实例,其中,限制一个主机的CWIN使得CWINA×RateB≠CWINB×RateA。在此类实例中,计算得出的RTTA和RTTB可能不同,因此,系统RTT可定义为这两个RTT中更大的一个。以符号方式书写时,系统RTT(RTTS)可表示如下RTTS=MAX(CWINA/RateA,CWINB/RateB)当配置每个主机的CWIN和数据传输速率使得方程式(1)被满足时,系统能够以在每个数据传送方向上相等的、系统能达到的速率(RateS)发射数据。然而,当方程式(1)未被满足时,因为RTTA和RTTB均等于RTTS即更大的CWIN/速率的商,只有使CWIN/速率最大的主机可达到RateS。
在不失一般性的情况下,假设CWINB小于满足方程式(1)所需的拥塞窗口。在此类实例中,RTTS>RTTB=CWINB/RateB。由此,在主机B发射DataB后ACKB从主机A 12传到主机B 14所需的时间将超过RTTB。并且由于CWINB在主机B收到ACKB前达到其极限,CWINB的大小阻止主机B将随后的数据分组发送到主机A,直至主机B收到ACKB后。即使系统10具有以速率RateB发送数据的物理容量,但在主机B收到ACKB前主机B无法发送随后的数据分组。那么,在等待周期期间,主机B实际上处于闲置状态,从而将RateB降低到低于RateS的数据传输速率,即,从主机B到主机A系统能够达到的数据传输速率。
从上述方程式(1)中,可以看到,主机A 12和/或主机B 14可确定其相应的拥塞窗口和/或传输速率,使得主机A和主机B可进行双向通信,而没有由于ACKA或ACKB的延迟接收、由拥塞窗口的减小而造成的延迟。例如,根据TCP,CWIN是可基于ACK响应调整的内部参数。根据本发明的实施例,为克服主机A和主机B的不同接收窗口的影响,两个主机中任一或两者能够基于主机的传输速率和另一主机的拥塞窗口的大小配置两个主机中任一或两者的拥塞窗口118、120的大小。另外或作为选择,两个主机中任一或两者能够基于主机的拥塞窗口的大小和另一主机的传输速率配置两个主机中任一或两者的传输速率。
例如,在本发明的一个实施例中,主机之一(例如,主机12)能够直接配置其相应的CWIN(例如,CWINA118)和/或间接配置另一主机(例如,主机B 14)的CWIN(例如,CWINB120)。为说明且在不失一般性的情况下,下面将主机A描述为配置CWINA和CWINB之一或两者。然而,应理解,主机B可同样能够配置CWINA和CWINB之一或两者。
更具体地说,根据本发明的一个实施例,主机A可获得或另外确定数据传输速率RateA和RateB,如根据多个已知技术中的任何技术。主机A 12随后可基于主机B 14的接收窗口(RWINB)的大小确定其拥塞窗口的大小极限(CWINAlim)。如将理解的,CWINAlim一般小于RWINB,否则,CWINA将不能达到CWINAlim。因此,主机A的拥塞窗口的大小可配置如下CWINA=MIN(CWINAlim,RWINB)在主机A确定CWINAlim后,主机A可将包括窗口广告数据的ACKB发射到主机B,从而将主机A的接收窗口(RWINA)的大小通知主机B。在此方面,RWINA可根据以下方程式(2)确定RWINA=CWINAlim×RateBRateA---(2)]]>通过将指示RWINA的窗口广告数据发射到主机B,主机A能够间接配置CWINB,如与基于RWINB配置CWINA相同的方式。
根据TCP,正如CWINA可以受RWINB限制一样,CWINB可以受RWINA限制。当主机A 12和B 14以稳定状态发射和接收数据和ACK分组时,则CWINA可达到约等于CWINAlim的最大大小。类似地,CWINB可达到约等于RWINA的最大大小。以符号表示,那么CWINA和CWINB可在方程式(3)和(4)中表示如下CWINA≈CWINAlim(3)CWINB≈RWINA(4)通过重新排列方程式(2)并将方程式(3)和(4)代入重新排列的方程式(2)中,结果可表示如下CWINA×RateB≈CWINB×RateA如可以看到的,上一方程式是方程式(1)的近似等同物。并且由此,通过确定CWINAlim,并通过确定和通告RWINA,主机A可配置双向通信使得通信不会产生由于ACKA或ACKB的延迟接收、由拥塞窗口减小而造成的延迟。
现在将参照图9,它示出根据本发明的一个实施例在两个主机之间进行双向通信的方法。如上所述,为说明且在无限制的情况下,下面将主机A描述为配置CWINA和CWINB之一或两者。如图所示,在主机A 12与主机B 14之间进行双向通信的方法一般包括主机A获得或者另外确定数据传输速率RateA和RateB,如方框122中所示。主机A可根据多种不同技术中的任何技术确定传输速率。例如,在拨号数字用户线(DSL)通信的情况中,数据速率可从在主机A的通信(例如,调制解调器)设置中获得。此外,例如,在CDMA2000通信的情况中,相应的速率可从系统能力中获得。
在主机A 12确定RateA和RateB之前、之后或之时,主机A和主机B可通过给定的接收窗口117、119、拥塞窗口118、120和传输速率,开始发射和接收数据和ACK分组。然后,如方框124中所示,主机A以给定的RateA发射DataA和ACKB分组,并且类似地,主机B以给定的RateB发射DataB和ACKA分组,并接收DataA和ACKB分组。最初,主机A和B一般通过用于相应接收窗口(RWIN)和拥塞窗口(CWIN)的诸如默认TCP设置的默认设置发射和接收数据和ACK分组。随后,基于默认设置,在至少一个数据分组已被发射,并且至少一个ACK分组已被返回后,主机A可设置CWINAlim,使得CWINAlim≤RWINB,如方框126中所示。例如,主机A可设置CWINAlim,使得CWINAlim=RWINB。
还如方框126中所示,主机A还可确定并设置RWINA,并因此确定和设置指示RWINA的接收窗口广告数据,如根据方程式(2)。因此,主机A可根据CWINAlim限制CWINA,并且可在ACKB分组中发送接收窗口广告数据到主机B,其中,接收窗口广告数据指示RWINA。随后,响应接收窗口广告数据,主机B 14可设置CWINB。通过基于CWINAlim确定CWINA,并确定RWINA以由此指定CWINB,主机A和主机B可以以满足方程式(1)的方式进行通信,如方框128中所示。
在主机A和主机B进行通信时,A可重复确定RateA、RateB和RWINB之一或更多是否更改,如方框130所示。如果RateA、RateB和RWINB之一或更多在主机A与主机B之间的通信期间确实更改,则主机A可再次设置CWINAlim和/或RWINA,如以与以前相同的方式(参见方框126)。因此,主机A和主机B可以以一种方式持续通信,使得通信不会产生由于ACKA或ACKB的延迟接收、由拥塞窗口的减小而造成的延迟。主机A与主机B之间的通信以及有关RateA、RateB和RWINB之一或更多是否更改的确定可以继续,如直至主机A和主机B完成数据和ACK分组的传输和接收,如方框132中所示。因此,主机A和主机B可进行双向通信,而无由于ACKA或ACKB的延迟接收、由拥塞窗口的减小而造成的延迟。
根据本发明的一个方面,所有或部分本发明的系统,如所有或部分主机A 12和/或主机B 14,一般在计算机程序产品的控制下操作。用于执行本发明实施例方法的计算机程序产品包括诸如非易失性存储媒体的计算机可读存储媒体和包含在计算机可读存储媒体中、诸如一系列计算机指令的计算机可读程序代码部分。
在此方面,图9是根据本发明的方法、系统和程序产品的流程图。将理解,流程图的每个方框或步骤及流程图中方框的组合可由计算机程序指令实施。这些计算机程序指令可加载到计算机或其它可编程设备上以产生机器,使得在计算机或其它可编程设备上执行的指令形成用于实施流程图方框或步骤中指定功能的工具。这些计算机程序指令还可存储在计算机可读存储器中,可引导计算机或其它可编程设备以特殊的方式运行,使得计算机可读存储器中存储的指令产生包括实施流程图方框或步骤中指定功能的指令工具的制品。计算机程序指令还可加载到计算机或其它可编程设备上,以促使一系列操作步骤在计算机或其它可编程设备上执行,从而产生计算机实施的进程,使得在计算机或其它可编程设备上执行的指令提供用于实施流程图方框或步骤中指定的功能。
相应地,流程图的方框或步骤支持用于执行指定功能的工具组合、用于执行指定功能的步骤组合及用于执行指定功能的程序指令工具。还将理解,流程图的每个方框或步骤及流程图中方框或步骤的组合可由执行指定功能或步骤的基于专用硬件的计算机系统实施,或由专用硬件和计算机指令的组合实施。
得益于上述说明和相关联图形中所示的讲授内容,本发明相关领域的技术人员将明白本发明的许多修改和其它实施例。因此,要理解本发明并不限于公开的特定实施例,并且修改和其它实施例要包括在随附权利要求书的范围内。虽然在本文中采用特定的术语,但只是一般性和描述性地使用它们,并不是要进行限制。
权利要求
1.一种用于双向通信的系统,包括能够以第一传输速率发射多路复用数据并通过第一拥塞窗口操作的第一主机,其中,所述第一主机还能够以第二传输速率从能够通过第二拥塞窗口操作的第二主机接收多路复用数据,并且其中,所述第一主机能够基于所述第一传输速率、所述第二拥塞窗口的大小、所述第二传输速率和所述第一拥塞窗口的大小,配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一。
2.如权利要求1所述的系统,其特征在于所述第一主机能够配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一,使得所述第一传输速率和所述第二拥塞窗口的大小的乘积约等于所述第二传输速率和所述第一拥塞窗口的大小的乘积。
3.如权利要求1所述的系统,其特征在于所述第二主机能够从所述第一主机将多路复用数据接收到第二接收窗口中,其特征在于所述第一主机能够基于所述第一拥塞窗口的最大大小配置所述第一拥塞窗口的大小,以及其特征在于所述第一主机能够基于所述第二接收窗口的大小配置所述第一拥塞窗口的最大大小。
4.如权利要求1所述的系统,其特征在于所述第一主机能够将多路复用数据接收到第一接收窗口中,并且其特征在于所述第一主机能够基于所述第一接收窗口的大小配置所述第二拥塞窗口的大小。
5.如权利要求4所述的系统,其特征在于所述第一主机能够通过以下操作配置所述第二拥塞窗口的大小基于所述第一拥塞窗口的最大大小和所述第一与第二传输速率,确定所述第一接收窗口的大小;以及将多路复用数据发射到所述第二主机,指示所述第一接收窗口的大小,使得所述第二主机基于所述第一接收窗口的大小配置所述第二拥塞窗口的大小。
6.如权利要求5所述的系统,其特征在于所述第一主机能够通过将所述第一拥塞窗口的最大大小乘以所述第二传输速率,并将乘积除以所述第一传输速率,确定所述第一接收窗口的大小。
7.如权利要求1所述的系统,其特征在于所述第一主机能够持续发射多路复用数据和从所述第二主机接收多路复用数据,以及其特征在于所述第一主机能够持续配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一。
8.一种在第一主机与第二主机之间双向通信的方法,所述方法包括以第一传输速率从通过第一拥塞窗口操作的第一主机发射多路复用数据;以第二传输速率从通过第二拥塞窗口操作的第二主机接收多路复用数据;以及基于所述第一传输速率、所述第二拥塞窗口的大小、所述第二传输速率和所述第一拥塞窗口的大小,配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一。
9.如权利要求8所述的方法,其特征在于配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一包括配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一,使得所述第一传输速率和所述第二拥塞窗口的大小的乘积约等于所述第二传输速率和所述第一拥塞窗口的大小的乘积。
10.如权利要求8所述的方法,其特征在于所述第二主机能够从所述第一主机将多路复用数据接收到第二接收窗口中,其特征在于配置所述第一拥塞窗口的大小包括基于所述第一拥塞窗口的最大大小配置所述第一拥塞窗口的大小,以及其特征在于配置所述第一拥塞窗口的最大大小包括基于所述第二接收窗口的大小配置所述第一拥塞窗口的最大大小。
11.如权利要求8所述的方法,其特征在于接收多路复用数据包括将多路复用数据接收到第一接收窗口中,以及其特征在于配置所述第二拥塞窗口的大小包括基于所述第一接收窗口的大小配置所述第二拥塞窗口的大小。
12.如权利要求11所述的方法,其特征在于配置所述第二拥塞窗口的大小包括基于所述第一拥塞窗口的最大大小和所述第一与第二传输速率,确定所述第一接收窗口的大小;以及将多路复用数据发射到所述第二主机,指示所述第一接收窗口的大小,使得所述第二主机基于所述第一接收窗口的大小配置所述第二拥塞窗口的大小。
13.如权利要求12所述的方法,其特征在于确定所述第一接收窗口的大小包括通过将所述第一拥塞窗口的最大大小乘以所述第二传输速率,并将乘积除以所述第一传输速率,确定所述第一接收窗口的大小。
14.如权利要求8所述的方法,其特征在于发射多路复用数据和接收多路复用数据包括分别持续发射多路复用数据和接收多路复用数据,以及其特征在于配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一包括持续配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一。
15.一种用于第一主机与第二主机之间双向通信的计算机程序产品,所述计算机程序产品包括其中存储有计算机可读程序代码部分的计算机可读存储媒体,所述计算机可读程序代码部分包括用于以第一传输速率从通过第一拥塞窗口操作的第一主机发射多路复用数据的第一可执行部分;用于以第二传输速率从通过第二拥塞窗口操作的第二主机接收多路复用数据的第二可执行部分;用于基于所述第一传输速率、所述第二拥塞窗口的大小、所述第二传输速率和所述第一拥塞窗口的大小,配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一的第三可执行部分。
16.如权利要求15所述的计算机程序产品,其特征在于所述第三可执行部分适用于配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一,使得所述第一传输速率和所述第二拥塞窗口的大小的乘积约等于所述第二传输速率和所述第一拥塞窗口的大小的乘积。
17.如权利要求15所述的计算机程序产品,其特征在于所述第二主机能够从所述第一主机将多路复用数据接收到第二接收窗口中,其特征在于所述第三可执行部分适用于基于所述第一拥塞窗口的最大大小配置所述第一拥塞窗口的大小,以及其特征在于所述第三可执行部分适用于基于所述第二接收窗口的大小配置所述第一拥塞窗口的最大大小。
18.如权利要求15所述的计算机程序产品,其特征在于所述第一可执行部分适用于将多路复用数据接收到第一接收窗口中,以及其特征在于所述第三可执行部分适用于基于所述第一接收窗口的大小配置所述第二拥塞窗口的大小。
19.如权利要求18所述的计算机程序产品,其特征在于所述第三可执行部分适用于通过以下操作配置所述第二拥塞窗口的大小基于所述第一拥塞窗口的最大大小和所述第一与第二传输速率,确定所述第一接收窗口的大小;以及将多路复用数据发射到所述第二主机,指示所述第一接收窗口的大小,使得所述第二主机基于所述第一接收窗口的大小配置所述第二拥塞窗口的大小。
20.如权利要求19所述的计算机程序产品,其特征在于所述第三可执行部分适用于通过将所述第一拥塞窗口的最大大小乘以所述第二传输速率,并将乘积除以所述第一传输速率,确定所述第一接收窗口的大小。
21.如权利要求15所述的计算机程序产品,其特征在于所述第一和第二可执行部分适用于分别持续发射多路复用数据和接收多路复用数据,以及其特征在于所述第三可执行部分适用于持续配置所述第一拥塞窗口的大小和所述第二拥塞窗口的大小中至少之一。
全文摘要
提供一种用于双向通信的系统、方法和计算机程序产品。系统包括能够以第一传输速率发射多路复用数据并通过第一拥塞窗口操作的第一主机。第一主机还能够以第二传输速率从能够通过第二拥塞窗口操作的第二主机接收多路复用数据。第一主机能够基于第一传输速率、第二拥塞窗口的大小、第二传输速率和第一拥塞窗口的大小,配置第一拥塞窗口的大小和第二拥塞窗口的大小中至少之一。
文档编号H04L12/56GK1886966SQ200480035229
公开日2006年12月27日 申请日期2004年9月28日 优先权日2003年9月30日
发明者J·于, X·R·胡 申请人:诺基亚有限公司