硬件实现TCP_IP协议的系统及方法与流程

文档序号:18409571发布日期:2019-08-10 00:51阅读:899来源:国知局
硬件实现TCP_IP协议的系统及方法与流程

本发明涉及计算机总线接口领域,具体地,涉及一种硬件实现tcp_ip协议的系统及方法。



背景技术:

以太网接口是计算机的主要接口之一,用于计算机连接局域网或互联网。计算机通过以太网传输数据时,使用的传输协议是tcp/ip(transmissioncontrolprotocol/internetprotocol,传输控制协议/因特网互联协议)协议。tcp/ip协议一般通过软件方式实现,执行tcp/ip协议软件需占用主机cpu(centralprocessingunit,中央处理器)的大量计算资源。有一种说法,1位网络数据传输需消耗cpu1hz的处理能力。当计算机的网络传输速率从100mbps提高到1gbps,甚至10gbps时,cpu的大量计算能力将耗费在网络数据的传输处理上。为了减轻主机cpu的负载,业界提出了toe(tcpoffloadengine,tcp协议卸载引擎)技术,即用硬件来全部或部分实现tcp/ip协议功能。

传统的网卡实现tcp/ip网络层次结构中的数据链路层功能,新型的toe网卡实现tcp/ip网络层级结构中传输层、网络层和数据链路等的全部功能。关于toe网卡的实现,已经有一些技术方案,例如“基于fpga实现的万兆网tcp协议卸载引擎toe的系统(专利申请号:201620032397.7)”,“tcp/ip卸载引擎中的多通道处理方法(专利申请号:201611110885.6)”,“半卸载方法、设计及系统(专利申请号:201310260360.0)”等。从这些专利申请书的公开资料分析,这些toe实现方案都存在一些不足,例如支持的连接数有限,或部分实现toe功能,导致主机操作系统的tcp/ip协议栈并未完全卸载。

具体的,对于对比文件1:基于fpga实现的万兆网tcp协议栈卸载引擎toe的系统,该方案按照tcp/ip协议栈建立连接和传输数据的过程,将整个过程的处理都用硬件逻辑的方式实现。该方案的缺点是每个时刻只能建立一个连接,不支持多个连接的并行处理。在不需要多个连接的应用场合,这种方案是有效的。

对于对比文件2:tcp/ip卸载引擎中的多通道处理方法,该方案在一个连接的基础上,通过在tcp包的首部增加通道号的方式,来支持多个通道。每个通道是一个虚拟连接,其目的是为了增加连接的数量。但该方案会修改tcp包的标准格式,仅在特定的场合有效。

本地计算机与远程服务器通过网络通信时,本地计算机每启动一个网络通信进程,就需要创建一个连接,例如在本地计算机上打开5个网站的网页,就会启动5个iexplore进程,每个进程都需要创建tcp连接。直到本地计算机关闭一个网站的ie浏览器程序,则相应的tcp连接断开。因此支持多个并行的连接,在实际应用中,还是非常需要。

本发明将提出一种toe网卡的实现方案,可以完全卸载主机操作系统的tcp/ip协议栈,同时可以支持任意数量的连接,适用于开发千兆或万兆的网卡设备。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种硬件实现tcp_ip协议的系统及方法。

根据本发明提供的一种硬件实现tcp_ip协议的系统,包括嵌入式cpu核、配置寄存器、tcp_udp引擎、ip引擎、icmp引擎、arp引擎、rarp引擎、ddr3接口控制器以及mac控制器,其中:

嵌入式cpu核用于建立与维护tcp/udp连接,以及控制tcp_udp引擎、ip引擎、icmp引擎、arp引擎、rarp引擎;

配置寄存器用于提供toe网卡的基本配置/控制/状态信息;

tcp_udp引擎用于将主机cpu准备发送的数据搬移到toe网卡的ddr存储器空间;

ip引擎用于处理ip层事务;

icmp引擎用于生成控制消息包,以节解析接收到的控制消息包;

arp引擎用于将ip地址转换成mac地址;

rarp引擎用于mac地址到ip地址的映射;

ddr3接口控制器外接ddr存储器;

mac控制器用于发送和接收以太网帧。

优选地,所述以太网帧包括1518字节,其中:

以太网首部设有14字节;

ip首部设有20字节;

tcp首部设有20字节;

应用数据设有1460字节;

以太网尾部设有4字节。

优选地,所述外接ddr存储器为容量512mb或以上的ddr存储器。

优选地,所述mac控制器为千兆/万兆mac控制器。

本发明还提供一种硬件实现tcp_ip协议的方法,包括如下步骤:

