本发明涉及计算机网络领域,具体地,涉及一种TCP/IP卸载引擎中的多通道处理方法。
背景技术:
随着互联网技术的日益发展,TCP/IP协议族已经成为标准的网络通信协议。但高速网络环境下,传统的TCP/IP软件协议栈由于上下文切换开销和冗余数据复制的特点将消耗过多的CPU性能,可靠数据表明在网速达到10Gbps时当前主流处理器将无法满足协议处理的性能需求。故在服务器或高速网络环境中通常采用硬件设备处理协议的TOE(TCP Offload Engine,TCP卸载引擎)技术。TCP/IP协议由上自下依次分为应用层、运输层、网络层和数据链路层四层。与传统的软件协议栈相比,TOE技术把运输层和网络层的协议处理也纳入硬件处理中从而提升数据包的处理速度。典型的TOE系统实现结构如图1所示,其中TOE硬件实现模块主要作用是对运输层和网络层的主要协议进行处理,其中最主要的几个协议为ARP协议、IP协议、UDP协议和TCP协议。
TCP协议是面向连接的,在TOE系统中对TCP协议进行处理。在数据传输开始前需要先建立连接,同时在传输结束时需要断开连接。且在收发数据时,协议处理模块会对上一次的数据进行应答。同时为了保持数据通路的通畅,采用滑动窗口的方式对收发数据进行流量控制。由于硬件处理协议的速度远远大于软件,导致可能存在软硬件接口处的数据堆积,从而造成拥塞问题。特别是在多个端口同时建立TCP连接时,硬件无法有序处理数据将导致连接中断或无法应答。在软件协议栈中多个端口同时建立连接,目前放在硬件实现上只能串行处理。在TOE硬件处理TCP协议时,建立多个通道管理数据存储与连接可以大大提高传输效率和数据处理速度。
技术实现要素:
针对现有技术中的缺陷,本发明的目的是提供一种TCP/IP卸载引擎中的多通道处理方法,其通过在TOE中添加多通道处理技术,能够解决数据拥塞及连接中断的问题同时大大提高TOE的工作效率,实现了多端口TCP连接并进行数据传输的功能,实现了硬件处理TCP/IP协议的高层协议,为高速网络环境下数据传输提供可靠的保障。
根据本发明的一个方面,提供一种TCP/IP卸载引擎中的多通道处理方法,其特征在于,其包括以下步骤:
步骤一,通过现场可编程门阵列FPGA来进行实验和调试,实现TOE中的多通道处理技术;
步骤二,将TOE中的多通道处理技术融入TOE的ASIC芯片中来进行网络协议处理;
步骤三,定制软件接口,通过端口来选定不同的通道;
步骤四,在TCP协议处理模块中,对TCP首部的选项部分进行改进定义;
步骤五,在TCP连接建立的握手阶段,第一次握手时,主动请求方会加上源通道号,而目的通道此时还未分配故设为全零即可;
步骤六,若一端未采用多通道技术则通道号设为全零,数据来自未使用多通道技术的设备则通过TCP首部的源端口号和目的端口号进行匹配,TCP协议处理模块根据识别出的对应的存储通道号并把数据放入其中;
步骤七,在连接结束时,存储通道数据全部传输完毕后,TCP协议处理模块会控制释放该通道存储空间,该通道用于下一次建立新连接。
优选地,所述TCP协议处理模块能够对发送和接收到的数据进行通道分配。
优选地,所述TCP/IP卸载引擎中的多通道处理方法能够进行多端口TCP连接并进行数据传输的功能。
与现有技术相比,本发明具有如下的有益效果:本发明通过在TOE中添加多通道处理技术,能够解决数据拥塞及连接中断的问题同时大大提高TOE的工作效率,实现了多端口TCP连接并进行数据传输的功能,实现了硬件处理TCP/IP协议的高层协议,为高速网络环境下数据传输提供可靠的保障。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为典型的TOE系统实现结构的流程图;
图2为本发明实现多通道技术的结构流程图;
图3为本发明改进后的TCP数据图;
图4为本发明实现FIFO窗口技术的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
如图1至图4所示,本发明提供一种TCP/IP卸载引擎中的多通道处理方法,其包括以下步骤:
步骤一,通过现场可编程门阵列FPGA来进行实验和调试,实现TOE中的多通道处理技术;
步骤二,将TOE中的多通道处理技术融入TOE的ASIC芯片中来进行网络协议处理;
在通道空间的选择上,若只需少量数据的存储,可以采用高速的SRAM寄存器芯片即可满足。若要实现大量数据且通道数量较多的情况可以外挂存储设备来实现多通道技术。
步骤三,定制软件接口,通过端口来选定不同的通道;
但在软件上层,其处理又是通用化的,与当前的协议栈处理有着良好的兼容性。也就是说,如果一端为采用TOE技术的硬件协议处理服务器,一端为采用传统协议栈处理的终端,它们之间无需任何特殊的配置即可正常进行数据传输。该技术能够广泛应用到服务器的网络环境中,如云服务、大型数据机房、物联网等对网络速度要求极高的环境中。
步骤四,在TCP协议处理模块中,对TCP首部的选项部分进行改进定义;
如图3所示,在20字节通用首部之后加上源通道号和目的通道号,各2个字节,分别用于识别TCP包的存储通道号。该通道号可以快速识别出数据包所需要存放的通道空间。
步骤五,在TCP连接建立的握手阶段,第一次握手时,主动请求方会加上源通道号,而目的通道此时还未分配故设为全零即可;
当达到目的端后若也采用了多通道技术会为本次连接分配通道号,在ack的TCP报首部的目的通道号为请求端的源通道号,而源通道号则为新分配的通道号。
步骤六,若一端未采用多通道技术则通道号设为全零,数据来自未使用多通道技术的设备则通过TCP首部的源端口号和目的端口号进行匹配,TCP协议处理模块根据识别出的对应的存储通道号并把数据放入其中;
步骤七,在连接结束时,存储通道数据全部传输完毕后,TCP协议处理模块会控制释放该通道存储空间,该通道用于下一次建立新连接。
如图4所示,采用FIFO(先进先出)的方式对其进行实现,通过TCP首部的序号和确认号作为指针,确定下一次读写的位置。
本发明在TOE实现中设计出多通道的TCP连接处理技术,实现了多端口TCP连接并进行数据传输的功能。整个系统不同的通道实现采用不同的存储空间,从而能够有效地实现数据组包。其中TCP协议处理模块能够对发送和接收到的数据进行通道分配。根据实际情况,可以对通道数进行设置,并对每个通道的存储空间进行分配,使通道的存储空间能够有效利用。
所述TCP/IP卸载引擎中的多通道处理方法能够进行多端口TCP连接并进行数据传输的功能,这样数据传输更加快捷方便,加快了处理速度,节约了时间成本。
在TCP协议处理模块中,对TCP首部的选项部分进行改进定义。在20字节通用首部之后加上源通道号和目的通道号,各2个字节,分别用于识别TCP包的存储通道号。该通道号可以快速识别出数据包所需要存放的通道空间。不同情况下的通道号作用如下:
一,在TCP连接建立的握手阶段,第一次握手时,主动请求方会加上源通道号,而目的通道此时还未分配故设为全零即可。当达到目的端后若也采用了多通道技术会为本次连接分配通道号,在ack的TCP报首部的目的通道号为请求端的源通道号,而源通道号则为新分配的通道号。
二,若一端未采用多通道技术则通道号设为全零,数据来自未使用多通道技术的设备则通过TCP首部的源端口号和目的端口号进行匹配,TCP协议处理模块可以识别出对应的存储通道号并把数据放入其中。
三,在连接结束时,存储通道数据全部传输完毕后,TCP协议处理模块会控制释放该通道存储空间,该通道可以用于下一次建立新连接。
本发明实现的存储通道数量可以根据实际情况进行设计,更多的通道数量意味着可以实现更多的连接数量。但也会消耗更多的存储空间,故在此需要做一个平衡时空间利用效率足够高。存储通道空间大小在硬件实现中就相当于一个窗口大小。采用FIFO(先进先出)的方式对其进行实现,通过TCP首部的序号和确认号作为指针,确定下一次读写的位置。
TOE中的多通道处理技术可以通过现场可编程门阵列FPGA来进行实验和调试,之后可以融入到TOE的ASIC芯片中来进行网络协议处理。在通道空间的选择上,若只需少量数据的存储,可以采用高速的SRAM寄存器芯片即可满足。若要实现大量数据且通道数量较多的情况可以外挂存储设备来实现多通道技术。本发明采用的多通道技术主要用于TCP协议处理模块当中,能提高TOE对TCP协议处理速度且缓解拥塞现象。而所设计出的TOE芯片可以集成到服务器的网卡中,从而系统化的实现硬件处理TCP/IP协议的高层协议,为高速网络环境下数据传输提供可靠的保障。
综上所述,本发明根据TCP协议的内容针对硬件处理多通道数据提出一种可以实现的设计方法,通过在TOE中添加多通道处理技术,能够解决数据拥塞及连接中断的问题同时大大提高TOE的工作效率,实现了多端口TCP连接并进行数据传输的功能,实现了硬件处理TCP/IP协议的高层协议,为高速网络环境下数据传输提供可靠的保障。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。