CN101645843B - 一种用于网络堆栈的数据通道加速的装置及方法 - Google Patents

一种用于网络堆栈的数据通道加速的装置及方法 Download PDF

Info

Publication number
CN101645843B
CN101645843B CN200910159230.1A CN200910159230A CN101645843B CN 101645843 B CN101645843 B CN 101645843B CN 200910159230 A CN200910159230 A CN 200910159230A CN 101645843 B CN101645843 B CN 101645843B
Authority
CN
China
Prior art keywords
packet
specific connection
data
self
internet protocol
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
CN200910159230.1A
Other languages
English (en)
Other versions
CN101645843A (zh
Inventor
费边·A·戈麦斯
利奥·卡普兰
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.)
Avago Technologies General IP Singapore Pte Ltd
Original Assignee
Zyray Wireless 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 Zyray Wireless Inc filed Critical Zyray Wireless Inc
Publication of CN101645843A publication Critical patent/CN101645843A/zh
Application granted granted Critical
Publication of CN101645843B publication Critical patent/CN101645843B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25

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

一种用于网络堆栈的数据通道加速的装置及方法
技术领域
本发明涉及网络堆栈的数据通道加速。
背景技术
数据包可通过广域网或局域网传输。使用设备来实现网络之间的连接,和/或实现网络与一个或多个设备的连接。例如,计算机网络中的设备或计算机网络系统可以是一个末端节点,用于起始和/或终结连接。计算机网络中的设备或计算机网络系统也可以是中间节点,负责将数据传递至该计算机网络中的另一节点。数据包可通过这些作为中间节点的设备传输。
发明内容
下文结合附图以及说明书对其中一个或多个实施例进行详细阐述。
根据本发明的一方面,本发明提出了一种装置,用于网络堆栈的数据通道加速,其包括:
流高速缓冲存储器(flowcache)模块,用于在运行期间使用特定连接的第一个数据包来获得属于所述特定连接的数据包的代码段的自定义序列(customsequence);和
解析器模块,用于使用数据包的互联网协议(IP)元组(tuple)来识别属于所述特定连接的数据包;
其中,所述流高速缓冲存储器模块将所述代码段的自定义序列应用于所述被识别的数据包。
作为优选,所述流高速缓冲存储器模块用于构建所述特定连接的自定义堆栈。
作为优选,所述流高速缓冲存储器模块用于使用C语言goto标签变量(gotoLabelsasValues)来构建所述特定连接的自定义堆栈,并将此自定义堆栈作为线程代码序列(threadedcodesequence)。
作为优选,所述解析器模块用于解析数据包的包头,以提取IP元组(IPtuple)。
作为优选,
所述解析器模块还用于检查数据包的包头;且
所述流高速缓冲存储器模块还用于基于检查过的包头排除属于所述特定连接的某些数据包类型。
作为优选,所述IP元组包括源地址、目的地址、协议类型、源端口和目的端口。
根据本发明的又一方面,本发明提出了一种方法:包括
在运行期间,使用特定连接的第一个数据包来获得属于所述特定连接的数据包的代码段的自定义序列(customsequence);
使用数据包的互联网协议元组(IPtuple)来识别属于所述特定连接的数据包;及
将所述代码段的自定义序列应用于所述被识别的数据包。
作为优选,所述在运行期间获得代码段的自定义序列包括构建所述特定连接的自定义堆栈。
作为优选,所述在运行期间获得代码段的自定义序列包括使用C语言goto标签变量(gotoLabelsasValues)来构建所述特定连接的自定义堆栈,并将此自定义堆栈作为线程代码序列(threadedcodesequence)。
作为优选,识别数据包包括解析数据包的包头,以提取IP元组(IPtuple)。
作为优选,该方法进一步包括:
检查数据包的包头;且
基于检查过的包头排除属于所述特定连接的某些数据包类型。
作为优选,所述IP元组包括源地址。目的地址、协议类型、源端口和目的端口。
根据本发明的再一方面,提供了一种用于执行数据包加速的计算机程序产品。所述计算机程序产品被切实的嵌入计算机可读媒介中,该计算机程序产品包括可执行代码。当执行这些可执行代码时,使得至少一个数据处理设备执行以下任务:
在运行期间,使用特定连接的第一个数据包来获得属于所述特定连接的数据包的代码段的自定义序列(customsequence);
使用数据包的互联网协议元组(IPtuple)来识别属于所述特定连接的数据包;及
将所述代码段的自定义序列应用于所述被识别的数据包。
作为优选,所述可执行代码被配置用于使得数据处理装置构建所述特定连接的自定义堆栈。
作为优选,所述可执行代码被配置用于使得数据处理装置使用C语言goto标签变量(gotoLabelsasValues)来构建所述特定连接的自定义堆栈,并将此堆栈作为线程代码序列(threadedcodesequence)。
作为优选,所述可执行代码被配置用于使得数据处理装置解析数据包的包头,以提取IP元组(IPtuple)。
作为优选,所述可执行代码被配置用于使得数据处理装置:
检查数据包的包头;且
基于检查过的包头排除属于所述特定连接的某些数据包类型。
作为优选,所述IP元组包括源地址。目的地址、协议类型、源端口和目的端口。
以下将结合附图通过具体实施例对本发明进行详细说明。
附图说明
图1是数据包处理系统的示例性框图;
图2是数据包处理过程的示例性流程图。
具体实施方式
通常,系统用于路由和桥接网络之间通信的数据包,和/或路由和桥接网络与一个或多个设备之间通信的数据包。例如,系统可以对来自第一个网络并输出至第二个网络的数据包进行路由和桥接。这种系统包括处理器,其用于通过判断数据包是否属于某一特定连接来决定是否加速通过设备的数据包流,如果属于该特定连接,则将码段的自定义序列应用于数据包,此处代码段的自定义序列是在运行期间基于对所述特定连接的第一个数据包的处理而获得。以这种方式,被识别为属于某一特定连接的数据包可以绕过操作系统网络堆栈并加速通过所述设备,从而提高数据包的吞吐量。
在其中一个优选实施例中,数据包可在广域网(WAN)和/或局域网(LAN)接口上接收。所述处理器通过使用流高速缓冲存储器软件(例如,计算机程序产品)来实现数据包的加速。该流高速缓冲存储器软件包括可执行代码,用于加速通过网络设备的数据包。
使用流高速缓冲存储器软件来处理数据包使能数据包处理从网络堆栈中卸载。流高速缓冲存储器软件被配置用于处理多数据包流和提供多种修改功能,包括网络地址转换(NAT)、以太网点对点协议(PPPoE)终止(termination)、虚拟局域网(VLAN)桥接、多播、速率限制、颜色标记和修整(shaping)。
参考图1,系统100用于处理数据包。系统100包括处理器102和网桥(bridge)104,网桥与处理器和其它组成部分通信,使得处理器和其它组成部分(未示出)之间能够通信。处理器102包括操作系统106。网络108与系统100通信。
在一个优选实施例中,系统100在单芯片上实现,用于多个不同的设备和解决方案。例如,系统100为高集成度的单芯片综合接入设备(IAD)解决方案,可用于网关、路由器、网桥、电缆调制解调器、数字用户线路(DSL)调制解调器、及其它网络设备和这些设备的一个或多个的任意组合。系统100可用于处理多数据流。在其它优选实施例中,系统100在多个共同配合操作(operateinconcerttogether)的芯片上实现。
网络108包括一个或多个与系统100通信连接的网络。例如,网络108包括与系统100通信连接的多个不同的网络。网络108可包括WAN、LAN、无源光网络(PON,PassiveOpticalNetwork)、吉比特无源光网络(GPON,gigabytepassiveopticalnetwork)以及任何其它类型的网络。系统100在不同的网络108之间提供一个接口,以处理网络108之间的上行数据包(例如,LAN至WAN)和下行数据包(例如,WAN至LAN)。虽然图1示出了网络108和系统100之间的一个入站数据通道和一个出站数据通道,可能会有多个不同的数据通道及有线和无线端口与多个不同的网络108通信。
处理器102包括用于处理数据包的处理器。处理器102用于处理一个或多个数据包流。在一个实施例中,处理器102包括单线程(singlethreaded)、单处理器解决方案。在另一个实施例中,处理器102包括多线程(multi-threaded)处理器解决方案。处理器102除了处理数据包外还可实现其它功能。
处理器102包括操作系统(OS)106。例如,操作系统106包括LinuxOS、MACOS、MicrosoftOS(诸如WindowsOS或VistaOS)、嵌入式可配置操作系统(eCos)、VxWorks、BSD(伯克利软件套件,BerkeleySoftwareDistribution)操作系统、QNX操作系统,或任何其它类型的操作系统。
操作系统106包括接收驱动器110、解析器模块112、带有表格(table)116的流高速缓冲存储器(flowcache)模块114、缓冲器日志(bufferlog)118、网络堆栈120和发送驱动器122。接收驱动器110用于接收网络108发送至系统100的数据包。接收驱动器110包括用于存储所接收的数据包的数据缓冲器(未示出)。例如,数据缓冲器在一些Oss中被称作“mbuf”,或者在LinuxOS中被称作“skbuff”。接收驱动器110可将数据包传递至解析器模块112。
解析器模块112使用数据包的互联网协议元组(IPtuple)来识别数据包。IP元组包括一个或多个数据包域。在一个优选实施例中,IP元组包括IP源地址、IP目的地址、IP协议类型、源端口、目的端口。例如,源端口和目的端口是上层传输协议(例如,传输控制协议(TCP)或用户数据报协议(UDP))的源端口和目的端口。
解析器模块112用于通过快速解析所接收的数据包包头来从数据包中提取IP元组。例如,解析器模块112从接收的二层(layer-2)包头中提取IP元组。解析器模块112可对IP元组计算哈希函数(hash)。解析器模块112使用计算得出的哈希函数来查找表格116,判断表格116中是否存在此IP元组的记录(entry)。表格116存储其数据包可被流高速缓冲存储器模块114加速的连接,表格信息可由应用于IP元组的哈希函数访问。如果表格116存在某记录,则认为是流缓存命中(flowcachehit);否则,认为是流缓存丢失(flowcachemiss)。在另一个优选实施例中,元组为一对二层域(acoupleoflayer2fields),这里的解析器模块112用于提取这些二层域。
如果表格116中不存在某记录(entry),则数据包的信息就会被登录入缓冲器日志118中。例如,在一个实施例中,二层包头,所接收数据包中的IP包头的偏移和该IP包头的特定域随同所接收包的IP元组哈希值一起被登录入缓冲器日志中,这里的特定域包括生存周期(timetolive,简称TTL)域、DSCP域和IP元组域。所接收的数据包进入网络堆栈120并沿着网络堆栈中的正常路径到达发送驱动器122。在发送驱动器122中,如果数据包有相关的缓冲器日志,则此数据包将被返回至流高速缓冲存储器模块114中。流高速缓冲存储器模块114将发送包头登录入缓冲器日志中,使用接收和发送的已登录(logged)包数据来计算代码段的自定义序列,并且在表格116中创建与所接收的IP元组哈希函数相对应的记录,以包含代码段的自定义序列以及所接受和发送包头的缓冲器日志。之后,数据包返回至发送驱动器122,后者将数据包转发回网络108以传送至其下一个目的地。
如果表格116中不存在记录,那么所接收的数据包可能为一特定连接所接收的第一个数据包。如果该连接的第一个数据包被确认为流高速缓冲存储器加速的对象,则表格116中就会创建一条记录,这样当解析器模块112检查该记录是否在表格116中时,此特定连接的后续数据包就是流缓存命中(flowcachehit)。在数据包由网络堆栈120处理时会被打上标记并被跟踪,这样可以确定该数据包处理步骤的顺序。
缓冲器日志118与接收的数据包直接或间接地相关。在一个实施例中,接收驱动器110使用缓冲器日志118来存储数据包。在一个直接相关的实施例中,缓冲器日志118中有一些预留余量(headroom)。例如,如果数据缓冲器的最大缓存为1800字节(byte),那么2048字节的数据包缓存器能够容纳前248字节的缓冲器日志和所接收数据包的数据存储容量。缓冲器日志118被分配2048个对齐存储(alignedmemory),使得从数据缓冲器内的指针到缓冲器日志的转换变为简单的低11位的清除操作。在另一个可替代的优选实施例中,缓冲器日志118能够间接地与数据缓冲器关联对象(contextobject)相关。
在检查IP元组流缓存击中之前,解析器模块112可检查与数据包相关的其它信息。例如,解析器模块112可检查二/三层(layer2/3)的包头,从是否在表格116中存在记录的判断中排除特定的数据包类型。例如,解析器模块112可检查二/三层(layer2/3)包头,以排除诸如广播或多播数据包、有关二层发现协议(discoveryprotocol)的数据包、属于特定段的数据包、激活控制协议(keepalivecontrolprotocol)数据包、分段(fragmented)数据包、和/或诸如TCP协议中RST/FIN比特的握手(in-hand)控制信令数据包。这些数据包类型被认为需要特定网络堆栈处理和无需录入IP元组便可直接传递至网络堆栈120。这些数据包类型可成为排除清单的一部分,解析器模块112在确定是否在表格116中存在记录之前先检查此清单。或者,解析器模块112可以在检查表格116中是否存在记录的同时或临近时刻检查此排除清单。
不属于此排除清单的、并有与其相关的缓冲器日志的数据包被假定是流高速缓冲存储器模块114加速(例如,软件加速)的对象。当数据包通过了网络堆栈120,这种假定就变得无效;例如如果数据包通过了诸如应用层网关的特定协议处理。在这种方案下,缓冲器日志118被释放(如果间接相关),此数据包被视作正常处理。
将要传送到下一个节点的数据包被传递至发送驱动器122。在发送驱动器122处,如果数据包仍然被标记为加速的对象,则使用每个二层封装(layer2encapsulation)的协议域来计算IP包头的偏移。登录过的接收包头信息和发送包头信息用于计算或推断有关数据包的信息。流高速缓冲存储器模块114使用登录过的接收包头信息和发送包头信息来判定有关数据包处理的信息。
例如,如果TTL减少,流高速缓冲存储器模块114就判定数据包属于被路由的(routed)连接。如果接收和发送的IP元组不同,流高速缓冲存储器模块114就判定数据包属于网络地址转换(NetworkAddressTranslation,简称NATed)连接(即进行网络地址转换处理的连接)。如果二层包头不同并且数据包未被路由,则流高速缓冲存储器模块114就判定该数据包属于网桥或交换(switch)连接。流高速缓冲存储器模块114还可判定数据包需要特定QOS二层标识(layer-2tagging)或DSCPIP修改。流高速缓冲存储器模块114还可以判定其它信息,诸如先前端口和目的端口、信道、发送队列等信息以及其它信息。
流高速缓冲存储器模块114用于将可应用的决定转换为已定义操作的序列,该序列需要应用于任何被其IP元组鉴别为属于该特定连接的未来数据包。流高速缓冲存储器模块114在运行期间,使用特定连接的第一个数据包信息来获得属于此特定连接的数据包的代码段的自定义序列(customsequence)。操作序列和相关数据进入流高速缓冲存储器对象,并使用接收的IP元组作为哈希密钥将其插入表格116中。以这种方式,流高速缓冲存储器模块114创建该特定连接的自定义堆栈。
在接收驱动器110接收的、在流缓存表格116中有IP元组击中的任何后续数据包将会执行存储在表格116中的操作的自定义序列。这样,这些后续的数据包不需被网络堆栈120处理,将旁路(bypass)网络堆栈120。在一个实施例中,代码段的自定义序列中最后一个操作是对发送驱动器122的数据包进行队列排序(enqueue)。
在一个实施例中,流高速缓冲存储器模块114使用C语言goto标签变量(gotoLabelsasValues)来构建此特定连接的自定义堆栈,并将此堆栈作为线程(threaded)代码序列。该C语言编译器支持C语言的扩展,称作“标签变量(LabelsasValues)”。此构建允许C标签构建用作变量。代码段被定义为一组C语句且由标签独一无二地识别。然后,一列标签指定将要执行的代码段清单。代码段中最后的C语句是专用goto语句,它的目的标签是从一列标签中的下一个指针取得,由此来遍布(threading)代码段。一个特定代码段被定义为返回(return),其识别标签是一列标签中的最后一个元素。
流高速缓冲存储器模块114能够执行几个通用代码段以实现诸如以下操作:移除全部二层(layer2)包头(headers)、插入新的二层包头、替代特定偏移处字节、减少TTL、损毁(mangle)IPDSCP、损毁源网络地址转换(Source-NAT)、损毁目的网络地址转换(D-NAT)、递增更新三层(layer3)校验和(checksum)、递增更新四层(layer4)校验和、复制(replicate)数据包、数据高速缓冲存储器只将涉及到的数据无效、在发送设备处排序、返回以及其它操作,和上述操作的组合。写入缺乏任何条件测试或功能呼叫的代码段。使用接收和发送的包头信息,可以推断出一组合适的代码序列组合,且将其标签的线程与每一代码段所需要的其它信息一起保存至表格116中流高速缓冲存储器的记录里。
参考图2,处理过程200用于处理数据包。处理过程200包括:在运行期间,使用特定连接的第一个数据包来获得属于该特定连接的数据包的代码段的自定义序列(customsequence)(步骤202);使用数据包的互联网协议(IP)元组(tuple)来识别属于该特定连接的数据包(步骤204);将代码段的自定义序列应用于该被识别的数据包(步骤206)。
在一个优选实施例中,过程200通过图1中的解析器模块112和流高速缓冲存储器模块114来实现。在一个实施例中,解析器模块112和流高速缓冲存储器模块114通过软件来实现,该软件作用在数据包上使其加速通过系统100。
例如,流高速缓冲存储器模块114用于:在运行期间,使用特定连接的第一个数据包来获得属于此特定连接的数据包的代码段的自定义序列(202)。以这种方式,流高速缓冲存储器模块114使用来自第一数据包的接收包头和发送包头的信息来决定代码段的自定义序列。流高速缓冲存储器模块114构建此特定连接的自定义堆栈,这样使得此特定连接的后续数据包旁路(bypass)网络堆栈(例如图1中的网络堆栈120)。
解析器模块112使用数据包的互联网协议(IP)元组(tuple)来识别属于特定连接的数据包(204)。解析器模块112解析所接收数据包的包头从而提取出IP元组。解析器模块112使用IP元组来计算哈希密钥,并在查找表格116中检查此哈希密钥,以判断表格116中是否存在记录。流高速缓冲存储器模块114将代码段的自定义序列应用于该被识别的数据包(206)。
在一个优选实施例中,在仅用网络堆栈来处理数据包的系统上,使用包括解析器模块112和流高速缓冲存储器模块114的系统100以及处理过程200可实现6倍(6-fold)的性能增益。动态构建自定义线程代码序列的系统100,通过流缓存击中将所有后续的数据包改道(redirected)至自定义堆栈,在100Mbits下游VDSL连接中能够维持每秒123,000个数据包的有线(wireline)下行速率。使用基于软件加速的流缓存通过DSL软件参考(reference)中常用的网络堆栈可以实现6倍(6-fold)的性能增益。
这里描述的多种技术方案的实施例可在数字电子线路中或计算机硬件、固件、软件及其组合中实现。实施例可作为计算机程序产品实现,例如,计算机程序切实的嵌入信息载体(例如机器可读存储设备)。该计算机程序由数据处理装置(例如,可编程处理器、计算机、或数个计算机)执行或者用于控制数据处理装置的操作。诸如上述的计算机程序可用任何形式的编程语言编写,包括编译型语言或解释性语言;并且可采用任何形式实现,包括独立程序(stand-aloneprogram)或模块、部分(component)、子程序或其它适合应用于计算机环境的单元。计算机程序可运行于一个网点(site)的一个或多个计算机,也可运行于分布在多个网点(site)或通过通信网络彼此连接的多个计算机中。
方法步骤可由一个或多个编程处理器来执行,编程处理器执行计算机程序以对输入数据作用并产生输出来完成功能。方法步骤也可由用作专用逻辑电路的装置来执行,这里的专用逻辑电路诸如FPGA(FieldProgrammableGateArray)或ASIC(ApplicationSpecificIntegratedCircuit)。
适合于执行计算机程序的处理器包括诸如通用或专用微处理器、一个或多个任意种类的数字计算机处理器。通常地,处理器从只读存储器(ROM)或随机存储器(RAM)或两者中接收指令(instruction)和数据。计算机的组成部分包括至少一个执行指令的处理器、一个或多个存储指令和数据的存储设备。一般地,计算机还包括或被连接以接收来自一个或多个用于存储数据的存储设备的数据,和/或传送数据至一个或多个用于存储数据的存储设备,诸如磁盘、磁光盘、或光盘。适于嵌入计算机程序指令和数据的信息载体包括任何形式的非易失性存储器,包括例如半导体存储器设备、诸如内置硬盘或可移动硬盘的磁盘、磁光盘、光盘只读存储器(CD-ROM)、和数字视频光盘(DVD-ROM)。半导体存储器设备例如可擦除可编程只读存储器(EPROM)、电可擦写可编程只读存储器(EEPROM)和闪存设备。处理器和存储器可补充在或合并在专用逻辑电路中。
实施例可通过包括后端组件的计算机系统来实现,例如数据服务器;或通过包括中间件的计算机系统来实现,例如应用服务器;或通过包括前后端组件的计算机系统来实现,例如具有图形用户界面(GUI)或Web浏览器的客户计算机,用户可通过图形用户界面或Web浏览器来交流;或通过诸如后端组件、中间件、或前后端组件的任意组合的计算机系统来实现。组件可通过任意形式或方法的数字数据通信(例如,通信网络)来相互连接。通信网络的例子包括局域网和诸如因特网的广域网。
本发明是通过一些实施例进行描述的,本领域技术人员知悉,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等同替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明的保护范围。

