CN101047714B - 一种处理网络数据的方法及系统 - Google Patents

一种处理网络数据的方法及系统 Download PDF

Info

Publication number
CN101047714B
CN101047714B CN2006100915152A CN200610091515A CN101047714B CN 101047714 B CN101047714 B CN 101047714B CN 2006100915152 A CN2006100915152 A CN 2006100915152A CN 200610091515 A CN200610091515 A CN 200610091515A CN 101047714 B CN101047714 B CN 101047714B
Authority
CN
China
Prior art keywords
module
data
tcp
tcb
level
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.)
Expired - Fee Related
Application number
CN2006100915152A
Other languages
English (en)
Other versions
CN101047714A (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.)
Zyray Wireless Inc
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 CN101047714A publication Critical patent/CN101047714A/zh
Application granted granted Critical
Publication of CN101047714B publication Critical patent/CN101047714B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • 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

Landscapes

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

Abstract

本发明涉及一种高性能硬件网络协议处理引擎的方法。该方法包括通过单网络芯片上的多个管线硬件级处理TCP数据包。在并行管线硬件级的第一级,解析接收到的TCP数据包的报头,并验证以太网帧CRC摘要、IP校验和以及TCP校验和。同时在第一级还可验证所接收到的TCP数据包的IP地址。在第二级,可查询所接收到的TCP数据包的TCB索引。在第三级查询TCP数据包的TCB数据,在第四级对TCP数据包进行接收处理。在第五级可将已处理的所接收到的TCP数据包传送到应用层。

Description