数据搬移步骤:主机应用层程序发送数据时,嵌入式cpu核根据toe网卡命令初始化tcp_udp引擎内部的dma,dma将发送数据从主机内存搬移到toe网卡的ddr内存,并按以太网帧的数据结构完成将发送数据填充到以太网帧中;

分类步骤:在接收到以太网帧数据时,mac控制器对以太网帧分类,根据分类结果分别发送给arp引擎、icmp引擎、ip引擎或tcp_udp引擎,各引擎分别解析以太网帧数据;

存储分配步骤:网卡初始化时,嵌入式cpu核在ddr存储器中划分一块存储区域,存储描述符信息;

描述附表寻址步骤:基于hash函数寻址描述符;

连接建立步骤:嵌入式cpu内核建立tcp或udp连接,每建立一个连接,在连接描述符表中分配一个表项;

以太帧发送步骤:填充完以太网帧数据结构后,以太网帧结构的状态变成ready,mac控制器自动将状态为ready的以太网帧发送出去。

优选地,存储分配步骤包括:在ddr存储器中分配8x2k个描述符的空间,描述符按2048个set,每个set内8个描述符的方式组织。

优选地,描述附表寻址步骤包括:根据<源端口号、源ip地址、目的端口号、目的ip地址>进行hash计算,生成11位的访问描述符的set号,根据<源端口号、源ip地址、目的端口号、目的ip地址>与set内的8个描述符比较,寻址描述符;若8个描述符都不命中,则查询二级描述符表。

与现有技术相比,本发明具有如下的有益效果:

1、本发明通过嵌入式cpu核执行软件的方式来创建连接,每个连接用一个连接描述符来描述这个连接的状态信息和属性信息,连接描述符暂存在toe网卡的ddr存储器中,只要toe网卡的ddr存储器容量足够大,就可以创建任意数量的连接。

2、本发明的连接描述符按hash索引的方式寻址,方便对连接描述符的访问。

3、本发明采用固定的数据结构体存储在ddr存储器中,减少数据在不同协议层处理时的数据搬移开销,便利了硬件管理数据。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的toe网卡控制器组成结构框图;

图2为本发明的以太网帧数据结构图;

图3为本发明的连接描述符的示意图;

图4为本发明的连接描述符表的组织结构图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

图1展示了本发明的toe网卡的组成结构框图。实现toe功能的主要工作方法具体如下:

实现tcp卸载引擎的方法包括两部分:toe网卡硬件部分和toe网卡驱动软件部分。其中toe网卡的驱动程序提供传统tcp/ip协议的api(applicationprogramminginterface)接口,操作系统或应用程序对tcp/ip协议的访问将由toe网卡的驱动程序转换后,访问toe网卡硬件部分;toe网卡的硬件部分包括:嵌入式cpu核、配置寄存器、tcp_udp引擎、ip引擎、icmp(internetcontrolmessageprotocol,网际控制报文协议)引擎、arp(addressresolutionprotocol,地址解析协议)引擎、rarp(reverseaddressresolutionprotocol,反向地址解析协议)引擎、ddr3接口控制器以及千兆/万兆mac控制器,其中:嵌入式cpu核负责tcp/udp连接的建立与维护,以及对tcp_udp引擎等模块的控制;配置寄存器作为网卡设备的pci配置空间寄存器,提供网卡的基本配置/控制/状态信息;tcp_udp引擎负责将主机cpu准备发送的数据搬移到toe网卡的ddr存储器空间,并按以太网帧格式将数据分成以太网帧;已经从接收到的以太网帧提取数据,传输到主机cpu的ddr存储器空间;此外,tcp_udp引擎还负责填充以太网帧中与tcp/udp相关的信息,例如源端口号、目的端口号、序列号等;ip引擎负责处理与ip层相关的事务,例如填充发送以太网帧中ip层相关的ip头信息,计算校验和,从接收的以太网帧提取ip头信息,执行校验计算等;icmp引擎负责生成控制消息包,以节解析接收到的控制消息包;arp引擎负责将ip地址转换成mac地址。在arp引擎内部有一个地址转换表,缓存最近的ip地址和mac地址映射表项,如果查询地址转换表未命中,则自动生成arp以太网帧,广播到局域网,并解析接收到的arp帧;rarp引擎负责mac地址到ip地址的映射;ddr3接口控制器负责外接大容量(512mb或以上)的ddr存储器,ddr存储器缓存发送和接收到的以太网帧,以及缓存cpu内核程序和各种描述符表;千兆/万兆mac控制器负责发送和接收以太网帧。

