CN113438097A - 一种网络加速的实现方法及装置 - Google Patents
一种网络加速的实现方法及装置 Download PDFInfo
- Publication number
- CN113438097A CN113438097A CN202110558315.8A CN202110558315A CN113438097A CN 113438097 A CN113438097 A CN 113438097A CN 202110558315 A CN202110558315 A CN 202110558315A CN 113438097 A CN113438097 A CN 113438097A
- Authority
- CN
- China
- Prior art keywords
- data packet
- input
- output
- interface
- descriptor
- 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.)
- Granted
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 39
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012545 processing Methods 0.000 claims abstract description 53
- 238000013519 translation Methods 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- 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/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本申请公开了一种网络加速的实现方法。输入接口生成输入数据包描述符,存入输入数据包描述符存储区中;随后该输入接口将输入数据包描述符的结束地址告知网络加速器,并通知网络加速器有新的输入数据包。网络加速器读取输入数据包描述符,然后逐一处理每个输入数据包描述符对应的输入数据包。网络加速器生成输出数据包描述符,写入输出接口的输出数据包描述符存储区;然后网络加速器将自身在该输出数据包描述符存储区的写指针位置告知该输出接口;并通知该输出接口有输出数据包。该输出接口读取输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包。本申请加快了数据包的处理进程,减少了网络传输的数据量。
Description
技术领域
本申请涉及一种数据包进行网络加速的实现方法。
背景技术
网络加速器广泛应用于手机等智能设备、以及路由器、交换机等无线终端接入设备。这些设备对网络数据包做转发、或者其他加速操作时,通常先将接收的数据包从外部存储器(如DDR SDRAM)读入到内部缓存,处理完成以后,再将数据包内容写入到外部存储器的新的存储空间。实际上,并不是所有处理都需要读入或写出完整的数据包。当数据包较大时,不用读入或写入整个数据包将节省很多访问外部存储器的带宽,缩短数据包的传输时延,降低系统的功耗。
发明内容
本申请所要解决的技术问题是提供一种数据包实现网络加速的方法
为解决上述技术问题,本申请提出了一种网络加速的实现方法,包括如下步骤。步骤S1:当某个输入接口有数据包准备发送给网络加速器时,该数据包称为输入数据包;该输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器中的起始物理地址和长度;该输入接口将输入数据包描述符存入该输入接口的输入数据包描述符存储区中;随后该输入接口将输入数据包描述符的结束地址告知网络加速器,并通知网络加速器有新的输入数据包。步骤S2:网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址;网络加速器将自身对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符;网络加速器读取输入数据包描述符,然后仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至TCP/UDP头部结束。步骤S3:当有数据包需要离开网络加速器时,该输出包称为输出数据包;网络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器中的起始物理地址和长度;网络加速器将输出数据包描述符写入输出接口的输出数据包描述符存储区;然后网络加速器将自身在该输出数据包描述符存储区的写指针位置告知该输出接口;并通知该输出接口有输出数据包。步骤S4:该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置;输出接口将自身在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符;输出接口读取输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包;处理完成后,输出接口释放掉输出数据包资源。
进一步地,所述步骤S1中,如果输入接口有多个输入数据包准备发送给网络加速器,则生成每个输入数据包对应的输入数据包描述符,将多个输入数据包描述符顺序地存入输入数据包描述符存储区中。
进一步地,所述步骤S1中,输入接口将输入数据包描述符的结束地址告知网络加速器,是通过写寄存器的方式,或者是输入接口将输入数据包描述符结束地址写到外部存储器的固定地址后、网络加速器来该固定地址读取的方式。
进一步地,所述步骤S1中,每个输入接口在外部存储器中有一个单独的输入数据包描述符存储区;该输入数据包描述符存储区的起始地址和长度告知网络加速器,该输入数据包描述符存储区的起始地址作为网络加速器在该输入数据包描述符存储区中的初始化读指针地址。
进一步地,所述步骤S1中,输入接口将输入数据包存储在外部存储器时,预留足够长度的空间以容纳最长的接口头部以及MAC头部。
进一步地,所述步骤S1中,各个输入接口告诉网络加速器如何解析该输入接口的数据包的接口头部,从而使网络加速器能够获取该数据包的总长度、头部的位置偏移。
进一步地,所述步骤S2中,网络加速器处理输入数据包是指判断每个输入数据包是否匹配进行加速的TCP和/或UDP链路;如果匹配则对数据包进行相应的加速处理;否则将该数据包输出。
进一步地,所述步骤S2中,网络加速器读取输入数据包描述符后,获取输入数据包在外部存储器中的起始物理地址和长度;随后网络加速器从这些输入数据包在外部存储器中的起始物理地址仅读取开头一段长度的内容;读取的长度大于或等于所有输入数据包的接口头部中最长的的长度+MAC头部的固定长度+IP头部的长度+TCP/UDP头部的长度;网络加速器从读取的内容中获取IP数据包的五元组信息,并根据IP数据包的五元组信息判定其是否与进行加速的TCP和/或UDP链路相匹配;如果匹配,则进行相应的加速处理;如果不是TCP或UDP数据包,或者没有匹配,则网络加速器输出该数据包。
进一步地,所述步骤S2中,对数据包进行加速处理具体包括如下步骤。步骤S21:获取输出接口信息。步骤S22:决定是否需要计算或检验整个IP数据包的校验和;如不需要计算或检验整个IP数据包的校验和,跳过这一步。当数据包属于转发数据流时,不需要计算整个IP数据包的校验和,也不需要检验整个IP数据包的校验和;当数据包属于为非转发数据流时,由AP接口发送给其他接口的数据包需要计算整个IP数据包的校验和;AP接口收到其他接口的数据包需要检验整个IP数据包的校验和;其余情况不需要计算整个IP数据包的校验和,也不需要检验整个IP数据包的校验和。步骤S23:决定是否需要做网络地址转换;如不需要做网络地址转换,跳过这一步。如果IP数据包需要转发,则做网络地址转换;如果IP数据包不需要转发,则不做网络地址转换。步骤S24:网络加速器根据加速规则决定是否需要更新接口头部和MAC头部;如不需要更新接口头部和MAC头部,跳过这一步。更新接口头部和MAC头部是指将数据包的旧的接口头部和MAC头部移除,再添加新的接口头部和MAC头部;更新完成后,将更新后的接口头部和MAC头部直至TCP或UDP头部,写入到外部存储器中原有的位置;然后将新的数据包在外部存储器中的起始物理地址和新的数据包长度生成为输出数据包描述符,将其写入输出接口的输出数据包描述符存储区中。
进一步地,所述步骤S3中,每个输出接口在外部存储器中有一个单独的输出数据包描述符存储区;该输出数据包描述符存储区的起始地址和长度信息告知网络加速器,该输出数据包描述符存储区的起始地址作为网络加速器在该输出数据包描述符存储区的初始化写指针地址。
进一步地,所述步骤S4中,处理输出数据包包括送往网络协议栈处理、或者通过接口转发出去。
本申请还提出了一种网络加速的实现装置,包括输入准备单元、输入处理单元、输出准备单元、输出处理单元。所述输入准备单元用来在某个输入接口有输入数据包时,令输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器中的起始物理地址和长度;将输入数据包描述符存入该输入接口的输入数据包描述符存储区中,将自身在输入数据包描述符存储区中写入的输入数据包描述符的结束地址告知网络加速器,还通知网络加速器有新的输入数据包。所述输入处理单元用来在网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址;将网络加速器对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符;读取输入数据包描述符,然后仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至TCP/UDP头部结束。所述输出准备单元用来在网络加速器有输出数据包时,令网络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器中的起始物理地址和长度;将自身在该输出数据包描述符存储区的写指针位置告知输出接口,并通知该输出接口有输出数据包。所述输出处理单元用来在该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置;将输出接口在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符;读取这些输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包;处理完成后,释放掉输出数据包资源。
本申请取得的技术效果是:一般情况下无需传输整个数据包给网络加速器,网络加速器仅需读取一个数据包的开头一段长度以判断是否符合加速处理的条件。当符合特定条件时网络加速器才读取整个数据包,从而加快了数据包的处理进程,减少了网络传输的数据量和数据包处理延时。
附图说明
图1是本申请所述的数据包的结构示意图。
图2是本申请提出的网络加速的实现方法的流程示意图。
图3是步骤S2中对数据包进行加速处理的流程示意图。
图4是本申请提出的网络加速的实现装置的结构示意图。
图中附图标记说明:输入准备单元1、输入处理单元2、输出准备单元3、输出处理单元4。
具体实施方式
本申请中,从某个接口进入网络加速器的数据包称为输入数据包,离开网络加速器到某个接口的数据包称为输出数据包。所述接口包括Modem(调制解调器)、USB、Wi-Fi、Ethernet(以太网)、AP(Application Processor,应用处理器)等。这些接口既可以是输入接口,也可以是输出接口。
请参阅图1,本申请所述的数据包是在IP数据包之前加上MAC头部,在MAC头部之前加上接口头部形成的。有些接口的数据包具有接口头部,例如USB接口、Modem接口、Wi-Fi接口的数据包。所述接口头部可能是标准的协议头部,如USB RNDIS(Remote Network DriverInterface Specification,远程网络驱动接口规范)头部;也可能是定制的头部,如Modem头部和Wi-Fi头部,各个厂商定义不一样。另一些接口的数据包没有接口头部,例如以太网接口。有些接口的数据包具有MAC头部,例如到USB接口、以太网接口、Wi-Fi接口的数据包。另一些接口的数据包没有MAC头部,例如Modem接口到其他接口的数据包。IP数据包中又包括IP头部、TCP/UDP头部、数据段。数据包的总长度=接口头部(如果有)的长度+MAC头部(如果有)的长度+IP数据包的长度。头部的位置偏移是指IP数据包的起始地址相对于数据包的起始地址的偏移。
请参阅图2,本申请提出的节省带宽的网络加速的实现方法包括如下步骤。
步骤S1:当某个输入接口有数据包准备发送给网络加速器时,该数据包称为输入数据包。该输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器(例如DDR SDRAM)中的起始物理地址和长度。该输入接口将输入数据包描述符存入该输入接口的输入数据包描述符存储区中。如果输入接口有多个输入数据包准备发送给网络加速器,则生成每个输入数据包对应的输入数据包描述符,将多个输入数据包描述符顺序地存入输入数据包描述符存储区中。随后该输入接口将自身在输入数据包描述符存储区中写入的输入数据包描述符的结束地址告知网络加速器,例如通过写寄存器的方式,或者是输入接口将输入数据包描述符结束地址写到外部存储器的固定地址后、网络加速器来该固定地址读取的方式。该输入接口还通知网络加速器有新的输入数据包,例如是中断、写寄存器或者其他方式。
步骤S2:网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址。网络加速器将自身对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符。网络加速器在该输入接口的输入数据包描述符存储区中读取这些输入数据包描述符,然后网络加速器仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至TCP/UDP头部结束,涵盖了每个数据包的接口头部(如果有)+MAC头部(如果有)+IP头部+TCP/UDP头部。这一步中,输入数据包没有离开外部存储器。在特殊情况下,网络加速器才会读入整个数据包。所述特殊情况例如包括:(1)需要计算整个IP数据包的检验和。(2)需要检验整个IP数据包的检验和。
步骤S3:当有数据包需要离开网络加速器时,该输出包称为输出数据包。网络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器(例如DDR SDRAM)中的起始物理地址和长度。网络加速器将这个输出数据包描述符写入输出接口的输出数据包描述符存储区。然后网络加速器将自身在该输出数据包描述符存储区的写指针位置告知该输出接口;并通知该输出接口有输出数据包,例如是中断或者其他方式。
步骤S4:该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置。输出接口将自身在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符。输出接口在自身的输出数据包描述符存储区中读取这些输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包,包括送往网络协议栈进一步处理、或者通过接口转发出去等。处理完成后,输出接口以合适方式释放掉输出数据包资源。
所述步骤S1中,每个输入接口在外部存储器(例如DDR SDRAM)中有一个单独的输入数据包描述符存储区。该输入数据包描述符存储区的起始地址和长度信息通过配置或者其他方式告知网络加速器,该输入数据包描述符存储区的起始地址作为网络加速器在该输入数据包描述符存储区中读取该输入接口的输入数据包描述符的初始化读指针地址。
由于各个接口的数据包的接口头部的长度不一致,为保证在移除旧的头部、添加新的头部时,不会越界访问到不应该访问的地址,优选地所述步骤S1中输入接口在将输入数据包存储在外部存储器时,预留足够长度的空间以容纳最长的接口头部以及可能存在的MAC头部。
由于各个接口的数据包的接口头部所包含的信息不一致,优选地,各个输入接口通过配置信息或者其他方式告诉网络加速器如何解析该输入接口的数据包的接口头部,从而使网络加速器能够获取该数据包的总长度、头部的位置偏移以及其他有用信息。
网络加速器是对符合特定条件的每条TCP和/或UDP链路进行加速。所述步骤S2中,网络加速器处理输入数据包是指:判断每个输入数据包是否匹配进行加速的TCP和/或UDP链路。如果匹配则对数据包进行相应的加速处理;否则将该数据包输出。
所述步骤S2中,网络加速器读取输入数据包描述符后,获取输入数据包在外部存储器中的起始物理地址和长度。随后网络加速器从这些输入数据包在外部存储器中的起始物理地址仅读取开头一段长度的内容。读取的长度大于或等于所有输入数据包的接口头部中最长的的长度+MAC头部的固定长度+IP头部的长度+TCP/UDP头部的长度。只有这样才能确保读取的内容始终涵盖每个输入数据包的接口头部(如果有)+MAC头部(如果有)+IP头部+TCP/UDP头部。根据每个输入接口向网络加速器传递的配置信息,网络加速器从读取的内容中获取IP数据包的五元组信息——网络连接的源IP地址、目的IP地址、源端口、目的端口、协议。网络加速器根据IP数据包的五元组信息判定其是否与进行加速的TCP和/或UDP链路相匹配。如果匹配,则进行相应的加速处理。如果不是TCP或UDP数据包,或者没有匹配,则网络加速器输出该数据包,后续对该数据包进行常规处理。
请参阅图3,所述步骤S2中,对数据包进行加速处理,具体包括如下步骤。
步骤S21:获取输出接口信息。输出接口信息用来指示从某一输入接口进入的数据包将会被送往哪一个输出接口,从而使网络加速器正确地完成路由功能。另外,如果要添加新的接口头部,也是添加输出接口的头部。
步骤S22:决定是否需要计算或检验整个IP数据包的校验和(checksum)。当数据包属于转发数据流时,不需要计算整个IP数据包的校验和,也不需要检验整个IP数据包的校验和。当数据包属于为非转发数据流时,由AP接口发送给其他接口的数据包需要计算整个IP数据包的校验和;AP接口收到其他接口的数据包需要检验整个IP数据包的校验和;其余情况不需要计算整个IP数据包的校验和,也不需要检验整个IP数据包的校验和。如不需要计算或检验整个IP数据包的校验和,跳过这一步。
步骤S23:决定是否需要做网络地址转换。网络地址转换是指:当IP数据包需要转发时,如从某个输入接口A输入,从某个输出接口B输出时,需要将IP数据包中的目的IP地址和目的端口号,换成输出接口B对端的IP地址和目的端口号。转换后网络加速器更新IP数据包的头部、以及TCP/UDP头部中的校验和字段。如果IP数据包不需要转发,则不需要做网络地址转换。如不需要做网络地址转换,跳过这一步。
步骤S24:网络加速器读取配置好的加速规则,根据加速规则决定是否需要更新数据包的接口头部和MAC头部。更新接口头部和MAC头部是指:将数据包的旧的接口头部和MAC头部移除,再添加新的接口头部和MAC头部,完成接口头部和MAC头部的更新。这个过程不移动IP数据包。更新完成后,将更新后的接口头部、MAC头部(如果有)、以及IP数据包的头部、TCP/UDP头部,写入到外部存储器中原有的位置。如果在外部存储器中预留了足够的空间,就不会超出原有存储地址。然后将新的数据包起始地址和新的数据包长度称为输出数据包描述符,将其顺序写入输出数据包描述符存储区中。网络加速器记录在输出数据包描述符存储区的写指针位置,写完以后,根据所写的输出数据包描述符占用的字节数更新写指针位置。当写到该输出数据包描述符存储区结束地址时,写指针自动移动到该输出数据包描述符存储区起始地址。网络加速器通过寄存器或者其他方式,让软件能知道该写指针的位置。如不需要更新接口的头部,跳过这一步。
所述步骤S3中,每个输出接口在外部存储器(例如DDR SDRAM)中有一个单独的输出数据包描述符存储区。该输出数据包描述符存储区的起始地址和长度信息通过配置或者其他方式告知网络加速器,该输出数据包描述符存储区的起始地址作为网络加速器写该输出接口的输出数据包描述符的初始化写指针地址。
请参阅图4,本申请提出的节省带宽的网络加速的实现装置包括输入准备单元1、输入处理单元2、输出准备单元3、输出处理单元4。图4所示装置与图2所示方法相对应。
所述输入准备单元1用来在某个输入接口有输入数据包时,令输入接口生成输入数据包描述符,将输入数据包描述符存入该输入接口的输入数据包描述符存储区中,将自身在输入数据包描述符存储区中写入的输入数据包描述符的结束地址告知网络加速器,还通知网络加速器有新的输入数据包。
所述输入处理单元2用来在网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址,读取输入数据包描述符,然后网络加速器仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至TCP/UDP头部结束,涵盖了每个数据包的接口头部(如果有)+MAC头部(如果有)+IP头部+TCP/UDP头部。此时,数据包没有离开外部存储器。
所述输出准备单元3用来在网络加速器有输出数据包时,令络加速器生成输出数据包描述符,将自身在该输出数据包描述符存储区的写指针位置告知输出接口,并通知该输出接口有输出数据包。
所述输出处理单元4用来在该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置,读取这些输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包。处理完成后,输出接口以合适方式释放掉输出数据包资源。
本申请支持在多个端口之间加速数据包的传输,降低系统存储带宽,同时将CPU需要完成的数据包校验、NAT(网络地址转换)、添加和删除接口头部和MAC头部等工作交给网络加速器完成,降低CPU的工作负荷和系统功耗。
本申请具有如下有益效果。
第一,本申请实现的数据包收发或者转发中,并不拷贝输入数据包到新的外部存储器的地址,所以节省了读写外部存储器的带宽,降低系统了功耗。
第二,由网络加速器以硬件形式确定输出接口、计算和验证校验和、进行网络地址转换、添加移除数据包头部等,降低了CPU的处理负荷。并且硬件处理任务加快了数据包的处理速度,降低了网络延时。
第三,本申请的接口设计灵活,根据需要可灵活的增加、减少输入、输出接口。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种网络加速的实现方法,其特征是,包括如下步骤;
步骤S1:当某个输入接口有数据包准备发送给网络加速器时,该数据包称为输入数据包;该输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器中的起始物理地址和长度;该输入接口将输入数据包描述符存入该输入接口的输入数据包描述符存储区中;随后该输入接口将输入数据包描述符的结束地址告知网络加速器,并通知网络加速器有新的输入数据包;
步骤S2:网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址;网络加速器将自身对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符;网络加速器读取输入数据包描述符,然后仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至TCP/UDP头部结束;
步骤S3:当有数据包需要离开网络加速器时,该输出包称为输出数据包;网络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器中的起始物理地址和长度;网络加速器将输出数据包描述符写入输出接口的输出数据包描述符存储区;然后网络加速器将自身在该输出数据包描述符存储区的写指针位置告知该输出接口;并通知该输出接口有输出数据包;
步骤S4:该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置;输出接口将自身在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符;输出接口读取输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包;处理完成后,输出接口释放掉输出数据包资源。
2.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S1中,如果输入接口有多个输入数据包准备发送给网络加速器,则生成每个输入数据包对应的输入数据包描述符,将多个输入数据包描述符顺序地存入输入数据包描述符存储区中。
3.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S1中,输入接口将输入数据包描述符的结束地址告知网络加速器,是通过写寄存器的方式,或者是输入接口将输入数据包描述符结束地址写到外部存储器的固定地址后、网络加速器来该固定地址读取的方式。
4.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S1中,每个输入接口在外部存储器中有一个单独的输入数据包描述符存储区;该输入数据包描述符存储区的起始地址和长度告知网络加速器,该输入数据包描述符存储区的起始地址作为网络加速器在该输入数据包描述符存储区中的初始化读指针地址。
5.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S1中,输入接口将输入数据包存储在外部存储器时,预留足够长度的空间以容纳最长的接口头部以及MAC头部。
6.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S1中,各个输入接口告诉网络加速器如何解析该输入接口的数据包的接口头部,从而使网络加速器能够获取该数据包的总长度、头部的位置偏移。
7.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S2中,网络加速器处理输入数据包是指判断每个输入数据包是否匹配进行加速的TCP和/或UDP链路;如果匹配则对数据包进行相应的加速处理;否则将该数据包输出。
8.根据权利要求7所述的网络加速的实现方法,其特征是,所述步骤S2中,网络加速器读取输入数据包描述符后,获取输入数据包在外部存储器中的起始物理地址和长度;随后网络加速器从这些输入数据包在外部存储器中的起始物理地址仅读取开头一段长度的内容;读取的长度大于或等于所有输入数据包的接口头部中最长的的长度+MAC头部的固定长度+IP头部的长度+TCP/UDP头部的长度;网络加速器从读取的内容中获取IP数据包的五元组信息,并根据IP数据包的五元组信息判定其是否与进行加速的TCP和/或UDP链路相匹配;如果匹配,则进行相应的加速处理;如果不是TCP或UDP数据包,或者没有匹配,则网络加速器输出该数据包。
9.根据权利要求8所述的网络加速的实现方法,其特征是,所述步骤S2中,对数据包进行加速处理具体包括如下步骤;
步骤S21:获取输出接口信息;
步骤S22:决定是否需要计算或检验整个IP数据包的校验和;如不需要计算或检验整个IP数据包的校验和,跳过这一步;
当数据包属于转发数据流时,不需要计算整个IP数据包的校验和,也不需要检验整个IP数据包的校验和;当数据包属于为非转发数据流时,由AP接口发送给其他接口的数据包需要计算整个IP数据包的校验和;AP接口收到其他接口的数据包需要检验整个IP数据包的校验和;其余情况不需要计算整个IP数据包的校验和,也不需要检验整个IP数据包的校验和;
步骤S23:决定是否需要做网络地址转换;如不需要做网络地址转换,跳过这一步;
如果IP数据包需要转发,则做网络地址转换;如果IP数据包不需要转发,则不做网络地址转换;
步骤S24:网络加速器根据加速规则决定是否需要更新接口头部和MAC头部;如不需要更新接口头部和MAC头部,跳过这一步;
更新接口头部是指将数据包的旧的接口头部和MAC头部移除,再添加新的接口头部和MAC头部;更新完成后,将更新后的接口头部和MAC头部直至TCP或UDP头部,写入到外部存储器中原有的位置;然后将新的数据包在外部存储器中的起始物理地址和新的数据包长度生成为输出数据包描述符,将其写入输出接口的输出数据包描述符存储区中。
10.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S3中,每个输出接口在外部存储器中有一个单独的输出数据包描述符存储区;该输出数据包描述符存储区的起始地址和长度信息告知网络加速器,该输出数据包描述符存储区的起始地址作为网络加速器在该输出数据包描述符存储区的初始化写指针地址。
11.根据权利要求1所述的网络加速的实现方法,其特征是,所述步骤S4中,处理输出数据包包括送往网络协议栈处理、或者通过接口转发出去。
12.一种网络加速的实现装置,其特征是,包括输入准备单元、输入处理单元、输出准备单元、输出处理单元;
所述输入准备单元用来在某个输入接口有输入数据包时,令输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器中的起始物理地址和长度;将输入数据包描述符存入该输入接口的输入数据包描述符存储区中,将自身在输入数据包描述符存储区中写入的输入数据包描述符的结束地址告知网络加速器,还通知网络加速器有新的输入数据包;
所述输入处理单元用来在网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址;将网络加速器对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符;读取输入数据包描述符,然后仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至TCP/UDP头部结束;
所述输出准备单元用来在网络加速器有输出数据包时,令络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器中的起始物理地址和长度;将自身在该输出数据包描述符存储区的写指针位置告知输出接口,并通知该输出接口有输出数据包;
所述输出处理单元用来在该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置;将输出接口在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符;读取这些输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包;处理完成后,释放掉输出数据包资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110558315.8A CN113438097B (zh) | 2021-05-21 | 2021-05-21 | 一种网络加速的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110558315.8A CN113438097B (zh) | 2021-05-21 | 2021-05-21 | 一种网络加速的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113438097A true CN113438097A (zh) | 2021-09-24 |
CN113438097B CN113438097B (zh) | 2022-08-23 |
Family
ID=77802660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110558315.8A Active CN113438097B (zh) | 2021-05-21 | 2021-05-21 | 一种网络加速的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113438097B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116846517A (zh) * | 2023-08-31 | 2023-10-03 | 之江实验室 | 一种网络数据的传输方法、装置、存储介质及电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1473300A (zh) * | 2000-09-29 | 2004-02-04 | 智能网络存储接口系统和装置 | |
US20090307363A1 (en) * | 2008-06-09 | 2009-12-10 | Fortinet, Inc. A Delaware Corporation | Network protocol reassembly accelaration |
US20100058155A1 (en) * | 2008-08-29 | 2010-03-04 | Nec Electronics Corporation | Communication apparatus and method therefor |
CN103188042A (zh) * | 2011-12-31 | 2013-07-03 | 重庆重邮信科通信技术有限公司 | 一种ip数据包的匹配方法和匹配加速器 |
EP3273347A1 (en) * | 2016-07-22 | 2018-01-24 | 6Wind | System and method for storage access input/output operations in a virtualized environment |
CN108366111A (zh) * | 2018-02-06 | 2018-08-03 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
CN109951425A (zh) * | 2017-12-21 | 2019-06-28 | 张家界航空工业职业技术学院 | 基于fpga的tcp流状态完整性检测方法 |
CN110505244A (zh) * | 2019-09-19 | 2019-11-26 | 南方电网数字电网研究院有限公司 | 远程隧道访问技术网关以及服务器 |
CN110995507A (zh) * | 2019-12-19 | 2020-04-10 | 山东方寸微电子科技有限公司 | 一种网络加速控制器及方法 |
CN111031055A (zh) * | 2019-12-19 | 2020-04-17 | 山东方寸微电子科技有限公司 | 一种IPsec加速装置及实现方法 |
CN111404817A (zh) * | 2020-03-24 | 2020-07-10 | 深圳市吉祥腾达科技有限公司 | 一种提升网络通信设备分片数据包转发性能的方法及系统 |
CN111506541A (zh) * | 2020-06-30 | 2020-08-07 | 翱捷科技(上海)有限公司 | 一种嵌入式网络设备中加速网络数据包处理的方法及系统 |
-
2021
- 2021-05-21 CN CN202110558315.8A patent/CN113438097B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1473300A (zh) * | 2000-09-29 | 2004-02-04 | 智能网络存储接口系统和装置 | |
US20090307363A1 (en) * | 2008-06-09 | 2009-12-10 | Fortinet, Inc. A Delaware Corporation | Network protocol reassembly accelaration |
US20100058155A1 (en) * | 2008-08-29 | 2010-03-04 | Nec Electronics Corporation | Communication apparatus and method therefor |
CN103188042A (zh) * | 2011-12-31 | 2013-07-03 | 重庆重邮信科通信技术有限公司 | 一种ip数据包的匹配方法和匹配加速器 |
EP3273347A1 (en) * | 2016-07-22 | 2018-01-24 | 6Wind | System and method for storage access input/output operations in a virtualized environment |
CN109951425A (zh) * | 2017-12-21 | 2019-06-28 | 张家界航空工业职业技术学院 | 基于fpga的tcp流状态完整性检测方法 |
CN108366111A (zh) * | 2018-02-06 | 2018-08-03 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
CN110505244A (zh) * | 2019-09-19 | 2019-11-26 | 南方电网数字电网研究院有限公司 | 远程隧道访问技术网关以及服务器 |
CN110995507A (zh) * | 2019-12-19 | 2020-04-10 | 山东方寸微电子科技有限公司 | 一种网络加速控制器及方法 |
CN111031055A (zh) * | 2019-12-19 | 2020-04-17 | 山东方寸微电子科技有限公司 | 一种IPsec加速装置及实现方法 |
CN111404817A (zh) * | 2020-03-24 | 2020-07-10 | 深圳市吉祥腾达科技有限公司 | 一种提升网络通信设备分片数据包转发性能的方法及系统 |
CN111506541A (zh) * | 2020-06-30 | 2020-08-07 | 翱捷科技(上海)有限公司 | 一种嵌入式网络设备中加速网络数据包处理的方法及系统 |
Non-Patent Citations (2)
Title |
---|
曹绍华等: "基于32位处理器的网络驱动及协议栈研究", 《现代电子技术》 * |
谭敏生等: "基于Linux的IP网络数据包发生器的设计与应用", 《计算机工程与应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116846517A (zh) * | 2023-08-31 | 2023-10-03 | 之江实验室 | 一种网络数据的传输方法、装置、存储介质及电子设备 |
CN116846517B (zh) * | 2023-08-31 | 2024-01-02 | 之江实验室 | 一种网络数据的传输方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113438097B (zh) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7561573B2 (en) | Network adaptor, communication system and communication method | |
US7447230B2 (en) | System for protocol processing engine | |
KR100798926B1 (ko) | 패킷 스위치 시스템에서의 패킷 포워딩 장치 및 방법 | |
CN107302499B (zh) | 无需拷贝报文缓存的nfv协议报文收发方法 | |
US20060174058A1 (en) | Recirculation buffer for semantic processor | |
US20140047188A1 (en) | Method and Multi-Core Communication Processor for Replacing Data in System Cache | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
US7606967B2 (en) | Frame transfer method and apparatus | |
EP2919433A1 (en) | Method and device for communication protocol processing | |
CN112559436B (zh) | 一种rdma通信设备的上下文访问方法及系统 | |
US8990422B1 (en) | TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data | |
CN113438097B (zh) | 一种网络加速的实现方法及装置 | |
US10489322B2 (en) | Apparatus and method to improve performance in DMA transfer of data | |
US7720979B2 (en) | Communication apparatus | |
CN111698274B (zh) | 数据处理方法及装置 | |
US6976149B1 (en) | Mapping technique for computing addresses in a memory of an intermediate network node | |
CN113422793A (zh) | 数据传输方法、装置、电子设备及计算机存储介质 | |
US10255213B1 (en) | Adapter device for large address spaces | |
US8327252B2 (en) | Data receiving apparatus, data receiving method, and computer-readable recording medium | |
CN113438162B (zh) | 一种二层转发的实现方法及装置 | |
US8091136B2 (en) | Packet transfer device, packet transfer method, and program | |
JP2019159858A (ja) | ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法 | |
JP2546743B2 (ja) | 音声およびデータのためのパケット/高速パケット交換機 | |
JP6938399B2 (ja) | 通信装置、通信方法およびプログラム | |
JP2011239299A (ja) | パケット転送装置、パケット転送方法 |
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 |