一种处理网络数据的方法及系统
技术领域
本发明涉及计算机网络的访问,更具体地说,涉及一种高性能硬件网络协议处理引擎的方法和系统。
背景技术
国际标准化组织建立了开放式系统互连(OSI)参考模型。该OSI参考模型提供了一种网络设计架构,该架构可使不同提供商的设备能够相互通信。更具体地说,OSI参考模型将通信流程按分层顺序分成了七个独立、不同而又相互关联的类别。层1是物理层。它以物理方式发送数据。层2是数据链路层。它与操作通信链路的规程和协议相关,包括消息错误的检测和纠错。层3是网络层。它决定数据是如何在计算机间传输的。层4是传输层。它定义了信息交换的规则,并管理消息在网络内部和网络之间端到端的传送,包括错误恢复和流量控制。层5是会话层。它处理对话管理并控制由层4提供的基本通信设备的使用。层6是表示层。它与数据格式化、代码的转换和压缩/解压缩相关。层7是应用层,它处理与特定应用服务,如文件传输、远程文件访问和虚拟终端相关的功能。
各种电子设备,如计算机、无线通信设备和个人数字助理等,为了能相互通信可能访问各种网络。例如,这些设备为了方便通过因特网通信,可能使用传输控制协议/因特网协议(TCP/IP)。TCP允许两个应用建立连接并交换数据流。TCP能保证数据的传送,同时也可保证这些数据包能按顺序传送到TCP以上的各层。与诸如用户数据报协议(UDP)等协议相比,TCP可用于将数据包按与发送时相同的顺序传送到最终目的地,且不会出现包丢失的情况。TCP同时还可区分不同应用程序的数据,例如,同一计算机上的Web服务器和邮件服务器。
相应地,TCP协议经常用于因特网通信。执行OSI栈和TCP/IP处理的传统解决方案可能要使用更快更强的处理器。例如,研究表明,TCP输入/输出处理的普通路径大约需要300条指令。在最大速率条件下,对于10Gbit/s连接而言,每秒大约可接收一千五百万条的最小包长的数据包。因此,输入路径的处理大约需要每秒4,500百万条指令(MIPS)。当还需要添加类似数目的MIPS用于处理输出连接时,每秒的总指令数可能接近于一个新式处理器的极限。例如,高级奔4处理器可有大概10,000MIPS的处理能力。但是,在处理器可能要处理整个协议栈的设计中,该处理器可能成为瓶颈。
随着网速的提高,某些设计可通过使用更快速的处理器或添加更多的处理器来缓解处理器的瓶颈问题。然而,当访问DRAM等存储器时,处理器仍然可能减速。对此问题的一种解决方案是高速缓冲存储器。但是,当发生缓存缺失时,在等待将慢存储器的数据填充到缓存的过程中,处理器性能可能会严重下降。
此外,三重内容可寻址存储器(T-CAM)设备可用于加速TCP会话查询等操作。之所以可使用T-CAM存储,因为其搜索速率可能高于基于软件的算法搜索。不过,T-CAM存储器的缺点在于其消耗的功率。
通过将这些系统与本发明某些方面进行比较,可进一步看出传统解决方案的更多局限和缺点,下面将结合实施例和附图对本发明作进一步描述。
发明内容
一种高性能硬件网络协议处理引擎的系统和/或方法,结合下述至少一副附图进行了充分说明,且在权利要求中进行了更完整的阐明。
根据本发明的一方面,提供了一种处理网络数据的方法,该方法包含在单网络芯片上使用多个管线硬件级处理下述中的至少一项:接收到的TCP数据包和要传输的TCP数据包。
优选地,该方法进一步包括,在所述单网络芯片内,在所述并行管线硬件级的第一级,解析接收到的TCP数据包的报头。
优选地,该方法进一步包括,在所述单网络芯片内,在所述并行管线硬件级的所述第一级,验证接收到的所述TCP数据包的以太网帧CRC摘要(digest)、IP报头校验和以及TCP校验和。
优选地,该方法进一步包括,在所述单网络芯片内,在所述并行管线硬件级的所述第一级,确认接收到的所述TCP数据包的IP地址。
优选地,该方法进一步包括,在所述单网络芯片内,在所述并行管线硬件级的第二级,查询所述接收到的所述TCP数据包TCB索引。
优选地,该方法进一步包括,在所述单网络芯片内、在所述并行管线硬件级的第三级,对下列中的至少一项的TCB数据查询排序:所述接收到的TCP数据包和所述要传输的TCP数据包。
优选地,该方法进一步包括,在所述并行管线硬件级的所述第三级中,在所述单网络芯片内,至少为下列中的一项:所述接收到的TCP数据包和所述要传输的TCP数据包,存储所述TCB数据。
优选地,该方法进一步包括,将与所述已处理TCP数据包相对应的的所述TCB数据的至少一部分存储在所述单网络芯片的外部存储器中。
优选地,该方法进一步包括,将由所述网络芯片处理的活动网络连接的TCB数据的至少一部分缓存到所述单网络芯片中。
优选地,该方法进一步包括,在所述并行管线硬件级的第四级,在所述单网络芯片内执行所述TCP数据包的接收处理。
优选地,该方法进一步包括,在所述并行管线硬件级的第五级,在所述单网络芯片中,开始将所述已处理的接收到的TCP数据包传输到应用层中。
优选地,该方法进一步包括,在所述并行管线硬件级的第五级,在所述单网络芯片中,在开始所述传输之前,将无序接收到的TCP数据包进行重新组合。
优选地,该方法进一步包括,在所述并行管线硬件级的第五级,在所述单网络芯片中,根据来自应用程序的数据,开始创建所述的要传输的TCP数据包。
优选地,该方法进一步包括,在所述并行管线硬件级的第一级,在所述单网络芯片内部,将TCP和IP报头附加在所述的最初创建的要传输的TCP数据包上。
优选地,该方法进一步包括,在所述并行管线硬件级的第一级,在所述单网络芯片内部,生成以太网帧,所述以太网帧至少包含附加在所述的最初创建的TCP数据包上的TCP和IP报头。
根据本发明的另一方面,还提供了一种处理网络数据的系统,该系统包含单网络芯片,该单网络芯片包含处理下述项中的至少一个的多个片上管线硬件级:接收到的TCP数据包,和要传输的TCP数据包。
优选地,所述多个并行的管线硬件级的第一级,在所述单网络芯片上解析所述接收到的TCP数据包的报头。
优选地,所述多个并行的管线硬件级的所述第一级,在所述单网络芯片上验证所述接收到的TCP数据包的以太网帧CRC摘要、IP检验和以及TCP校验和。
优选地,所述多个并行的管线硬件级的所述第一级,在所述单网络芯片上确认所述接收到的TCP数据包的IP地址。
优选地,所述多个并行的管线硬件级的第二级,在所述单网络芯片上执行所述接收到的TCP数据包的TCB索引查询。
优选地,所述多个并行的管线硬件级的第三级,在所述单网络芯片上为下述项中的至少一个的TCB数据查询排序:所述接收到的TCP数据包,以及所述的要传输的TCP数据包。
优选地,所述多个并行的管线硬件级的第三级,在所述单网络芯片上为下述项中的至少一个存储所述TCB数据:所述接收到的TCP数据包,以及所述的要传输的TCP数据包。
优选地,所述多个并行的管线硬件级的所述第三级,将对应于所述已处理TCP数据包的所述TCB数据的至少一部分存储到所述单网络芯片的外部存储器中。
优选地,所述多个并行的管线硬件级的至少一个级中,在所述单网络芯片上存储由所述网络芯片处理的活动网络连接的TCB数据的至少一部分。
优选地,所述多个并行的管线硬件级的第四级,在所述单网络芯片上对所述接收到的TCP数据包进行接收处理。
优选地,所述多个并行的管线硬件级的第五级,在所述单网络芯片上开始将所述已处理的接收到的TCP数据包传输到应用层。
优选地,所述多个并行的管线硬件级的所述第五级,在开始所述传输之前,在所述单网络芯片内将无序接收到的TCP数据包重新组合。
优选地,所述多个并行的管线硬件级的第五级,在所述单网络芯片内开始根据从应用程序接收而来的数据创建所述的要传输的TCP数据包。
优选地,该系统进一步包括,在所述单网络芯片内的所述多个并行的管线硬件级的第一级,将TCP和IP报头附加到所述初始创建的要传输的TCP数据包上。
优选地,该系统进一步包括生成以太网帧,所述以太网帧包括在所述单网络芯片内的所述多个并行的管线硬件级的所述第一级,将所述TCP和IP报头中的至少一个附加到所述的初始创建的TCP数据包上。
本发明的各优点、方面和创新点,以及具体实施方式,可以通过下文及附图得到充分说明。
附图说明
图1a是典型通信系统的方框图,它可与本发明的实施例一起使用。
图1b是未卸载(non-offloaded)因特网协议栈的典型系统的方框图,它可与本发明的实施例一起使用。
图1c是带有智能网络接口卡的因特网协议栈的典型系统的方框图,它可与本发明的实施例一起使用。
图2是在现代计算机系统中执行TCP/IP协议栈的示意图,它可与本发明的实施例一起使用。
图3a是根据本发明实施例的包含带有多个管线硬件级的典型网络芯片的方框图。
图3b是根据本发明实施例的典型管线硬件级的示意图。
图4a是根据本发明实施例的多个并行管线硬件级的第一级接收网络数据的典型流程图。
图4b是根据本发明实施例的在多个并行管线硬件级的第一级中传输网络数据的典型流程图。
图5是根据本发明实施例的多个并行管线硬件级的第二级的方框图。
图6是根据本发明实施例的多个并行管线硬件级的第三级的方框图。
图7是根据本发明实施例的多个并行管线硬件级中第二级和第四级的方框图。
图8是根据本发明实施例的多个并行管线硬件级的第五级的典型流程图。
图9a是根据本发明实施例的通过多个并行管线硬件级将数据传输到网络的典型流程图。
图9b是根据本发明实施例的通过多个并行管线硬件级从网络接收数据的典型流程图。
具体实施方式
本发明的实施例涉及一种单网络芯片上的多管线硬件级,用于处理接收到的TCP数据包和/或要传输的TCP数高性能硬件网络协议处理引擎的方法和系统。该方法可包括单网络芯片上的上的多个管线硬件级,所述单网络芯片用来处理所接收的TCP数据包和待发送的TCP数据包。在并行管线硬件级的第一级,可解析接收到的TCP数据包的报头,并可验证所接收到的TCP数据包的以太网帧CRC。在第一级同时也可验证所接收到的TCP数据包的IP地址。在并行管线硬件级的第二级,可查询所接收到的TCP数据包的TCB索引。为了能对TCB数据进行查询,对接收到的TCP数据包和/或要传输的TCP数据包进行排序,并可在并行管线硬件级的第三级获取TCB数据。
对于接收到的TCP数据包和/或要传输的TCP数据包,TCB数据可在并行管线硬件级的第三级进行保存。对应于已处理的TCP数据包的至少一部分TCB数据存储于单网络芯片外部的存储器中和/或缓存在单网络芯片内部。可在并行管线硬件级的第四级进行TCP数据包的接收处理。并行管线硬件级的第五级可用于开始将所接收的已处理TCP数据包传送到应用层。在开始传送之前,在并行管线硬件级的第五级将那些无序接收的TCP数据包进行重新组合。
并行管线硬件级的第五级可用于根据来自应用程序的数据,开始创建要传输的TCP数据包。在并行管线硬件级的第一级可将TCP和IP数据包报头预先添加到初始创建的要传输的TCP数据包的前面。并行管线硬件级的第一级可用于生成以太网帧,其中至少包含预先添加到在单网络芯片内初始创建的TCP数据包之前的TCP和IP数据包报头。
图1a是典型通信系统的方框图,该系统可与本发明的实施例一起使用。如图1a所示,其中包含主机100和101以及网络115。主机101可包含中央处理单元(CPU)102、存储接口(MCH)104、存储模块106、输入/输出(IO)接口(ICH)108和网络接口卡(NIC)110。
存储接口(MCH)104可包括适当的电路和/或逻辑,可用于在存储模块106和其它设备如CPU 102之间传输数据。
输入/输出接口(ICH)108可包括适当的电路和/或逻辑,可用于在IO设备间、IO设备与存储模块106间或IO设备与CPU 102间传输数据。
网络接口卡(NIC)110可包括适当的电路、逻辑和/或代码,可用于传输和接收来自网络的数据,如来自以太网的数据等。NIC 110可处理已接收数据和/或要传输的数据。处理量可依赖于其设计和/或设备。一般地,NIC 110可能包括单个芯片,该芯片也可使用片上存储器和/或片外存储器。
在操作中,主机100和主机101可通过例如网络115实现相互通信。网络115可以是以太网。因此,主机100和/或101可通过网络接口卡,如NIC 100,发送和/或接收包。例如,CPU 102可获取来自存储模块106的指令并执行这些指令。CPU 102可进一步将数据存储到存储模块106上和/或从存储模块106获取数据。例如,运行在CPU 102中的软件应用程序可让数据传送到网络中,如传送到网络115中等。软件应用程序的实例可以是用于在主机100和101之间发送邮件的邮件应用程序。
相应地,主机101内的CPU 102可处理邮件中的数据并将已处理的数据传送到NIC 110。该数据可由CPU 102直接传送到NIC 110。选择性地,该数据也可存储在存储模块106中。已存储的数据可通过直接内存存取(DMA)进程等传送到NIC 110。DMA所需的各种参数,如,源开始地址、待传送比特数和目的开始地址可由CPU 102写入到例如存储接口(MCH)104中。根据开始命令,存储接口(MCH)104可启动DMA进程。在此情形下,存储接口(MCH)104可看成是DMA控制器。
NIC 110可进一步处理邮件数据,并将邮件数据以适合于在与之相连的网络115上传送的数据包的形式发送出去。类似地,NIC 110可从与之相连的网络115中接收数据包。NIC 110可处理所接收数据包中的数据,并将已处理的数据传送到可进一步处理该数据的更高层协议程序。已处理数据可通过IO接口(ICH)108和存储器接口(MCH)104存储在存储模块106中。存储模块106中的数据可由在CPU 102中运行的邮件应用程序进一步处理,并最终以例如文本邮件消息的形式显示给主机101的用户。
图1b是未卸载(non-offloaded)因特网协议栈的典型系统方框图,它可与本发明的实施例一起使用。如图1b所示,主机101可包含CPU 102、MCH 104、存储模块106、ICH 108和NIC 110。图1b还显示了应用层120、套接字(socket)122、传输层124、网络层126和数据链路层128。
应用层120、传输层124、网络层126和数据链路层128可是协议栈的一部分,用于接收和传送来自网络的数据。协议栈可以是例如因特网所使用协议的因特网协议(IP)族。协议IP族可包含应用层协议、传输层协议、网络层协议、数据链路层协议和物理层协议。套接字122可包含软件程序,该程序可允许在两个其它软件程序间传送数据。因此,套接字122可看成是在应用层120和传输层124间传送数据的管线。物理层可以是将网络中的一个主机与其它主机相连的媒介。例如,该媒介可以是用于在网络中传导如以太网等网络信号的电缆。
例如,接收邮件时,NIC 110可从以太网媒介等物理层中以一系列数据包的形式接收邮件。该NIC 110可将接收到的数据包存储到存储模块106中。CPU 102可运行数据链路层128协议,从而将各包的物理层帧(framing)去除。该帧可包含节点地址和指示各数据包的起始及结束的比特类型。接着CPU102可进一步执行协议栈中下一个OSI层的协议。该OSI层可以是例如网络层126,且可包括去除各数据包的网络相关信息,该信息用于将数据包从一个网络路由到另一个网络。接着要执行的下一层协议可为传输层124。传输层124可确保文件的所有数据包都已被接收,并可将各数据包按顺序组合。
接着,已组合好的文件可由应用层120协议处理。应用层120协议可以是应用程序的一部分,如邮件应用程序等。应用层120协议可确保数据格式是应用程序使用的格式。例如,邮件消息的字符编码使用ASCII格式而不是EBCDIC格式进行编码。
将数据传送到网络时,协议栈的运行方向相反。例如,从应用层120到传输层124,然后到网络层126,接着到数据链路层128,最后到物理层。应用层120可将应用程序文件编码为该应用程序类型的标准格式。传输层124可将该文件分解为数据包,且各数据包被标识,从而使接收主机的对应传输层能将接收到的包按顺序重新组合。网络层126可将来自传输层124的数据包进行封装,从而能把数据包路由到可能位于不同网络中的目的地址。数据链路层可为包提供报头,从而使他们能指定到网络中的特定节点。
图1c是带有智能网络接口卡的因特网协议栈的典型系统方框图,它可与本发明的实施例一起使用。如图1c所示,该方框图与图1b类似。不过,协议栈可以是独立的。例如,传输层124、网络层126和数据链路层128可由NIC 110执行,而不是由图1b中的CPU 102执行。该NIC 110可看成是智能网卡,因为它可进行某些协议栈处理,例如,传输层124、网络层126的因特网协议(IP)、数据链路层128的以太网协议。这样,CPU 102可以只需处理套接字122和应用层120协议,而不必将更多的处理资源分配给应用程序软件。因此,可提高处理器性能,从而可更高效地执行应用程序软件。智能NIC,如NIC 110等,可能依赖于嵌入式处理器和固件来处理网络协议栈。
图2是在现代计算机系统中执行TCP/IP栈的示意图,它可与本发明的实施例一起使用。如图2所示,其中示出了TCP/IP协议栈中的物理层202、数据链路层204、IP层206、TCP层208和应用层210。图2中还给出了在时间点(time instant)T0到时间点(time instant)T5期间,TCP/IP协议栈中各层202、204、206、208和210进行的步骤。协议栈中的各步骤可由主机处理器执行,如CPU 102。
在时间点T0之后,网络控制器例如NIC 110可从网络如以太网处获取数据。如果由NIC 110接收到的数据包中的MAC地址与NIC 110的MAC地址相同,则这些数据包的目的地为NIC 110。
在时间点T1,NIC 110可能中断CPU 102以告知其已接收到数据包。这个对CPU 102的中断可能触发上下文切换,其中可能包括保存当前正在执行以及中断的进程的各种信息,同时为各寄存器载入新信息。上下文切换中涉及的寄存器中的信息可能包括例如CPU 102中的通用寄存器、程序计数器、栈指针等。必须载入新信息进而为中断提供服务。从这点上来看,上下文切换可能消耗宝贵的CPU处理时间。
作为中断服务程序的一部分,以太网驱动器204可以是数据链路层128(图1b)的一部分,该驱动器可以去除例如以太网帧信息。以太网驱动器204可以分配第二控制缓存以跟踪接收到的数据包。控制缓存的分配和初始化可能导致许多缓存的缺失。当发生缓存缺失时,在等待来自外部存储器的数据期间,处理器性能可能会严重下降。以太网驱动器204同样需要用接收缓存对网络适配器进行补充,从而可使接收到的数据包得到进一步的协议处理。以太网驱动器204接着可将接收到的数据包插入到接收缓存的输入队列中,并确定软件中断的时间,这样协议处理可稍后继续进行。可在例如时间点T2处安排软件中断。
以太网驱动器204在时间点T2处设置的软件中断可启动IP层206的执行,IP层206可以是网络层126(图1b)。IP层206包括验证本地主机,如主机101,是否为目的地。IP层206也可根据传输层协议将数据包解复用到协议栈中的上一层,例如,传输层124。传输层124可能包括多个协议,如TCP和用户数据报协议(UDP)。TCP可以保证某个主机,如主机100等,发送的数据能被另一个主机,如主机101等,以相同顺序接收且没有任何数据包丢失。而UDP可能无法提供由TCP层提供的可靠性和顺序保证。数据包到达时可能无序或者可能无预警的丢失。因此,UDP可为许多轻量级或对时间敏感的应用提供更快更高效的数据传输。使用UDP的一些数据传输包括流媒体应用程序、IP电话和/或在线游戏。
在时间点T3,TCP层208可以是例如传输层124,它从TCP控制模块(TCB)的会话查询操作开始。与网络节点相关的各传输层124可能包含各TCP连接的状态信息。该信息通常可能在数据结构中,该数据结构包含连接状态信息、相关本地进程和关于连接传输特性的反馈参数。该TCB通常按每个连接进行维护。一旦发现或者为新连接生成数据包的TCB信息,接收主机的TCP层208,如主机101,可对数据包的接收进行确认。
在一段时间之后,如果接收主机尚未发送某个数据包的确认信息,则发送主机,如主机100,将重新发送该数据包。例如,当接收主机101的TCP层208判定某个文件已根据协议完成,它可将接收到的数据包重新组合排列到套接字接收缓存中。套接字接收缓存本质上可能是链接列表,该列表可能包含所有按正确顺序的已接收数据包。套接字接收缓存中的数据可能通过利用时间点T4上的套接字122与应用层进行通信。套接字接收缓存中的数据可由应用层120复制到应用程序存储器中。
在时间点T3到时间点T4的时间段内,接收主机可以进行报头预测,从而可为各自的TCP会话的下一个接收TCP数据包实现快速处理。如果接收到的TCP数据包不是所预测的数据包,则可能需要进行附加处理。例如,在序列号达到最大值之后已经折回(wrap around)的情况下,可能需要防止折回的(wrapped)序列处理。此外,多个数据包可能包含重复或重叠的信息,例如,如果发送主机因为没有收到已发送数据包的确认信息而发送另外的数据包。为了避免冗余,可能需要对重复的数据进行整理。
可为各接收到的数据包生成时间戳,从而有助于追踪TCP数据包。对于接收到的TCP数据包,也可有确认处理。此外,如果发送主机请求结束TCP会话,则应有进程结束TCP会话。最后,可对接收到的数据进行重新排列并对接收的数据按顺序重新组合。
图3a是根据本发明实施例、其中包含带有多个管线硬件级的网络芯片的典型系统方框图。如图3a所示,主机101包括CPU 102、存储器接口(MCH)104、存储模块106、输入输出(IO)接口(ICH)108和网络接口卡(NIC)110。NIC 110包含多个可并行运行的管线硬件级301、302、303、304和305。
管线硬件级301可接收来自网络的数据,如网络115,同时可将数据传送到网络115中。管线硬件级301接收得到的数据可由管线硬件级301、302、303、304和305进行处理。管线硬件级305可将载荷数据传送到主机存储器中,如存储模块106,从而使应用程序可以使用该数据。应用程序可由CPU 102执行,如邮件程序。从网络115处接收并传送至存储模块106的数据可以是,例如来自主机100的邮件。
管线硬件级301、302、303、304和305也可处理数据并将其传送到网络115中。管线硬件级305可以接收来自应用程序的应用层的数据。为了生成可传送到网络115中的数据包,可在管线硬件级305、304、303、302和301中进行处理。例如,邮件程序用户生成的邮件可能传送到管线硬件级305。该邮件可通过管线硬件级305、304、303、302和301传送到主机101中。
管线硬件级301、302、303、304和305将参照图3b、4a、4b、5、6、7、8、9a和9b进行更详细地描述。
图3b是根据本发明实施例、典型管线硬件级的示意图。如图3b所示,可在管线硬件级301、302、303、304和305中并行处理网络协议。管线硬件级301可包含MAC接口模块310、报头模块312和IP模块314。管线硬件级302可包含TCP传输模块320和TCB查询模块322。管线硬件级303可包含调度模块330、上下文缓存模块332和上下文存储模块334。管线硬件级304可包含TCP接收模块340。管线硬件级305可包含DMA引擎模块350、数据包存储模块352、队列模块354和协议处理器模块356。
MAC接口模块310可包括适当的可用于接收和/或传送如以太网帧等的电路和/或逻辑块。当接收以太网帧时,MAC接口模块310验证MAC目的地址是否为与MAC接口模块310相关的本地MAC地址。如果MAC目的地址与本地MAC目的地址不相匹配,该以太网帧将被丢弃。否则,MAC接口模块310将从接收到的以太网帧中分离出数据链路层128信息、网络层126信息和传输层124信息。数据链路层128信息可包括MAC报头和CRC摘要(digest)。网络层126信息可包含报头字段。传输层124信息可包含报头字段。剩余数据可被运行在应用层120的应用程序使用。该数据可存储在数据包存储模块352中。
处理那些要传送的数据包时,MAC接口模块310可得到数据包存储模块352中的待传送数据。MAC接口模块310可为之附加上TCP和IP报头以形成IP数据报。在传送最终以太网帧之前,MAC接口模块310可用于添加数据链路层128信息,如MAC报头和CRC摘要等。
报头模块312可包含适当的电路和/或逻辑,用于对已接收的以太网帧中所提取的数据链路层128信息、网络层126信息和传输层124信息进行解析,从而验证CRC摘要、IP校验和以及TCP校验和。如果CRC摘要、IP校验和或TCP校验和无法得到成功验证,则与该接收到的以太网帧相关的所有信息都将被丢弃。如果CRC摘要、IP校验和或TCP校验和得到成功验证,则该接收到的以太网帧将得到进一步处理。
IP模块314可包含适当的电路和/或逻辑块,用于对所接收到的以太网帧中的IP目的地址进行验证,验证其是否与本地IP地址相同。如果IP目的地址与本地IP地址不相匹配,则与该接收到的以太网帧相关的所有信息都将被丢弃。否则,接收到的以太网帧将得到进一步处理。
TCP传输模块320可包含适当的电路和/或逻辑,用于生成IP和TCP报头。所生成的报头被发送给MAC接口模块310。
TCB查询模块322可包含适当的电路和逻辑块,用于为接收到的以太网帧查询那些包括TCP会话信息的TCB数据。因为各应用程序有多个正在运行的TCP会话,TCB数据可用于将接收到的以太网帧与适当的TCP会话相关联。例如,应用程序可以是邮件、浏览器和IP语音电话通信等。
调度模块330可包含适当的电路和/或逻辑,用于为要传送到网络中或从网络中接收得到的数据提供适当的TCB信息。例如,该信息可来自上下文缓存模块332或上下文存储模块334。
上下文缓存模块332包含适当的缓存,可用于缓存TCP会话信息。上下文缓存模块332可与上下文存储模块334联合使用。
TCP接收模块340可包含适当的电路和/或逻辑,用于已接收TCP数据包的接收处理。已接收TCP数据包的接收处理可能包含下一个TCP数据包的报头预测、防止已接收TCP数据包的序列号折回、以及当多个TCP数据包包含冗余数据时进行重叠数据清理。已接收TCP数据包的接收处理还包含读取已接收TCP数据包的时间戳、对TCP数据包的接收进行确认以及结束TCP会话。TCP接收模块340也可用于将DMA信息存储到队列模块354中,从而可将接收到的数据传送到应用层120中。
DMA引擎模块350可包含适当的电路和/或逻辑块,用于将源数据传送到目的地,且无需CPU的干涉。例如,DMA引擎模块350可将来自数据包存储模块352的数据传送到存储模块106,反之亦然。
数据包存储模块352可包含适当的存储器,用于存储从网络处接收得到的数据或等待被传送到网络中的数据。
队列模块354可包含适当的电路和/或逻辑,用于存储各TCP数据包中进行DMA传送的信息,同时可为合适的数据传输设置DMA引擎模块350。队列模块354同时还可用于对来自调度模块330的外发数据包请求排序。
协议处理器模块356可包含适当的电路、逻辑和/或代码,用于与应用层120通信,从而接收与需要从存储模块106传送到数据包存储模块352的数据相关的信息,同时也可接收与需要从数据包存储模块352传送到存储模块106的数据相关的信息。协议处理器模块356也可用于判断在传送之前,是否需要将来自存储模块106的数据分解为多个TCP数据包。此外,协议处理器模块356也可将从多个TCP数据包接收并通过DMA传送到存储模块106的数据进行重新组合。该重新组合后的数据信息可发送到应用层120。
相应地,当运行在主机上的应用程序通过网络将数据发送到另一台主机上时,应用层120可用于与协议处理器模块356交流适当信息。应用层120告知的目的地信息让协议处理器模块356可启动与目的主机的TCP会话。协议处理器模块356也可接收关于要传输的数据比特数和数据位置的相关信息。在管线硬件级305,协议处理器模块356可将适当信息存储到队列模块354中。队列模块354可设置DMA引擎模块350,从而将数据从存储模块106传送到数据包存储模块352中。DMA引擎模块350可将合适的数据传送到数据包存储模块352。队列模块354也可请求来自调度模块330的调度,从而可将数据传送到网络中。协议处理器模块356也可将各数据的适当TCB数据或TCP会话信息存储到上下文存储模块334中。
在管线硬件级303,调度模块330可接收存储在数据包存储模块352中的各数据的TCB数据。TCB数据可来自上下文缓存模块332或上下文存储模块334。其中可包含用于TCP和IP报头的信息的TCB数据,可被传送到TCP传输模块320。在管线硬件级302中,TCP传输模块320可为数据包存储模块352中的相应数据生成TCP和IP报头,同时这些报头可被传递到MAC接口模块310。在管线硬件级301中,MAC接口模块310可将该报头附加到来自数据包存储模块352的数据中,以形成数据报。MAC接口模块310接着可将MAC报头和CRC摘要附加到IP数据报中,进而可形成可在以太网中传输的以太网帧。如果MAC接口模块310不知道目的MAC地址,MAC接口模块310可在因特网上发送查询信息。网络中的其它系统将回复目的MAC地址,所述MAC地址与该查询中的目的IP地址相关联。当以太网帧形成时,可传送到以太网中。
接收到来自网络的数据时,管线硬件级301中的MAC接口模块310可接收以太网帧。MAC接口模块310可验证MAC目的地址是否为与该MAC接口模块310关联的本地MAC地址。如果MAC目的地址与本地MAC地址不相匹配,则丢弃该以太网帧。已接收的以太网帧将传送到报头模块312并复制到数据包存储模块352。
报头模块312可计算CRC摘要、IP检验和以及TCP校验和。如果CRC摘要、IP校验和或TCP校验和无法得到成功验证,则与该接收到的以太网帧相关的信息都将被丢弃。如果CRC摘要、IP校验和或TCP校验和得到成功验证,则该接收到的以太网帧将由IP模块314进行处理。IP模块314可验证目的IP地址是否与本地IP地址相匹配。如果目的IP地址与本地IP地址不相匹配,则与该接收到的以太网帧相关的所有信息都将被丢弃。
在管线硬件级302中,TCB查询模块322可为已接收到的以太网帧查询其TCB索引。TCB索引可用于查询已接收到以太网帧的TCB数据。因为各应用程序有多个正在运行的TCP会话,TCB数据可用于将接收到的以太网帧与适当的TCP会话相关联。典型应用程序可包括邮件应用程序、Web浏览器和IP语音电话应用程序。TCB索引可在管线硬件级303中传送到调度模块330,而调度模块330可从上下文缓存模块332或上下文存储模块334中获得TCB数据。TCB数据可用于例如组合TCP数据包等,包含组合那些可能无序的数据包。
在管线硬件级304中,TCP接收模块340的接收处理功能可能包含对下一个TCP数据包的报头预测、防止已接收TCP数据包的序列号折回、当多个TCP数据包包含冗余数据时对重叠数据进行清理、记录已接收数据包的时间戳、对TCP数据包的接收进行确认以及结束TCP会话。对各TCP数据包的数据,TCP接收模块340也可将DMA传输的信息存储在队列模块354中。管线硬件级304中的队列模块354可设置DMA引擎模块350,从而可将适当数据传送到应用层120中。
管线硬件级305可以是TCP后(post-TCP)处理级。在管线硬件级305中,DMA引擎模块350可将存储在数据包存储模块352中的数据存储到存储模块106中。协议处理器模块356可将已从数据包存储模块352传送到例如存储模块106中的数据的相关信息发送到应用层120。协议处理器模块356发送的信息可能包含来自不同TCP数据包的已传送数据的地址以及各数据的比特数。
选择性地,当TCP报头指示该数据可用于RDMA时,协议处理器模块356可对TCP数据包数据进行进一步处理。TCP数据包中的RDMA数据等的数据协议处理在美国专利申请号_(代理案号:16591US02)中有详细说明。
图4a是根据本发明实施例、在多个并行管线硬件级的第一级中接收网络数据的典型流程图。在步骤400中,保留带有有效MAC地址的已接收数据包,丢弃无效MAC地址的数据包。在步骤410中,验证以太网帧中的CRC摘要、IP校验和以及TCP校验和,同时提取出IP/TCP数据报头。在步骤420中,保留带有有效IP地址的数据包,同时丢弃无效IP地址的数据包。
如图4a所示,同时参考图3b,步骤400中,管线硬件级301中的MAC接口模块310接收以太网帧。MAC接口模块310验证该MAC目的地址是否为与该MAC接口模块310关联的本地MAC地址。如果目的MAC地址与本地MAC地址不匹配,则该以太网帧将被丢弃。否则,MAC接口模块310可从以太网帧中分离数据链路层、网络层和传输层的信息。剩余信息可能对运行在应用层120中的应用程序有用。该数据可存储在数据包存储模块352中。
在步骤410中,管线硬件级301中的报头模块312可验证CRC摘要、IP校验和以及TCP校验和。如果CRC摘要、IP校验和或TCP校验和无法得到成功验证,则与该接收到的以太网帧相关的所有信息都将被丢弃。如果CRC摘要、IP校验和或TCP校验和得到成功验证,则该接收到的以太网帧将由IP模块314进行处理。在步骤420中,管线硬件级301中的IP模块314验证IP目的地址是否与本地IP地址相同。如果IP目的地址与本地IP地址不相匹配,则与该接收到的以太网帧相关的所有信息都将被丢弃。如果IP地址验证成功,则TCP和IP报头将被传送到第二个管线硬件级302中。
图4b是根据本发明实施例,用于说明在多个并行管线硬件级的第一级中传输网络数据的典型流程图。在步骤430中,要传送到网络中的数据可被复制到本地缓存中。在步骤440中,给数据附加上TCP和IP包头报头进而形成IP数据报。在步骤450中,给该IP数据报附加MAC报头和CRC校验和以生成以太网帧。
如图4b所示,同时参考图3b,步骤430中,要传送的数据可从数据包存储模块352复制到管线硬件级301中的MAC接口模块310中的本地缓存中。在复制过程中,MAC接口模块310可计算IP和TCP的校验和。在步骤440中,MAC接口模块310可将TCP数据报头和IP报头附加到要传送的数据中,从而形成IP数据报。在步骤450中,MAC接口模块310可将MAC报头和CRC摘要附加到IP数据报中,从而形成可在以太网中传输的以太网帧。如果MAC接口模块310不知道目的MAC地址,MAC接口模块310可向因特网发送查询信息。网络中的路由器将回复目的MAC地址,该MAC地址与该查询中的目的IP地址相关联。当以太网帧形成时,该帧可在以太网中进行传输。
图5是根据本发明实施例的多个并行管线硬件级中第二级的方框图。如图5所示,TCB查询模块322可包括TCB控制器502和查询表504。
TCB控制器502可包括适当的逻辑、电路和/或代码,可用于在管线硬件级301中接收来自报头模块312的TCP和IP报头。TCB控制器502解析该报头以获得源和目的IP地址以及源和目的TCP端口号。这四项可称为一个元组(tuple),且可用于查询查询表504中的相应TCB索引。TCB控制器502可将该TCB索引和TCP及IP报头传送到调度模块330,如图6所示。
图6是根据本发明实施例的多个并行管线硬件级中第三级的方框图。如图6所示,其中包括调度模块330、队列模块354、TCP传输模块320、TCP接收模块340和上下文存储模块334。调度模块330可包括上下文缓存模块332、写入逻辑模块602、读取逻辑模块604、报头寄存器模块606、TCB寄存器模块608和612以及回写寄存器模块610和614。
向网络传送数据时,关于要传送数据的各信息可从队列模块354传送到读取逻辑模块604中。该信息可包括数据的初始序列号、要传送数据的比特数、要传送数据可存储的缓存地址和TCB索引。该信息可由协议处理器模块356放置在队列模块354中。读取逻辑模块604可使用TCB索引以从上下文缓存模块332或上下文存储模块334中获取TCB数据。读取逻辑模块604接着可将TCB数据放置到TCB寄存器模块612中,且TCB数据可被传送到TCP传输模块320中。TCP传输模块可根据需要修改某些信息,如序列号等,并将修改的TCB数据传送到写入逻辑模块602。写入逻辑模块602可将TCB数据写入到上下文缓存332或上下文存储模块334中。
当从网络中接收数据时,来自TCB查询模块322的TCB索引以及TCP和IP报头可被传送到读取逻辑模块604中。读取逻辑模块604可使用TCB索引以读取上下文缓存模块332或上下文存储模块334中的相应TCB数据。接着读取逻辑模块604可将TCB数据放置到TCB寄存器模块608中,且将TCP和IP报头放置到报头寄存器模块606中。TCB寄存器模块608和报头寄存器模块606中的信息可被传送到TCP接收模块340中。TCP接收模块340可将信息传送到队列模块354中,将已接收数据传送到例如CPU102中时需要该队列模块354。该信息可以是开始序列号、数据的比特数、数据存储地址和TCB索引。TCP接收模块340可根据需要修改某些信息,如确认号等,并将已修改的TCB数据传送到回写寄存器模块610中。已修改的TCB数据接着可被传送到写入逻辑模块602中。写入逻辑模块602可将TCB数据写入到上下文缓存332或上下文存储模块334中。
图7是根据本发明实施例的多个并行管线硬件级中第二级和第四级的方框图。该方框图可表示例如TCP传送模块320和/或TCP接收模块340。如图7所示,有限状态机700可包括复用器702、TCB寄存器模块704、组合逻辑模块706、状态寄存器模块708和本地控制寄存器模块710。有限状态机700可从一个状态转换到下一个状态,如在输入时钟信号CLK的上升沿处进行转换。
TCB寄存器模块704可包括适当逻辑和/或电路,用于在输入时钟信号CLK的上升沿处存储TCB和/或TCP及IP报头数据。状态寄存器模块708可包括适当逻辑和/或电路,用于在输入时钟信号CLK的上升沿处输出可指示特定状态的比特数。本地控制寄存器模块710可包括适当逻辑和/或电路,用于在输入时钟信号CLK的上升沿处输出特定状态的控制比特数。
当有限状态机700开始进行传送或接收操作时,复用器从状态寄存器模块708中选择信号和从调度模块330等处选择查询信号。状态寄存器模块708可用于选择输入TCB数据、TCP和IP报头。来自复用器702的数据可保存在TCB寄存器模块704中。组合逻辑模块706可使用TCB寄存器模块704的输出数据、状态寄存器模块708的输出和本地控制寄存器模块710的输出,生成输入数据。在第一级可能选择调度模块330中的数据之后,接下来的状态可选择复用器702数据,该数据可从组合逻辑模块706中反馈得到。
对于从网络中接收得到的数据包,有限状态机700生成的输出可为报头预测,该预测可用于对各TCP会话的下一个接收TCP数据包进行快速处理。如果接收到的TCP数据包不是已预测的数据包,则需要进行附加处理。例如在序列号达到最大值之后可能出现折回(wrap around)的情况下,可能需要防止折回的序列处理。此外,有限状态机700可能去除多个数据包中的重复或重叠信息。例如,如果发送主机因为没有收到已发送数据包的确认信息而发送另外的数据包。为了避免冗余,可能需要对重复数据进行整理。有限状态机700也可为各接收到的数据包生成时间戳,从而有助于追踪TCP数据包。对于接收到的TCP数据包和结束TCP会话,当传送主机请求时有限状态机700也应进行确认处理。
对于要传送到网络中的数据,有限状态机700可能生成TCP和IP报头。如,对于从网络中接收得到的数据包,生成的输出可被传送到如队列模块354;对于要传送到网络中的数据,生成的输出可被传送到MAC接口模块310中。
图8是根据本发明实施例的多个并行管线硬件级的第五级的典型流程图。在步骤800中,对于需要传送到网络中的数据,或者已从网络中接收得到并传送到主机存储器的数据,在CPU 102和协议处理器模块356之间交换信息。在步骤810中,可设置队列模块354进而将数据传送到网络中。在步骤820中,可向DMA引擎模块350提供用于DMA传输的源和目的地址以及要传输的比特数。在步骤830中,数据可从主机存储器模块106经DMA传送至数据包存储器模块352中。在步骤840中,可为从网络中接收得到的数据设置队列模块354。在步骤850中,可向DMA引擎模块350提供用于DMA传输的源和目的地址以及要传输的比特数。在步骤860中,接收到的数据可从数据包存储模块352经DMA传送到主机存储器模块106中。
如图8所示,同时参考图1c和图3,步骤800和860可在本发明的多个并行管线硬件级的第五级进行。第五级可能包括数据包存储模块352、DMA引擎模块350、队列模块354和协议处理器模块356。在步骤800中,协议处理器模块356可能与如CPU 102交换信息。来自CPU 102的信息可能包括TCP流ID、数据比特数和数据地址。TCP流ID可能等于如TCB索引。协议处理器模块356可接收来自CPU 102的消息信息并增加队列模块354,从而将数据传送到网络中。下一步是将数据传送到网络的步骤810。
接收数据时,消息可能从协议处理器模块356传送到例如CPU 102中。该消息可指示传送到主存储模块106中的数据信息。该信息可包括地址位置和各数据的比特数。即便TCP数据包尚未按序接收,该数据信息可将数据按序重新组合。下一步是从网络中接收数据的步骤840。此外,例如,CPU 102传送的消息可能是关于主存储模块106中各地址的信息,而主存储模块106可用作DMA目的缓存。
在步骤810中,协议处理器模块356可将适当信息传送到队列模块354中,以进行DMA传送。队列模块354可设置数据的DMA传送,例如,从主存储模块106到数据包存储模块352。信息可包括例如源地址、目的地址、传送的比特数。相应地,在步骤820中,队列模块354可设置源DMA地址、目的DMA地址、和在DMA引擎模块350中传送的比特数。在步骤830中,当DMA引擎模块350结束DMA传送之后,可指示DMA传送到队列模块354的结束。队列模块354可将此传送到调度模块330中。
在步骤840中,TCP接收模块340可将适当信息传送到队列模块354中以进行DMA传送。队列模块354可设置数据的DMA传送,例如,从数据包存储模块352到主存储模块106。该信息可能包括源地址、目的地址和传送的比特数。相应地,在步骤850中,队列模块354可设置源DMA地址、目的DMA地址、和在DMA引擎模块350中传送的比特数。在步骤860中,DMA引擎模块350结束DMA传送之后,可指示DMA传送到队列模块354的结束。队列模块354可将此传送到协议处理器模块356中。
图9a是根据本发明实施例的通过多个并行管线硬件级将数据传输到网络的典型流程图。在步骤900中,将主存储模块106中的数据传送到数据包存储模块352中。在步骤910中,TCB数据调度请求与传输到网络中的数据相对应。在步骤920中,可从TCB数据中生成TCP和IP报头。在步骤930中,可生成以太网帧且该以太网帧可发送到网络中。
如图9a所示,同时参考图1c和3b,来自主机的数据可能通过在单网络芯片上的多个并行管线硬件级中执行的步骤900到930传送到网络中。在步骤900中,在多个并行的管线硬件级的第五级,协议处理器模块356可将适当信息存储在多个并行的管线硬件级的第五级的队列模块354中,以进行DMA传送。队列模块354接着可设置DMA引擎模块350,并开始将对待传送到网络中的数据进行DMA传送。该数据可能是从主存储模块106经DMA传送到数据包存储模块352的。
在步骤910中,在多个并行的管线硬件级的第三级,队列模块354可将TCB索引传送到调度模块330且请求数据传输的调度。调度模块330可查询对应于该TCB索引的TCB数据。该TCB数据可被传送到TCB传送模块320中。在步骤920中,在多个并行的管线硬件级的第二级,TCB传送模块320可从TCB数据中生成TCP和IP报头。该TCP和IP报头可被传送到MAC接口模块310中。
在步骤930中,在多个并行的管线硬件级的第一级,MAC接口模块310可将TCP和IP报头附加到数据包存储模块352中的适当数据中,进而形成IP数据报。MAC接口模块310接着可通过将以太网报头附加到IP数据报中、插入已计算的IP校验和以及TCP校验和、以及将CRC摘要附加到IP数据报中,以形成以太网帧。最终的以太网帧可传送到网络中。
图9b是根据本发明实施例的通过多个并行管线硬件级从网络接收数据的典型流程图。在步骤950中,验证CRC摘要、IP校验和以及TCP校验和,同时提取TCP和IP报头。在步骤960中,可查询已接收TCP数据包的TCB信息。在步骤970中,可请求对接收到的TCP数据包进行调度。在步骤980中,处理已接收的TCP数据包。在步骤990中,将TCP数据包中的数据载荷传送到主机中。
如图9b所示,同时参考图1c和3b,从网络接收得到的数据可通过在单网络芯片上的多个并行管线硬件级中执行的步骤950到990传送到主机中。在步骤950中,在多个并行的管线硬件级的第一级,由MAC接口310接收以太网帧。MAC接口模块310验证MAC目的地址是否为与MAC接口模块310相关的本地MAC地址。如果MAC目的地址与本地MAC目的地址不相匹配,该以太网帧将被丢弃。接收到的以太网帧将被传送到报头模块312中,同时复制到数据包存储模块352中。
报头模块312可提取报头信息,同时计算CRC摘要、IP校验和以及TCP校验和。如果CRC摘要、IP校验和或TCP校验和不能得到成功验证,则与所接收的以太网帧相关的所有信息都会被丢弃。如果CRC摘要、IP校验和或TCP校验和得到成功验证,则接收到的以太网帧将由IP模块314进行处理。IP模块314可验证目的IP地址是否与本地IP地址相匹配。如果目的IP地址与本地IP地址不相匹配,则与该接收到的以太网帧相关的所有信息都将被丢弃。
在步骤960中,在多个并行的管线硬件级的第二级,TCB查询模块322可查询已接收数据包的TCB索引。TCB索引可用于查询可用于查询其中包括已接收以太网帧的TCP会话信息的TCB数据。因为各应用程序有多个正在运行的TCP会话,该会话信息包括将接收到的以太网帧与适当的TCP会话关联在一起。典型应用程序可包括邮件应用程序、web浏览器和IP语音电话应用程序。
在步骤970中,在多个并行的管线硬件级的第三级,TCB索引可传送到调度模块330中,而调度模块330可从上下文缓存模块332或上下文存储模块334中获取TCB数据。该TCB数据可用于例如组合TCP数据包,其中包括那些已经失序的数据包。
在步骤980中,在多个并行的管线硬件级的第四级,TCP接收模块340可对下一个TCP数据包进行报头预测,防止已接收TCP数据包的序列号折回,对多个可能包含重复数据的TCP数据包进行重叠数据整理,记录已接收数据包的时间戳、对TCP数据包的接收进行确认以及结束TCP会话。TCP接收模块340也可将用于DMA传送的信息存储到各TCP数据包中数据的队列模块354中。
在步骤990中,在多个并行的管线硬件级的第五级,队列模块354可设置DMA引擎模块350,用于将适当数据传送到应用层120中。这可以是后TCP处理级。DMA引擎模块350可将存储在数据包存储模块352中的数据DMA传送到存储模块106中。协议处理器模块356可将已从数据包存储模块352传送到存储模块106中的数据相关信息发送到应用层120。协议处理器模块356发送的信息可能包含来自不同TCP数据包的已传送数据的地址以及各数据的比特数。即使接收到的TCP数据包是无序的,则该数据信息也可将数据按序重新组合。
尽管在图9a和9b中分别描述了从网络接收数据过程以及向网络发送数据过程,但本发明不应看成是仅限于传送或接收。为了支持传送和接收的某些功能,步骤900到930和步骤950到990中至少有一些步骤是同时发生的。例如,在步骤900中,在多个并行的管线硬件级的第五级,传送到网络中的数据可能是从主存储模块106经DMA传送到数据包存储模块352中。同时,在步骤950中,在多个并行的管线硬件级的第一级,MAC接口310可能正在接收以太网帧。
此外,尽管本发明实施例描述的是TCP数据的处理,本发明并不局限于此。例如,当TCP数据报头指示说明该TCP数据包数据可用于RDMA或iSCSI,则协议处理器模块356可对该TCP数据包数据进行进一步处理。协议处理器模块356接着可进一步解析TCP数据包数据并分离出RDMA或iSCSI数据。
对于每秒10兆比特的以太网(10G)网络而言,TCP数据包吞吐量速率可为每秒一千五百万数据包。这是因为TCP数据包内嵌在以太网帧中,而以太网帧的最小大小为72字节。由于以太网帧的最小帧间间隔为12字节,所以有一些额外的开销。因此,典型的最大数据包到达速率为每67.2纳秒(ns)一个数据包。因此,传输层124、网络层126和数据链路层128的的硬件管线协议栈,如管线硬件级301、302、303、304和305,各管线硬件级的设计目标时间为67.2ns。尽管连续描述了各功能,本发明无需受此限制。例如,报头模块312的校验和操作以及IP模块314的IP地址验证操作可以并行进行。
尽管本发明实施例涉及TCP传输层和IP网络层,但本发明无需受此限制。因此,本发明实施例可用于带IP网络层的其它传输层,如用户数据报协议(UDP)。类似地,本发明实施例也可支持其它网络层,如Appletalk和IPX,以及由其它网络层支持的传输层。此外,本发明的其它实施例在管线硬件级的数目和/或各管线硬件级的功能上可能有所差异。
因此,本发明可用硬件、软件或软硬件结合来实现。本发明可在至少一台计算机系统的集中式环境下实现,也可在各元件分布在不同相互连接的计算机系统的分布式环境下实现。任何种类的计算机系统或其它适合于执行本发明所述方法的设备都适合使用本发明。软硬件结合的范例可为带有某计算机程序的通用计算机系统,但载入并运行该计算机程序时,可控制计算机系统执行本发明所述的方法。
本发明也可内置在计算机程序产品中,其中包含可实现本发明所述方法的所有性能,且当其载入到计算机系统时可执行这些方法。本上下文中的计算机程序是指以任何语言、代码或符号编写的指令集的任何表达式,可使带有信息处理功能的系统直接执行特定功能或者在完成下列一项或两项之后执行特定功能:a)转换为其它语言、代码或符号;b)以其它形式重新生成。
本发明是根据特定实施例进行描述的,但本领域的技术人员应明白在不脱离本发明范围时,可进行各种变化和等同替换。此外,为适应本发明技术的特定场合或材料,可对本发明进行诸多修改而不脱离其保护范围。因此,本发明并不限于在此公开的特定实施例,而包括所有落入到权利要求保护范围的实施例。