本发明的关键点是tcp/udp数据包、ip包、以太网帧的组织。toe网卡以以太网帧作为数据收发管理的基本单位,图2展示了一个以太网帧的数据结构。以太网帧的数据结构是固定大小的,tcp_udp引擎根据、ip引擎、mac控制器、嵌入式cpu核等分别填写以太网帧中相应部分的内容,或者对接收的以太网帧解析相应部分的内容;以固定的以太网帧数据结构作为收发数据的管理单位是为了减少数据在不同协议层处理时的数据搬移开销,以及硬件管理数据的便利;

主机应用层程序发送数据时,嵌入式cpu核根据toe网卡命令初始化tcp_udp引擎内部的dma,dma负责将发送数据从主机内存搬移到toe网卡的ddr内存,并按以太网帧的数据结构完成将发送数据填充到以太网帧中;

在接收到以太网帧数据时,mac控制器首先对以太网帧分类,根据分类结果分别发送给arp引擎、icmp引擎、ip引擎或tcp_udp引擎,各引擎分别解析以太网帧数据。如果是tcp_udp数据包,则以中断方式报告主cpu,由主cpu调用toe网卡的驱动程序函数,然后由驱动程序函数控制嵌入式cpu核,再由嵌入式cpu核配置tcp_udp中的dma,将以太网帧中的数据提取出来,传输到主机的系统内存中;

嵌入式cpu内核负责建立tcp或udp连接。每个连接用一个连接描述符表示,连接描述符的格式见图3所示。在网卡初始化时,嵌入式cpu核在ddr存储器中划分一块存储区域,存储描述符信息。ddr存储器中的描述符按8x2k数组的方式组织,见图4所示。

嵌入式cpu内核在初始化时,在ddr存储器中分配8x2k个描述符的空间,描述符按2048个set,每个set内8个描述符的方式组织。寻址描述符时,根据<源端口号、源ip地址、目的端口号、目的ip地址>进行hash计算,生成11位的访问描述符的set号,然后根据<源端口号、源ip地址、目的端口号、目的ip地址>与set内的8个描述符比较,从而寻址描述符;若8个描述符都不命中,则查询二级描述符表。

第一级连接描述符表有8x2k个项,且可以有第二级、第三级连接描述符表,因此可以支持任意数量的连接数;

tcp/udp连接由嵌入式cpu核负责建立,每建立一个连接,在连接描述符表中分配一个表项。连接建立好之后,tcp_udp引擎将根据描述符表的内容申请分配以太网帧数据结构存储器空间,并在主机系统内存和网卡ddr存储器之间搬移数据;

以太网帧数据结构的内容填充好之后,帧数据结构的状态变成ready。只要有状态为ready的以太网帧,mac控制器将自动将该以太网帧发送出去。

以上发明内容,可采用现场可编程门阵列fpga来实现,也可以开发专用的toe网卡控制器芯片来实现。同时根据需要,可基于fpga或toe网卡控制器芯片开发pcie网卡板,也可以将fpga或toe网卡控制器芯片放置在目标系统应用板上(如系统主板)。

根据本发明的技术方案,可以设计通用的toe网卡。在fpga或专用芯片实现toe网卡功能时,需要提供配套的toe网卡驱动程序。

申请人已经成功开发了基于fpga的pcie4x接口toe网卡,可以支持16k个tcp/udp连接。经过测试,在千兆局域网环境中,针对大文件(4gb)的传输,传输速率可达100mb/s。

本发明中,由于嵌入式cpu核的计算性能有限,因此tcp/ip数据包发送和接收过程中的一些处理,例如tcp/udp数据包分成帧、ip头的crc校验、arp协议、icmp协议等,采用定制逻辑实现,作为硬件加速处理模块。为了方便这些加速处理模块识别和处理发送或接收的数据,本方案要求数据按tcp/ip协议定义的标准格式组织,以固定的数据结构体存储在ddr存储器中。由于网络传输以太网帧的最大长度为1518字节,因此本方案是以最大帧长度1518字节为结构体,作为发送和接收数据的缓存载体。也就是说,发送和接收数据的数据结构(数据缓存体,或数据buf)固定为1518字节,其中的有效字节数量通过头部的长度字段决定。应用程序发送和接收数据时,在系统内存中分配一块空间缓存发送或接收的数据。系统内存与toe网卡的ddr内存之间的数据搬移通过toe网卡内嵌的dma完成。dma除了负责数据搬移之外,还负责将数据分成数据buf结构体。这是本发明的特点。

本发明通过定制硬件加速模块和优化收发数据的组织结构,提升toe网卡收发数据的性能。

本发明的重点关注在于数据结构体的定义和组织,通过优化数据结构体的组织,从而提升toe网卡发送数据的性能。目前未看到现有技术公开这一方面。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1