CN1918867A - 用于传输控制协议初始化会话建立的透明优化 - Google Patents
用于传输控制协议初始化会话建立的透明优化 Download PDFInfo
- Publication number
- CN1918867A CN1918867A CN200480032803.XA CN200480032803A CN1918867A CN 1918867 A CN1918867 A CN 1918867A CN 200480032803 A CN200480032803 A CN 200480032803A CN 1918867 A CN1918867 A CN 1918867A
- Authority
- CN
- China
- Prior art keywords
- target
- packet
- source
- grouping
- control module
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种优化传输控制协议(TCP)初始会话建立的方法和系统,其不侵入TCP的核心算法。通过对源的局域网(LAN)内的源的初始TCP请求进行本地处理,加快了TCP的初始会话建立。利用相对靠近源的局域网(LAN)的控制模块和另一个相对靠近目标的LAN的另一个控制模块来完成源和目标的各自LAN中的初始TCP会话建立,由此基本上消除了在实际数据流开始之前的第一个往返时间延迟。因此,第一个应用层数据可以和初始TCP请求基本上同时被传输。
Description
相关申请的交叉参考:
[0001]本申请要求在2003年11月5日申请的美国临时申请号为60/517,934的优先权,其全文在此并入作为参考。
[0002]本申请涉及美国专利申请号_/_,_,在2004年11月4日申请的标题为“Transparent Optimization for Transmission Control Protocol InitialSession Establishment”,其内容在此并入作为参考。
技术领域
[0003]本发明涉及联网和通过网络通信数据的领域,尤其是涉及用于传输控制协议(TCP)初始会话建立的透明优化。
背景技术
[0004]传输控制协议(TCP)是通信网络中应用最广泛并且最可靠的数据传输协议之一。TCP的主要差别以及其被广泛应用的原因是TCP提供可靠的通信。“可靠的”数据传输协议是提供准确的、无丢失的以及按照从源到目标传递数据的协议。在通过通信网络发送数据的过程中,如果有分组丢失或分组重新排序,则TCP通过重新发送丢失的数据或通过缓存次序混乱的数据、直到丢失的数据到达,而在内部纠正这样的错误。然后,TCP以相同的初始顺序传递该数据。因此,通过使用TCP作为数据传输协议,在不保证数据分组传递的尽力而为(besteffort)的分组交换网络中,应用可以有效地进行操作。
[0005]TCP使用多种因特网算法来提供可靠传输的能力。这些算法包括初始会话建立,缓慢启动,分组重新排序,分组丢失检测,和基于网络环境而动态降低或增大数据传输速率的许多其他机制。
[0006]网络延迟是一个普遍的问题,它影响了网络和应用的性能。网络延迟可归因于几个因素,包括物理距离,重复接收(hops)的数量、交换机和路由器中继以及网络拥塞。由于这些因素不是恒定不变的,因此网络在一段时期内可能具有不可预知的延迟。网络延迟的变化取决于链接使用的网络链路和传输介质所跨越的距离。例如,地铁区域内两个建筑物之间的局部高速专用线路可能经历5毫秒(ms)的单向延迟,而美国和欧洲之间的球形长途异步传输模式(ATM)链路可能具有从50ms到250ms之间任何数值的单向延迟。类似地,由于向轨道卫星发射信号以及返回的时间,卫星链路一般经历了大约240到300ms的单向延迟。
[0007]关于网络应用的延迟冲击可以被直接回溯到TCP在网络延迟条件下的低效率。大多数网络应用能够被区分为基于“频繁访问(chatty)”的短业务(transaction)应用或成批数据传输应用。基于网络流量的短业务的公用资源包括交互式应用(例如图形或基于网络的用户界面)、多种数据库、娱乐资源计划(ERP)应用、用户关系管理(CRM)应用,等等。当用户访问和浏览这些应用时,这些应用通常可以产生许多短的TCP会话,以发送和接收该应用接着收集和提供给用户的少量信息。尽管大部分这些的短TCP会话包括发送和接收几百字节或千字节的数据,实际数据传输由于TCP的初始会话的建立而被延迟。
[0008]为了提供可靠的通信,在发送任何应用层数据之前,TCP首先在源和目标之间建立正式会话。TCP提供该初始会话建立,以使目标实际上接收和确认该发送的数据。因此,即使在有数据丢失的情况下,目标也可以和源进行通信。TCP的初始会话建立基于源首先发送请求,以初始化会话,并且在发送第一个应用层数据分组之前接着等待来自目标的响应。该初始化请求和确认过程使用一个往返时间(RTT)。因此,即使源想要通过高延迟的网络链路发送少量的应用层数据分组,整个通信时间的一部分也会浪费在初始会话建立上。因此,由于初始会话建立的延迟而导致的累积延时可能降低终端用户应用性能,特别是对于建立许多短的、连续的TCP会话的那些聊天应用。
[0009]需要一种用于优化TCP的初始会话建立的系统和方法,以提高短的、连续的TCP会话的性能,而不用侵入TCP的核心算法。
发明内容
[0010]本发明是一种不侵入TC的P核心算法而优化TCP的初始会话建立的系统和方法。本发明通过本地处理在源的局域网(LAN)内的源的初始TCP请求来加速TCP的初始会话建立。本发明使用相对靠近该源的LAN的一个控制模块以及相对靠近该目标的LAN的另一个控制模块来完成在该源和该目标各自的LAN内的初始TCP会话建立,从而在实际数据流开始之前基本上消除了第一RTT延时。因而,本发明允许以与初始TCP请求基本上相同的时间发送第一应用层数据分组。在一个实施例中,在加速初始会话建立前,本发明在该源和该目标之间可选地观察一个或多个TCP会话。本发明观察一个或多个TCP会话,以在优化过程中提供用于错误恢复的机制。
[0011]在说明书中描述的特征和优点并不包括所有的内容,特别是,许多其他的特征和优点在本领域的一名普通技术人员查看附图、说明书和权利要求书时将是显而易见的。此外,还应该注意到,在说明书中使用的语言主要被选择用于易读和指导的目的,并且可能没有被选择用于叙述或限制本发明的主题。
附图说明
[0012]图1是本发明能在其中运行的一个网络环境示例的图示。
[0013]图2示出了TCP的初始会话建立的常规操作的流程图。
[0014]图3示出了由本发明的一个实施例实施、用来优化TCP的初始会话建立的方法的流程图。
[0015]图4A和4B示出了由本发明的一个实施例实施、并且由相对靠近源的控制模块执行的、用来优化TCP的初始会话建立的方法的流程图。
[0016]图5示出了由本发明的一个实施例实施、并且由相对靠近目地的控制模块执行的、用来优化TCP的初始会话建立的方法的流程图。
具体实施方式
[0017]现在将参考附图对本发明的优选实施例进行描述,其中,类似的附图标记指示相同或功能类似的部件。此外,附图中每个附图标记最左边的数字对应于首先使用该附图标记的附图。
[0018]说明书中参考的“一个实施例”或“实施例”意味着特殊的特征、结构或特性被包括在本发明的至少一个实施例中。说明书中不同处所出现的短语“在一个实施例中”不一定全都指的是相同的实施例。
[0019]随后的详细说明的某些部分按照计算机存储器中按数据位操作的算法和符号表示给出。这些算法说明和表示被那些数据处理领域内的技术人员用于更有效地向本领域的其它技术人员传达其工作实质。在此,算法通常被设想为产生期望结果的自相容步骤(指令)序列。这些步骤是需要物理量的物理操作。尽管不一定,但这些量通常采用能够被存储、传输、结合、比较及其它操作的电、磁或光信号的形式。有时候,主要是由于公共用途的原因,把这些信号称为比特、值、元素、符号、特性、术语、数量等等是方便的。而且不失一般性地,有时把需要物理量的物理操作的步骤的某些布置称为模块或编码装置也是方便的。
[0020]然而应该考虑到,这些项以及类似项将与适当的物理量相关联、并且仅仅是被应用于这些量的方便的表征。除非特别指出,否则从以下论述可以明显看出,应当理解,在说明书和论述中使用的诸如″处理″或″计算″或″确定″或″显示″或″确定″之类的术语指的是计算机系统或类似的电子计算装置的动作和处理,这类计算机系统或电子计算装置操作并转换在计算机系统存储器或寄存器或其它这类信息存储、传输或显示装置内被表示为物理(电子)量的数据。
[0021]本发明的某些方面包括在此以算法形式描述的处理步骤和指令。应当注意,本发明的处理步骤和指令能够被具体实现为软件、固件或硬件,而且在其被具体实现为软件时,可以被下载保存,并可以从各种操作系统使用的不同平台来操作。
[0022]本发明还涉及一种用于执行这里所描述的操作的装置。这个装置可以被特别地构造成用于所需要的目的,或者它可能包括由存储在计算机中的计算机程序来有选择地激活或重新配置的通用计算机。这类计算机程序可以被存储在计算机可读的存储介质中,例如、但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROMs)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡片、专用集成电路(ASIC)、或者适于存储电子指令的任何媒介类型,并且每一个都与计算机系统总线相连。而且,说明书中涉及的计算机可以包括单个处理器,或者可以是采用多个处理器设计的结构,以便增加计算能力。
[0023]这里示出的算法和显示不是固有地与任何特殊的计算机或其它设备相关。各种各样的通用系统也可以用于根据此处所给出的程序,或者它可以被证明为方便构造更专用的设备,以执行所要求的方法步骤。被要求用于这些各式各样的系统的结构将由下面的说明而变得明显。另外,本发明没有参考任何特殊的程序语言来描述。应当理解,各种各样的编程语言可以被用来实现在此所描述的本发明的目的,并且下面对专用语言的任何参考都被提供用于公开本发明的实现和最佳模式。
[0024]另外,说明书中的使用的语言主要被选择用于易读和指导的目的,并且可不被选择用于叙述或限制本发明的主题。因此,本发明的公开内容意在说明而不是限制在随后的权利要求中所阐明的本发明的范围。
[0025]图1是本发明能在其中运行的一个网络环境示例的图示。源102可以是用TCP向一个或多个端点发送数据或从一个或多个端点接收数据的任何装置。为了解释的目的,在下文中描述的源102是可以请求TCP会话的任何装置。源102通过例如LAN 106的通信网络连接到控制模块104上(例如,在控制设备中)。或者,控制模块104不通过LAN106直接连接到源102上,或在源102内作为程序模块来执行。控制模块104通过诸如广域网(WAN)108的另一个通信网络连接到一个或多个其他的控制模块。尽管图1示出了控制模块104连接到一个其他的控制模块(即,控制模块110)上,但是控制模块104可以连接到不止一个的控制模块上。每一个其他控制模块通过另一个通信网络连接到目标上。例如,图1示出了控制模块110(例如,在控制设备中)通过LAN 114连接到目标112上。目标112可以是使用TCP从/向一个或多个端点接收/发送数据的任何装置。为了解释的目的,下文中描述的目标112是能够响应由源102发出的TCP请求的任何装置。此外,控制模块110可以不通过LAN 114直接连接到目标112上,或者能够在目标112内作为程序模块来实施。
[0026]在本发明的一个实施例中,控制模块104位于比目标112相对靠近源102的位置,而控制模块110位于比源102相对靠近目标112的位置。因此,控制模块104物理地和逻辑地与源102相关,并且控制模块110物理地和逻辑地与目标112相关。
[0027]如所讨论的,TCP的初始会话建立可能延迟源102和目标112之间的TCP业务,该TCP初始会话建立需要在初始化完成之后要被发送的第一应用层数据分组。该处理在每一个业务中引入至少一个RTT延迟,在高延迟的链路的情况下,可能达到500到1000ms的延迟。当连续执行多个这些短业务时,从这种初始化过程累计的延迟可能很重要。因此,在本发明的实施例中,控制模块104与控制模块110进行协作,以便在源102和目标112各自的LAN内可预测地并且可靠地完成初始TCP会话建立。控制模块104和控制模块110提供无打扰(non-intrusively)、并且对于TCP是透明的优化。也即,控制模块104和110对TCP的端到端的可靠性算法进行透明地操作,并避免了把TCP替换为传输协议的复杂性和风险。控制模块104和110不能对实际还没有收到的数据产生任何的肯定应答,而改为使用存在的肯定应答来优化数据流。因此,TCP的可靠性协议继续进行端到端的操作,就好像控制模块104和110并不存在一样。通过优化TCP的初始会话建立,本发明的这种无打扰改善了TCP的延迟性能。
[0028]图2示出了不控制模块104和110的TCP初始会话建立的常规操作。在A,源102首先把特殊的TCP分组发送给目标112。该特殊的分组不包括应用层数据。然而,在该分组的报头中具有一个标记位,称作同步(SYN)位,设置成TRUE。这种特殊的分组经常被称作SYN分组。此外,源102选择被称作源内码(source isn)的初始序列号,并且把这个数值插入到初始SYN分组的序列号字段中。源102在因特网协议(IP)数据报内对该SYN分组进行封装,并将其发送给目标112。
[0029]在B,在包括SYN分组的IP数据报到达目标112后,目标112从IP数据报中减去SYN分组,分配TCP缓存和用于连接的变量,并把TCP连接许可的分组发送给源102。这个连接许可的分组也不包括应用层数据。然而,在分组报头内的SYN位被设置成TRUE。目标112还把分组报头内的ACK位和连接确认的分组报头中的确认字段设置成source isn+1。而且,目标112选择被称作目标内码(destination isn)的它自己的初始序列号,并把该数值插入到连接许可的分组报头的序列号字段中。该连接许可分组经常被称作同步-肯定应答(SYN-ACK)分组。
[0030]在C,接受到连接许可分组后,源102分配缓存和用来连接的变量。源102接着把另一个分组发送给目标112。该分组对目标112的连接许可的分组进行确认。特别是,源102把数值deinion_isn+1插入到TCP分组报头的肯定应答字段中。源102还把TCP分组报头的SYN位设置成FALSE,因为TCP连接已经被建立。
[0031]在完成了步骤A-C之后,源102和目标112可以相互发送包括应用层数据的分组。在这些未来分组的每一个中,SYN位被设置成FALSE。
[0032]可以看到,为了在源102和目标112之间建立初始TCP会话,在源102和目标112之间发送三个分组。因此,这种会话建立过程经常被称作“三方握手(three-way handshake)”。即使TCP三方握手提供了可靠的数据传递,但是在源102能够开始把应用层数据发送给目标112之前,源102需要从目标112接收SYN-ACK分组,并且在目标112能够开始把应用层数据发送给源102之前,目标112需要接收三方握手的最后分组。这种要求延时了应用层数据传输,尤其是对于连续执行的多路短TCP业务。
[0033]图3示出了根据本发明的实施例由控制模块104和110优化的TCP的初始会话建立的示例性操作。根据本发明的优选实施例,在优化TCP的初始会话建立之前,与源102有关的控制模块104收集有关目标112的信息,并把该信息存储在数据库中。如所示出的,在A,控制模块104首先允许源102与目标12建立一个或多个TCP会话。尽管控制模块104和110不干预这种TCP会话,但是控制模块104观察目标112对源102发送的SYN分组的响应。控制模块104还观察诸如目标112的IP地址的网络地址。特别是,控制模块104观察目标112对SYN分组的一个或多个响应,以确定响应于用于目标112的IP地址的SYN分组中的TCP选项而使用的TCP选项。控制模块104接着存储目标112的响应,该响应具有由控制模块104维护的数据库中TCP选项的不同组合。该响应以每一个IP地址、每一个TCP选项组合方式存储在数据库中。在控制模块104观察源102和目标112之间的具有特殊TCP选项组合的TCP会话的足够数量(例如5)之后,并且如果来自目标112的响应是一致的,那么控制模块104“激活”该目标112的IP地址和特殊TCP选项组合。
[0034]控制模块104激活目标112的IP地址和TCP选项组合之后,在B,源102把SYN分组发送给目标112。控制模块104截取该SYN分组,并且在C,用具有如数据库中指示的目标112的IP地址、端口号和TCP选项组合的合成SYN-ACK分组来响应源102。控制模块104还可预测地或任意地决定初始序列号(称作synth_isn),并把该值插入到SYN-ACK分组报头的序列号字段中。在D,源102用肯定应答(ACK)分组来响应由控制模块104发送的合成SYN-ACK分组,并使其进入会话建立状态。源102接着开始应用层数据传输。此外,控制模块104特征化该ACK分组,并将其发送给目标112。
[0035]在控制模块104截取从源102到目标112的SYN分组之后,特征化该SYN分组并将synth_isn插入到TCP报头或特征化的SYN分组报头中,或者作为未使用的TCP选项、或在肯定应答数量字段中、或者作为附加的数据,和分组一起被发送。在E,控制模块104接着把特征化的SYN分组发送到目标112。在从源102使其自己进入会话建立状态、到源102接收目标112也处在会话建立状态的信息期间,控制模块104将把从源102到目标112的任意数据分组特征化。控制模块104通过使用一个或多个TCP报头中的有效字段、或者通过向分组添加数据来特征化SYN分组或数据分组。
[0036]在特征化SYN分组到达目标112之前,与目标112相关的控制模块110截取该特征化的SYN分组。控制模块110去除该特征,并从SYN分组中找出synth_isn。例如,控制模块110可以基于包括在TCP报头中的内容、特征化的SYN分组报头、或随着分组一起发送的附加数据,找出任意确定的synth_isn。然而,如果该synth_isn可以由控制模块104可预测地确定,那么在确定SYN分组报头是“特化征化的”之后,控制模块110可以使用相同的预测方法来得到该synth_isn。控制模块110接着在F把无特征的(characterization-free)SYN分组发送给目标112。
[0037]在控制模块110从目标112接收到SYN-ACK分组之前,在G,该控制模块可以从源102接收特征化的ACK分组。在这种情况中,在等待来自目标112的SYN-ACK分组时,控制模块110把该特征化ACK分组临时存储在存储区中。
[0038]在H,当目标112把SYN-ACK分组发送给源102时,控制模块110截取该SYN-ACK分组。控制模块110从该SYN-ACK分组获得目标114使用的初始序列号(称作destination_isn),并接着把SYN-ACK分组发送给源102。控制模块110接着基于destination_isn调整临时存储的从源102到目标112的ACK分组。
[0039]在本发明的优选实施例中,控制模块110通过计算被称作SeqAckAdjustment的调整数(adjustment number)来调整ACK分组。例如,可以通过从synth_isn中减去destination_isn来计算SeqAckAdjustment。因此,在控制模块110计算SeqAckAdjustment之后,控制模块110释放临时存储在存储区中的ACK分组。特别是,控制模块110从ACK分组中去除该特征,并使用所计算的SeqAckAdjustment来调整该分组,例如,通过从ACK分组的肯定应答数中减去计算的SeqAckAdjustment,并对ACK分组的校验和进行相应的调整。在I,控制模块110接着把调整的ACK分组发送给目标112。
[0040]另外,如果控制模块110在其从目标112接收SYN-ACK分组之前(例如,在J),从源102收到特征化的数据分组,则其临时存储该特征化数据分组。在来自目标112的SYN-ACK分组到达之后,控制模块110从数据分组中去除该特征,调整该数据分组(例如,通过从数据分组的肯定应答中减去计算的SeqAckAdjustment,并对数据分组校验和进行相应的调整),并在K把该调整的数据分组发送给目标112。对于随后来自源102的特征化数据分组,控制模块110从数据分组中去除该特征,调整该数据分组,并把该调整的数据分组发送给目标112。
[0041]根据本发明的实施例,如果由控制模块104特征化的SYN分组在其到达控制模块110之前被丢失,则控制模块110可以从来自控制模块104(例如,在J)的随后的数据分组中恢复包括在该丢失的SYN分组中的信息。因此,控制模块110可以恢复丢失的信息,重建该SYN分组,并把重建的SYN分组发送给目标112。该操作还适用于在数据分组到达控制模块110之后如果SYN分组到达控制模块110的情况。此外,如果SYN分组在其从控制模块110到目标112的过程中被丢失,那么控制模块110可以使用包括在随后的数据分组中的信息来重建另一个SYN分组,并把该重建的SYN分组发送给目标112。
[0042]在本发明的另一个实施例中,如果来自目标112的SYN-ACK分组在其去控制模块110的路上被丢失,则控制模块110基于包括在随后的数据分组(例如,在J到达的)中的信息重建该SYN分组。控制模块110接着为目标112把该重建的SYN分组发送给目标112,以便发送另一个SYN-ACK分组。
[0043]在来自目标112的SYN-ACK分组到达与源102相关的控制模块104之前,控制模块104可以在其接收来自目标112的SYN-ACK分组之前从目标112接收数据分组。在这种情况下,控制模块104临时将该数据分组存储在存储区中。
[0044]在L,控制模块104从目标112接收该SYN-ACK分组。从收到的SYN-ACK分组中,控制模块104获得destination_isn,并基于该destination_isn调整临时存储的数据分组和在源102和目标112之间的随后的数据分组。控制模块104还检测SYN-ACK分组,以确定其是否如数据库中所建议的那样形成。如果控制模块104确定SYN-ACK分组不是按照数据库所建议的那样形成(例如,IP地址和/或TCP选项组合是不同的),那么该控制模块“激活”数据库中的目标112,并接着观察随后的在源102和目标112之间的规则的TCP会话(没有来自控制模块104和110的干扰),以便确定当前的有关目标112的信息。
[0045]在任何一种情况下,控制模块104消耗该SYN-ACK分组并且不把该SYN-ACK分组发送给源102。
[0046]在本发明的实施例中,如果来自目标112的SYN-ACK分组在其从控制模块110到控制模块104的路上被丢失,因为来自目标112的数据分组在SYN-ACK分组到达控制模块104之前到达控制模块104,所以控制模块104能够检测该丢失。在这种情况下,控制模块104使用去往控制模块110的带外(out-of-channel)TCP信道来请求SeqAckAdjustment的数值,以使其调整该数据分组。可选地,控制模块104可以使用带外TCP信道来明确地请求控制模块110重传该SYN-ACK分组。
[0047]根据本发明的优选实施例,通过计算SeqAckAdjustment,控制模块104调整从目标112到源102的数据分组。SeqAckAdjustment可以通过从synth_isn减去destination_isn进行计算。因此,在控制模块104计算该SeqAckAdjustment之后,其调整并释放临时存储在存储区中的数据分组。例如,控制模块104通过把计算的SeqAckAdjustment添加到数据分组的序列号中、并相应对数据分组的校验和进行调整来调整该存储的数据分组。控制模块104接着把该调整的数据分组发送给源102。另外,如果控制模块104从目标112接收数据分组,例如,在M,其例如通过把计算的SeqAckAsjustment添加到数据分组的序列号中、并相应对数据分组的校验和进行调整来调整该收到的数据分组。控制模块104接着在N把调整的数据分组发送给源102。
[0048]另外,在控制模块104计算SeqAckAdjustment、并从源102接收数据分组之后,例如,在O,其例如通过从数据分组的肯定应答数中减去计算的SeqAckAdjustment、并相应的对数据分组的校验和进行调整来调整收到的数据分组。控制模块104接着在P把该调整的数据分组发送给目标112而不进行任何的特征化。由于这些数据分组没有被特征化,所以控制模块110不能在其到达目标112的路上截取该数据分组。这样,该没有特征化的数据分组直接被发送给目标112,而没有来自控制模块110的任何干扰。从这一点来看,普通的TCP业务可以在不牵扯控制模块110的情况下持续进行。对于在TCP业务中剩下的分组,对从目标112到源102(例如在Q和R)的分组的序列号的处理、以及对从源102到目标112(例如在O和P)的分组的肯定应答数量的处理将由控制模块104来完成。
[0049]如所看到的,通过从源102截取该SYN分组并把合成的SYN-ACK分组发送给源102以响应该SYN分组,控制模块104允许源102开始向目标112传输应用层数据,而不用等待来自目标112的真正的(real)SYN-ACK分组。这加快了TCP的初始会话建立,尤其是对于多个连续执行的短TCP业务。通过使控制模块104与控制模块110一起工作,本发明的优化TCP的初始会话建立的实施例不侵入TCP的核心算法。
[0050]图4A和4B示出了由本发明一个实施例实现、并且由与源102相关的控制模块104执行的TCP优化过程的流程图。在本发明的优选实施例中,控制模块104观察目标112对SYN分组的一个或多个响应,以确定相应于用于目标112的IP地址的SYN分组中的TCP选项所使用的TCP选项。因此,控制模块104基于该观察的响应而确定目标112的IP地址和TCP选项组合。控制模块104接着确定404目标112的IP地址和TCP选项组合是否是一致的。如果IP地址和TCP选项组合已经是一致的,那么控制模块104激活406目标112的IP地址和TCP选项组合。如果IP地址和TCP选项组合是不一致的,那么控制模块104返回到步骤402,以观察目标112对由源102发送的SYN分组的进一步的响应。
[0051]控制模块104从源102接收408SYN分组。基于该收到的SYN分组,控制模块104产生具有目标112的IP地址、端口号、和TCP选项组合的合成的SYN-ACK分组。控制模块104还可预测地并任意地决定被称作synth_isn的初始序列号,并把该synth_isn插入到合成的SYN-ACK中。控制模块104接着把该合成的SYN-ACK发送给源102。控制模块104还把从源102接收的SYN分组进一步特征化,并将该特征化的SYN分组发送给目标112。
[0052]在控制模块104把合成的SYN-ACK发送给源102之后,其从源102接收410 ACK分组,特征化该ACK分组,并把该特征化的ACK分组发送给目标112。控制模块104接着确定412来自源102的数据分组是否到达。如果来自源102的数据分组到达,那么控制模块104特征化414来自源102的数据分组,并将该特征化的数据分组发送给目标112。在控制模块104把特征化的数据分组发送给目标112后,或者如果来自源102的数据分组还没有到达,那么控制模块104确定416来自目标112的数据分组是否到达。如果来自目标112的数据分组到达,那么控制模块104对从目标112接收的数据分组进行存储418。
[0053]在控制模块104存储接收自目标112的数据分组后,或者如果来自目标112的数据分组没有到达,那么控制模块104从目标112接收420SYN-ACK分组。控制模块104从收到的SYN-ACK分组中找出目标112的序列号(被称作destination_isn)。在本发明的优选实施例中,控制模块104还例如通过从synth_isn中减去destination_isn来计算被称作SeqAckAdjustment的调整数。控制模块104还消耗422该SYN-ACK分组,以阻止其到达源102。控制模块104还确定424该SYN-ACK分组是否是如所期望的那样形成(即,其与由目标112的确定的IP地址和TCP选项组合一致)。如果SYN-ACK分组不是如所期望的那样形成,那么控制模块104使目标112的IP地址和TCP选项组合无效(decativate)并返回到步骤402,以观察目标112对由源102发送的SYN分组的进一步的响应。
[0054]如果该SYN-ACK分组是如所期望的那样形成,则在调整该数据分组之后,控制模块104把该存储的数据分组发送给426源102,若有的话。例如,控制模块104可以通过向数据分组的序列号添加SeqAckAdjustment、并相应地调整数据分组的校验和来调整数据分组。控制模块104接着确定428来自目标112的数据分组是否到达。如果来自目标112的数据分组到达,则在调整该数据分组之后,控制模块104把该数据分组发送给430源102。控制模块104可以通过例如向数据分组的序列号添加SeqAckAdjustment、并相应地调整数据分组的校验和来调整该数据分组。控制模块104接着确定432来自源102的数据分组是否到达。
[0055]如果来自目标112的数据分组还没有到达,则控制模块104还确定432来自源102的数据分组是否到达。如果来自源102的数据分组到达,那么在调整该数据分组之后,控制模块104把该数据分组发送给434目标112而不进行任何的特征化。该数据分组可以例如通过从数据分组的肯定应答数量中减去SeqAckAdjustment、并相应地调整数据分组的校验和来进行调整。控制模块104接着返回到步骤428,以确定来自目标112的数据分组是否到达。可选地,如果来自目标112的数据分组还没有到达,那么控制模块104也返回到步骤428,以确定来自目标112的数据分组是否到达。该处理流程一直持续,直到任意的源102或目标112终止该TCP会话。
[0056]图5示出了由本发明的一个实施例实施、并且由与目标112相关的控制模块110执行的TCP优化过程的流程图。控制模块110从源102接收502特征化的SYN分组。控制模块110从该SYN分组中去除该特征,并把该无特征的SYN分组发送给目标112。控制模块110接着确定504来自源102的该特征化的ACK分组是否到达。如果来自源102的特征化的ACK分组到达,则控制模块110存储506该到达的来自源102的ACK分组。
[0057]在控制模块110存储该收到的来自源102的ACK分组之后,控制模块110从目标112接收508该SYN-ACK分组。控制模块110从收到的SYN-ACK分组中找出destination_isn,并把该SYN-ACK分组发送给源102。在本发明的优选实施例中,控制模块110通过例如从synth_isn中减去destination_isn来计算被称作SeqAckAdjustment的调整数。
[0058]如果有的话,在调整该ACK分组并从ACK分组中去除该特征之后,控制模块110还把该存储的ACK分组发送给510目标112。例如,控制模块110可以通过从ACK分组的肯定应答数量中减去SeqAckAdjustment、并对该ACK分组的校验和进行相应的调整来调整ACK分组。
[0059]控制模块110进一步确定512来自源102的特征化数据分组是否到达。如果该来自源102的特征化数据分组到达,那么控制模块110从该数据分组中去除514该特征,调整该数据分组,并把该无特征的数据分组发送给目标112。该数据分组可以例如通过从数据分组的肯定应答数量中减去SeqAckAdjustment、并对该数据分组的校验和进行相应的调整来进行调整。然后,该处理返回到步骤512。如果来自源102的特征化数据还没有到达,那么控制模块110循环返回到步骤512,直到源102和目标112终止该TCP会话。
[0060]虽然在这里已经对本发明的特定实施例和应用进行了解释和描述,但是可以理解,本发明并不仅限于其中公开的明确的指令和部件,并且,对本发明的方法和装置的布置、操作和细节进行的各种修改、改变、和变化在不背离如所附的权利要求书中所限定的本发明的精神和范围的情况下,是可以进行的。
Claims (30)
1、一种用于优化在源和目标之间初始传输控制协议TCP会话建立的方法,包括以下步骤:
从源接收同步分组;
响应于收到的同步分组,产生包括目标信息的合成的同步-肯定应答分组;
把该合成同步-肯定应答分组发送给源;和
把该同步分组发送给目标。
2、根据权利要求1所述的方法,其中,从源接收该同步分组的步骤包括:
在相对靠近源的位置从源接收该同步分组。
3、根据权利要求2所述的方法,其中,把该同步分组发送给目标的步骤包括:
按照期望的处理对该同步分组进行特征化;
并且把该特征化的同步分组发送到目标。
4、根据权利要求3所述的方法,还包括以下步骤:
在相对靠近源的位置从源接收肯定应答分组;
在从目标接收同步-肯定应答分组之前,在相对靠近源的位置从源接收数据分组;
按照期望的处理对收到的数据分组进行特征化;
并且把该特征化的数据分组发送给目标。
5、根据权利要求3所述的方法,其中,目标的信息包括网络地址,TCP选项组合,和合成的目标序列号。
6、根据权利要求5所述的方法,还包括下列步骤:
在相对靠近目标的位置接收该特征化的同步分组;
从该接受的同步分组中去除该特征;
并把该没有特征的同步分组发送给目标。
7、根据权利要求6所述的方法,还包括下列步骤:
在从目标接收同步-肯定应答分组之前,在相对靠近目标的位置从源接收特征化的数据分组;
存储该特征化的数据分组;
在相对靠近目标的位置从目标接收该同步-肯定应答分组;
从存储的数据分组中去除该特征;
基于收到的同步-肯定应答分组确定调整数;
把该数据分组作为确定的调整数的函数来进行调整;和
把该调整过的没有特征的数据分组发送给目标。
8、根据权利要求7所述的方法,其中,确定调整数的步骤包括下列步骤:
识别由目标所使用的序列号;和
从合成的序列号中减去由目标所使用的所识别的序列号。
9、根据权利要求7所述的方法,其中,调整数据分组的步骤包括下列步骤:
从数据分组的肯定应答数量中减去该确定的调整数。
10、根据权利要求6所述的方法,还包括下列步骤:
在相对靠近目标的位置从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
在相对靠近目标的位置从源接收数据分组;
通过从数据分组的肯定应答数量中减去确定的调整数,对收到的数据分组进行调整;和
把该调整的数据分组发送给目标。
11、根据权利要求6所述的方法,还包括下列步骤:
在从目标接收同步-肯定应答分组之前,在相对靠近源的位置从目标接收数据分组;
存储该收到的数据分组;
在相对靠近源的位置从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
通过向数据分组的序列号添加确定的调整数对存储的数据分组进行调整;和
把调整的数据分组发送给源。
12、根据权利要求6所述的方法,还包括下列步骤:
在相对靠近源的位置从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
在相对靠近源的位置从源接收数据分组;
通过从数据分组的肯定应答数量中减去确定的调整数,对收到的数据分组进行调整;
把该调整的数据分组发送给目标。
13、根据权利要求6所述的方法,还包括下列步骤:
在相对靠近源的位置从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
在相对靠近源的位置从目标接收数据分组;
通过向数据分组的序列号添加确定的调整数对接收的数据分组进行调整;和;
把该调整的数据分组发送给源。
14、根据权利要求1所述的方法,还包括下列步骤:
在产生合成的同步-肯定应答分组之前,观察目标对由源发送给目标的一个或多个同步分组的一个或多个响应;
从目标的响应中识别一个或多个网络地址和TCP选项组合;
在数据库中存储识别的一个或多个网络地址和TCP选项组合;
确定该存储的一个或多个网络地址和TCP选项组合是否是一致的;和
如果存储的一个或多个网络地址和TCP选项组合是一致的,则允许产生合成的同步-肯定应答分组。
15、根据权利要求14所述的方法,还包括下列步骤:
在生成合成的同步-肯定应答分组之后,从目标接收同步-肯定应答分组;
确定如在接收的同步-肯定应答分组中指示的目标的网络地址和TCP选项组合是否与数据库中存储的一个或多个网络地址和TCP选项组合一致;和
观察目标对由源发送的一个或多个其它的同步分组的一个或多个其他的响应,以确定目标的当前网络地址和TCP选项组合。
16、一种用来对源和目标之间的初始传输控制协议TCP会话建立进行优化的系统,其包括:
第一控制模块,用于:
从源接收同步分组;
响应于收到的同步分组,产生包括目标信息的合成的同步-肯定响应分组;
把该合成的同步-肯定响应分组发送给源;和
把该同步分组发送给目标。
17、根据权利要求16所述的系统,其中,第一控制模块与源相关。
18、根据权利要求17所述的系统,其中,在把该同步分组发送给目标之前,该第一控制模块按照期望的处理特征化该同步分组。
19、根据权利要求18所述的系统,其中,该第一控制模块:
在从目标接收同步-肯定响应分组之前,从源接收数据分组;
如所期望的处理对收到的数据分组进行特征化;
并且把该特征化数据发送给目标。
20、根据权利要求18所述的系统,其中,目标的信息包括网络地址,TCP选项组合,和合成的目标序列号。
21、根据权利要求20所述的系统,还包括:
与目标相关的第二控制模块,用于:
接收该特征化的同步分组;
从接受的同步分组中去除该特征;和
把该没有特征的同步分组发送给目标。
22、根据权利要求21所述的系统,其中,该第二控制模块:
在从目标接收同步-肯定响应分组之前,从源接收特征化的应用层分组;
存储该特征化的数据分组;
从目标接收该同步-肯定响应分组;
从所存储的数据分组中去除该特征;
基于收到的同步-肯定响应分组确定调整数;
把该数据分组作为确定的调整数的函数来进行调整;和
把该调整过的没有特征的数据分组发送给目标。
23、根据权利要求22所述的系统,其中,该第二控制模块通过下述方式确定调整数:
识别由目标所使用的序列号;和
从合成的序列号中减去由目标使用的所识别的序列号。
24、根据权利要求22所述的系统,其中,该第二控制模块通过下述方式调整该数据分组:
从数据分组的肯定应答数量中减去确定的调整数。
25、根据权利要求21所述的系统,其中,该第二控制模块:
从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
从源接收数据分组;
通过从数据分组的肯定应答数量中减去确定的调整数,对收到的数据分组进行调整;和
把该调整的数据分组发送给目标。
26、根据权利要求21所述的系统,其中,该第一控制模块:
在从目标接收同步-肯定应答分组之前,从目标接收数据分组;
存储该收到的数据分组;
从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
通过向数据分组的序列号添加确定的调整数,对存储的数据分组进行调整;和
把调整的数据分组发送给源。
27、根据权利要求21所述的系统,其中,该第一控制模块:
从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
从源接收数据分组;
通过从数据分组的肯定应答数量中减去确定的调整数,对收到的数据分组进行调整;
把该调整的数据分组发送给目标。
28、根据权利要求21所述的系统,其中,该第一控制模块:
从目标接收同步-肯定应答分组;
基于收到的同步-肯定应答分组确定调整数;
从目标接收数据分组;
通过向数据分组的序列号添加确定的调整数,对接收的数据分组进行调整;和;
把该调整的数据分组发送给源。
29、根据权利要求16所述的系统,其中,该第一控制模块:
在产生合成的同步-肯定应答分组之前,观察目标对由源发送给目标的一个或多个同步分组的一个或多个响应;
从目标的响应中识别一个或多个网络地址和TCP选项组合;
在数据库中存储识别的一个或多个网络地址和TCP选项组合;和
确定该存储的一个或多个网络地址和TCP选项组合是否是一致的;和
如果存储的一个或多个网络地址和TCP选项组合是一致的,则允许产生合成的同步-肯定应答分组。
30、根据权利要求29所述的系统,其中,该第一控制模块:
在生成合成的同步-肯定应答分组之后,从目标接收同步-肯定应答分组;
确定如在接收的同步-肯定应答分组中所指示的目标的网络地址和TCP选项组合是否与数据库中存储的一个或多个网络地址和TCP选项组合一致;和
观察目标对由源发送的一个或多个其它的同步分组的一个或多个其他的响应,以确定目标的当前网络地址和TCP选项组合。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51793403P | 2003-11-05 | 2003-11-05 | |
US60/517,934 | 2003-11-05 | ||
US10/983,131 US7058058B2 (en) | 2003-11-05 | 2004-11-04 | Transparent optimization for transmission control protocol initial session establishment |
US10/983,131 | 2004-11-04 | ||
PCT/US2004/036834 WO2005045639A2 (en) | 2003-11-05 | 2004-11-05 | Transparent optimization for transmission control protocol initial session establishment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1918867A true CN1918867A (zh) | 2007-02-21 |
CN1918867B CN1918867B (zh) | 2010-08-11 |
Family
ID=37598299
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200480032803XA Expired - Fee Related CN1918867B (zh) | 2003-11-05 | 2004-11-05 | 用于传输控制协议初始化会话建立的透明优化 |
CN2004800316530A Expired - Fee Related CN1894894B (zh) | 2003-11-05 | 2004-11-05 | 传输控制协议流控制的透明优化方法及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800316530A Expired - Fee Related CN1894894B (zh) | 2003-11-05 | 2004-11-05 | 传输控制协议流控制的透明优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN1918867B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369875B (zh) * | 2008-09-12 | 2013-04-24 | 上海华为技术有限公司 | 一种传输控制协议数据包的传输方法、装置及系统 |
US9118594B2 (en) * | 2011-12-06 | 2015-08-25 | Brocade Communications Systems, Inc. | Lossless connection failover for single devices |
US10009445B2 (en) * | 2012-06-14 | 2018-06-26 | Qualcomm Incorporated | Avoiding unwanted TCP retransmissions using optimistic window adjustments |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163046A (en) * | 1989-11-30 | 1992-11-10 | At&T Bell Laboratories | Dynamic window sizing in a data network |
US6252851B1 (en) * | 1997-03-27 | 2001-06-26 | Massachusetts Institute Of Technology | Method for regulating TCP flow over heterogeneous networks |
US6560243B1 (en) * | 1999-04-30 | 2003-05-06 | Hewlett-Packard Development Company | System and method for receiver based allocation of network bandwidth |
EP1148689B1 (en) * | 2000-04-18 | 2006-06-14 | Motorola, Inc. | Downloading web pages |
CN1209894C (zh) * | 2001-10-15 | 2005-07-06 | 东方通信股份有限公司 | 简单网络管理协议中报文可靠传输的方法 |
-
2004
- 2004-11-05 CN CN200480032803XA patent/CN1918867B/zh not_active Expired - Fee Related
- 2004-11-05 CN CN2004800316530A patent/CN1894894B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1918867B (zh) | 2010-08-11 |
CN1894894A (zh) | 2007-01-10 |
CN1894894B (zh) | 2011-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934340B2 (en) | Multi-path RDMA transmission | |
EP1690391B1 (en) | Transparent optimization for transmission control protocol initial session establishment | |
US10715282B2 (en) | Method and related device for improving TCP transmission efficiency using delayed ACK | |
US7502860B1 (en) | Method and apparatus for client-side flow control in a transport protocol | |
US8391255B2 (en) | Content throughput on wireless mesh networks | |
US8799504B2 (en) | System and method of TCP tunneling | |
US7562158B2 (en) | Message context based TCP transmission | |
US7929540B2 (en) | System and method for handling out-of-order frames | |
US7733875B2 (en) | Transmit flow for network acceleration architecture | |
US20070223529A1 (en) | Methods and apparatus for estimating bandwidth of a data network | |
US7849211B2 (en) | Method and system for reliable multicast datagrams and barriers | |
JPH11112574A (ja) | 異種ネットワークでデータ・パケットを生成する方法およびシステム | |
US20060271680A1 (en) | Method For Transmitting Window Probe Packets | |
JP2007336551A (ja) | 少なくとも1つのtcpデータセグメントストリームをインラインコンテンツ解析にサブミットするための方法及びデバイス、その方法を実施するための1つ又は複数の命令シーケンスを保持するコンピュータ可読媒体、並びにコンピュータプログラム製品 | |
US20070291782A1 (en) | Acknowledgement filtering | |
CN104320809A (zh) | 基于rtt的无线多跳网络拥塞控制方法及系统 | |
US6996105B1 (en) | Method for processing data packet headers | |
CN108234089B (zh) | 用于低时延通信的方法和系统 | |
CN1918867A (zh) | 用于传输控制协议初始化会话建立的透明优化 | |
CN103636157B (zh) | 一种ack信息的发送方法及装置 | |
CN117813595A (zh) | 用于远程直接存储器访问的设备和方法 | |
CN108243196B (zh) | Netfilter架构下引入TCP协议栈的方法及系统、中间设备、介质 | |
US9172774B2 (en) | Technique for managing communications at a router | |
KR102322688B1 (ko) | 트래픽 발생 장치 및 트래픽 에이전트 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 | |
WO2012064175A1 (en) | A method to optimize path management in virtual machine environment |
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: 20181105 |
|
CF01 | Termination of patent right due to non-payment of annual fee |