Claims (2)

1.一种处理网络数据的方法,其特征在于,该方法包含在单网络芯片上使用多个并行管线硬件级处理下述中的至少一项:接收到的TCP数据包和要传输的TCP数据包;
所述多个并行管线硬件级的第一级包括MAC接口模块、报头模块和IP模块;所述多个并行管线硬件级的第二级包括TCB查询模块和TCP传输模块;所述多个并行管线硬件级的第三级包括调度模块、上下文缓存模块和上下文存储模块;所述多个并行管线硬件级的第四级包括TCP接收模块;所述多个并行管线硬件级的第五级包括队列模块、DMA引擎模块、数据包存储模块和协议处理器模块;
在所述第一级,所述MAC接口模块接收并传送以太网帧,当接收以太网帧时,MAC接口模块验证MAC目的地址是否为与MAC接口模块相关的本地MAC地址,如果MAC目的地址与本地MAC目的地址不相匹配,该以太网帧将被丢弃;所述报头模块提取所述以太网帧的报头信息,对已接收的以太网帧中所提取的数据链路层信息、网络层信息和传输层信息进行解析,从而验证CRC摘要、IP校验和以及TCP校验和;IP模块对所接收到的以太网帧中的IP目的地址进行验证;
在所述第二级,所述TCB查询模块查询接收到的TCP数据包的TCB索引;所述TCP传输模块生成IP和TCP报头,并发送给MAC接口模块;
在所述第三级,所述TCB索引传送到所述调度模块,所述调度模块从所述上下文缓存模块或所述上下文存储模块中获取TCB数据,并传送到TCP传输模块中;
在所述第四级,所述TCP接收模块对下一个TCP数据包进行报头预测,对多个可能包含重复数据的TCP数据包进行重叠数据整理,记录已接收数据包的时间戳、对TCP数据包的接收进行确认以及结束TCP会话;
在所述第五级,将接收的已处理的TCP数据包传送到应用层,所述队列模块设置DMA引擎模块以进行数据传送,协议处理器模块将传送数据中的相关信息发送到应用层;
所述多个并行管线硬件级的至少一个级中,在所述单网络芯片上存储由所述单网络芯片处理的活动网络连接的TCB数据的至少一部分。
2.一种处理网络数据的系统,其特征在于,该系统包含单网络芯片,该单网络芯片包含处理下述项中的至少一个的多个并行管线硬件级:接收到的TCP数据包,和要传输的TCP数据包;
所述多个并行管线硬件级的第一级包括MAC接口模块、报头模块和IP模块;在所述第一级,所述MAC接口模块接收并传送以太网帧,当接收以太网帧时,MAC接口模块验证MAC目的地址是否为与MAC接口模块相关的本地MAC地址,如果MAC目的地址与本地MAC目的地址不相匹配,该以太网帧将被丢弃;所述报头模块提取所述以太网帧的报头信息,对已接收的以太网帧中所提取的数据链路层信息、网络层信息和传输层信息进行解析,从而验证CRC摘要、IP校验和以及TCP校验和;IP模块对所接收到的以太网帧中的IP目的地址进行验证;
所述多个并行管线硬件级的第二级包括TCB查询模块和TCP传输模块;在所述第二级,所述TCB查询模块查询接收到的TCP数据包的TCB索引;所述TCP传输模块生成IP和TCP报头,并发送给MAC接口模块;
所述多个并行管线硬件级的第三级包括调度模块、上下文缓存模块和上下文存储模块;在所述第三级,所述TCB索引传送到所述调度模块,所述调度模块从所述上下文缓存模块或所述上下文存储模块中获取TCB数据,并传送到TCP传输模块中;
所述多个并行管线硬件级的第四级包括TCP接收模块;在所述第四级,所述TCP接收模块对下一个TCP数据包进行报头预测,对多个可能包含重复数据的TCP数据包进行重叠数据整理,记录已接收数据包的时间戳、对TCP数据包的接收进行确认以及结束TCP会话;
所述多个并行管线硬件级的第五级包括队列模块、DMA引擎模块、数据包存储模块和协议处理器模块;在所述第五级,将接收的已处理的TCP数据包传送到应用层,所述队列模块设置DMA引擎模块以进行数据传送,协议处理器模块将传送数据中的相关信息发送到应用层;
所述多个并行管线硬件级的至少一个级中,在所述单网络芯片上存储由所述单网络芯片处理的活动网络连接的TCB数据的至少一部分。
CN2006100915152A 2005-06-07 2006-06-06 一种处理网络数据的方法及系统 Expired - Fee Related CN101047714B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US68826605P 2005-06-07 2005-06-07
US60/688,266 2005-06-07
US11/228,863 US20060274789A1 (en) 2005-06-07 2005-09-16 Apparatus and methods for a high performance hardware network protocol processing engine
US11/228,863 2005-09-16

