一种网络加速的实现方法及装置与流程

文档序号:26751231发布日期:2021-09-25 02:33阅读:85来源:国知局
一种网络加速的实现方法及装置与流程

1.本技术涉及一种数据包进行网络加速的实现方法。


背景技术:

2.网络加速器广泛应用于手机等智能设备、以及路由器、交换机等无线终端接入设备。这些设备对网络数据包做转发、或者其他加速操作时,通常先将接收的数据包从外部存储器(如ddr sdram)读入到内部缓存,处理完成以后,再将数据包内容写入到外部存储器的新的存储空间。实际上,并不是所有处理都需要读入或写出完整的数据包。当数据包较大时,不用读入或写入整个数据包将节省很多访问外部存储器的带宽,缩短数据包的传输时延,降低系统的功耗。


技术实现要素:

3.本技术所要解决的技术问题是提供一种数据包实现网络加速的方法为解决上述技术问题,本技术提出了一种网络加速的实现方法,包括如下步骤。步骤s1:当某个输入接口有数据包准备发送给网络加速器时,该数据包称为输入数据包;该输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器中的起始物理地址和长度;该输入接口将输入数据包描述符存入该输入接口的输入数据包描述符存储区中;随后该输入接口将输入数据包描述符的结束地址告知网络加速器,并通知网络加速器有新的输入数据包。步骤s2:网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址;网络加速器将自身对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符;网络加速器读取输入数据包描述符,然后仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至tcp/udp头部结束。步骤s3:当有数据包需要离开网络加速器时,该输出包称为输出数据包;网络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器中的起始物理地址和长度;网络加速器将输出数据包描述符写入输出接口的输出数据包描述符存储区;然后网络加速器将自身在该输出数据包描述符存储区的写指针位置告知该输出接口;并通知该输出接口有输出数据包。步骤s4:该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置;输出接口将自身在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符;输出接口读取输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包;处理完成后,输出接口释放掉输出数据包资源。
4.进一步地,所述步骤s1中,如果输入接口有多个输入数据包准备发送给网络加速器,则生成每个输入数据包对应的输入数据包描述符,将多个输入数据包描述符顺序地存入输入数据包描述符存储区中。
5.进一步地,所述步骤s1中,输入接口将输入数据包描述符的结束地址告知网络加
速器,是通过写寄存器的方式,或者是输入接口将输入数据包描述符结束地址写到外部存储器的固定地址后、网络加速器来该固定地址读取的方式。
6.进一步地,所述步骤s1中,每个输入接口在外部存储器中有一个单独的输入数据包描述符存储区;该输入数据包描述符存储区的起始地址和长度告知网络加速器,该输入数据包描述符存储区的起始地址作为网络加速器在该输入数据包描述符存储区中的初始化读指针地址。
7.进一步地,所述步骤s1中,输入接口将输入数据包存储在外部存储器时,预留足够长度的空间以容纳最长的接口头部以及mac头部。
8.进一步地,所述步骤s1中,各个输入接口告诉网络加速器如何解析该输入接口的数据包的接口头部,从而使网络加速器能够获取该数据包的总长度、头部的位置偏移。
9.进一步地,所述步骤s2中,网络加速器处理输入数据包是指判断每个输入数据包是否匹配进行加速的tcp和/或udp链路;如果匹配则对数据包进行相应的加速处理;否则将该数据包输出。
10.进一步地,所述步骤s2中,网络加速器读取输入数据包描述符后,获取输入数据包在外部存储器中的起始物理地址和长度;随后网络加速器从这些输入数据包在外部存储器中的起始物理地址仅读取开头一段长度的内容;读取的长度大于或等于所有输入数据包的接口头部中最长的的长度+mac头部的固定长度+ip头部的长度+tcp/udp头部的长度;网络加速器从读取的内容中获取ip数据包的五元组信息,并根据ip数据包的五元组信息判定其是否与进行加速的tcp和/或udp链路相匹配;如果匹配,则进行相应的加速处理;如果不是tcp或udp数据包,或者没有匹配,则网络加速器输出该数据包。
11.进一步地,所述步骤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头部,写入到外部存储器中原有的位置;然后将新的数据包在外部存储器中的起始物理地址和新的数据包长度生成为输出数据包描述符,将其写入输出接口的输出数据包描述符存储区中。
12.进一步地,所述步骤s3中,每个输出接口在外部存储器中有一个单独的输出数据包描述符存储区;该输出数据包描述符存储区的起始地址和长度信息告知网络加速器,该输出数据包描述符存储区的起始地址作为网络加速器在该输出数据包描述符存储区的初始化写指针地址。
13.进一步地,所述步骤s4中,处理输出数据包包括送往网络协议栈处理、或者通过接
口转发出去。
14.本技术还提出了一种网络加速的实现装置,包括输入准备单元、输入处理单元、输出准备单元、输出处理单元。所述输入准备单元用来在某个输入接口有输入数据包时,令输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器中的起始物理地址和长度;将输入数据包描述符存入该输入接口的输入数据包描述符存储区中,将自身在输入数据包描述符存储区中写入的输入数据包描述符的结束地址告知网络加速器,还通知网络加速器有新的输入数据包。所述输入处理单元用来在网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址;将网络加速器对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符;读取输入数据包描述符,然后仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至tcp/udp头部结束。所述输出准备单元用来在网络加速器有输出数据包时,令网络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器中的起始物理地址和长度;将自身在该输出数据包描述符存储区的写指针位置告知输出接口,并通知该输出接口有输出数据包。所述输出处理单元用来在该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置;将输出接口在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符;读取这些输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包;处理完成后,释放掉输出数据包资源。
15.本技术取得的技术效果是:一般情况下无需传输整个数据包给网络加速器,网络加速器仅需读取一个数据包的开头一段长度以判断是否符合加速处理的条件。当符合特定条件时网络加速器才读取整个数据包,从而加快了数据包的处理进程,减少了网络传输的数据量和数据包处理延时。
附图说明
16.图1是本技术所述的数据包的结构示意图。
17.图2是本技术提出的网络加速的实现方法的流程示意图。
18.图3是步骤s2中对数据包进行加速处理的流程示意图。
19.图4是本技术提出的网络加速的实现装置的结构示意图。
20.图中附图标记说明:输入准备单元1、输入处理单元2、输出准备单元3、输出处理单元4。
具体实施方式
21.本技术中,从某个接口进入网络加速器的数据包称为输入数据包,离开网络加速器到某个接口的数据包称为输出数据包。所述接口包括modem(调制解调器)、usb、wi