Claims (6)

1.一种装置,用于网络堆栈的数据通道加速,其特征在于,所述装置包括:
带有表格的流高速缓冲存储器模块,用于在运行期间构建特定连接的自定义堆栈,以及使用所述特定连接的第一个数据包的接收包头和发送包头来决定属于所述特定连接的数据包的代码段的自定义序列;所述表格存储所述特定连接;和
解析器模块,用于使用数据包的互联网协议元组来识别属于所述特定连接的数据包,以及检查数据包的包头;所述解析器模块通过快速解析所接收的数据包包头来从数据包中提取互联网协议元组,对互联网协议元组计算哈希函数,使用计算得出的哈希函数来查找所述表格,判断所述表格中是否存在此互联网协议元组的记录;如果存在,则认为是流缓存命中,否则认为是流缓存丢失;
其中,所述流高速缓冲存储器模块还用于使用所述自定义堆栈,将所述代码段的自定义序列应用于被识别的数据包,通过所述流缓存命中将所述特定连接的所有后续数据包改道至自定义堆栈,从而旁路网络堆栈,以及基于检查过的包头排除属于所述特定连接的特定的数据包类型。
2.根据权利要求1所述的装置,其特征在于,所述流高速缓冲存储器模块用于使用C语言goto标签变量来构建所述特定连接的自定义堆栈,并将此自定义堆栈作为线程代码序列。
3.根据权利要求1所述的装置,其特征在于,所述解析器模块用于解析所述数据包的包头,以提取互联网协议元组。
4.一种方法,用于网络堆栈的数据通道加速,其特征在于,所述方法包括:
在表格中存储特定连接;
在运行期间,构建特定连接的自定义堆栈,以及使用特定连接的第一个数据包的接收包头和发送包头来决定属于所述特定连接的数据包的代码段的自定义序列;
使用数据包的互联网协议元组来识别属于所述特定连接的数据包;通过快速解析所接收的数据包包头来从数据包中提取互联网协议元组,对互联网协议元组计算哈希函数,使用计算得出的哈希函数来查找所述表格,判断所述表格中是否存在此互联网协议元组的记录;如果存在,则认为是流缓存命中,否则认为是流缓存丢失;及
使用所述自定义堆栈来将所述代码段的自定义序列应用于被识别的数据包,通过所述流缓存命中将所述特定连接的所有后续数据包改道至自定义堆栈,从而绕过网络堆栈;
检查数据包的包头,且
基于检查过的包头排除属于所述特定连接的特定的数据包类型。
5.根据权利要求4所述的方法,其特征在于,所述在运行期间获得代码段的自定义序列包括使用C语言goto标签变量来构建所述特定连接的自定义堆栈,并将此自定义堆栈作为线程代码序列。
6.根据权利要求4所述的方法,其特征在于,所述识别数据包包括解析数据包的包头,以提取互联网协议元组。
CN200910159230.1A 2008-07-31 2009-07-30 一种用于网络堆栈的数据通道加速的装置及方法 Active CN101645843B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/183,935 US7908376B2 (en) 2008-07-31 2008-07-31 Data path acceleration of a network stack
US12/183,935 2008-07-31

