CN110995507B - 一种网络加速控制器及方法 - Google Patents
一种网络加速控制器及方法 Download PDFInfo
- Publication number
- CN110995507B CN110995507B CN201911317999.1A CN201911317999A CN110995507B CN 110995507 B CN110995507 B CN 110995507B CN 201911317999 A CN201911317999 A CN 201911317999A CN 110995507 B CN110995507 B CN 110995507B
- Authority
- CN
- China
- Prior art keywords
- module
- descriptor
- data
- packet
- network
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/083—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for increasing network speed
-
- 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
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
本公开提供了一种网络加速控制器及方法,所述控制器至少包括TOE模块、TXMAC模块、RXMAC模块、TX FIFO模块、RX FIFO模块、TXDMA模块、RXDMA模块、ARBITER模块和AXI Master模块,本公开将原本属于TCP/IP协议栈处理的一部分操作用硬件实现,处理一个大的数据包,协议栈只需要参与一次操作,分包处理由硬件完成。这样能够有效减少网络处理过程中软件过多的参与,减少CPU的负载,用硬件通过内部握手机制实现操作处理,支持中断累计达到一定数目之后再通知CPU来处理,不需要频繁发中断给CPU,能够减少不必要的等待时间,极大的提升了网络信息的处理速度。
Description
技术领域
本公开涉及网络加速技术领域,特别涉及一种网络加速控制器及方法。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术,并不必然构成现有技术。
随着网络技术的发展,基于对网络信息处理的时效性需求,TCP/IP协议栈对信息处理速度需要进一步加快,而这又对CPU的性能有了越来越高的需求。
本公开发明人发现,目前市场上大部分产品都是依赖于高性能CPU来加速TCP/IP协议栈的处理,对于CPU性能不变的情况下,网络信息处理速度很难再加快。
发明内容
为了解决现有技术的不足,本公开提供了一种网络加速控制器及方法,依托于用硬件完成一部分TCP/IP协议栈的处理,减少了网络信息处理过程中对CPU的负载。
为了实现上述目的,本公开采用如下技术方案:
本公开第一方面提供了一种网络加速控制器。
一种网络加速控制器,包括TOE模块、TXMAC模块、RXMAC模块、TX FIFO模块和RXFIFO模块,所述TXMAC模块用于从TX FIFO传输数据到网络,所述RXMAC模块用于从网络接受数据并将数据存放到RX FIFO模块,所述TOE模块分别与TXMAC模块、RXMAC模块、TX FIFO模块和RX FIFO模块连接,用于对接收端和发送端的网络信息进行处理;
还包括TXDMA模块、RXDMA模块、ARBITER模块和AXI Master模块,所述TXDMA模块与TOE模块连接,用于读取发送端描述符,并根据读回的描述符读取相应的发送数据并将其存放到TX FIFO模块中;所述RXDMA模块与TOE模块连接,用于读取接收端描述符,根据读回的描述符将数据从RX FIFO搬到对应的***内存中;
所述ARBITER模块用于处理发送端多个描述符环和接收端多个描述符环之间的处理优先级,所述AXI Master模块用于根据ARBITER发出的操作指令,读操作时负责将数据从***内存读回网络加速控制器,写操作时负责将数据写回到***内存中。
作为可能的一些实现方式,所述控制器还包括网络传输接口控制模块,用于接收和发送网络信息,至少支持10兆比特/秒、100兆比特/秒和1000兆比特/秒三种传输模式。
作为可能的一些实现方式,所述控制器还包括RGF模块和MDC模块,所述RGF模块用于寄存器的读写维护;所述MDC模块与RGF模块连接,用于对网络PHY的控制,能够通过寄存器的读写来实现对网络PHY的读写操作。
作为进一步的限定,所述控制器还包括AHB Slave模块,主控模块通过AHB Slave模块访问寄存器,具体为:
当主控模块要写数据到网络加速控制器的时候,AHB Slave模块执行一个写操作,将数据写入到RGF模块中相对应的地址并返回一个状态给主控模块通知主控模块写入成功;
主控模块从网络加速控制器中读取数据的时候,它执行一个读操作,根据地址读取RGF中相对应寄存器的值并返回一个状态通知主控模块读取成功。
作为可能的一些实现方式,所述TOE模块对发送端的网络信息进行处理,具体为:
发送端能够对上层下发的大数据包进行拆分,拆分之后的每一个数据包的头部均为硬件根据原有的头部做计算来填充;能够根据描述符中的信息添加VLAN控制信息;能够计算IPv4头部的校验和,并将其填入数据包相应的位置;能够计算UDP数据包的校验和,并将其填入相应的位置;接收端能够做UDP的头部校验和比对;
能够计算TCP数据包的校验和,并将其填入相应的位置;能够累计中断,达到一定数目之后再起一个新的中断通知CPU来处理。
作为可能的一些实现方式,所述TOE模块对接收端的网络信息进行处理,具体为:
接收端能够对收到的数据包进行HASH计算,并将值写回描述符中,便于软件将数据包归类;能够根据描述符对接收到的数据包进行头和负载分离,便于软件处理;能够移除VLAN控制信息并将信息写回到描述符中;能够做IPv4的头部校验和比对;能够做UDP的头部校验和比对;能够累计中断,达到一定数目之后再起一个新的中断通知CPU来处理。
本公开第二方面提供了一种网络加速的实现方法。
一种网络加速的实现方法,利用本公开第一方面所述的网络加速控制器,发送端的控制方法,包括以下步骤:
步骤7-1:将处理好的初始数据包下发到网络层,然后修改描述符环,通过操作网络加速控制器的寄存器来通知网路加速器进行数据读取操作;
步骤7-2:网络加速控制器开始处理描述符环,按照ARBITER模块事先设定好的优先级来依次处理,发送给AXI Master模块;
步骤7-3:AXI Master模块根据ARBITER模块发过来的指令去相对应的地址将描述符的内容取回;
步骤7-4:网络加速控制器根据接受到描述符的内容决定接下来的进一步操作;
步骤7-5:数据被写入TX FIFO模块之后,通知TXMAC模块来取数据,当TXMAC模块检测网络处于空闲状态之后就会开始发送数据;
步骤7-6:如果发送过程中出现冲突,则需要检测是否超过设定的峰值,如果未超过则运用二进制指数避退算法计算延时之后再进行发送;
步骤7-7:传输完成之后,通过AXI MASTER模块将传输状态会写到描述符中,查询是否还有等待传输的描述符,则返回步骤7-2。
作为可能的一些实现方式,所述步骤7-4中,具体为:
判断GSOEN是否有效,如果无效则直接不做分包处理;
如果有效则做分包处理,根据描述符中的MACLEN、IPLEN和L4LEN来确定MAC层头部、IP层头部和L4层头部的长度,并对其进行存储并对其中的片段进行修改;
如果仅仅是IP包或者UDP/IP包的话,则需要在IP层通过分片进行分包处理,如果是TCP/IP包的话则需要在TCP层进行分包;
判断是否需要***VLAN控制信息,是否需要做校验和计算;
根据描述符中的地址以及数据包长度,调用AXI Master模块去相对应的地址按照分包大小将数据取回,修改数据头部,计算校验和以及增加VLAN控制信息。
本公开第三方面提供了一种网络加速的实现方法。
一种网络加速的实现方法,利用本公开第一方面所述的网络加速控制器,接收端的控制方法,包括以下步骤:
步骤9-1:对接受到的数据进行地址过滤,CRC校验,如果地址过滤,CRC校验错误或者收到的数据包小于64比特则直接将数据丢弃;
步骤9-2:同时对校验和做校对,通过分析数据包头确定包的类型并提取有用信息,并用Toeplitz算法计算出一个32比特的哈希值;
步骤9-3:从32比特值中取出七比特,指向存放描述符环的表,从表中取出代表描述符环的三比特数值;
步骤9-4:根据三比特数值确定描述符环的位置,从指定的描述符环的当前可用地址开始读取描述符环;
步骤9-5:根据描述符环指向的地址,将RX FIFO模块中的数据通过AXI MASTER模块写入到对应的地址;
步骤9-6:传输完成之后,更新描述符环。
作为可能的一些实现方式,所述步骤9-2中,数据包类型包括:
IPv4包,提取目的IP地址和源IP地址;
IPv4+TCP/UDP包,提取目的IP地址、源IP地址、目的端口号和源端口号;
IPv6包,提取目的IP地址和源IP地址;
IPv6+TCP/UDP包,提取目的IP地址、源IP地址、目的端口号和源端口号。
与现有技术相比,本公开的有益效果是:
1、本公开所述的内容将原本属于TCP/IP协议栈处理的一部分操作用硬件实现,处理一个大的数据包,协议栈只需要参与一次操作,分包处理由硬件完成,能够有效减少网络处理过程中软件过多的参与,减少CPU的负载。
2、本公开所述的内容用硬件通过内部握手机制实现操作处理,支持中断累计达到一定数目之后再通知CPU来处理,不需要频繁发中断给CPU,能够减少不必要的等待时间,能够提升网络信息的处理速度。
3、本公开所述的内容支持多队列描述符环,能够适用于多核架构的处理器,每一个核负责处理不同的描述符环,相互之间没有干扰。
4、本公开所述的内容兼容Linux软件处理框架,兼容GSO(Generic SegmentOffload),支持关闭或开启GSO功能;写回到描述符中的HASH值有利于软件GRO(GenericReceive Offload)的处理。
附图说明
图1为本公开实施例1提供的网络加速器的架构示意图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
实施例1:
如图1所示,本公开实施例1提供了一种网络加速控制器,将本来属于TCP/IP协议栈处理的一部分内容用硬件实现,以达到减少TCP/IP协议栈处理网络信息过程中对CPU的负载,具体包括以下各个模块:
(1)RGMII模块(Reduced Gigabit Media Independent Interface),网络传输接口控制模块,用来接收和发送网络信息。
支持10兆比特/秒,100兆比特/秒,1000兆比特/秒三种传输模式。相对于其他传输接口而言,RGMII支持的传输速率模式多,信号线数目相对较少。
(2)TXMAC模块,主要负责从TX FIFO传输数据到网络,可以为数据包自动增加CRC校验、前导字段以及自动产生用于冲突控制的Jam数据包。
主要控制以状态机实现;当发送端需发送数据时,需要检测以太网的状态,只有以太网处于空闲状态时,才能进行发送;如果发送端正在发送数据时,检测到有冲突发生,发送端就会发送Jam包并确定是否超过最大限定值,如果未超过则等待返回时间并在此发送当前数据包;当发送的帧少于64比特(以太网规定的最小帧)时,发送端会自动将其补充至64比特时再发送。
此外,TXMAC模块还能够发送IEEE 1588 PTP帧,通知用户比较精准的时间
(3)RXMAC模块,主要负责从网络接受数据并将数据存放到内部的RX FIFO模块、地址过滤和CRC校验;主要控制以状态机实现;当接收端完成数据接收时,对其进行CRC校验和地址过滤,如果检验完成则通知内部DMA将数据搬到对应的内存中;如果校验错误则将数据丢弃,并通知控制器。
此外RXMAC能够识别IEEE 1588 PTP帧,能够解析精准的时间
(4)TX FIFO模块,主要负责发送端数据缓存,当要发送数据时,内部DMA会从***内存中将数据搬到网络控制器的TX FIFO模块中;整个数据包存储完成之后,通知TX MAC模块从TX FIFO中取出数据发送到网络中;当整个数据包正确传输完成之后,TX FIFO模块中的数据才会被覆盖掉,以防发生冲突需要重传数据。
(5)RX FIFO模块,主要负责存储接收端接受到的数据;当接受数据CRC比对通过时,会通知RXDMA启动,根据接收端的描述符将已接收到的数据搬到***内存中;如果接收到的数据包小于64比特或者CRC比对不通过,则直接丢弃。
(6)TOE模块主要负责对接收端,发送端的网络信息进行处理。
主要包含以下几方面:
(6-1)发送端能够对上层下发的大数据包(指超出MTU)进行拆分,拆分之后的每一个数据包的头部都是硬件根据原有的头部做计算自己去做填充的;
(6-2)接收端能够对收到的数据包进行HASH计算,并将值写回描述符中,便于软件将数据包归类;
(6-3)接收端能够根据描述符对接收到的数据包进行头和负载分离,便于软件处理;
(6-4)发送端能够根据描述符中的信息添加VLAN控制信息;
(6-5)接收端能够移除VLAN控制信息并将信息写回到描述符中;
(6-6)发送端能够计算IPv4头部的校验和,并将其填入数据包相应的位置;接收端能够做IPv4的头部校验和比对;
(6-7)发送端能够计算UDP数据包的校验和,并将其填入相应的位置;接收端能够做UDP的头部校验和比对;
(6-8)发送端能够计算TCP数据包的校验和,并将其填入相应的位置;接收端能够做UDP的头部校验和;
(6-9)能够累计中断,达到一定数目之后再起一个新的中断通知CPU来处理。
(7)TXDMA模块,主要负责三部分功能:读取发送端描述符、根据读回的描述符读取相应的发送数据并将其存放到TX FIFO中、传输完成之后修改描述符状态位。
(8)RXDMA模块,主要负责三部分功能:读取接收端描述符、根据读回的描述符将数据从RX FIFO搬到对应的***内存中、传输完成之后修改描述符状态位。
(9)ARBITER模块,主要负责处理发送端8个描述符环,接收端8个描述符环之间的处理优先级问题。
有两种处理方式:
(9-1)轮询,两者依次处理;
(9-2)优先级设定,优先级高的先处理,最后处理优先级低的。
(10)AXI Master模块,主要负责读取和写回操作;根据ARBITER发出的操作指令,读操作时负责将数据从***内存读回网络加速控制器;写操作时负责将数据写回到***内存中。
(11)MDC模块,主要负责对网络PHY的控制;软件可以通过寄存器的读写来实现对网络PHY的读写操作来达到要实现的目的。
(12)RGF模块,主要负责寄存器的读写维护;软件相要实现什么功能都需要通过配置相应的寄存器来完成相应的目的。
(13)AHB Slave模块,CPU通过此接口模块能够访问寄存器,当CPU要写数据到网络加速控制器的时候,它执行一个写操作,将数据写入到RGF中相对应的地址并返回一个状态给CPU通知CPU写入成功;CPU从网络加速控制器中读取数据的时候,它执行一个读操作,根据地址读取RGF中相对应寄存器的值并返回一个状态通知CPU读取成功。
利用上述网络加速控制器的加速方法,具体为:
发送端:
当软件将处理好的初始数据包下发到网络层时(最大64KB),需要填写描述符环并通过操作寄存器来通知网络加速控制器来进行下一步操作。
发送端操作流程如下:
(A)软件将处理好的初始数据包(最大可达64KB)下发到网络层,然后修改描述符环,通过操作网络加速控制器的寄存器来通知网路加速器进行数据读取操作。其中描述符环分为8个,是为了方便以后多核CPU处理网络加速控制器而设置,也可单独应用于单核。
(B)网络加速控制器开始处理描述符环,按照事先设定好的优先级来依次处理(通过ARBITER模块),发送给AXI MASTER模块;
(C)AXI MASTER模块根据ARBITER模块发过来的指令去相对应的地址将描述符的内容取回;
(D)网络加速控制器根据接受到描述符的内容决定接下来的进一步操作:
(D-1)判断GSOEN是否有效,如果无效则直接不做分包处理;
(D-2)如果有效则做分包处理,主要是需要根据描述符中的MACLEN、IPLEN和L4LEN来确定MAC层头部、IP层头部和L4层头部的长度,并对其进行存储并对其中的片段进行修改。
对于IPv4来说需要修改的是总长度,标识(可以通过描述符来确定它是否发生变化),分片偏移以及头部校验和需要做修改;
对于IPv6需要修改的是负载长度;对于UDP需要修改的是总长度和校验和;
对于TCP需要修改的是序列号和校验和。
如果仅仅是IP包或者UDP/IP包的话,则需要在IP层通过分片进行分包处理;如果是TCP/IP包的话则需要在TCP层进行分包。
(D-3)再判断是否需要***VLAN控制信息,是否需要做校验和计算;
(D-4)根据描述符中的地址以及数据包长度,调用AXI Master模块去相对应的地址按照分包大小将数据取回,修改头部(第一次之后是增加头部),计算校验和以及增加VLAN控制信息;
(E)数据被写入TX FIFO模块之后,会通知TXMAC模块来取数据,当TXMAC模块检测网络处于空闲状态之后就会开始发送数据,并且会为数据包增加前导、SFD和CRC校验形成一个标准的以太网帧;
(H)如果发送过程中出现冲突,则需要检测是否超过设定的峰值,如果未超过则运用二进制指数避退算法计算延时之后再进行发送;
(G)传输完成之后,通过AXI Master将传输状态会写到描述符中;
(H)查询是否还有等待传输的描述符,如果有从(B)开始。
接收端
当接收端接收到数据时,需要分析接收到的数据包中的头部信息,并用其中的部分信息确定接收端描述符环。
接收端具体实现步骤如下:
(a)对接受到的数据进行地址过滤,CRC校验,如果地址过滤,CRC校验错误或者收到的数据包小于64比特则直接将数据丢弃。
(b)同时对校验和做校对,通过分析数据包头确定包的类型并提取有用信息,并用Toeplitz算法计算出一个32比特的哈希值。
数据包类型主要包含下面几种:
(b-1)IPv4包,则提取目的IP地址和源IP地址;
(b-2)IPv4+TCP/UDP包,则提取目的IP地址、源IP地址、目的端口号和源端口号;
(b-3)IPv6包,则提取目的IP地址和源IP地址
(b-4)IPv6+TCP/UDP包,则提取目的IP地址、源IP地址、目的端口号和源端口号;
(c)从32比特值中取出7比特,指向存放描述符环的表,从表中取出代表描述符环的3比特数值;
(d)根据3比特数值确定描述符环的位置,从指定的描述符环的当前可用地址开始读取描述符环(每次需要记录当前描述符环使用到哪个地址);
(e)根据描述符环指向的地址,将RX FIFO模块中的数据通过AXI Master写入到对应的地址;
(f)传输完成之后,更新描述符环。
本公开将原本属于TCP/IP协议栈处理的一部分操作用硬件实现,处理一个大的数据包,协议栈只需要参与一次操作,分包处理由硬件完成,能够有效减少网络处理过程中软件过多的参与,减少CPU的负载;用硬件通过内部握手机制实现操作处理,支持中断累计达到一定数目之后再通知CPU来处理,不需要频繁发中断给CPU,能够减少不必要的等待时间,能够极大的提升网络信息的处理速度。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种网络加速控制器,其特征在于,包括TOE模块、TXMAC模块、RXMAC模块、TX FIFO模块和RX FIFO模块,所述TXMAC模块用于从TX FIFO传输数据到网络,所述RXMAC模块用于从网络接收 数据并将数据存放到RX FIFO模块,所述TOE模块分别与TXMAC模块、RXMAC模块、TX FIFO模块和RX FIFO模块连接,用于对接收端和发送端的网络信息进行处理;
还包括TXDMA模块、RXDMA模块、ARBITER模块和AXI Master模块,所述TXDMA模块与TOE模块连接,用于读取发送端描述符,并根据读回的描述符读取相应的发送数据并将其存放到TX FIFO模块中;所述RXDMA模块与TOE模块连接,用于读取接收端描述符,根据读回的描述符将数据从RX FIFO搬到对应的***内存中;
所述ARBITER模块用于处理发送端多个描述符环和接收端多个描述符环之间的处理优先级,所述AXI Master模块用于根据ARBITER发出的操作指令,读操作时负责将数据从***内存读回网络加速控制器,写操作时负责将数据写回到***内存中;
所述TOE模块对发送端的网络信息进行处理,具体为:
发送端能够对上层下发的大数据包进行拆分,拆分之后的每一个数据包的头部均为硬件根据原有的头部做计算来填充;能够根据描述符中的信息添加VLAN控制信息;能够计算IPv4头部的校验和,并将其填入数据包相应的位置;能够计算UDP数据包的校验和,并将其填入相应的位置;接收端能够做UDP的头部校验和比对;
能够计算TCP数据包的校验和,并将其填入相应的位置;能够累计中断,达到一定数目之后再起一个新的中断通知CPU来处理;
所述TOE模块对接收端的网络信息进行处理,具体为:
接收端能够对收到的数据包进行HASH计算,并将值写回描述符中,便于软件将数据包归类;能够根据描述符对接收到的数据包进行头和负载分离,便于软件处理;能够移除VLAN控制信息并将信息写回到描述符中;能够做IPv4的头部校验和比对;能够做UDP的头部校验和比对;能够累计中断,达到一定数目之后再起一个新的中断通知CPU来处理。
2.如权利要求1所述的网络加速控制器,其特征在于,所述网络加速控制器还包括网络传输接口控制模块,用于接收和发送网络信息,至少支持10兆比特/秒、100兆比特/秒和1000兆比特/秒三种传输模式。
3.如权利要求1所述的网络加速控制器,其特征在于,所述控制器还包括RGF模块和MDC模块,所述RGF模块用于寄存器的读写维护;所述MDC模块与RGF模块连接,用于对网络PHY的控制,能够通过寄存器的读写来实现对网络PHY的读写操作。
4.如权利要求3所述的网络加速控制器,其特征在于,所述控制器还包括AHB Slave模块,主控模块通过AHB Slave模块访问寄存器,具体为:
当主控模块要写数据到网络加速控制器的时候,AHB Slave模块执行一个写操作,将数据写入到RGF模块中相对应的地址并返回一个状态给主控模块通知主控模块写入成功;
主控模块从网络加速控制器中读取数据的时候,它执行一个读操作,根据地址读取RGF中相对应寄存器的值并返回一个状态通知主控模块读取成功。
5.一种网络加速的实现方法,其特征在于,利用权利要求1-4任一项所述的网络加速控制器,发送端的控制方法,包括以下步骤:
步骤7-1:将处理好的初始数据包下发到网络层,然后修改描述符环,通过操作网络加速控制器的寄存器来通知网路加速器进行数据读取操作;
步骤7-2:网络加速控制器开始处理描述符环,按照ARBITER模块事先设定好的优先级来依次处理,发送给AXI Master模块;
步骤7-3:AXI Master模块根据ARBITER模块发过来的指令去相对应的地址将描述符的内容取回;
步骤7-4:网络加速控制器根据接收 到描述符的内容决定接下来的进一步操作;
步骤7-5:数据被写入TX FIFO模块之后,通知TXMAC模块来取数据,当TXMAC模块检测网络处于空闲状态之后就会开始发送数据;
步骤7-6:如果发送过程中出现冲突,则需要检测是否超过设定的峰值,如果未超过则运用二进制指数避退算法计算延时之后再进行发送;
步骤7-7:传输完成之后,通过AXI MASTER模块将传输状态写到描述符中,查询是否还有等待传输的描述符,若还有等待传输的描述符,则返回步骤7-2。
6.如权利要求5所述的网络加速的实现方法,其特征在于,所述步骤7-4中,具体为:
判断GSOEN是否有效,如果无效则直接不做分包处理;
如果有效则做分包处理,根据描述符中的MACLEN、IPLEN和L4LEN来确定MAC层头部、IP层头部和L4层头部的长度,并对其进行存储并对其中的片段进行修改;
如果仅仅是IP包或者UDP/IP包的话,则需要在IP层通过分片进行分包处理,如果是TCP/IP包的话则需要在TCP层进行分包;
判断是否需要***VLAN控制信息,是否需要做校验和计算;
如果需要***VLAN控制信息,如果需要做校验和计算;根据描述符中的地址以及数据包长度,调用AXI Master模块去相对应的地址按照分包大小将数据取回,修改数据头部,计算校验和以及增加VLAN控制信息。
7.一种网络加速的实现方法,其特征在于,利用权利要求1-4任一项所述的网络加速控制器,接收端的控制方法,包括以下步骤:
步骤9-1:对接收 到的数据进行地址过滤,CRC校验,如果地址过滤,CRC校验错误或者收到的数据包小于64比特则直接将数据丢弃;
步骤9-2:同时对校验和做校对,通过分析数据包头确定包的类型并提取有用信息,并用Toeplitz算法计算出一个32比特的哈希值;
步骤9-3:从32比特值中取出七比特,指向存放描述符环的表,从表中取出代表描述符环的三比特数值;
步骤9-4:根据三比特数值确定描述符环的位置,从指定的描述符环的当前可用地址开始读取描述符环;
步骤9-5:根据描述符环指向的地址,将RX FIFO模块中的数据通过AXI MASTER模块写入到对应的地址;
步骤9-6:传输完成之后,更新描述符环。
8.如权利要求7所述的网络加速的实现方法,其特征在于,所述步骤9-2中,数据包类型包括:
IPv4包,提取目的IP地址和源IP地址;
IPv4+TCP/UDP包,提取目的IP地址、源IP地址、目的端口号和源端口号;
IPv6包,提取目的IP地址和源IP地址;
IPv6+TCP/UDP包,提取目的IP地址、源IP地址、目的端口号和源端口号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911317999.1A CN110995507B (zh) | 2019-12-19 | 2019-12-19 | 一种网络加速控制器及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911317999.1A CN110995507B (zh) | 2019-12-19 | 2019-12-19 | 一种网络加速控制器及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110995507A CN110995507A (zh) | 2020-04-10 |
CN110995507B true CN110995507B (zh) | 2022-08-12 |
Family
ID=70063093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911317999.1A Active CN110995507B (zh) | 2019-12-19 | 2019-12-19 | 一种网络加速控制器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110995507B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538688B (zh) * | 2020-05-26 | 2021-11-16 | 北京爱芯科技有限公司 | 数据处理方法、装置、模组及芯片 |
CN112019645B (zh) * | 2020-07-06 | 2021-07-30 | 中科驭数(北京)科技有限公司 | 基于toe的网络地址管理方法及装置 |
CN113438097B (zh) * | 2021-05-21 | 2022-08-23 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080126622A1 (en) * | 2006-11-28 | 2008-05-29 | Eliezer Tamir | Method and System for Optimizing CPU Performance for Network Ingress Flow |
CN101382927B (zh) * | 2008-09-25 | 2010-06-02 | 杭州爱威芯科技有限公司 | 集成在芯片内的高速串行***接口电路 |
CN102065568B (zh) * | 2009-11-17 | 2013-07-03 | 中国科学院微电子研究所 | 基于数据描述符的mac软硬件交互方法及其硬件实现装置 |
CN109471816B (zh) * | 2018-11-06 | 2021-07-06 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
-
2019
- 2019-12-19 CN CN201911317999.1A patent/CN110995507B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110995507A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9313140B2 (en) | Packet preemption for low latency | |
US20240160584A1 (en) | System and method for facilitating dynamic command management in a network interface controller (nic) | |
CN110995507B (zh) | 一种网络加速控制器及方法 | |
JP4807861B2 (ja) | サーバ環境においてオフロードをネットワーク化するためのホスト・イーサネット・アダプタ | |
US10425359B2 (en) | Packet data traffic management apparatus | |
US7903689B2 (en) | Method and system for packet reassembly based on a reassembly header | |
US5757795A (en) | Method and apparatus for hashing addresses in a network switch | |
US9397960B2 (en) | Packet steering | |
KR101720259B1 (ko) | 중앙 제어기에 의해 제어되는 데이터 패킷들을 수신 및 저장하는 장치 및 방법 | |
US7720064B1 (en) | Method and system for processing network and storage data | |
US6970921B1 (en) | Network interface supporting virtual paths for quality of service | |
US20090304022A1 (en) | Shared virtual network interface | |
CN101494605B (zh) | 一种基于以太网驱动的数据转发方法和装置 | |
US8924605B2 (en) | Efficient delivery of completion notifications | |
US7660322B2 (en) | Shared adapter | |
KR101716832B1 (ko) | 큐들의 채움 레벨들의 갱신을 제어함으로써 대역폭을 절감하면서 데이터를 수신 및 저장하는 방법 및 어셈블리 | |
US8959265B2 (en) | Reducing size of completion notifications | |
CA2361895A1 (en) | Fifo-based network interface supporting out-of-order processing | |
US20060274787A1 (en) | Adaptive cache design for MPT/MTT tables and TCP context | |
TWI257790B (en) | System for protocol processing engine | |
US20110019685A1 (en) | Method and system for packet preemption for low latency | |
US7860120B1 (en) | Network interface supporting of virtual paths for quality of service with dynamic buffer allocation | |
US11876859B2 (en) | Controlling packet delivery based on application level information | |
US20110019668A1 (en) | Method And System For Packet Preemption Via Packet Rescheduling | |
US7461142B2 (en) | Method and apparatus for address management in a network device |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |