CN112953967A - 网络协议卸载装置和数据传输*** - Google Patents
网络协议卸载装置和数据传输*** Download PDFInfo
- Publication number
- CN112953967A CN112953967A CN202110339668.9A CN202110339668A CN112953967A CN 112953967 A CN112953967 A CN 112953967A CN 202110339668 A CN202110339668 A CN 202110339668A CN 112953967 A CN112953967 A CN 112953967A
- Authority
- CN
- China
- Prior art keywords
- sending
- receiving
- data
- channel
- host
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种网络协议卸载装置和数据传输***,装置包括:发送通道,连接主机,用于基于主机端产生的发送业务请求,对发送数据进行组包处理后发送;接收通道,连接主机,用于接收外部设备向主机发送的接收数据,并将接收数据拆包处理后,传输给主机;其中,接收通道与发送通道相互独立;协议共享模块,分别连接发送通道和接收通道,用于按照预设的网络协议处理发送通道和接收通道共享的数据连接信息;其中,发送通道根据第一数据连接信息发出发送报文;接收通道根据第二数据连接信息对接收数据拆包处理,将拆包处理后的接收数据传输给主机。本申请实现了提高传输协议的处理能力,降低数据传输过程中对主机资源的占用率。
Description
技术领域
本申请涉及数据传输技术领域,具体而言,涉及一种网络协议卸载装置和数据传输***。
背景技术
随着云计算、大数据、物联网等技术的广泛应用,数据规模呈现***式增长,导致对于网络带宽、延时等性能的依赖性日益增强。网络带宽每年以2到3倍的速度增长,目前10G网络已普及到各个领域,40G、100G网络也在数据中心等流量集中的关键领域大规模运用。而TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联协议)协议族作为一种网络协议标准,占据着网络协议主流标准地位,应用最为广泛。传统的TCP/IP网络协议处理由操作***内核完成分组转发、校验、传输控制、数据分片等流程,并且对于大数据量的网络传输,会产生频繁的I/O中断以及数据拷贝,大幅增加处理器上下文切换开销和***总线负载。根据Thumb定律,处理1bit网络数据需要消耗1Hz的CPU处理周期,网络带宽的快速增长必将消耗大量的处理器资源,最终导致网络IO成为***性能瓶颈。
为解决高速网络通信中,对于TCP/IP网络协议的处理导致的处理器资源过载问题,通信技术领域提出了多种网络协议优化技术,其中,TOE(TCP/IP Offload Engine,TCP/IP卸载引擎)技术,通过将传统TCP/IP网络协议的处理流程由操作***内核卸载至网卡,由网卡硬件执行协议栈处理,从根本上减轻了处理器工作负载,释放出更多的处理器资源。TOE技术的应用不仅能够降低主机处理器资源消耗,同时能够提升网络吞吐量及缩短网络延时,具有TOE功能的网络设备将成为未来数据中心构建高性能、低功耗网络基础设施的首选。而基于FPGA设计实现TOE网卡兼具灵活性及成本优势,适应于数据中心网络环境。
基于FPGA硬件化实现TCP/IP协议栈,需要综合考虑FPGA资源占用率、网络性能以及可支持的连接数。目前,商用TOE网卡支持的连接数在千条量级,基于FPGA的TOE网卡使用多TCP/IP协议栈实例实现多连接,支持的连接数相对更少,且资源占用率较高。此外,对于大数据块的通信传输,主机仍然需要与TOE网卡进行频繁的交互,跟踪、控制数据发送的过程,占用了大量的处理器资源、降低了数据吞吐量,对于多连接情景、大数据量传输,情况将更加严重。
发明内容
本申请实施例的目的在于提供一种网络协议卸载装置和数据传输***,用以提高传输协议的处理能力,降低数据传输过程中对主机资源的占用率。
本申请实施例第一方面提供了一种网络协议卸载装置,包括:发送通道,连接主机,用于基于所述主机端产生的发送业务请求,对发送数据进行组包处理后发送;接收通道,连接主机,用于接收外部设备向所述主机发送的接收数据,并将所述接收数据拆包处理后,传输给所述主机;其中,所述接收通道与所述发送通道相互独立;协议共享模块,分别连接所述发送通道和所述接收通道,用于按照预设的网络协议处理所述发送通道和所述接收通道共享的数据连接信息;其中,所述发送通道通过访问所述协议共享模块获取到所述发送数据对应的第一数据连接信息,并根据所述第一数据连接信息构建发送报文,发出所述发送报文;所述接收通道通过访问所述协议共享模块获取到所述接收数据对应的第二数据连接信息,并根据所述第二数据连接信息对所述接收数据拆包处理,将拆包处理后的接收数据传输给所述主机。
于一实施例中,所述发送通道包括:发送接口,分别连接所述主机和所述协议共享模块,用于接收所述主机产生的发送业务请求,并在接收到所述发送业务请求时,访问所述协议共享模块,以触发发送事件。
于一实施例中,所述发送通道还包括:发送缓存,连接所述发送接口,用于接收来自所述发送接口的所述发送事件的数据,并根据预先配置的缓存容量,缓存所述发送事件的数据记录。
于一实施例中,所述发送通道还包括:发送缓存控制器,分别连接所述发送接口和所述发送缓存,用于根据所述发送事件调控所述发送缓存的第一缓存状态信息。
于一实施例中,所述发送通道还包括:发送引擎,分别连接所述发送缓存、所述发送缓存控制器和所述协议共享模块,用于在接收到来自所述发送缓存控制器对所述发送事件的发送指令时,从所述协议共享模块中获取到所述发送事件对应的所述第一数据连接信息,从所述发送缓存中获取所述发送事件对应的所述发送数据,并根据所述第一数据连接信息对所述发送数据进行组包处理,生成发送报文,发出所述发送报文。
于一实施例中,所述接收通道包括:接收引擎,分别连接外部设备的物理链路接口和所述协议共享模块,用于在接收所述外部设备向所述主机发送的接收报文,抽取所述接收报文的元数据,并根据所述元数据从所述协议共享模块中获取所述接收报文对应的第二数据连接信息,根据所述第二数据连接信息对所述接收报文进行拆包、校验处理,得到所述接收报文携带的接收数据。
于一实施例中,所述接收通道还包括:接收缓存,连接所述接收引擎,用于接收来自所述接收引擎的所述接收数据,并根据预先配置的缓存容量,缓存接收事件的数据记录。
于一实施例中,所述接收通道还包括:接收缓存控制器,分别连接所述接收引擎和所述接收缓存,用于根据所述接收事件调控所述接收缓存的第二缓存状态信息。
于一实施例中,所述接收通道还包括:接收接口,分别连接所述主机、所述接收缓存和所述接收缓存控制器,用于访问所述接收缓存控制器和所述接收缓存,获取所述接收数据对应的所述第二缓存状态信息,并根据所述第二缓存状态信息构建所述接收数据的存储器传输描述,基于所述存储器传输描述发送所述接收数据至所述主机。
于一实施例中,还包括:所述接收接口连接所述协议共享模块,用于访问所述协议共享模块,获取端口状态信息,并将所述端口状态信息回复给所述主机。
于一实施例中,还包括:所述接收接口连接所述接收引擎,用于配置数据到达中断策略,并根据所述中断策略向所述主机发送中断信息。
于一实施例中,所述协议共享模块包括:连接状态管理器,分别连接所述发送通道和所述接收通道,用于分别存储所述发送数据的第一数据连接状态信息和所述接收数据的第二数据连接状态信息;所述连接状态管理器配置有读写锁机制。
于一实施例中,所述协议共享模块还包括:计时器,分别连接所述发送通道和所述接收通道,用于对所述发送数据和所述接收数据计时。
于一实施例中,所述协议共享模块还包括:事件引擎,分别连接所述发送通道和所述接收通道,用于分别处理所述发送通道处理的发送事件和所述接收通道处理接收事件;其中,所述接收事件优先级高于所述发送事件的优先级。
于一实施例中,所述事件引擎在处理所述发送事件时,判断待发送数据的数据长度是否大于预设长度,若是,输出所述发送事件,否则,基于所述预设长度将所述发送事件切分成多个子事件,分别输出所述多个子事件。
本申请实施例第二方面提供了一种数据传输***,包括:主机和如本申请实施例第一方面及其任一实施例的网络协议卸载装置;其中,所述主机包括:存储器和处理器,所述主机上安装有驱动程序,所述处理器用于执行所述驱动程序,以驱动所述网络协议卸载装置运行。
本申请提供的网络协议卸载装置和数据传输***,采用发送通道与接收通道相互独立的基础架构,发送通道与接收通道通过协议共享模块共享数据连接信息等公共信息,发送通道通过访问所述协议共享模块获取到所述发送数据对应的第一数据连接信息,并根据所述第一数据连接信息构建发送报文,发出所述发送报文;所述接收通道通过访问所述协议共享模块获取到所述接收数据对应的第二数据连接信息,并根据所述第二数据连接信息对所述接收数据拆包处理,将拆包处理后的接收数据传输给所述主机。如此提高了传输协议的处理能力,降低了数据传输过程中对主机资源的占用率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请一实施例的数据传输***的结构示意图;
图2为本申请一实施例的网络协议卸载装置的结构示意图;
图3为本申请一实施例的网络协议卸载装置的结构示意图;
图4为本申请一实施例的发送接口和接收接口的结构示意图;
图5为本申请一实施例的发送缓存的结构示意图;
图6为本申请一实施例的发送引擎的实施原理示意图;
图7为本申请一实施例的接收引擎的实施原理示意图;
图8为本申请一实施例的接收缓存的结构示意图;
图9为本申请一实施例的TCP状态管理器的实施原理示意图;
图10为本申请一实施例的事件引擎的实施原理示意图。
附图标记:
100-数据传输***,1-主机,2-网络协议卸载装置,21-发送通道,22-接收通道,23-协议共享通道,211-发送接口,212-发送引擎,213-发送缓存控制器,Tx buffer-发送缓存,221-接收接口,222-接收引擎,223-接收缓存控制器,Rx buffer-接收缓存,231-连接状态管理器,232-计时器,233-事件引擎。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,本实施例提供一种数据传输***100,包括:包括:主机1和网络协议卸载装置2,其中,主机1包括:存储器和处理器,主机1上安装有驱动程序,处理器用于执行驱动程序,以驱动网络协议卸载装置2运行。
于一实施例中,电子设备1可以是手机、笔记本电脑、台式计算机等设备。
于一实施例中,网络协议卸载装置2可以是TOE网卡,其可以可插拔式的与主机1连接。可以将传统TCP/IP网络协议的处理流程由主机1的操作***内核卸载至网络协议卸载装置2,由网络协议卸载装置2硬件执行协议栈处理,从根本上减轻了主机1的处理器工作负载,释放出更多的处理器资源。
如图2所示,为本申请提供的一个网络协议卸载装置2,包括:数据发送通道21、接收通道22和协议共享模块23,其中,发送通道21,连接主机1,用于基于主机1端产生的发送业务请求,对发送数据进行组包处理后发送。接收通道22,连接主机1,用于接收外部设备向主机1发送的接收数据,并将接收数据拆包处理后,传输给主机1。其中,接收通道22与发送通道21相互独立。协议共享模块23,分别连接发送通道21和接收通道22,用于按照预设的网络协议处理发送通道21和接收通道22共享的数据连接信息。其中,预设的网络协议可以是TCP/IP传输协议。网络协议卸载装置2可以是基于TOE技术的网卡。
于一实施例中,发送通道21通过访问协议共享模块23获取到发送数据对应的第一数据连接信息,并根据第一数据连接信息构建发送报文,发出发送报文。
于一实施例中,接收通道22通过访问协议共享模块23获取到接收数据对应的第二数据连接信息,并根据第二数据连接信息对接收数据拆包处理,将拆包处理后的接收数据传输给主机1。
如图3所示,为本申请提供的一个网络协议卸载装置2,预设的网络协议以TCP/IP协议为例,发送通道21包括:发送接口211、发送缓存Tx buffer、发送引擎212等模块。接收通道22包括:接收接口221、接收缓存Rx buffer、接收引擎222等模块。协议共享模块23包括:连接状态管理器231(图中以TCP状态管理器231为例)、计时器232和事件引擎233。发送路径与接收路径相互独立,共享TCP状态管理器231、事件引擎233等公共组件能力。
如图4所示,发送/接收接口221中同时集成了发送接口211和接收接口221的功能逻辑,发送/接收接口221可以对应连接主机1端驱动程序与发送/接收端口,端口可以包括PCIe接口、多通道DMA(Direct Memory Access,直接存储器访问)控制器、发送控制接口,网络协议卸载装置2采用PCIe总线,基于FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)PCIe硬IP核实现,主机1端与网络协议卸载装置2的交互都通过PCIe总线。DMA控制器采用具有多个发送数据通道、接收数据通道的FPGA IP核,直接分别与发送缓存Txbuffer、接收缓存Rx buffer联通,实现数据的DMA传输。
于一实施例中,如图4所示,接收接口221连接协议共享模块23,用于访问协议共享模块23,获取端口状态信息,并将端口状态信息回复给主机1。具体地,接收控制接口实现对于TCP状态管理器231、接收缓存控制器223的访问,接收数据到达中断。对于接收缓存控制器223的访问用于回复主机1端对TCP监听端口状态的查询。
于一实施例中,接收接口221连接接收引擎222,用于配置数据到达中断策略,并根据中断策略向主机1发送中断信息。具体地,接收控制接口可配置中断合并或延迟中断策略,降低中断频次,提高通信效率,其中,中断合并可根据设置的合并次数,在达到一定中断数量后向主机1发送中断,适应于大数据量的连续传输场景。延迟中断根据设置的延迟时间,启动计时器232,由计时器232触发中断向主机1端的发送,适应于对延迟有明确要求场景。
于一实施例中,发送接口211分别连接主机1和协议共享模块23,用于接收主机1产生的发送业务请求,并在接收到发送业务请求时,访问协议共享模块23,以触发发送事件。具体地,发送控制接口实现对于TCP状态管理器231、发送缓存控制器213的访问,触发数据发送事件。对于TCP状态管理器231的访问,用于创建或关闭TCP连接。对于发送缓存控制器213的访问,用于用于主机1端构建DMA描述符,实现主机1内存到发送缓存Tx buffer的数据DMA传输。最终主机1端将触发发送事件,实现数据的发送。
于一实施例中,发送通道21的发送缓存Tx buffer,连接发送接口211,用于接收来自发送接口211的发送事件的数据,并根据预先配置的缓存容量,缓存发送事件的数据记录。在实际场景中,每个TCP连接在建立时都可以被分配一个发送缓存Tx buffer。如图5所示,发送缓存Tx buffer可以为环形缓冲区,可以根据应用场景预先配置环形缓冲区容量及数量。尤其对于数据中心分布式存储场景,比如Glusterfs(Gluster File System,一种开源存储***)存储集群采用128KB数据条带,Ceph存储集群采用4MB数据分片,在此类场景下,缓冲区容量可以设置为128KB及以上,可以有效降低主机1与网络协议卸载装置2的交互消耗。发送缓存Tx buffer中缓存的负载数据用于超时确认重发及流量控制。
于一实施例中,图5中发送缓存Tx buffer的发送窗口大小由数据接收端的接收缓存Rx buffer可用空间大小决定。发送窗口大小表示数据接收端可以接收的数据量。
于一实施例中,发送通道21还包括:发送缓存控制器213,分别连接发送接口211和发送缓存Tx buffer,用于根据发送事件调控发送缓存Tx buffer的第一缓存状态信息。在实际场景中,第一缓存状态信息包含但不限于读取、写入、删除、更新操作等信息,第一缓存状态信息可以以发送缓存Tx buffer状态表形式存储,发送缓存控制器213可以用于维护发送缓存Tx buffer状态表,如表1所示:
表1发送缓存Tx buffer状态表
SessionID | Add | Producer | Consumer | Send Window | ACK | Transmitted | Active |
1 | 4258 | 200 | 60 | 100 | Y | ||
2 | af32 | 180 | 70 | 120 | Y | ||
3 | b149 | 230 | 30 | 130 | Y | ||
… | … | … | … | … | … | ||
n | ead5 | 0 | 0 | 0 | N |
发送缓存Tx buffer状态表每一行用于记录对应发送缓存Tx buffer的状态信息,属性包括:
a)SessionID:TCP链接对应的会话ID。
b)Add:发送缓存Tx buffer地址。
c)Producer:生产者指针,标识应用写入发送缓存Tx buffer的尾部地址。
d)Consumer:消费者指针,标识已经被发送并确认的数据尾部地址。
e)Send Window:发送窗口大小。
f)ACK:ACK号。
g)Transmitted:已发送指针,标识已经被发送尚未被确认的数据尾部地址。
h)Active:标识对应的发送缓存Tx buffer是否处于激活使用状态。
于一实施例中,主机1端业务数据通过发送接口211发送至发送缓存Tx buffer,发送缓存控制器213对应移动Producer指针。
于一实施例中,发送通道21还包括:发送引擎212,分别连接发送缓存Tx buffer、发送缓存控制器213和协议共享模块23,用于在接收到来自发送缓存控制器213对发送事件的发送指令时,从协议共享模块23中获取到发送事件对应的第一数据连接信息,从发送缓存Tx buffer中获取发送事件对应的发送数据,并根据第一数据连接信息对发送数据进行组包处理,生成发送报文,发出发送报文。
在实际场景中,发送引擎212面向数据流可以采用流水线模式实现TCP/IP协议发送处理流程,如图6所示,发送引擎212由发送事件驱动,发送事件源包括由发送接口211传递的应用层数据发送事件、请求建立新连接事件、超时重传事件等。发送引擎212通过元数据加载模块抽取发送事件对应的第一数据连接信息,比如抽取事件参数(元数据比如可以是IP地址、数据段序号SEQ number、确认序号ACK number、flags、port端口号以及数据长度length等)构建TCP header,获取缓存数据进行TCP checksum(校验和)计算,然后根据元数据构建IP数据发送报文,最后将发送报文通过物理链路接口发送。
于一实施例中,发送引擎212根据图5中的可用发送窗口大小执行数据发送操作,然后发送缓存控制器213移动Transmitted指针。
于一实施例中,如图7所示,接收通道22的接收引擎222,分别连接外部设备的物理链路接口和协议共享模块23,用于在接收外部设备向主机1发送的接收报文,抽取接收报文的元数据,并根据元数据从协议共享模块23中获取接收报文对应的第二数据连接信息,根据第二数据连接信息对接收报文进行拆包、校验处理,得到接收报文携带的接收数据。第二数据连接信息包含但不限于:IP地址、port端口号、链接SessionID、数据段序号SEQnumber、序号ACK number、发送窗口尺寸window size以及SYN、ACK、RST等标志flags信息。
在实际场景中,接收引擎222面向数据流可以采用流水线模式实现TCP/IP协议接收处理流程,如图7所示。接收引擎222使用数据通道及元数据通道将网络传输数据与网络控制数据分离,通过调整数据通道宽度,可以实现不同网络带宽的数据传输。具体处理流程可以包括如下步骤:
第一步:由物理链路接口传入网络协议卸载装置2的IP package(IP报文)首先进行IP header的解析,抽取出IP地址及package长度等IP元数据。
第二步:进行TCP Checksum校验,对于校验不一致的package将被丢弃。
第三步:对于校验一致的package将进行TCP header的解析,抽取数据段序号SEQnumber,确认序号ACK number、发送窗口尺寸window size以及SYN、ACK、RST等标志flags。
第四步:TCP状态检查步骤,根据port端口号访问TCP状态管理器231,检查port是否处于有效状态。如果port有效,根据IP地址、port端口号检索链接SessionID。根据SessionID查询connection状态。如果package有效,报文中的负载数据(接收数据)将会被放入接收缓存Rx buffer。
于一实施例中,接收通道22的接收缓存Rx buffer连接接收引擎222,用于接收来自接收引擎222的接收数据,并根据预先配置的缓存容量,缓存接收事件的数据记录。在实际场景中,每个TCP链接在建立时都会被分配一个接收缓存Rx buffer。如图8所示,接收缓存Rx buffer可以为环形缓冲区,根据应用场景预先配置环形缓冲区容量及数量。接收缓存Rx buffer接收负载数据。
于一实施例中,接收通道22还包括:接收缓存控制器223,分别连接接收引擎222和接收缓存Rx buffer,用于根据接收事件调控接收缓存Rx buffer的第二缓存状态信息。在实际场景中,第二缓存状态信息包含但不限于:读取、写入、删除、更新操作等信息。第二缓存状态信息可以以接收缓存Rx buffer状态表形式存储,接收缓存控制器223可以用于维护接收缓存Rx buffer状态表,如表2所示:
表2接收缓存Rx buffer状态表
SessionID | Add | Producer | Consumer | Offset1 | length1 | … | Offsetm | lengthm | Active |
1 | 4258 | 200 | 60 | Y | |||||
2 | af32 | 180 | 70 | Y | |||||
3 | b149 | 230 | 30 | Y | |||||
… | … | … | … | … | |||||
n | ead5 | 0 | 0 | N |
接收缓存Rx buffer状态表每一行用于记录对应接收缓存Rx buffer的状态,属性包括:
a)SessionID:TCP链接对应的会话ID。
b)Add:接收缓存Rx buffer地址。
c)Producer:生产者指针,标识接收数据的尾部地址。
d)Consumer:消费者指针,标识被应用取走的数据尾部地址。
e)Offset:乱序段偏移地址。
f)Length:乱序段长度。
g)Active:标识对应的接收缓存Rx buffer是否处于激活使用状态。
于一实施例中,从外部网络接收的数据将由接收引擎222进行校验拆包等协议处理操作后,放入接收缓存Rx buffer,并通过接收缓存Rx buffer管理器更新接收缓存Rxbuffer状态表。具体地,通知接收缓存控制器223移动Producer指针。同时,接收引擎222会更新ACK number、发送缓存Tx buffer状态表的window size、设置或清空计时器232。
于一实施例中,在主机1的应用程序通过DMA操作取走接收数据后,Consumer指针将会被移动。对于乱序发送的数据段,接收引擎222根据其段序号计算Offset,放入乱序段数据后,移动对应的length指针,乱序段数量、及Offset相对Producer的偏移量是预先设定的,当数量或偏移量超出设定范围时,相关数据段将被丢弃,发送端由于发送确认超时,将重新发送。
于一实施例中,接收通道22的接收接口221分别连接主机1、接收缓存Rx buffer和接收缓存控制器223,用于访问接收缓存控制器223和接收缓存Rx buffer,获取接收数据对应的第二缓存状态信息,并根据第二缓存状态信息构建接收数据的存储器传输描述,基于存储器传输描述发送接收数据至主机1。具体地。接收接口221可以访问接收缓存控制器223,用于主机1端构建DMA描述符,实现接收缓存Rx buffer到主机1内存的数据DMA传输。
于一实施例中,如图9所示,协议共享模块23包括:连接状态管理器231,分别连接发送通道21和接收通道22,用于分别存储发送数据的第一数据连接状态信息和接收数据的第二数据连接状态信息。具体地,以TCP状态管理器231为例,TCP状态可以包括port(端口)状态、connection(连接)状态,port状态包括listening、active、closed。connection状态包括CLOSED、SYN-SENT、SYN-RECEIVED等。TCP状态管理器231可以基于表数据结构管理port及connection状态。如图9所示为TCP状态管理器231对于connection状态表的管理,connection状态表示例如表3:
表3 connection状态表
index | SessionID | status |
0 | 0 | CLOSED |
1 | 1 | SYN-SENT |
2 | 2 | SYN-RECEIVED |
… | … | … |
m | m | ESTABLISHED |
port状态表可以采用与connection状态表同样的管理方式。TCP状态管理器231同时维护了SessionID与由源IP地址、目的IP地址、源port、目的port组成的四元组之间的映射。
由于TOE中的接收引擎222、发送引擎212、发送接口211的工作流程中都涉及了状态表的查询、更新等操作。状态表作为多模块共享数据结构,一方面需要保证并行访问能力及数据一致性。另一方面为适应多连接、高性能网络应用场景,需要提高访问操作性能,降低资源消耗。
于一实施例中,状态表可以采用FPGA片上双端口BRAM(Block Memory)存储,提供数据共享及高性能数据操作功能。
于一实施例中,连接状态管理器231配置有读写锁机制。连接状态管理器231通过模块读写锁机制,为访问共享状态表的模块分别创建对应的锁结构,包括读写锁RWLock及表项索引,从而避免为每一个表项创建锁,降低存储资源消耗。外部模块通过相应的访问接口时,首先需要获取锁状态,对于同一表项的访问操作,需要进行加锁操作,加锁成功后进行读写操作。
于一实施例中,协议共享模块23还包括:计时器232,分别连接发送通道21和接收通道22,用于对发送数据和接收数据计时。具体地,以TCP协议为例,基于TOE技术的网络协议卸载装置2根据TCP协议的需求,可以设置四个计时器232,包括重传计时器232Retransmission Timer、坚持计时器232Persistent Timer、保活计时器232KeepliveTimer、时间等待计时器232Timer_Wait Timer。计时器232实现基于表结构,通过遍历操作计时。计时器232表结构每一表项代表一个TCP连接会话,表属性包括会话ID用于唯一标识TCP连接。时间戳timestamp用于记录遍历次数。活跃标志active用于表示该连接是否在计时中。
对计时器232表结构的操作包括两种:一是设置/清空计时器232。二是遍历计时器232表。针对预先设置的网络协议卸载装置2支持连接数,计时器232表包含对应数量的表项,一个硬件时钟周期执行一个表项遍历,在连接计时器232有效的情况下,如果timestamp大于0,则减1,当timestamp为0时,触发相应事件并撤销计时。
于一实施例中,协议共享模块23还包括:事件引擎233,分别连接发送通道21和接收通道22,用于分别处理发送通道21处理的发送事件和接收通道22处理接收事件。其中,接收事件优先级高于发送事件的优先级。以TCP协议为例,网络协议卸载装置2可以定义TX、RT、ACK、ACK-NODELAY、SYN、SYN-ACK、FIN、RST等TOE事件,TOE事件包括SessionID、类型,并携带相关参数,用于构建网络包。如图10所示,TOE事件来源可以是接收引擎222、定时器,以及发送接口211。事件引擎233相应的可以设置3个FIFO队列用于事件缓存。调度器根据预定义调度策略进行事件调度处理。
于一实施例中,调度策略默认可以为优先级策略,为避免接收通道22背压导致数据丢失,设置接收引擎222事件为高优先级,优先调度。事件路由针对不同的事件类型将事件路由至不同的后续模块。
于一实施例中,对于ACK事件,由事件引擎233的ACK-DELAY模块进行处理,该模块检查ACK-DELAY计时器232相应的计时表项是否为激活active,如果是,ACK事件会与之前被延迟发送的ACK事件合并,由输出模块传送至发送引擎212。如果计时表项不是激活状态,则该表项被设置为active,ACK事件延迟发送。
于一实施例中,从外部网络接收的数据由接收引擎222进行校验拆包等协议处理操作,放入接收缓存Rx buffer后,接收引擎222向事件引擎233发送数据接收确认事件,由事件引擎233根据ACK调度策略,立即通知发送引擎212发送ACK信息或控制延迟ACK。最后,接收引擎222生产数据到达中断,通过接收接口221发送至主机1端。
于一实施例中,接收引擎222收到ACK信号后,通过事件引擎233告知发送引擎212,发送引擎212通过发送缓存控制器213相应的移动Consumer指针。
于一实施例中,对于除SYN与RST外的其他事件,被直接路由至输出模块,由输出模块将延迟的ACK事件与其合并,推送至发送引擎212,同时撤销延迟ACK事件的计时。
于一实施例中,事件引擎233在处理发送事件时,判断待发送数据的数据长度是否大于预设长度,若是,输出发送事件,否则,基于预设长度将发送事件切分成多个子事件,分别输出多个子事件。预设长度可以是未发送数据producer-transmitted、可用窗口sendwindow-transmitted和预定义的MTU(Maximum Transmission Unit,最大传输单元)的长度中的一个或多个。
于一实施例中,对于由主机1端应用程序通过发送接口211触发的数据发送事件,到达事件路由后,由事件路由获取发送缓存Tx buffer的状态,将未发送数据producer-transmitted、可用窗口send window-transmitted,以及预定义的MTU进行比较。主机1端应用程序触发的发送事件携带有数据长度,如果发送事件要求发送的数据长度大于未发送数据长度、可用窗口大小、MTU三者的最小值,则发送事件将被路由至发送事件切分模块,否则发送事件直接输出。发送事件切分模块记录原始发送事件数据长度,循环执行子事件构建、发送操作。
于一实施例中,子事件构建操作获取未发送数据、可用窗口、MTU大小,取三者的最小值为子事件的数据长度,替换原始发送事件的数据长度,形成子事件。子事件重新送入发送接口211事件队列调度执行,对于子发送事件,事件路由将直接转发至输出模块。从而减少主机1端与网络协议卸载装置2的交互频次,有效降低交互开销。
上述网络协议卸载装置2,基于FPGA实现TOE网卡,面向多连接TCP/IP网络传输,以可扩展的架构形式实现TCP/IP协议处理的硬件化,从而大幅提高传输协议处理性能,降低对于主机1处理器资源的消耗。采用发送通道21与接收通道22相互独立的基础架构,协议共享模块23采用流水线模式,用于处理TCP/IP协议,数据缓冲区用于缓存网络发送或接口的数据,发送通道21与接收通道22共享连接状态等公共信息,为保证公共信息的一致性,采用一种基于模块的锁方法,有效降低FPGA资源消耗。具备灵活配置能力,支持数万规模TCP连接,满足数据中心高并发网络应用场景。同时,支持大数据块的自动化传输,减少主机1对于数据传输的控制频次,能够有效解决高速网络主机1处理器资源占用率高、网络吞吐量受限、通信延时大的问题。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (16)
1.一种网络协议卸载装置,其特征在于,包括:
发送通道,连接主机,用于基于所述主机端产生的发送业务请求,对发送数据进行组包处理后发送;
接收通道,连接主机,用于接收外部设备向所述主机发送的接收数据,并将所述接收数据拆包处理后,传输给所述主机;其中,所述接收通道与所述发送通道相互独立;
协议共享模块,分别连接所述发送通道和所述接收通道,用于按照预设的网络协议处理所述发送通道和所述接收通道共享的数据连接信息;
其中,所述发送通道通过访问所述协议共享模块获取到所述发送数据对应的第一数据连接信息,并根据所述第一数据连接信息构建发送报文,发出所述发送报文;
所述接收通道通过访问所述协议共享模块获取到所述接收数据对应的第二数据连接信息,并根据所述第二数据连接信息对所述接收数据拆包处理,将拆包处理后的接收数据传输给所述主机。
2.根据权利要求1所述的装置,其特征在于,所述发送通道包括:
发送接口,分别连接所述主机和所述协议共享模块,用于接收所述主机产生的发送业务请求,并在接收到所述发送业务请求时,访问所述协议共享模块,以触发发送事件。
3.根据权利要求2所述的装置,其特征在于,所述发送通道还包括:
发送缓存,连接所述发送接口,用于接收来自所述发送接口的所述发送事件的数据,并根据预先配置的缓存容量,缓存所述发送事件的数据记录。
4.根据权利要求3所述的装置,其特征在于,所述发送通道还包括:
发送缓存控制器,分别连接所述发送接口和所述发送缓存,用于根据所述发送事件调控所述发送缓存的第一缓存状态信息。
5.根据权利要求4所述的装置,其特征在于,所述发送通道还包括:
发送引擎,分别连接所述发送缓存、所述发送缓存控制器和所述协议共享模块,用于在接收到来自所述发送缓存控制器对所述发送事件的发送指令时,从所述协议共享模块中获取到所述发送事件对应的所述第一数据连接信息,从所述发送缓存中获取所述发送事件对应的所述发送数据,并根据所述第一数据连接信息对所述发送数据进行组包处理,生成发送报文,发出所述发送报文。
6.根据权利要求1所述的装置,其特征在于,所述接收通道包括:
接收引擎,分别连接外部设备的物理链路接口和所述协议共享模块,用于在接收所述外部设备向所述主机发送的接收报文,抽取所述接收报文的元数据,并根据所述元数据从所述协议共享模块中获取所述接收报文对应的第二数据连接信息,根据所述第二数据连接信息对所述接收报文进行拆包、校验处理,得到所述接收报文携带的接收数据。
7.根据权利要求6所述的装置,其特征在于,所述接收通道还包括:
接收缓存,连接所述接收引擎,用于接收来自所述接收引擎的所述接收数据,并根据预先配置的缓存容量,缓存接收事件的数据记录。
8.根据权利要求7所述的装置,其特征在于,所述接收通道还包括:
接收缓存控制器,分别连接所述接收引擎和所述接收缓存,用于根据所述接收事件调控所述接收缓存的第二缓存状态信息。
9.根据权利要求8所述的装置,其特征在于,所述接收通道还包括:
接收接口,分别连接所述主机、所述接收缓存和所述接收缓存控制器,用于访问所述接收缓存控制器和所述接收缓存,获取所述接收数据对应的所述第二缓存状态信息,并根据所述第二缓存状态信息构建所述接收数据的存储器传输描述,基于所述存储器传输描述发送所述接收数据至所述主机。
10.根据权利要求9所述的装置,其特征在于,还包括:
所述接收接口连接所述协议共享模块,用于访问所述协议共享模块,获取端口状态信息,并将所述端口状态信息回复给所述主机。
11.根据权利要求9所述的装置,其特征在于,还包括:
所述接收接口连接所述接收引擎,用于配置数据到达中断策略,并根据所述中断策略向所述主机发送中断信息。
12.根据权利要求1所述的装置,其特征在于,所述协议共享模块包括:
连接状态管理器,分别连接所述发送通道和所述接收通道,用于分别存储所述发送数据的第一数据连接状态信息和所述接收数据的第二数据连接状态信息;所述连接状态管理器配置有读写锁机制。
13.根据权利要求12所述的装置,其特征在于,所述协议共享模块还包括:
计时器,分别连接所述发送通道和所述接收通道,用于对所述发送数据和所述接收数据计时。
14.根据权利要求12所述的装置,其特征在于,所述协议共享模块还包括:
事件引擎,分别连接所述发送通道和所述接收通道,用于分别处理所述发送通道处理的发送事件和所述接收通道处理接收事件;其中,所述接收事件优先级高于所述发送事件的优先级。
15.根据权利要求14所述的装置,其特征在于,所述事件引擎在处理所述发送事件时,判断待发送数据的数据长度是否大于预设长度,若是,输出所述发送事件,否则,基于所述预设长度将所述发送事件切分成多个子事件,分别输出所述多个子事件。
16.一种数据传输***,其特征在于,包括:主机和如权利要求1至15中任一项所述的网络协议卸载装置;
其中,所述主机包括:存储器和处理器,所述主机上安装有驱动程序,所述处理器用于执行所述驱动程序,以驱动所述网络协议卸载装置运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339668.9A CN112953967A (zh) | 2021-03-30 | 2021-03-30 | 网络协议卸载装置和数据传输*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339668.9A CN112953967A (zh) | 2021-03-30 | 2021-03-30 | 网络协议卸载装置和数据传输*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112953967A true CN112953967A (zh) | 2021-06-11 |
Family
ID=76230523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110339668.9A Pending CN112953967A (zh) | 2021-03-30 | 2021-03-30 | 网络协议卸载装置和数据传输*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112953967A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900471A (zh) * | 2021-11-29 | 2022-08-12 | 上海大学 | 一种高性能无阻塞数据传输方法 |
CN115048227A (zh) * | 2022-08-15 | 2022-09-13 | 阿里巴巴(中国)有限公司 | 数据处理方法、***及存储介质 |
CN115051957A (zh) * | 2022-08-17 | 2022-09-13 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文快速分片方法 |
CN115225690A (zh) * | 2022-06-22 | 2022-10-21 | 中科驭数(北京)科技有限公司 | 基于硬件协议栈的tcp长连接保活方法及装置 |
CN115473861A (zh) * | 2022-08-18 | 2022-12-13 | 珠海高凌信息科技股份有限公司 | 基于通信与计算分离的高性能处理***和方法、存储介质 |
CN116886643A (zh) * | 2023-09-07 | 2023-10-13 | 北京大禹智芯科技有限公司 | 一种提高toe性能的方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050147110A1 (en) * | 2003-12-24 | 2005-07-07 | Connor Patrick L. | Method, system, and program for overrun identification |
CN1981272A (zh) * | 2004-07-14 | 2007-06-13 | 国际商业机器公司 | 在网络协议处理的卸载中支持存储器管理的设备和方法 |
CN101253745A (zh) * | 2005-07-18 | 2008-08-27 | 博通以色列研发公司 | 用于透明tcp卸载的方法和*** |
CN103414714A (zh) * | 2013-08-07 | 2013-11-27 | 华为数字技术(苏州)有限公司 | 一种报文处理方法、装置和设备 |
CN104883335A (zh) * | 2014-02-27 | 2015-09-02 | 王磊 | 一种全硬件tcp协议栈实现方法 |
CN109714302A (zh) * | 2017-10-25 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 算法的卸载方法、装置和*** |
CN110535827A (zh) * | 2019-07-17 | 2019-12-03 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 实现多连接管理的tcp协议全卸载ip核的方法及*** |
CN110830381A (zh) * | 2018-08-10 | 2020-02-21 | 华为技术有限公司 | 拥塞控制方法及相关设备 |
CN110958213A (zh) * | 2018-09-27 | 2020-04-03 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN111327603A (zh) * | 2020-01-21 | 2020-06-23 | 中科驭数(北京)科技有限公司 | 数据传输方法、装置和*** |
CN112073436A (zh) * | 2020-09-28 | 2020-12-11 | 山东产研集成电路产业研究院有限公司 | 一种降低toe中接收通道传输延迟量的方法 |
-
2021
- 2021-03-30 CN CN202110339668.9A patent/CN112953967A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050147110A1 (en) * | 2003-12-24 | 2005-07-07 | Connor Patrick L. | Method, system, and program for overrun identification |
CN1981272A (zh) * | 2004-07-14 | 2007-06-13 | 国际商业机器公司 | 在网络协议处理的卸载中支持存储器管理的设备和方法 |
CN101253745A (zh) * | 2005-07-18 | 2008-08-27 | 博通以色列研发公司 | 用于透明tcp卸载的方法和*** |
CN103414714A (zh) * | 2013-08-07 | 2013-11-27 | 华为数字技术(苏州)有限公司 | 一种报文处理方法、装置和设备 |
CN104883335A (zh) * | 2014-02-27 | 2015-09-02 | 王磊 | 一种全硬件tcp协议栈实现方法 |
CN109714302A (zh) * | 2017-10-25 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 算法的卸载方法、装置和*** |
CN110830381A (zh) * | 2018-08-10 | 2020-02-21 | 华为技术有限公司 | 拥塞控制方法及相关设备 |
CN110958213A (zh) * | 2018-09-27 | 2020-04-03 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN110535827A (zh) * | 2019-07-17 | 2019-12-03 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 实现多连接管理的tcp协议全卸载ip核的方法及*** |
CN111327603A (zh) * | 2020-01-21 | 2020-06-23 | 中科驭数(北京)科技有限公司 | 数据传输方法、装置和*** |
CN112073436A (zh) * | 2020-09-28 | 2020-12-11 | 山东产研集成电路产业研究院有限公司 | 一种降低toe中接收通道传输延迟量的方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900471A (zh) * | 2021-11-29 | 2022-08-12 | 上海大学 | 一种高性能无阻塞数据传输方法 |
CN114900471B (zh) * | 2021-11-29 | 2023-11-28 | 上海大学 | 一种高性能无阻塞数据传输方法 |
CN115225690A (zh) * | 2022-06-22 | 2022-10-21 | 中科驭数(北京)科技有限公司 | 基于硬件协议栈的tcp长连接保活方法及装置 |
CN115225690B (zh) * | 2022-06-22 | 2024-04-19 | 中科驭数(北京)科技有限公司 | 基于硬件协议栈的tcp长连接保活方法及装置 |
CN115048227A (zh) * | 2022-08-15 | 2022-09-13 | 阿里巴巴(中国)有限公司 | 数据处理方法、***及存储介质 |
CN115048227B (zh) * | 2022-08-15 | 2022-12-09 | 阿里巴巴(中国)有限公司 | 数据处理方法、***及存储介质 |
CN115051957A (zh) * | 2022-08-17 | 2022-09-13 | 北京左江科技股份有限公司 | 一种基于fpga的网络报文快速分片方法 |
CN115473861A (zh) * | 2022-08-18 | 2022-12-13 | 珠海高凌信息科技股份有限公司 | 基于通信与计算分离的高性能处理***和方法、存储介质 |
CN115473861B (zh) * | 2022-08-18 | 2023-11-03 | 珠海高凌信息科技股份有限公司 | 基于通信与计算分离的高性能处理***和方法、存储介质 |
CN116886643A (zh) * | 2023-09-07 | 2023-10-13 | 北京大禹智芯科技有限公司 | 一种提高toe性能的方法 |
CN116886643B (zh) * | 2023-09-07 | 2023-11-17 | 北京大禹智芯科技有限公司 | 一种提高toe性能的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11899596B2 (en) | System and method for facilitating dynamic command management in a network interface controller (NIC) | |
CN112953967A (zh) | 网络协议卸载装置和数据传输*** | |
USRE47756E1 (en) | High performance memory based communications interface | |
EP1784735B1 (en) | Apparatus and method for supporting memory management in an offload of network protocol processing | |
CA2573162C (en) | Apparatus and method for supporting connection establishment in an offload of network protocol processing | |
US7493427B2 (en) | Apparatus and method for supporting received data processing in an offload of network protocol processing | |
US20070208820A1 (en) | Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations | |
US10686872B2 (en) | Network interface device | |
US20110099243A1 (en) | Apparatus and method for in-line insertion and removal of markers | |
US8223788B1 (en) | Method and system for queuing descriptors | |
US20080162663A1 (en) | Computer system with network interface retransmit | |
CN117015963A (zh) | 用于异构和加速计算***的输入/输出缩放的服务器结构适配器 | |
US7822051B1 (en) | Method and system for transmitting packets | |
CN116471242A (zh) | 基于rdma的发送端、接收端、数据传输***及方法 | |
US6625149B1 (en) | Signaled receiver processing methods and apparatus for improved protocol processing | |
WO2008073493A2 (en) | Methods and apparatus for reducing storage usage in devices | |
CN116722884A (zh) | 一种支持远程数据直接访问协议的网络接口 | |
CN117873920A (zh) | 一种rdma的内存翻译表应用方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210611 |