Publications (2)

Publication Number Publication Date
CN101047714A CN101047714A (zh) 2007-10-03
CN101047714B true CN101047714B (zh) 2011-12-14

Family

ID=36932378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006100915152A Expired - Fee Related CN101047714B (zh) 2005-06-07 2006-06-06 一种处理网络数据的方法及系统

Country Status (5)

Country Link
US (1) US20060274789A1 (zh)
EP (1) EP1732285B1 (zh)
CN (1) CN101047714B (zh)
DE (1) DE602006007913D1 (zh)
TW (1) TWI339055B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7460550B2 (en) * 2004-06-21 2008-12-02 Industrial Technology Research Institute Storage structure and method utilizing multiple protocol processor units
JP4629775B2 (ja) * 2005-06-21 2011-02-09 エヌエックスピー ビー ヴィ PCIExpressデバイスのデータ完全性の並列検査方法
US20070239897A1 (en) * 2006-03-29 2007-10-11 Rothman Michael A Compressing or decompressing packet communications from diverse sources
JP5094482B2 (ja) * 2008-03-07 2012-12-12 キヤノン株式会社 処理装置及びその処理方法
TWI420869B (zh) * 2008-05-09 2013-12-21 Hon Hai Prec Ind Co Ltd 消息發送系統及方法
US8638790B2 (en) * 2008-06-23 2014-01-28 Qualcomm Incorporated Method and apparatus for managing data services in a multi-processor computing environment
US8838782B2 (en) * 2008-09-19 2014-09-16 Nec Corporation Network protocol processing system and network protocol processing method
US8572187B2 (en) * 2009-04-27 2013-10-29 International Business Machines Corporation Automated duplicate message content detection
US8571031B2 (en) * 2009-10-07 2013-10-29 Intel Corporation Configurable frame processing pipeline in a packet switch
US9141831B2 (en) 2010-07-08 2015-09-22 Texas Instruments Incorporated Scheduler, security context cache, packet processor, and authentication, encryption modules
US20120173952A1 (en) 2010-12-29 2012-07-05 Kumar K Venkat Praveen Parallel crc computation with data enables
US9154413B2 (en) * 2012-06-21 2015-10-06 Breakingpoint Systems, Inc. High-speed CLD-based pipeline architecture
US10404625B2 (en) * 2013-10-29 2019-09-03 Intel Corporation Ethernet enhancements
CN103631593A (zh) * 2013-12-03 2014-03-12 上海新浩艺软件有限公司 一种用于苹果计算机系统的无盘引导控制方法以及系统
EP3300274B1 (en) * 2015-07-08 2021-03-03 Huawei Technologies Co., Ltd. User equipment and network side equipment, and method of determining processing mode for data packet
US9606959B1 (en) * 2015-11-12 2017-03-28 International Business Machines Corporation Indicating a sending buffer and receiving buffer in a message to use to validate the message in the receiving buffer
KR102523418B1 (ko) * 2015-12-17 2023-04-19 삼성전자주식회사 프로세서 및 프로세서에서 데이터를 처리하는 방법
US10817460B2 (en) 2019-08-28 2020-10-27 Advanced New Technologies Co., Ltd. RDMA data sending and receiving methods, electronic device, and readable storage medium
CN110704361A (zh) * 2019-08-28 2020-01-17 阿里巴巴集团控股有限公司 Rdma数据发送及接收方法、电子设备及可读存储介质
CN114827300B (zh) * 2022-03-20 2023-09-01 西安电子科技大学 硬件保障的数据可靠传输系统、控制方法、设备及终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107971A1 (en) * 2000-11-07 2002-08-08 Bailey Brian W. Network transport accelerator
US20020161919A1 (en) * 1997-10-14 2002-10-31 Boucher Laurence B. Fast-path processing for receiving data on TCP connection offload devices
US6781990B1 (en) * 2002-02-11 2004-08-24 Extreme Networks Method and system for managing traffic in a packet network environment

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088356A (en) * 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US7089293B2 (en) * 2000-11-02 2006-08-08 Sun Microsystems, Inc. Switching system method for discovering and accessing SCSI devices in response to query
KR20030080443A (ko) * 2002-04-08 2003-10-17 (주) 위즈네트 하드웨어 프로토콜 프로세싱 로직으로 구현된 인터넷 통신프로토콜 장치 및 상기 장치를 통한 데이터 병렬 처리 방법
US7324540B2 (en) * 2002-12-31 2008-01-29 Intel Corporation Network protocol off-load engines
US20050165985A1 (en) * 2003-12-29 2005-07-28 Vangal Sriram R. Network protocol processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161919A1 (en) * 1997-10-14 2002-10-31 Boucher Laurence B. Fast-path processing for receiving data on TCP connection offload devices
US20020107971A1 (en) * 2000-11-07 2002-08-08 Bailey Brian W. Network transport accelerator
US6781990B1 (en) * 2002-02-11 2004-08-24 Extreme Networks Method and system for managing traffic in a packet network environment

Also Published As

Publication number Publication date
EP1732285A1 (en) 2006-12-13
TW200715783A (en) 2007-04-16
TWI339055B (en) 2011-03-11
EP1732285B1 (en) 2009-07-22
DE602006007913D1 (de) 2009-09-03
US20060274789A1 (en) 2006-12-07
CN101047714A (zh) 2007-10-03

Similar Documents

Publication Publication Date Title
CN101047714B (zh) 一种处理网络数据的方法及系统
CN100476766C (zh) 通过网络传输消息的方法
CN101047720B (zh) 处理网络数据的方法和系统
CN100552626C (zh) 用网络栈同步和上载已卸载网络栈连接的方法
US6768992B1 (en) Term addressable memory of an accelerator system and method
EP1330720B1 (en) Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data
US8503450B2 (en) TCP receiver acceleration
US7903689B2 (en) Method and system for packet reassembly based on a reassembly header
CN101217464B (zh) 一种udp数据包的传输方法
CN1846409B (zh) 用于基于传输控制协议话务流特征进行超高速缓存查找的设备和方法
US20010004354A1 (en) Accelerator system and method
US20100217878A1 (en) Method, system, and program for enabling communication between nodes
US20050129064A1 (en) Reliable transport layer protocol in low performance 8-bit microcontrollers
CN103001827A (zh) 基于万兆网卡的以太网包检验和fpga硬件校验方法
WO1995010150A1 (en) Method and apparatus for connecting a node to a wireless network using a standard protocol
JPH0831893B2 (ja) 通信装置
CN108494817A (zh) 数据传输方法、相关装置及系统
US7269661B2 (en) Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet
CN102197627A (zh) 组播流量收敛的改善
KR100487713B1 (ko) 네트워크 프로세서 장치의 전체적인 동작을 정의 및제어하는 방법
CN101803289B (zh) 基于适合度的路由
EP2201740B1 (en) High speed packet processing in a wireless network
CN1965542A (zh) 处理分组标头
CN103841016A (zh) 一种可编程虚拟化路由器多协议类型数据包并行处理方法及装置
US20080056263A1 (en) Efficient transport layer processing of incoming packets

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: 20111214

Termination date: 20170606

CF01 Termination of patent right due to non-payment of annual fee