fi、ethernet(以太网)、ap(application processor,应用处理器)等。这些接口既可以是输入接口,也可以是输出接口。
22.请参阅图1,本技术所述的数据包是在ip数据包之前加上mac头部,在mac头部之前加上接口头部形成的。有些接口的数据包具有接口头部,例如usb接口、modem接口、wi

fi接
口的数据包。所述接口头部可能是标准的协议头部,如usb rndis(remote network driver interface specification,远程网络驱动接口规范)头部;也可能是定制的头部,如modem头部和wi

fi头部,各个厂商定义不一样。另一些接口的数据包没有接口头部,例如以太网接口。有些接口的数据包具有mac头部,例如到usb接口、以太网接口、wi

fi接口的数据包。另一些接口的数据包没有mac头部,例如modem接口到其他接口的数据包。ip数据包中又包括ip头部、tcp/udp头部、数据段。数据包的总长度=接口头部(如果有)的长度+mac头部(如果有)的长度+ip数据包的长度。头部的位置偏移是指ip数据包的起始地址相对于数据包的起始地址的偏移。
23.请参阅图2,本技术提出的节省带宽的网络加速的实现方法包括如下步骤。
24.步骤s1:当某个输入接口有数据包准备发送给网络加速器时,该数据包称为输入数据包。该输入接口生成输入数据包描述符,内容是该输入数据包存储在外部存储器(例如ddr sdram)中的起始物理地址和长度。该输入接口将输入数据包描述符存入该输入接口的输入数据包描述符存储区中。如果输入接口有多个输入数据包准备发送给网络加速器,则生成每个输入数据包对应的输入数据包描述符,将多个输入数据包描述符顺序地存入输入数据包描述符存储区中。随后该输入接口将自身在输入数据包描述符存储区中写入的输入数据包描述符的结束地址告知网络加速器,例如通过写寄存器的方式,或者是输入接口将输入数据包描述符结束地址写到外部存储器的固定地址后、网络加速器来该固定地址读取的方式。该输入接口还通知网络加速器有新的输入数据包,例如是中断、写寄存器或者其他方式。
25.步骤s2:网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址。网络加速器将自身对该输入接口的输入数据包描述符存储区的读指针位置与获取的输入数据包描述符结束地址之间的部分判定为输入数据包描述符。网络加速器在该输入接口的输入数据包描述符存储区中读取这些输入数据包描述符,然后网络加速器仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至tcp/udp头部结束,涵盖了每个数据包的接口头部(如果有)+mac头部(如果有)+ip头部+tcp/udp头部。这一步中,输入数据包没有离开外部存储器。在特殊情况下,网络加速器才会读入整个数据包。所述特殊情况例如包括:(1)需要计算整个ip数据包的检验和。(2)需要检验整个ip数据包的检验和。
26.步骤s3:当有数据包需要离开网络加速器时,该输出包称为输出数据包。网络加速器生成输出数据包描述符,内容是该输出数据包存储在外部存储器(例如ddr sdram)中的起始物理地址和长度。网络加速器将这个输出数据包描述符写入输出接口的输出数据包描述符存储区。然后网络加速器将自身在该输出数据包描述符存储区的写指针位置告知该输出接口;并通知该输出接口有输出数据包,例如是中断或者其他方式。
27.步骤s4:该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置。输出接口将自身在该输出接口的输出数据包描述符存储区的读指针位置与获取的网络加速器在该输出接口的输出数据包描述符存储区的写指针位置之间的部分判定为输出数据包描述符。输出接口在自身的输出数据包描述符存储区中读取这些输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包,包括送往网络协议栈进一步处理、或者通过接口转发出去等。处理完成后,输出
接口以合适方式释放掉输出数据包资源。
28.所述步骤s1中,每个输入接口在外部存储器(例如ddr sdram)中有一个单独的输入数据包描述符存储区。该输入数据包描述符存储区的起始地址和长度信息通过配置或者其他方式告知网络加速器,该输入数据包描述符存储区的起始地址作为网络加速器在该输入数据包描述符存储区中读取该输入接口的输入数据包描述符的初始化读指针地址。
29.由于各个接口的数据包的接口头部的长度不一致,为保证在移除旧的头部、添加新的头部时,不会越界访问到不应该访问的地址,优选地所述步骤s1中输入接口在将输入数据包存储在外部存储器时,预留足够长度的空间以容纳最长的接口头部以及可能存在的mac头部。
30.由于各个接口的数据包的接口头部所包含的信息不一致,优选地,各个输入接口通过配置信息或者其他方式告诉网络加速器如何解析该输入接口的数据包的接口头部,从而使网络加速器能够获取该数据包的总长度、头部的位置偏移以及其他有用信息。
31.网络加速器是对符合特定条件的每条tcp和/或udp链路进行加速。所述步骤s2中,网络加速器处理输入数据包是指:判断每个输入数据包是否匹配进行加速的tcp和/或udp链路。如果匹配则对数据包进行相应的加速处理;否则将该数据包输出。
32.所述步骤s2中,网络加速器读取输入数据包描述符后,获取输入数据包在外部存储器中的起始物理地址和长度。随后网络加速器从这些输入数据包在外部存储器中的起始物理地址仅读取开头一段长度的内容。读取的长度大于或等于所有输入数据包的接口头部中最长的的长度+mac头部的固定长度+ip头部的长度+tcp/udp头部的长度。只有这样才能确保读取的内容始终涵盖每个输入数据包的接口头部(如果有)+mac头部(如果有)+ip头部+tcp/udp头部。根据每个输入接口向网络加速器传递的配置信息,网络加速器从读取的内容中获取ip数据包的五元组信息——网络连接的源ip地址、目的ip地址、源端口、目的端口、协议。网络加速器根据ip数据包的五元组信息判定其是否与进行加速的tcp和/或udp链路相匹配。如果匹配,则进行相应的加速处理。如果不是tcp或udp数据包,或者没有匹配,则网络加速器输出该数据包,后续对该数据包进行常规处理。
33.请参阅图3,所述步骤s2中,对数据包进行加速处理,具体包括如下步骤。
34.步骤s21:获取输出接口信息。输出接口信息用来指示从某一输入接口进入的数据包将会被送往哪一个输出接口,从而使网络加速器正确地完成路由功能。另外,如果要添加新的接口头部,也是添加输出接口的头部。
35.步骤s22:决定是否需要计算或检验整个ip数据包的校验和(checksum)。当数据包属于转发数据流时,不需要计算整个ip数据包的校验和,也不需要检验整个ip数据包的校验和。当数据包属于为非转发数据流时,由ap接口发送给其他接口的数据包需要计算整个ip数据包的校验和;ap接口收到其他接口的数据包需要检验整个ip数据包的校验和;其余情况不需要计算整个ip数据包的校验和,也不需要检验整个ip数据包的校验和。如不需要计算或检验整个ip数据包的校验和,跳过这一步。
36.步骤s23:决定是否需要做网络地址转换。网络地址转换是指:当ip数据包需要转发时,如从某个输入接口a输入,从某个输出接口b输出时,需要将ip数据包中的目的ip地址和目的端口号,换成输出接口b对端的ip地址和目的端口号。转换后网络加速器更新ip数据包的头部、以及tcp/udp头部中的校验和字段。如果ip数据包不需要转发,则不需要做网络
地址转换。如不需要做网络地址转换,跳过这一步。
37.步骤s24:网络加速器读取配置好的加速规则,根据加速规则决定是否需要更新数据包的接口头部和mac头部。更新接口头部和mac头部是指:将数据包的旧的接口头部和mac头部移除,再添加新的接口头部和mac头部,完成接口头部和mac头部的更新。这个过程不移动ip数据包。更新完成后,将更新后的接口头部、mac头部(如果有)、以及ip数据包的头部、tcp/udp头部,写入到外部存储器中原有的位置。如果在外部存储器中预留了足够的空间,就不会超出原有存储地址。然后将新的数据包起始地址和新的数据包长度称为输出数据包描述符,将其顺序写入输出数据包描述符存储区中。网络加速器记录在输出数据包描述符存储区的写指针位置,写完以后,根据所写的输出数据包描述符占用的字节数更新写指针位置。当写到该输出数据包描述符存储区结束地址时,写指针自动移动到该输出数据包描述符存储区起始地址。网络加速器通过寄存器或者其他方式,让软件能知道该写指针的位置。如不需要更新接口的头部,跳过这一步。
38.所述步骤s3中,每个输出接口在外部存储器(例如ddr sdram)中有一个单独的输出数据包描述符存储区。该输出数据包描述符存储区的起始地址和长度信息通过配置或者其他方式告知网络加速器,该输出数据包描述符存储区的起始地址作为网络加速器写该输出接口的输出数据包描述符的初始化写指针地址。
39.请参阅图4,本技术提出的节省带宽的网络加速的实现装置包括输入准备单元1、输入处理单元2、输出准备单元3、输出处理单元4。图4所示装置与图2所示方法相对应。
40.所述输入准备单元1用来在某个输入接口有输入数据包时,令输入接口生成输入数据包描述符,将输入数据包描述符存入该输入接口的输入数据包描述符存储区中,将自身在输入数据包描述符存储区中写入的输入数据包描述符的结束地址告知网络加速器,还通知网络加速器有新的输入数据包。
41.所述输入处理单元2用来在网络加速器收到有新的输入数据包的通知后,获取输入数据包描述符结束地址,读取输入数据包描述符,然后网络加速器仅读入每个输入数据包的开头一段长度的内容到内部缓存中进行处理,读取的长度从每个输入数据包的开头直至tcp/udp头部结束,涵盖了每个数据包的接口头部(如果有)+mac头部(如果有)+ip头部+tcp/udp头部。此时,数据包没有离开外部存储器。
42.所述输出准备单元3用来在网络加速器有输出数据包时,令络加速器生成输出数据包描述符,将自身在该输出数据包描述符存储区的写指针位置告知输出接口,并通知该输出接口有输出数据包。
43.所述输出处理单元4用来在该输出接口收到有新的输出数据包的通知后,获取网络加速器在该输出接口的输出数据包描述符存储区的写指针位置,读取这些输出数据包描述符,然后逐一处理每个输出数据包描述符对应的输出数据包。处理完成后,输出接口以合适方式释放掉输出数据包资源。
44.本技术支持在多个端口之间加速数据包的传输,降低系统存储带宽,同时将cpu需要完成的数据包校验、nat(网络地址转换)、添加和删除接口头部和mac头部等工作交给网络加速器完成,降低cpu的工作负荷和系统功耗。
45.本技术具有如下有益效果。
46.第一,本技术实现的数据包收发或者转发中,并不拷贝输入数据包到新的外部存
储器的地址,所以节省了读写外部存储器的带宽,降低系统了功耗。
47.第二,由网络加速器以硬件形式确定输出接口、计算和验证校验和、进行网络地址转换、添加移除数据包头部等,降低了cpu的处理负荷。并且硬件处理任务加快了数据包的处理速度,降低了网络延时。
48.第三,本技术的接口设计灵活,根据需要可灵活的增加、减少输入、输出接口。
49.以上仅为本技术的优选实施例,并不用于限定本技术。对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1