CN101663590B - 在网络的内容网关处对乱序数据分组的解析 - Google Patents

在网络的内容网关处对乱序数据分组的解析 Download PDF

Info

Publication number
CN101663590B
CN101663590B CN200880012699.6A CN200880012699A CN101663590B CN 101663590 B CN101663590 B CN 101663590B CN 200880012699 A CN200880012699 A CN 200880012699A CN 101663590 B CN101663590 B CN 101663590B
Authority
CN
China
Prior art keywords
packet
data
tcp
grouping
ordered
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.)
Active
Application number
CN200880012699.6A
Other languages
English (en)
Other versions
CN101663590A (zh
Inventor
汉波尔托·塔瓦里斯
克里斯托弗·奥鲁尔克
罗伯特·巴茨
沃尔特·狄克逊
罗伯特·麦凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN101663590A publication Critical patent/CN101663590A/zh
Application granted granted Critical
Publication of CN101663590B publication Critical patent/CN101663590B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1628List acknowledgements, i.e. the acknowledgement message consisting of a list of identifiers, e.g. of sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

在一个实施例中,一种方法包括在网络的本地节点处接收来自源节点、去往目的地节点的由多个有序数据分组组成的流中的有序数据分组。本地节点将对该流进行解析以描述该流用于网络管理。基于有序数据分组中的序列数据,确定有序数据分组在该流中是否顺序错误。如果确定有序数据分组顺序错误,则在对有序数据分组进行解析之前向目的地节点转发该有序数据分组。该顺序错误的有序数据分组也被存储在本地节点处用于随后进行解析。

Description

在网络的内容网关处对乱序数据分组的解析
技术领域
本发明涉及在网关节点处对去往网络的数据分组进行解析,以基于通过该网关的数据分组的内容来管理网络。
背景技术
通过外部通信链路连接的通用计算机系统和专用设备的网络在商业领域公知并被广泛利用。网络通常包括有助于计算机系统和设备之间的信息的通信的一个或多个网络设备。网络节点是通过通信链路连接的网络设备、计算机或专用设备。端节点是被配置为发起或终结网络上的通信的节点。中间网络节点有助于端节点之间的数据的通信。
一些中间网络节点充当去往网络或特定网络服务提供商的部分网络的网关。这种网关节点(下文中称为网关)不仅转发数据分组,而且为提供商的网络的管理提供一些其他功能,诸如仅将访问限制到被授权的用户。另外,一些中间网络节点充当内容网关。这种内容网关基于相同的两个端节点之间的数据分组流中的一个或多个数据分组的内容来提供对于网络的管理功能。内容网关的功能包括评估由不同类型的有效载荷(例如,网页、文件传送、电子邮件以及音频和视频内容的流传输)引起的流量部分、基于有效载荷的类型进行路由、以及对于不同类型的有效载荷的不同收费等。
这种内容网关必须解析与相同的两个端节点之间的每个流相关联的若干数据分组的有效载荷中的数据。解析包括解释一个或多个有效载荷中的数据。当分组被顺序解析时,这种解析更加迅速和容易,因为至少一些数据的含义取决于它在数据分组流中的位置。诸如传输控制协议(TCP)之类的若干传输层协议通过在每个数据分组中包括序列号(sequencenumber)来支持数据分组的排序。
当前,内容网关通过存储乱序(out of order)分组直到丢失的分组到达为止来处理乱序到达的流的数据分组。在数据分组被解析之前不对数据分组进行转发,以防止提供商的网络资源的未被授权的使用。当丢失的数据分组被接收时,丢失且乱序数据分组的解析可以继续。然后,这些解析后的数据分组被转发。这种方法的问题在于,在一些情况下网络吞吐量显著降低,尤其是在输入流通过不太可靠的接入网络时(这时伴随着频繁丢掉的分组)。
附图说明
在附图的图形中通过示例而不是限制示出了本发明,并且相同的标号表示相同的元件,其中:
图1示出了具有内容网关的示例网络;
图2示出了示例有序数据分组(sequenced data packet);
图3示出了使用有效的选择性确认的示例数据流;
图4A示出了与其上的解析会干扰选择性确认的内容网关有关的示例数据流;
图4B示出了与其上的解析能较好地支持选择性确认的内容网关有关的示例数据流;
图5示出了用于在内容网关上进行解析的高级别方法;以及
图6示出了本发明的实施例可以在其上实现的计算机系统。
具体实施方式
描述了用于在内容网关上解析乱序数据分组的技术。在以下描述中,出于说明的目的,阐述了大量具体细节以提供对本发明的全面理解。然而,对于本领域技术人员很明显的是,本发明可以在没有这些具体细节的情况下实施。在其他实例中,以框图形式示出了公知的结构和设备,以避免对本发明的不必要的模糊。
下面在接入网络和提供商的网络之间的内容网关处接收、并利用TCP选择性确认选项(SACK)确认的可靠流的TCP数据分组的情况下,描述若干实施例。然而,本发明不限于这种情况。在其他实施例中,一个或多个内容网关被置于相同或不同网络或子网络之间,该相同或不同网络或子网络在存在或不存在SACK的情况下未被确认的不可靠流或被确认的可靠流中、使用相同或不同协议的有序数据分组。
1.0综述
在一组实施例中,一种方法包括在网络的本地节点处接收来自源节点、去往目的地节点的由多个有序数据分组组成的流中的有序数据分组。本地节点将对该流进行解析,以确定该流中的用于描述该流的特定数据以用于网络管理。基于有序数据分组中的序列数据,确定该有序数据分组在该流中是否顺序错误(乱序的)。如果确定该有序数据分组顺序错误,则在解析该有序数据分组之前向目的地节点转发该有序数据分组。该顺序错误的有序数据分组还在本地节点处被存储用于随后进行解析。
在各种其他实施例中,一种装置或软件被配置为执行以上方法的一个或多个步骤。
2.0网络综述
网络节点之间的通信通常通过交换离散的数据分组来实现。根据一个或多个公知的、新的或仍在开发的协议,在数据分组中交换信息。在这种情况下,协议包括定义节点如何基于通信链路上发送的信息来相互作用的一组规则。每个分组一般包括:1]与特定协议相关联的头部信息,2]跟随头部信息且包含可以独立于那个特定协议而被处理的信息的有效载荷信息。在一些协议中,分组包括:3]在有效载荷之后、指示有效载荷信息的结束的尾部信息。头部包括协议使用的信息,诸如分组的源、它的目的地、有效载荷的长度以及其他特性。通常,用于特定协议的有效载荷中的数据包括与用于信息交换的不同层的细节相关联的用于不同协议的头部和有效载荷。用于特定协议的头部可以指示包含在其有效载荷中的下一个协议的类型。有效载荷中的一般较高层的协议被认为密封在较低层协议中。包括在横穿多个异构网(诸如,互联网)的分组中的头部一般包括物理(第1层)头部、数据链路(第2层)头部、互联网(第3层)头部以及传输(第4层)头部,如开放系统互连(OSI)参考模型所定义的。OSI参考模型在由Radia Perlman于1999年9月出版的题为“InterconnectionsSecond Edition”的参考书的1.1节中有更加详细的描述,这一部分通过引用结合于此,如同在这里进行了完全阐述一样。
数据链路头部提供定义一个网络节点和相邻节点之间的特定通信链路的信息。互联网头部提供定义计算机网络内的源和目的地地址的信息。特别地,路径可以跨越多个物理链路。可以根据互联网协议(IP)来对互联网头部进行格式化,其中,互联网协议指定了逻辑路径的端点处的源和目的地节点的IP地址。所以,分组可以沿着它的逻辑路径从节点“跳”到节点,直到它到达分配给存储在分组的互联网头部中的目标IP地址的端节点为止。在每跳之后,如果必要的话,可以对分组的数据链路头部中的源或目的地地址进行更新。然而,当分组在网络中被从链路传送到链路时,源和目的地IP地址一般保持不变。IP有效载荷通常包括用于应用的数据(第7层头部和有效载荷)。
路由器和交换机是确定采用哪个或哪些通信链路来支持通过网络的数据分组的进展的网络设备。基于互联网头部(第3层)中的信息确定采用哪些链路的网络节点被称为路由器。
计算机进程交互的客户端-服务器模型被广泛知晓和使用。根据客户端-服务器模型,客户端进程发送包括请求的消息给服务器进程,服务器进程通过提供服务进行响应。服务器进程还可以向客户端进程返回具有响应的消息。通常,客户端进程和服务器进程在被称为主机的不同计算机设备上运行,并且使用用于网络通信的一个或多个协议经由网络进行通信。术语“服务器”传统上被用于指提供服务的进程,或进程在其上运行的主计算机。类似地,术语“客户端”传统上被用于指作出请求的进程,或进程在其上运行的主计算机。如本文中所使用的,术语“客户端”和“服务器”指进程而不是主计算机,除非从上下文可以明了的以外。另外,由于可靠性、可测量性以及冗余性的原因(不限于这些原因),由服务器执行的进程可以被分解为在多个主机(有时称为等级)上运行的多个服务器。
图1示出了具有内容网关160的示例网络100。网络100包括接入网络102a和各种子网络102b。端节点120a和端节点120b(下文中统称为端节点120)被连接至接入网络102a。在一些实施例中,接入网络102a是无线接入网络。端节点120的用户请求在各种子网络102b上可用的资源。
各种子网络102b包括内容网关160、认证、授权和计费(AAA)服务器114和收费服务器(billing server)180、以及其他服务器170a、服务器170b、服务器170c、服务器170d(下文中统称为服务器170)。在一些实施例中,子网络102b是被称为较大的提供商网络(未示出)的围墙花园(walled garden)的部分。围墙花园存有为其支付了费用的特殊内容,并且收费取决于内容类型和所检索的数量。接入网络102a上的一个或多个中间节点被如图所示地直接连接或通过较大的提供商网络(未示出)间接连接至内容网关160。诸如远程用户拨号认证系统(RADIUS)之类的AAA服务器114被内容网关160用来验证在网关160处接收的数据分组的用户,并且是从在网关160处接收的数据分组解析出的一些数据的接收者。收费服务器180被内容网关160用来确定在网关160处接收的数据分组的用户的帐户,并且是从在网关160处接收的数据分组解析出的一些数据的接收者,诸如关于所获取的资源的数据(诸如用户请求的有效载荷的位置、数量和类型)。解析后的数据被收费服务器180用来向用户收取对于用户所获取的资源的费用。服务器170提供用户期望的各种资源,诸如网页、数据文件、电子邮件、音频、视频和游戏资源。
尽管出于说明的目的,图1图示出了特定数目和类型的网络102a、102b、端节点120、网关160和服务器170,但是在其他实施例中,网络包括相同的、更多或更少的端节点和服务器以及相同或更多的内容网关160和其他网关。
图2示出了示例有序数据分组230。在图2中,有序数据分组是TCP分组。TCP数据分组具有IP数据报230,该IP数据报包括IP头部232和IP有效载荷238。IP有效载荷238包括TCP数据分组的TCP部分。TCP部分包括TCP头部242和TCP有效载荷248。TCP头部包括TCP序列字段244。TCP序列字段244保存指示每个数据分组在流中的唯一序列号,其中,序列号单调变化以指示数据分组在流中的固有顺序。例如,在TCP中,序列字段244指示包括当前数据分组的、被发送的八位字节(添加有流的任意起始值)的总数。八位字节是8个二进制位(比特),也称为字节。
在所示出的实施例中,TCP有效载荷包括指示第一超文本传输协议(HTTP)事务251a的结束和不同的HTTP事务251b的开始的第7层数据。HTTP用于传输万维网页。通过解析TCP有效载荷(IP数据报230的第7层部分),内容网关160能够确定两个HTTP事务251a和251b之间的差别,向收费服务器180报告这个信息,以及使得收费服务器180相应地对用户收费。
尽管出于说明目的,字段244、251a和251b被图示为特定次序的IP数据报230的连续部分,但是在其他实施例中,一个或多个字段部分244、251a和251b被以不同排列设置。
TCP提供了多个数据分组中的每个的可靠数据流。由于每个所发送的分组都被接收者确认,所以该流是可靠的。TCP分组被序列字段244中的数据表示的序列号唯一地标识和排序。接收者节点通过报告所接收的数据分组的序列号来确认数据分组的接收。根据选择性确认选项(SACK),一个确认消息可以被用来确认多个所发送的分组。这减少了对于宝贵的网络带宽和接收者节点上的处理能力的使用。根据SACK,来自接收者的确认消息列出了自从前一个确认消息开始所接收的分组的序列号。发送者可以从所确认的序列号的列表确定是否有任何分组丢失,并且再次发送丢失的数据分组。发送节点保存每个所发送的分组的备份,至少直到对于该分组的确认被接收到为止。SACK在互联网工程任务组(IETF)的请求注解(RFC)2018中,以及在互联网域ietf.org处的目录/rfc/中的其他RFC中有所描述。RFC 2018可在该目录中的名为rfc2018.txt的文件中得到。题为“TCP Selective Acknowledgement Options”的RFC 2018的全部内容通过引用被结合于此,就像在这里完全公开了一样。
图3示出了使用有效的选择性确认(SACK)的示例数据流。图3是示出在TCP会话期间交换的TCP数据分组的序列的时序图。在图3中,时间向下增长。在特定时间,在特定的TCP服务器310(例如,运行作为内容服务器170c的TCP服务器)和特定的TCP客户端380(例如,运行作为端节点120a的TCP客户端)之间交换TCP数据分组。通信节点由垂直框表示。数据分组由水平框表示;并且数据分组的传播方向由表示数据分组的框上的箭头指示。尽管出于说明目的示出了特定数目的TCP数据分组,但是在其他实施例中,更多或更少的TCP数据分组被在TCP服务器310和TCP客户端380之间交换。
在最早的图示时间处,具有第一序列数据(由符号#1指示)的TCP数据分组331被从TCP服务器310发送。客户端380处的TCP数据分组331的到达由数据分组331的箭头与表示TCP客户端380的框相交的交叉指示。根据SACK,TCP数据分组331的到达没有被立即确认。相反,在经过了某个时间、或接收了某个数量的数据、或跳过了期望的序列号(以最早发生的为准)之后,发送确认。出于说明目的,假设在0.5秒、或接收了64000字节或跳过了期望的序列号(以最早发生的为准)之后,发送SACK消息。
注意,序列号单调增加,但是通常不是逐一递增。相反,序列号通常增长每个数据分组中发送的字节数目。另外,序列号不是一般在固定的第一数量处开始,而是在随机选择的数目开始,从而使得不同的流使用不同的序列号。出于说明目的,这里用符号#1、#2、#3等来表示连续的序列号。然而,应该理解,由这些符号表示的序列号不同于跟随在标记#后的数字。
在下一个时间,具有第二序列数据(由符号#2指示)的第二TCP数据分组332被从TCP服务器310发送。由于某些原因,第二TCP数据分组332没有到达TCP客户端380,如没有与表示TCP客户端380的框相交的数据分组332的箭头所指示的。
在下一个连续时间,具有第三序列数据(由符号#3指示)的第三TCP数据分组333被从TCP服务器310发送。由于由符号#2指示的期望序列号已经被跳过,所以对于确认的条件被满足。所以,TCP服务器在确认序列#1和#3的接收的数据分组351中发送SACK消息。这向TCP服务器310通知:具有序列#2的TCP数据分组332还没有被接收。
为了避免过度反应,TCP服务器310并不立即再次发送丢失的分组(例如,具有序列#2的分组),因为其可能已经被TCP服务器380接收但顺序错误。相反,TCP服务器等待重发的适当时机。在一些方法中,TCP服务器等待预定的相对较长的重传时间。在快速重发模式中,TCP服务器一直等到重复相同的丢失序列号的多个确认被接收为止,或者重传时间已经期满为止(以最先发生的为准)。指示相同的丢失数据分组的确认的数目可被配置。
出于说明目的,假设在三个确认消息指示数据分组没有被接收到之后重发丢失的数据分组。在这个实施例中,在连续时间,从TCP服务器310发送具有第四序列数据(由符号#4指示)的第四TCP数据分组334和具有第五序列数据(由符号#5指示)的第五TCP数据分组335。由于由符号#2指示的期望序列号还没有在TCP客户端380处被接收到,所以对于确认的条件被满足。所以,TCP服务器在确认序列#1、#3和#4的接收的数据分组352中发送SACK消息,并在确认序列#1、#3、#4以及#5的接收的数据分组353中发送SACK消息。
数据分组351、352和353中的多个确认消息使得TCP服务器310在重传时间期满之前执行快速重发。所以,TCP服务器310再次发送作为具有TCP序列#2的数据分组336的未确认的数据分组。该过程继续,如省略号390所示的其他数据分组所指示。
服务器310在由该服务器发送的确认数据中提供所请求的服务,该所请求的服务通常至少部分地基于客户端如何作出响应。例如,如果在用于332的重传定时器期满之前数据分组331和333被确认,则服务器不会由于分组确认的缺失而施加诸如“慢速启动”之类的TCP拥塞控制算法。防止服务器拥塞控制使得数据速率被保持为高于使用TCP拥塞控制算法时的情况。
3.0解析乱序分组
当中间网络节点解析有序数据分组时,由于任何原因,对于乱序分组的处理可能消极地影响TCP客户端380处的操作效率以及服务器310和客户端380之间的带宽的使用。由解析TCP数据分组的当前方法造成的这种消极影响在图4A中示出。
图4A示出了与内容网关420有关的示例数据流,其中内容网关420上的解析会干扰依赖于选择性确认(SACK)的TCP拥塞控制算法。图4A是示出在TCP会话期间交换的TCP数据分组的序列的时序图。在图4A中,时间向下增加。在特定时间,通过居间内容网关420(诸如内容网关160)在特定TCP服务器410(例如,用于内容服务器170c的TCP服务器)和特定TCP客户端480(例如,运行作为端节点120a的TCP客户端)之间发送TCP数据分组。尽管出于说明目的示出了特定数目的TCP数据分组,但是在其他实施例中,在TCP服务器410和TCP客户端480之间可交换更多或更少的TCP数据分组。图4A中的从TCP服务器410发送的TCP数据分组类似于图3中的由TCP服务器310发送的那些。
在最早的图示时间,具有第一序列数据(由符号#1指示)的TCP数据分组431a被从TCP服务器410发送。如与表示网关420的框相交的数据分组431a的箭头的交叉所指示的,TCP数据分组431a到达内容网关420。内容网关420解析TCP分组431a中的有效载荷,并在具有第一序列数据(序列#1)的TCP数据分组431b中向TCP客户端480转发数据。根据依赖于SACK的TCP延迟确认算法,TCP数据分组431的到达没有被立即确认。相反,在经过某个时间、或已经接收到某个数量的数据、或跳过了期望的序列号(以最早发生的为准)之后,确认被发送。出于说明目的,假设以下内容:在0.5秒、或者在接收到64000字节、或者跳过了期望的序列号之后(以最早发生的为准)之后,发送TCP SACK消息。
在下一时间,具有第二序列数据(由符号#2指示)的第二TCP数据分组432被从TCP服务器410发送。由于某些原因,第二TCP数据分组432没有到达内容网关420,如没有与表示网关420的框相交的数据分组432的箭头所指示的。
在下一个连续时间,具有第三序列数据(由符号#3指示)的第三TCP数据分组433a被从TCP服务器410发送,并且到达内容网关420。内容网关420识别出这些数据分组顺序错误并且不能被解析。该数据分组被存储在网关420处,而不被转发至TCP客户端480。
在下一个连续时间,具有第四序列数据(由符号#4指示)的第四TCP数据分组434a和具有第五序列数据(由符号#5指示)的第五TCP数据分组435被从TCP服务器310发送。这两个最后的TCP数据分组在内容网关420处被接收。网关420识别出这些数据分组也是乱序(序列#2也丢失)的并且也不能被解析。这些数据分组被存储在网关420处,而不被转发至TCP客户端480。
然后,对于确认的条件被满足。例如,自从在TCP客户端480处数据分组431b的接收开始,0.5秒已经期满。所以,TCP服务器在仅确认序列#1的接收的数据分组441a中发送TCP SACK消息。内容网关420解析TCP分组441a中的有效载荷,并在TCP数据分组441b(该分组是确认序列#1的TCP SACK)中向TCP服务器410转发数据。
如上所述,服务器410提供所请求的服务的速率通常至少部分地基于在该服务器发送的确认数据中该客户端如何响应。由于数据分组432被服务器重发并且客户端没有通过重传超时对其进行确认,所以服务器可以发起将消极地影响连接数据速率的诸如“慢启动”之类的拥塞控制算法。相对于图3中图示的过程,网络效率被消极影响。
TCP SACK分组441b的接收向TCP服务器410通知:分别具有序列#2、#3、#4和#5的TCP数据分组432、433a、434a和435在TCP客户端480处没有被接收。同样为了防止过度反应,TCP服务器410不立刻重发丢失的分组,而是等到重复相同的丢失序列号的多个确认被接收或者重传时间期满(以最早发生的为准)为止。在图4A中,发送丢失的数据分组432之后的重传时间由时间间隔412指示。由于网关420没有转发其他分组,所以没有从TCP客户端480接收其他确认。所以,TCP服务器410等待,直到在重发丢失的数据分组之前由时间间隔412指示的相对较长的重传时间期满为止。
在重传时间间隔412之后,TCP服务器410再次发送作为具有TCP序列#2的数据分组436a、具有TCP序列#3的TCP数据分组437、以及随后的具有TCP序列#4和#5的数据分组(以及其后跟随的由省略号491指示的任何其他TCP数据分组)的未确认的数据分组。
如与表示网关420的框相交的数据分组436a的箭头的交叉所指示的,TCP数据分组436a到达内容网关420。内容网关420确定其不是乱序的,因为在序列#2之前不存在期望的序列号。所以,内容网关420解析TCP分组436a中的有效载荷,并在具有序列#2的TCP数据分组436b中向TCP客户端480转发数据。所存储的数据分组433a、434a和435不再是乱序的,所以它们也可以被网关420解析并被转发至TCP客户端480。例如,所存储的具有序列#3的数据分组433a被作为具有序列#3的TCP数据分组433b解析并转发。所存储的具有序列#4的数据分组434a被作为具有序列#4的TCP数据分组434b解析并转发。如省略号492所指示的,所存储的具有序列#5的数据分组435被解析并转发。
注意,TCP服务器410可以转发具有序列#3的TCP数据分组437和已经被存储在内容网关420处并且不被需要的其他数据分组(例如,由省略号491指示的具有序列#4和序列#5的数据分组)。TCP服务器410上的处理和由这种重传消耗的带宽浪费了网络资源,并且进一步对这种由网关420进行解析的方法产生了消极影响。
根据所示出的实施例,内容网关至少转发一些有序数据分组(在它们被解析之前),并存储这些有序数据分组以用于在丢失的数据分组最终被接收时随后进行解析。这大大降低了对于网关上的解析的消极影响,并且在图4B中被示出。
图4B示出了与内容网关有关的示例数据流,该内容网关上的解析能更好地支持加速的选择性确认。图4B是示出在TCP会话期间交换的TCP数据分组的序列的时序图。在图4B中,时间向下增加。在特定时间,通过居间内容网关420(诸如内容网关160)在特定TCP服务器410(例如,用于内容服务器170c的TCP服务器)和特定TCP客户端480(例如,运行作为端节点120a的TCP客户端)之间发送TCP数据分组。尽管出于说明目的示出了特定数目的TCP数据分组,但是在其他实施例中,可以在TCP服务器410和TCP客户端480之间交换更多或更少的TCP数据分组。图4B中的从TCP服务器410发送的TCP数据分组类似于图3中的由TCP服务器310发送的那些和图4A中的由TCP服务器410发送的那些。
在最早的图示时间,具有第一序列数据(由符号#1指示)的TCP数据分组451a被从TCP服务器410发送。如与表示网关420的框相交的数据分组451a的箭头的交叉所指示的,TCP数据分组451a到达内容网关420。内容网关420解析TCP分组451a中的有效载荷,并在具有第一序列数据(序列#1)的TCP数据分组451b中向TCP客户端480转发数据。根据SACK,TCP数据分组451b的到达没有被立即确认。相反,在经过某个时间、或者已经接收某个数量的数据、或者跳过期望的序列号(以最先发生的时间为准)之后,确认被发送。出于说明的目的,假设在0.5秒或者接收到64000字节或者跳过期望的序列号(以最先发生的为准)之后,发送SACK消息。
在下一个时间,具有第二序列数据(由符号#2指示)的第二TCP数据分组452被从TCP服务器410发送。由于某些原因,如没有与表示网关420的框相交的数据分组452的箭头所指示的,第二TCP数据分组452没有到达内容网关420。
在下一个连续时间,具有第三序列数据(由符号#3指示)的第三TCP数据分组453a被从TCP服务器410发送并在内容网关420处被接收。网关420识别出这个数据分组顺序错误并且不能被解析。与先前网关进行的处理不同,数据分组被存储在网关420处,并被作为具有序列#3的TCP数据分组453b转发至TCP客户端480。
然后,在TCP客户端480处对于确认的条件被满足,因为由符号#2指示的期望的序列数据已经被跳过。所以,TCP服务器在确认序列#1和#3的接收的数据分组461a中发送TCP SACK消息。内容网关420解析TCP分组461a中的有效载荷,并在作为确认序列#1和#3的TCP SACK的TCP数据分组461b中向TCP服务器410转发数据。
大约在TCP SACK数据分组461a被接收的同时,具有第四序列数据(由符号#4指示)的第四TCP数据分组454a被从TCP服务器410发送并在内容网关420处被接收。网关420识别出这个数据分组也是顺序错误的(序列#2仍是丢失的)并且也不能被解析。与图4A中的先前网关进行的处理不同,该数据分组被存储在网关420处,并且也被作为具有序列#4的TCP数据分组454b转发至TCP客户端480。
TCP数据分组461b的接收向TCP服务器410通知:仅有具有序列#2的TCP数据分组452还没有在TCP客户端480处被接收。同样为了防止过度反应,TCP服务器410不立刻重发丢失的分组,而是等到重复相同的丢失序列号的多个确认被接收或者重传时间期满(以最先发生的时间为准)为止。
当数据分组454b被TCP客户端480接收时,对于确认的条件被再次满足,因为由符号#2指示的期望的序列数据还没有被接收。所以,TCP服务器在确认序列#1、#3和#4的接收的数据分组462a中发送TCP SACK消息。内容网关420解析TCP分组462a中的有效载荷,并在作为确认序列#1、#3和#4的TCP SACK的TCP数据分组462b中向TCP服务器410转发数据。
大约在TCP SACK数据分组462a被接收的同时,具有第五序列数据(由符号#5指示)的第五TCP数据分组455a被从TCP服务器410发送,并在内容网关420处被接收。网关420识别出这个数据分组也是顺序错误的(序列#2仍丢失)并且也不能被解析。与图4A中的先前网关进行的处理不同,这个数据分组被存储在网关420处,但是仍被作为具有序列#5的TCP数据分组455b转发至TCP客户端480。
TCP数据分组462b的接收第二次向TCP服务器410通知:仅有具有序列#2的TCP数据分组452还没有在TCP客户端480处被接收。
当数据分组455b被TCP客户端480接收时,对于确认的条件再次被满足,因为由符号#2指示的期望的序列数据仍没有被接收。所以,TCP服务器在确认序列#1、#3、#4和#5的接收的数据分组463a中发送TCPSACK消息。内容网关420解析TCP分组463a中的有效载荷,并在作为确认序列#1、#3、#4和#5的TCP SACK的TCP数据分组463b中向TCP服务器410转发数据。
大约在TCP SACK数据分组463a被接收的同时,具有第六序列数据(由符号#6指示)的第六TCP数据分组456a被从TCP服务器410发送,并在内容网关420处被接收。网关420识别出这个数据分组也是乱序的(序列#2仍是丢失的)并且也不能被解析。这个数据分组被存储在网关420处,并且也被作为具有序列#6的TCP数据分组456b转发至TCP客户端480。当数据分组456b被TCP客户端480接收时,对于确认的条件被再次满足,因为由符号#2指示的期望的序列数据还没有被接收。所以,TCP服务器在确认序列#1、#3、#4、#5和#6的接收的数据分组464a中发送TCP SACK消息。
TCP数据分组463b的接收第三次向TCP服务器410通知:仅有具有序列#2的TCP数据分组452还没有在TCP客户端480处被接收。
根据快速重发模式,现在TCP服务器410再次发送作为具有TCP序列#2的数据分组457a的未确认的数据分组。TCP数据分组457a到达内容网关420。内容网关420确定其不是乱序的,因为在序列#2之前不存在丢失的序列。所以,内容网关420解析TCP分组457a中的有效载荷,并在具有序列#2的TCP数据分组457b中向TCP客户端480转发数据。所存储的数据分组453a、454a、455a和456a不再是乱序的,所以它们也可以被网关420解析,而不需要被转发至TCP客户端480,因为它们在更早的时候被转发。来自TCP客户端480的进一步响应的适当处理和收费是基于数据分组457a、453a、454a、455a和456a的完全解析确定的。值得注意,这些所存储的乱序分组在序列号中可以具有额外间隙。在这种情况下,解析继续进行,直到所存储的分组的序列号中的下一个间隙为止。
大约在同时,对于确认的条件在TCP客户端480处被再次满足。所以,TCP客户端480在确认直到序列#6的接收的由省略号494指示的数据分组中发送SACK消息。内容网关420解析这些确认中的有效载荷,并在确认直到序列#6的序列号的由省略号493指示的TCP数据分组中向TCP服务器410转发数据。
数据分组的进一步交换也由省略号493和494指示。如上所述,使用TCP服务器410的服务器在由TCP服务器发送的确认数据中提供所请求的服务,该所请求的服务通常至少部分地基于客户端如何响应。由于数据分组451b、453b和454b被以适时方式确认并且由于“TCP快速重发”使得452a被像数据分组457a一样迅速重发,所以(例如,图4A中图示的持续时间412的)重传定时器没有期满并且拥塞控制没有被调用。相对于图4A中图示的过程,网络效率没有受到消极影响。
注意,TCP服务器410没有像图4A中图示的流程中所作的那样重发具有序列#3、#4、#5和#6的TCP数据分组。来自TCP服务器410的这种重传处理所需的处理和带宽资源不再被浪费,所以进一步的消极影响可以被避免。另外,客户端利用TCP快速重发算法,而不是等待超时才重发序列#2。
在一些实施例中,不在内容网关处进行解析而被转发的数据量被限制以禁止协同操作的TCP客户端和TCP服务器之间的欺骗性的TCP通信。这种协同操作的TCP客户端和TCP服务器可以通过同意在它们的通信中跳过早期的序列号尝试在内容网关处规避收费。跳过的序列号将中断网关处的解析(和依赖于这种解析的收费),但是不会阻止TCP分组的转发。
为了限制这种协同操作的益处,在某些最大数量的数据被转发之后或者在某些最大数量的时间流逝之后,在不接收丢失的有序数据分组的情况下,欺骗性的TCP端节点、内容网关停止转发。该最大数量由用于使用内容网关的子网络的网络管理者确定。例如,在0.6秒以及66000字节被转发之后,TCP客户端应该已经接收到若干SACK,并且已经重发了具有丢失的序列号的数据分组。如果没有,则指示是欺骗性的协同操作。所以,在一些实施例中,在0.6秒之后或者在66000字节之后(以最先发生的为准),转发被停止。
在一些实施例中,在SACK被要求之前,时间或数据的数量或它们二者的数量在早期数据分组中被协商或指示。在一些实施例中,所协商的值被用来确定在不进行解析的情况下将要转发的数据的最大数量。为了防止协同操作的端节点协商一个过高的值,在某些实施例中,如果其大于网络管理者设置的一些预先确定的值,则所协商的数量不被使用。
在一些实施例中,不论所协商的数量如何,数据分组都在不进行解析的情况下被转发,直到足够的SACK数据分组在内容网关处被从TCP客户端接收并被内容网关转发后的小段时间已触发TCP服务器的重发为止。在一些实施例中,不论所协商的数量如何,在内容网关处从TCP服务器接收到足够的SACK数据分组之后,仅有来自客户端的一个额外数据分组在不进行解析的情况下被转发。在一些实施例中,考虑到网关420和TCP服务器410之间的通信并不是完美的,允许一个或多个额外的数据分组或确认。本领域普通技术人员能够通过实验确定有多少额外的确认或数据分组应该被允许以防止不是由欺骗性的行为导致的转发的过于频繁的中止。
网络管理者能够通过合理实验来确定不经过解析而进行转发的最大数量。网络管理者通过转发乱序分组来平衡网络操作的效率和丢失对于协同操作的欺骗性端节点的收入的危险。
4.0内容网关处的方法
图5示出了用于在诸如内容网关160之类的内容网关上进行解析的高级别方法500。尽管出于说明目的,图5中的步骤被以特定次序示出,但是在其他实施例中,一个或多个步骤可以以不同的次序、在时间上重叠地、或者串行或并行地执行,或者一个或多个步骤可以被省略或被添加,或者在一些方式的组合中被改变。
在步骤502中,接收指示将要转发的乱序分组的最大数目的数据。可以使用任何方法来接收这个数据。例如,在各种实施例中,该数据被作为默认值包括在软件指令中,被作为来自本地或远程节点上的网络管理者的人工输入而接收,被从本地文件或数据库中检索出来,或者被响应于查询或主动从网络上的不同节点发送,或者该数据被使用这些方法中的一些结合而接收。在一些实施例中,步骤502被省略。例如,在用户可信或使用其他机制来阻止欺骗的实施例中,步骤502被省略。
出于说明目的,假设在步骤502期间接收的数据指示以下事项中的哪项最先出现就触发快速重发:0.5秒;或者64000个未解析的字节被转发;或者在充分确认之后有限数目的数据分组已经被接收。
在其他实施例中,网络管理者通过实验确定什么最大量具有平衡良好的网络性能和从未被解析并可能是欺骗性的数据分组的容许转发的期望结果的作用。
在步骤510中,接收对于特定流的有序数据分组。例如,在步骤510期间,接收TCP数据分组451a。
在步骤520中,确定数据分组是否顺序错误,例如,确定刚接收的数据分组中的序列号是否晚于下一个期望的序列号。如果不是,则控制传递到步骤580。
在步骤580,出于任何目的,像现有技术的内容网关一样正常对数据分组进行解析并进行转发。例如,TCP数据分组451被解析用于收费目的。然后,控制传递到步骤582。
在步骤582中,确定具有接下来的期望序列号的任何数据分组是否被存储。如果没有,则控制回传到步骤510,以接收该流的下一个数据分组。如果是,则控制传递到步骤584,以解析具有下一个序列值的数据分组,但不对其进行转发(其在被存储时已经被转发)。然后控制回传到步骤582。
例如,当在步骤510中接收到具有丢失的序列号#2的TCP数据分组457a时,在步骤580中该数据分组被解析并转发。在步骤582中,确定具有下一个序列#3的数据分组被存储;并且控制传递到步骤584以解析所存储的具有序列#3的TCP数据分组453a。在步骤582,确定具有下一个序列#4的数据分组被存储;并且控制回传到步骤584,以解析所存储的具有序列#4的TCP数据分组454a。这个循环重复,直到没有被存储的数据分组或者所存储的下一个数据分组超过了下一个期望的序列号为止;然后控制传递到步骤510以接收由省略号493指示的TCP数据分组。在一些实施例中,在解析之后将所存储的数据分组标记为删除。如果不是下一个期望序列号的数据分组被存储,则该分组不被解析,但被保留在存储器中用于在跳过的分组被接收时进行解析。
如果在步骤520中确定在步骤510中接收的数据分组顺序错误,则控制传递到步骤530。在步骤530,数据分组被存储用于随后进行解析。然后控制传递到步骤540。
在步骤540,确定将要转发的最大数量的乱序分组是否已经被转发。如果是,则不转发该分组,并且控制传递到步骤510,以接收该流的下一个有序数据分组。
可以使用任何方法来确定将要转发的最大数量是否已经被转发。在所示出的实施例中,确定从第一个乱序分组被转发开始是否经过了0.5秒、或者如果当前数据分组被转发是否有超过64000个字节将被转发、或者是否接收了充分确认之后的有限数目的数据分组,以触发快速重发。如果这些条件没有一个被满足,则控制传递到步骤550。
例如,当接收到TCP数据分组453a时,还没有转发乱序数据分组,并且用于流逝的时间的计数器还没有开始,所以控制传递到步骤550。
在步骤550,数据分组被转发。例如,TCP数据分组453a被作为TCP数据分组453b转发。
在步骤560,所转发的数量增加。例如,时钟计数器被初始化,并且所转发的比特数目增加了数据分组453a的大小。然后,控制传回步骤510,以接收该流的下一个有序数据分组。
在一些实施例中,步骤540和560被省略。例如,在用户可信或利用其他机制来阻止欺骗的实施例中,步骤540和步骤560被省略。
5.0实现机制一硬件综述
图6示出了可以在其上实现本发明的实施例的计算机系统600。使用在诸如路由器设备之类的网络元件上运行的一个或多个计算机程序来实现优选实施例。所以,在这个实施例中,计算机系统600是路由器。
计算机系统600包括用于在计算机系统600的内部和外部部件之间传递信息的诸如总线610之类的通信机制。信息被表示为可测量现象的物理信号,一般为电压,但是在其他实施例中,包括诸如磁、电磁、压力、化学、分子原子和量子相互作用之类的现象。例如,北和南磁场、或者零和非零电压表示二进制位(比特)的两个状态(0,1)。二进制位序列组成了被用于表示特性的数目或编码的数字数据。总线610包括很多平行的信息导体,从而信息在耦合至总线610的设备中间被迅速传输。用于处理信息的一个或多个处理器602与总线610相耦合。处理器602对信息执行一组操作。该组操作包括从总线610获取信息和将信息放置在总线610上。该组操作一般还包括比较两个或两个以上的信息单元、移动信息单元的位置、以及通过诸如加法或乘法来结合两个或两个以上信息单元。将被处理器602执行的操作序列组成了计算机指令。
计算机系统600还包括耦合至总线610的存储器604。诸如随机存取存储器(RAM)或其他动态存储设备之类的存储器604存储包括计算机指令在内的信息。动态存储器允许这里存储的信息被计算机系统600改变。RAM允许存储在被称为存储器地址的位置处的信息单元独立于相邻地址处的信息而被存储和检索。存储器604还可以被处理器602用来在计算机指令的执行期间存储暂态值。计算机系统600还包括耦合至总线610的、用于存储不会被计算机系统600改变的包括指令在内的静态信息的只读存储器(ROM)606或其他静态存储设备。耦合至总线610的还有即使在计算机系统600被关闭或者断电时也会继续存在的用于存储包括指令在内的信息的磁盘或光盘。
在这里使用的术语“计算机可读介质”指参与向处理器602提供包括用于执行的指令在内的信息的任何介质。这种介质可以采取很多形式,包括但不限于非易失性介质、易失性介质以及传输介质。非易失性介质包括例如存储设备608之类的光盘或磁盘。易失性介质包括例如动态存储器604。传输介质包括例如同轴电缆、铜线、光缆、以及在没有电线或缆线的情况下通过空间传播的波(包括无线电、光学和红外波在内,诸如声波和电磁波)。在传输介质上传送的信号在这里被称为载波。
计算机可读介质的常见形式包括例如软盘、软磁盘、硬盘、磁带或任何其他磁介质、光盘ROM(CD-ROM)、数字视频盘(DVD)或任何其他光介质、穿孔卡、纸带、或具有孔洞图样的任何其他物理介质、RAM、可编程ROM(PROM)、可擦除PROM(EPROM)、FLASH-EPROM、或任何其他存储器芯片或盒式磁带、载波或任何其他计算机可以从其进行读取的介质。
包括指令在内的信息被从诸如具有键盘(该键盘包含由人类用户操作的字母数字键)或传感器的终端之类的外部终端612提供给总线610,以供处理器使用。传感器检测其邻近区域中的状况,并将这些检测转变为与用于表示计算机系统600中的信息的信号相兼容的信号。主要用于与人类交互的耦合至总线610的终端612的其他外部部件包括用于呈现图像的显示设备(诸如阴极射线管(CRT)、液晶显示器(LCD)或等离子屏幕)以及用于控制呈现在显示器上的小光标图像的位置并发布与呈现在终端612的显示器上的制图元素相关联的命令的定位设备(诸如鼠标、跟踪球或光标方向键)。在一些实施例中,终端612被省略。
计算机系统600还包括耦合至总线610的通信接口670的一个或多个实例。通信接口670向诸如打印机、扫描仪、外部磁盘以及终端612之类的以它们自身的处理器进行操作的各种外部设备提供双向通信耦合。计算机系统600中运行的硬件或软件提供终端接口或基于特性的命令接口,从而外部命令可以被给到计算机系统。例如,通信接口670可以是串行端口或者并行端口,诸如RS-232或RS-422接口或者个人计算机上的通用串行总线(USB)。在一些实施例中,通信接口670是综合业务数字网(ISDN)卡或数字用户线路(DSL)卡或向相应类型的电话线路提供信息通信连接的电话调制器。在一些实施例中,通信接口670是将总线610上的信号转换为用于同轴电缆上的通信连接的信号或者转换为用于光缆上的通信连接的光信号的线缆调制解调器。作为另一个示例,通信接口670可以是局域网(LAN)卡,以提供到诸如以太网之类的兼容LAN的数据通信连接。也可以实现无线链路。对于无线链路,通信接口670发送和接收承载诸如数字数据的信息流的电的、声学的、或者电磁的信号(包括红外和光信号在内)。这些信号是载波的示例。
在所示出的实施例中,诸如专用集成电路(IC)620的专用硬件被耦合至总线610。专用硬件被配置为执行为专门目的而执行的操作,这些操作不能被处理器602足够快地执行。专用IC的示例包括用于生成图像进行显示的图形加速器卡、用于加密和解密网络上发送的消息的密码板、语音识别、以及去往特定外部设备的接口,诸如重复执行在硬件中被更有效地执行的一些复杂的操作序列的机器人臂和医学扫描装备。在一个或多个有形介质中编码的逻辑包括计算机指令和专用硬件中的一个或它们二者。
在所示出的用作路由器的计算机中,计算机系统600包括作为用于在网络上交换信息流的专用硬件的交换系统630。交换系统630一般包括诸如通信接口670之类的多个通信接口,用于耦合到多个其他设备。一般而言,每个耦合是与连接至诸如所阐述的实施例中的本地网络680中的其他设备或附接到本地网络680的其他设备的网络链路632的耦合,其中具有其自身的处理器的各种外部设备连接至该本地网络680。在一些实施例中,输入接口或输出接口或者它们二者被连接至一个或多个外部网络元件中的每一个。尽管三个网络链路632a、632b和632c被包括在所阐述的实施例中的网络链路632中,但是在其他实施例中,更多或更少的链路被连接至交换系统630。网络链路632一般通过一个或多个网络向使用或处理信息的其他设备提供信息通信。例如,网络链路632b可以通过本地网络680向由互联网服务提供商(ISP)操作的主计算机682或设备684提供连接。ISP设备684又通过现在统称为互联网690的公用的、世界范围分组交换通信网络的网络来提供数据通信服务。连接至互联网的计算机(称为服务器692)响应于在互联网上接收的信息而提供服务。例如,服务器692提供用于交换系统630的路由信息。
交换系统630包括被配置为执行与在网络680的元件中传递信息(包括传递沿着一条网络链路,例如632a接收的信息,作为相同或不同网络链路,例如632c上的输出)相关联的交换功能。交换系统630根据预先确定的协议和公知的惯例将在输入接口上到达的信息量交换到输出接口。在一些实施例中,交换系统630包括其自身的处理器和存储器,以在软件中执行一些交换功能。在一些实施例中,交换系统630依赖于处理器602、存储器604、ROM606、存储设备608或一些结合来在软件中执行一个或多个交换功能。例如,与执行特定协议的处理器604协同操作的交换系统630可以确定在链路632a上的输入接口上到达的数据分组的目的地并利用链路632c上的输出接口将其发送到正确的目的地。目的地可以包括主机682、服务器692、连接至本地网络680或互联网690的其他终端设备、或本地网络680或互联网690中的其他路由和交换设备。
本发明涉及使用计算机系统600来实现本文中描述的技术。根据本发明的一个实施例,这些技术由计算机系统响应于执行存储器604中包含的一个或多个序列的一个或多个指令的处理器602而执行。这些指令(也称为软件和程序编码)可以被从诸如存储设备608之类的另一个计算机可读介质读入存储器604中。包含在存储器604中的指令序列的执行使得处理器602执行本文中描述的方法步骤。在替代实施例中,诸如专用集成电路620和交换系统630中的电路之类的硬件可以替代软件而被用来执行本发明,或者可以被与软件结合来执行本发明。所以,本发明的实施例不限于硬件和软件的任何具体结合。
通过诸如接口670之类的通信接口在网络链路632和其他网络上传送的信号(该信号承载去往和来自计算机系统600的信息)是示例形式的载波。计算机系统600可以通过网络链路632和诸如接口670之类的通信接口,经由其中的网络689、690来发送和接收包括程序编码在内的信息。在使用互联网690的示例中,服务器692通过交换系统630中的通信接口,传送由从计算机600通过互联网690、ISP设备684、本地网络680和网络链路632b发送的消息所请求的用于特定应用的程序编码。所接收的数据在被接收时可以由处理器602或交换系统630执行,或者可以被存储在存储设备608或者其他非易失性存储器或者它们二者中用于随后执行。这样,计算机系统600可以以载波的形式获取应用程序编码。
在向处理器602承载一个或多个序列的指令或数据或它们二者以用于执行时将会涉及各种形式的计算机可读介质。例如,指令和数据最初可以被承载在诸如主机682之类的远程计算机的磁盘上。远程计算机将指令和数据装载到它的动态存储器中,并使用调制解调器在电话线路上发送指令和数据。计算机系统600本地的调制解调器接收电话线路上的指令和数据,使用红外发射机将指令和数据转换为红外信号,其中,载波充当网络链路632b。充当交换系统630中的通信接口的红外探测器接收红外信号中承载的指令和数据,并将代表这些指令和数据的信息放置到总线610上。总线610将信息承载到存储器604,然后处理器602使用利用指令发送的一些数据来从存储器604检索并执行指令。在处理器602或交换系统603执行之前或之后,在存储器604中接收的指令和数据可以可选地被存储在存储设备608上。
6.0扩展和替代
在前述说明书中,参考具体实施例描述了本发明。但是显然,在不脱离本发明的更宽的精神和范围的条件下可以对本发明进行各种修改和改变。因此,说明书和附图应该被认为是说明性的而不是限制性的意义。

Claims (12)

1.一种解析数据分组的方法,包括:
在网络的本地节点接收来自源节点、去往目的地节点的多个有序数据分组,其中所述多个有序数据分组包括第一数据分组、第三数据分组、和第四数据分组并且是传输控制协议(TCP)数据分组;
通过所述本地节点确定所述第三数据分组和所述第四数据分组顺序错误且不能被解析;
通过所述本地节点发送仅确认去往所述目的地节点的所述第一数据分组的接收的选择性确认(SACK);以及
通过所述本地节点存储所述第三数据分组和所述第四数据分组,其中所述第三数据分组和所述第四数据分组没有被解析并且被停止转发去往所述目的地节点,并且在第二数据分组通过所述本地节点被接收、解析、并被转发去往所述目的地节点之后,所存储的第三数据分组和第四数据分组被解析并转发。
2.根据权利要求1所述的解析数据分组的方法,其中:
所述方法还包括接收指示将要转发的乱序数据的最大数量的数据;以及
所述转发的步骤还包括以下步骤:
确定所述多个有序数据分组中的已转发的数据量,其中所述已转发的数据数量是自从接收到所述多个有序数据分组中的最早的乱序数据分组开始已转发的数据量;
确定所述已转发的数据量是否小于所述最大数量,以及
仅在所述已转发的数据量小于所述最大数量的情况下,执行在解析所述多个有序数据分组中的被选择的一个有序数据分组之前向所述目的地节点转发所述多个有序数据分组中的所述被选择的一个有序数据分组的步骤。
3.根据权利要求2所述的解析数据分组的方法,其中所述将要转发的乱序数据的最大数量基于对于未被描述用于网络管理的有序数据分组的容限。
4.根据权利要求1所述的解析数据分组的方法,其中所述本地节点是所述网络的内容感知网关节点。
5.根据权利要求1所述的解析数据分组的方法,其中所述第一有序数据分组是传输控制协议(TCP)数据分组。
6.根据权利要求5所述的解析数据分组的方法,其中所述多个有序数据分组是TCP会话。
7.根据权利要求1所述的解析数据分组的方法,其中所述本地节点将对所述多个有序数据分组进行解析,以确定用于确定对于所述源节点的用户、所述目的地节点的用户或它们二者的收费数量的所述多个有序数据分组中的特定数据。
8.根据权利要求1所述的解析数据分组的方法,还包括确定在所述第三有序数据分组之前的所述多个有序数据分组中的期望数据分组是否还没有在所述本地节点处被接收。
9.一种解析数据分组的设备,包括:
用于在本地节点接收来自源节点、去往目的地节点的多个有序数据分组的装置,其中所述多个有序数据分组包括第一数据分组、第三数据分组、和第四数据分组并且是传输控制协议(TCP)数据分组;
用于通过所述本地节点确定所述第三数据分组和所述第四数据分组顺序错误且不能被解析的装置;
用于通过所述本地节点发送仅确认去往所述目的地节点的所述第一数据分组的接收的选择性确认(SACK)的装置;以及
用于通过所述本地节点存储所述第三数据分组和所述第四数据分组的装置,其中所述第三数据分组和所述第四数据分组没有被解析并且被停止转发去往所述目的地节点,并且在第二数据分组通过所述本地节点被接收、解析、并被转发去往所述目的地节点之后,所存储的第三数据分组和第四数据分组被解析并转发。
10.根据权利要求9所述的解析数据分组的设备,其中:
所述设备还包括用于接收指示将要转发的乱序数据的最大数量的数据的装置;以及
所述用于转发的装置还包括:
用于确定所述多个有序数据分组中的已转发的数据量的装置,其中所述已转发的数据数量是自从接收所述多个有序数据分组中的最早的乱序数据分组开始已转发的数据量;
用于确定所述已转发的数据量是否小于所述最大数量的装置,以及
用于仅在所述已转发的数据量小于所述最大数量的情况下执行在对所述多个有序数据分组中的被选择的一个有序数据分组进行解析之前向所述目的地节点转发所述多个有序数据分组中的所述被选择的一个有序数据分组的步骤的装置。
11.根据权利要求10所述的解析数据分组的设备,其中所述将要转发的乱序数据的最大数量基于对于未被描述用于网络管理的有序数据分组的容限。
12.根据权利要求9所述的解析数据分组的设备,其中所述设备被配置为所述网络的内容感知网关节点。
CN200880012699.6A 2007-04-20 2008-04-16 在网络的内容网关处对乱序数据分组的解析 Active CN101663590B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/738,358 2007-04-20
US11/738,358 US7864771B2 (en) 2007-04-20 2007-04-20 Parsing out of order data packets at a content gateway of a network
PCT/US2008/060417 WO2008130965A1 (en) 2007-04-20 2008-04-16 Parsing out of order data packets at a content gateway of a network

Publications (2)

Publication Number Publication Date
CN101663590A CN101663590A (zh) 2010-03-03
CN101663590B true CN101663590B (zh) 2014-01-22

Family

ID=39872116

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880012699.6A Active CN101663590B (zh) 2007-04-20 2008-04-16 在网络的内容网关处对乱序数据分组的解析

Country Status (4)

Country Link
US (2) US7864771B2 (zh)
EP (1) EP2140279B1 (zh)
CN (1) CN101663590B (zh)
WO (1) WO2008130965A1 (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091466A1 (en) 2006-10-16 2008-04-17 Hospira, Inc. System and method for comparing and utilizing activity information and configuration information from multiple device management systems
US7864771B2 (en) * 2007-04-20 2011-01-04 Cisco Technology, Inc. Parsing out of order data packets at a content gateway of a network
KR101535182B1 (ko) * 2007-09-18 2015-07-09 삼성전자주식회사 이동통신 시스템의 메시지 전송 장치 및 방법
US9008618B1 (en) * 2008-06-13 2015-04-14 West Corporation MRCP gateway for mobile devices
US8271106B2 (en) 2009-04-17 2012-09-18 Hospira, Inc. System and method for configuring a rule set for medical event management and responses
US8345680B2 (en) * 2009-05-07 2013-01-01 Alcatel Lucent Handling out-of-sequence packets in a circuit emulation service
US8248944B2 (en) * 2010-03-04 2012-08-21 Microsoft Corporation Selectively disabling reliability mechanisms on a network connection
JP5601029B2 (ja) * 2010-05-27 2014-10-08 ソニー株式会社 通信装置及び通信方法、並びにコンピューター・プログラム
CN102684852A (zh) 2011-03-31 2012-09-19 北京新岸线无线技术有限公司 一种用于帧确认的方法和装置
EP2713549A4 (en) * 2011-06-17 2014-06-11 Huawei Tech Co Ltd TRANSMISSION METHOD AND DETECTION METHOD FOR A PACKAGE INFORMATION PACKAGE, FLOOR SIGNAL SYSTEM AND RADIO BLOCK CENTER (RBC)
CA2852271A1 (en) 2011-10-21 2013-04-25 Hospira, Inc. Medical device update system
CN102694631B (zh) * 2012-05-23 2015-03-18 华为技术有限公司 一种用于控制数据传输的方法和装置
US10009445B2 (en) * 2012-06-14 2018-06-26 Qualcomm Incorporated Avoiding unwanted TCP retransmissions using optimistic window adjustments
US9015438B2 (en) 2012-12-03 2015-04-21 Aruba Networks, Inc. System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores
US9467326B2 (en) 2012-12-03 2016-10-11 Hewlett-Packard Development Company, L.P. Rate limiting mechanism based on device load/capacity or traffic content
AU2014225658B2 (en) 2013-03-06 2018-05-31 Icu Medical, Inc. Medical device communication method
US9596192B2 (en) 2013-03-15 2017-03-14 International Business Machines Corporation Reliable link layer for control links between network controllers and switches
US9609086B2 (en) 2013-03-15 2017-03-28 International Business Machines Corporation Virtual machine mobility using OpenFlow
US9769074B2 (en) 2013-03-15 2017-09-19 International Business Machines Corporation Network per-flow rate limiting
WO2015031774A1 (en) 2013-08-30 2015-03-05 Hospira, Inc. System and method of monitoring and managing a remote infusion regimen
US9124673B2 (en) * 2013-09-30 2015-09-01 Intel IP Corporation Transmission control protocol (TCP) based video streaming
US10311972B2 (en) 2013-11-11 2019-06-04 Icu Medical, Inc. Medical device system performance index
WO2015077320A1 (en) 2013-11-19 2015-05-28 Hospira, Inc. Infusion pump automation system and method
US9461931B1 (en) * 2014-03-03 2016-10-04 Sonus Networks, Inc. Methods and apparatus for preventing head of line blocking for RTP over TCP
US9764082B2 (en) 2014-04-30 2017-09-19 Icu Medical, Inc. Patient care system with conditional alarm forwarding
US9724470B2 (en) 2014-06-16 2017-08-08 Icu Medical, Inc. System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy
US9539383B2 (en) 2014-09-15 2017-01-10 Hospira, Inc. System and method that matches delayed infusion auto-programs with manually entered infusion programs and analyzes differences therein
CN104572999B (zh) * 2015-01-07 2020-02-07 北京数码大方科技股份有限公司 基于异构数据的错误数据的检测方法和装置
EP3353951A1 (en) 2015-09-25 2018-08-01 FSA Technologies, Inc. Multi-trunk data flow regulation system and method
US20170295099A1 (en) * 2016-04-11 2017-10-12 Arista Networks, Inc. System and method of load balancing across a multi-link group
CA3030786A1 (en) 2016-07-14 2018-01-18 Icu Medical, Inc. Multi-communication path selection and security system for a medical device
US10367752B2 (en) * 2016-11-18 2019-07-30 International Business Machines Corporation Data packet management in a memory constrained environment
CA3106519A1 (en) 2018-07-17 2020-01-23 Icu Medical, Inc. Systems and methods for facilitating clinical messaging in a network environment
WO2020018388A1 (en) 2018-07-17 2020-01-23 Icu Medical, Inc. Updating infusion pump drug libraries and operational software in a networked environment
US11483403B2 (en) 2018-07-17 2022-10-25 Icu Medical, Inc. Maintaining clinical messaging during network instability
US11139058B2 (en) 2018-07-17 2021-10-05 Icu Medical, Inc. Reducing file transfer between cloud environment and infusion pumps
US10692595B2 (en) 2018-07-26 2020-06-23 Icu Medical, Inc. Drug library dynamic version management
CA3107315C (en) 2018-07-26 2023-01-03 Icu Medical, Inc. Drug library management system
CN109362053A (zh) * 2018-11-14 2019-02-19 中科院微电子研究所昆山分所 无线传感网数据处理方法、网关及设备
WO2022056830A1 (en) * 2020-09-18 2022-03-24 Qualcomm Incorporated Fast retransmission of a pdu session establishment request after a lower layer failure

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1754348A (zh) * 2003-02-27 2006-03-29 皇家飞利浦电子股份有限公司 用于避免tcp包在移动设备切换期间重新发送的方法及系统

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6990069B1 (en) * 1997-02-24 2006-01-24 At&T Corp. System and method for improving transport protocol performance in communication networks having lossy links
US5974028A (en) * 1997-02-24 1999-10-26 At&T Corp. System and method for improving transport protocol performance in communication networks having lossy links
ATE336131T1 (de) * 2000-02-04 2006-09-15 Aladdin Knowledge Systems Ltd Schutz von computernetzen gegen böswillige inhalte
JP3994614B2 (ja) * 2000-03-13 2007-10-24 株式会社日立製作所 パケット交換機、ネットワーク監視システム及びネットワーク監視方法
US6757248B1 (en) * 2000-06-14 2004-06-29 Nokia Internet Communications Inc. Performance enhancement of transmission control protocol (TCP) for wireless network applications
US6958997B1 (en) * 2000-07-05 2005-10-25 Cisco Technology, Inc. TCP fast recovery extended method and apparatus
US6381242B1 (en) * 2000-08-29 2002-04-30 Netrake Corporation Content processor
US7203657B1 (en) * 2000-09-05 2007-04-10 Noam Eli M General packet-based payment and transaction method and system
US6882654B1 (en) * 2000-11-14 2005-04-19 Cisco Technology, Inc. Packet data analysis with efficient buffering scheme
US6775235B2 (en) * 2000-12-29 2004-08-10 Ragula Systems Tools and techniques for directing packets over disparate networks
US7061856B2 (en) * 2001-02-05 2006-06-13 The Board Of Trustees Of The Leland Stanford Junior University Data throughput over lossy communication links
US7120149B2 (en) * 2001-02-28 2006-10-10 Ericsson Inc. Methods and system for resequencing out of order data packets
US20020199098A1 (en) * 2001-06-08 2002-12-26 Davis John M. Non-invasive SSL payload processing for IP packet using streaming SSL parsing
US7089312B2 (en) * 2001-09-20 2006-08-08 Intel Corporation System and method for reducing retransmissions due to tunneled TCP-in-TCP communication in a network
WO2004021626A2 (en) * 2002-08-30 2004-03-11 Broadcom Corporation System and method for handling out-of-order frames
US8233392B2 (en) * 2003-07-29 2012-07-31 Citrix Systems, Inc. Transaction boundary detection for reduction in timeout penalties
US7630305B2 (en) * 2003-07-29 2009-12-08 Orbital Data Corporation TCP selective acknowledgements for communicating delivered and missed data packets
ATE387051T1 (de) * 2003-02-27 2008-03-15 Koninkl Philips Electronics Nv Verfahren und drahtloser komponent zur vermeidung von tcp paketwiederübertragung während des weiterreichens eines mobilgeräts
US7269727B1 (en) * 2003-08-11 2007-09-11 Cisco Technology, Inc. System and method for optimizing authentication in a network environment
US7385923B2 (en) * 2003-08-14 2008-06-10 International Business Machines Corporation Method, system and article for improved TCP performance during packet reordering
WO2005027456A1 (ja) * 2003-09-18 2005-03-24 Nomura Research Institute Co., Ltd. 通信システム、通信装置、およびデータの再送制御方法
US7586948B2 (en) * 2003-12-24 2009-09-08 Agere Systems Inc. Packet sub-frame structure for selective acknowledgment
US20050165985A1 (en) * 2003-12-29 2005-07-28 Vangal Sriram R. Network protocol processor
US7826457B2 (en) * 2004-05-11 2010-11-02 Broadcom Corp. Method and system for handling out-of-order segments in a wireless system via direct data placement
US20060072595A1 (en) * 2004-10-05 2006-04-06 Cisco Technology, Inc. System and method for service tagging for enhanced packet processing in a network environment
US7924731B2 (en) * 2004-11-15 2011-04-12 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for handling out-of-sequence packets in header decompression
US7480301B2 (en) * 2004-12-16 2009-01-20 International Business Machines Corporation Method, system and article for improved TCP performance during retransmission in response to selective acknowledgement
DE602004017526D1 (de) * 2004-12-22 2008-12-11 Ericsson Telefon Ab L M Datenflusssteuerung mit doppelter quittierung
US7366132B2 (en) * 2005-03-30 2008-04-29 At&T Corp. Loss tolerant transmission control protocol
GB2430577B (en) * 2005-09-23 2010-09-22 Agilent Technologies Inc Real time monitoring of TCP flows
US7496038B2 (en) * 2005-12-12 2009-02-24 International Business Machines Corporation Method for faster detection and retransmission of lost TCP segments
US7782862B2 (en) * 2006-01-13 2010-08-24 Alcatel-Lucent Usa Inc. Method for controlling packet delivery in a packet switched network
WO2007149743A2 (en) * 2006-06-19 2007-12-27 Liquid Computing Corporation Token based flow control for data communication
US7864771B2 (en) 2007-04-20 2011-01-04 Cisco Technology, Inc. Parsing out of order data packets at a content gateway of a network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1754348A (zh) * 2003-02-27 2006-03-29 皇家飞利浦电子股份有限公司 用于避免tcp包在移动设备切换期间重新发送的方法及系统

Also Published As

Publication number Publication date
EP2140279A4 (en) 2012-08-08
EP2140279B1 (en) 2014-01-15
US20100172356A1 (en) 2010-07-08
US20080259926A1 (en) 2008-10-23
WO2008130965A1 (en) 2008-10-30
EP2140279A1 (en) 2010-01-06
US7864771B2 (en) 2011-01-04
CN101663590A (zh) 2010-03-03
US8194675B2 (en) 2012-06-05

Similar Documents

Publication Publication Date Title
CN101663590B (zh) 在网络的内容网关处对乱序数据分组的解析
US9716636B2 (en) Techniques for accounting for multiple transactions in a transport control protocol (TCP) payload
JP5038515B2 (ja) データ伝送
US7554992B2 (en) Mobile device communications system and method
US7738495B2 (en) Method of determining a maximum transmission unit value of a network path using transport layer feedback
US7502860B1 (en) Method and apparatus for client-side flow control in a transport protocol
US7003575B2 (en) Method for assisting load balancing in a server cluster by rerouting IP traffic, and a server cluster and a client, operating according to same
CN1812405B (zh) 在请求-响应传输协议上的可靠单向消息传送的方法
US20040001433A1 (en) Interactive control of network devices
US20220303220A1 (en) Delaying Layer 2 Frame Transmission
JP3966711B2 (ja) 代理応答方法
JPH11252179A (ja) 非対称回線用tcp通信高速化装置
CN102007473A (zh) 网络元件的处理节点之间的diameter总线通信
US8484370B1 (en) Method and system for efficient extended data communications using GPRS
CN100541437C (zh) 防止网络重置拒绝服务攻击
US7151780B1 (en) Arrangement for automated teller machine communications based on bisync to IP conversion
CN113438155B (zh) 虚拟多链路的智能可靠的udp传输方法、装置和设备
US7623546B1 (en) Latency improvement for file transfers over network connections
US7454474B2 (en) Method for transmitting and receiving data between entities in home network remote management system
Phung et al. Enhancing rest http with random linear network coding in dynamic edge computing environments
Rajhi et al. Comparison between automatic repeat request (ARQ) protocols and solving the buffer problem
CN100379200C (zh) 用于处理数据流中的信息的系统和方法
US20100165838A1 (en) Method and apparatus for improving data throughput in a network
Natarajan Leveraging innovative transport layer services for improved application performance
WO2009074840A2 (en) Separately transmitting part of protocol information

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