Publications (2)

Publication Number Publication Date
CN101645843A CN101645843A (zh) 2010-02-10
CN101645843B true CN101645843B (zh) 2015-11-25

Family

ID=41328548

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910159230.1A Active CN101645843B (zh) 2008-07-31 2009-07-30 一种用于网络堆栈的数据通道加速的装置及方法

Country Status (5)

Country Link
US (1) US7908376B2 (zh)
EP (1) EP2150023B1 (zh)
KR (1) KR101115436B1 (zh)
CN (1) CN101645843B (zh)
TW (1) TWI423616B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US20090092136A1 (en) * 2007-10-09 2009-04-09 Broadcom Corporation System and method for packet classification, modification and forwarding
US10037568B2 (en) 2010-12-09 2018-07-31 Ip Reservoir, Llc Method and apparatus for managing orders in financial markets
US9240950B2 (en) 2011-03-23 2016-01-19 Hughes Network Systems, Llc System and method for providing quality of service over dedicated local loop networks
US10637782B2 (en) 2011-03-23 2020-04-28 Hughes Network Systems, Llc System and method for policy-based multipath WAN transports for improved quality of service over broadband networks
US9716659B2 (en) 2011-03-23 2017-07-25 Hughes Network Systems, Llc System and method for providing improved quality of service over broadband networks
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US9459076B2 (en) 2012-12-12 2016-10-04 Trackingpoint, Inc. Rifle scope, apparatus, and method including proximity detection and warning system
US10061808B2 (en) * 2014-06-03 2018-08-28 Sap Se Cached views
EP3560135A4 (en) 2016-12-22 2020-08-05 IP Reservoir, LLC PIPELINES INTENDED FOR AUTOMATIC ACCELERATED LEARNING BY EQUIPMENT
EP3367621A1 (en) * 2017-02-28 2018-08-29 Intel Corporation Method and apparatus for local traffic acceleration
US10178207B1 (en) * 2017-07-10 2019-01-08 Adtran, Inc. Optimized defragmentation of data packets in a passive optical network
CN110049386B (zh) * 2018-01-17 2022-02-25 华为技术有限公司 通信网络及相关设备
CN111355662B (zh) * 2018-12-24 2022-09-13 中移(杭州)信息技术有限公司 一种数据加速方法、装置、网关设备及可读存储介质
JP2022532230A (ja) 2019-05-14 2022-07-13 エクセジー インコーポレイテッド 金融市場データからの取引シグナルを低遅延で生成しかつ配信するための方法およびシステム
CN112054868B (zh) * 2019-06-06 2021-11-19 中国移动通信有限公司研究院 一种光模块、管控信息处理方法及通信系统
US20220261898A1 (en) 2021-02-16 2022-08-18 Exegy Incorporated Methods and Systems for Implementing Market Making Strategies at Low Latency

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340535B1 (en) * 2002-06-04 2008-03-04 Fortinet, Inc. System and method for controlling routing in a virtual router system
US7376125B1 (en) * 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389479B1 (en) 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6339595B1 (en) * 1997-12-23 2002-01-15 Cisco Technology, Inc. Peer-model support for virtual private networks with potentially overlapping addresses
US6771646B1 (en) * 1999-06-30 2004-08-03 Hi/Fn, Inc. Associative cache structure for lookups and updates of flow records in a network monitor
US6496935B1 (en) * 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing
US20040213189A1 (en) * 2001-01-25 2004-10-28 Matthew David Alspaugh Environmentally-hardened ATM network
US7042888B2 (en) * 2001-09-24 2006-05-09 Ericsson Inc. System and method for processing packets
US7269663B2 (en) * 2001-09-28 2007-09-11 Intel Corporation Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache
US7512129B1 (en) * 2002-02-19 2009-03-31 Redback Networks Inc. Method and apparatus for implementing a switching unit including a bypass path
US20040039940A1 (en) * 2002-08-23 2004-02-26 Koninklijke Philips Electronics N.V. Hardware-based packet filtering accelerator
US7266120B2 (en) * 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US7586920B2 (en) * 2003-05-30 2009-09-08 Calix Networks, Inc. Merging multiple data flows in a passive optical network
US7599361B2 (en) * 2004-07-02 2009-10-06 P-Cube Ltd. Wire-speed packet management in a multi-pipeline network processor
US8611956B2 (en) * 2004-11-25 2013-12-17 Telecom Italia S.P.A. Joint IC card and wireless transceiver module for mobile communication equipment
WO2006080898A1 (en) 2005-01-26 2006-08-03 Infineon Technologies Ag Improvements in and relating to data processing
US8639837B2 (en) * 2006-07-29 2014-01-28 Blue Coat Systems, Inc. System and method of traffic inspection and classification for purposes of implementing session ND content control
US20090092136A1 (en) * 2007-10-09 2009-04-09 Broadcom Corporation System and method for packet classification, modification and forwarding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340535B1 (en) * 2002-06-04 2008-03-04 Fortinet, Inc. System and method for controlling routing in a virtual router system
US7376125B1 (en) * 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch

Also Published As

Publication number Publication date
KR20100014194A (ko) 2010-02-10
EP2150023B1 (en) 2015-09-09
TW201021466A (en) 2010-06-01
EP2150023A3 (en) 2014-08-27
TWI423616B (zh) 2014-01-11
US7908376B2 (en) 2011-03-15
CN101645843A (zh) 2010-02-10
KR101115436B1 (ko) 2012-02-20
EP2150023A2 (en) 2010-02-03
US20100027545A1 (en) 2010-02-04

Similar Documents

Publication Publication Date Title
CN101645843B (zh) 一种用于网络堆栈的数据通道加速的装置及方法
KR100910818B1 (ko) 비-macsec 노드들을 통해 macsec 패킷들을터널링하기 위한 방법 및 시스템
US8594070B1 (en) Acting on data packets in a mobile telecommunications network based on inner headers
CN101247308B (zh) 基于网络处理器实现IPv6穿越IPv4的隧道报文处理方法
JP3494610B2 (ja) Tcp終端機能付きipルータ装置および媒体
CN106233673B (zh) 用于网络服务插入的设备和方法
CN100508480C (zh) 一种涉及以太网接入系统的设备和方法
US20090092136A1 (en) System and method for packet classification, modification and forwarding
US20070171826A1 (en) System, method, and computer program product for controlling output port utilization
CN101026519A (zh) 基于用户信息字符串动态创建vlan接口
US20220255772A1 (en) Packet sending method, apparatus, and system
CN107231307A (zh) 用于防止数据中心架构内子网间流量转接的方法、系统和装置
CZ20021442A3 (cs) Způsob a systém pro klasifikaci rámců a protokolů
US20120189022A1 (en) User access method, system, access server, and access device
CN112737954B (zh) 报文处理方法、装置、系统、设备及存储介质
US20160006684A1 (en) Communication system, control apparatus, communication method, and program
CN104579973B (zh) 一种虚拟集群中的报文转发方法和装置
KR100891208B1 (ko) 패킷 데이터 망에서 패킷 데이터 흐름을 프로세싱하는 방법, 장치, 시스템 및 컴퓨터 프로그램이 수록된 컴퓨터 판독가능 기록 매체
CN115695279A (zh) 一种基于第6版互联网协议的段路由SRv6的通信方法
JP6222505B2 (ja) 入力パラメータを生成するための方法および装置
US8743907B1 (en) Apparatus for reassembling a fragmented data unit and transmitting the reassembled data unit
CN100563241C (zh) 一种网络过渡接入的方法
US11863446B2 (en) User group-based packet forwarding method, device, and system
CN111835736B (zh) 一种报文传输方法及系统
US20230179688A1 (en) Variable Frame Headers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1140878

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1140878

Country of ref document: HK

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180514

Address after: Singapore Singapore

Patentee after: Avago Technologies Fiber IP Singapore Pte. Ltd.

Address before: Alton Park Road, Irvine, California, 16215, 92618-7013

Patentee before: Zyray Wireless Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190830

Address after: Singapore Singapore

Patentee after: Annwa high tech Limited by Share Ltd

Address before: Singapore Singapore

Patentee before: Avago Technologies Fiber IP Singapore Pte. Ltd.