本发明涉及通信,具体涉及一种基于pmtu提升udp分片包转发性能的方法及系统。
背景技术:
1、在转发udp报文时,由于报文是客户端按照自身mtu(默认1500)进行分片,而网络通信设备根据出口(wan)接入方式(pppoe,vpn等)的不同,在转发报文时报文需要在原有报文基础上再封装一个头部才能进行转发。封装头部后的报文长度会出现超出协议规定的最大报文长度的情况,如果不对原有报文重新分片处理,该报文会被上级认为非法而直接丢弃。
2、现有的处理方式为:使用linux协议栈转发udp分片包的网络通信设备在接收到udp分片包时,会先将其缓存到内核协议栈中,待接收到所有udp分片包后,再将已缓存的udp报文组合,然后根据目的接口的mtu将其重新分片发出。该种处理方式极大的浪费了内存及cpu的处理能力,对于cpu性能较弱的网络通信设备,其udp分片的转发性能有限无法达到标准水平。
3、而使用软件/硬件加速模块转发udp分片包的网络通信设备,由于模块没有缓存报文并重新分片的功能,模块仅支持转发udp不分片报文。由于网络通信设备出口接入方式的不同需要先缓存接收到的报文后再进行重新分片发送,而软件/硬件加速模块没有缓存报文并重新分片的功能,使得软件/硬件加速模块仅支持转发udp不分片报文,导致无法充分利用已有的资源快速转发udp分片报文。
技术实现思路
1、为解决现有技术中的问题,本发明提供一种基于pmtu提升udp分片包转发性能的方法及系统,用于降低cpu、内存损耗。
2、本发明基于pmtu提升udp分片包转发性能的方法,包括如下步骤:
3、在udp连接数据包进入linux协议栈用于转发处理的forwaed链后,判断是否为udp连接的第一个数据包,如果是,执行linux协议栈分片判断步骤,然后进行转发处理;如果否,执行pmtu加快处理,
4、所述pmtu加快处理模块的处理过程为:
5、s1:根据目的ip地址获取出口路由信息;
6、s2:基于所述出口路由信息获取出口mtu值;
7、s3:判断udp连接数据包的长度是否超过所述出口mtu值,如果否,返回linux协议栈执行分片判断步骤,再进行转发处理,如果是,执行步骤s4;
8、s4:根据udp连接数据包的长度设置新的出口mtu值,构造icmp差错报文,所述icmp差错报文包括下一跳采用的新的出口mtu值,然后同时执行步骤s5和s6;
9、s5:将icmp差错报文发送给源终端,用于将出口mtu值修改为新的出口mtu值;
10、s6:丢弃要转发的udp连接数据包,等待源终端发送按照新的出口mtu值发送的udp链接数据包报文。
11、本发明作进一步改进,新构造的udp连接数据包报文进入linux协议栈的pmtu加快处理模块后,步骤s3还包括判断步骤:判断源终端修改出口mtu值是否成功,
12、如果没有修改成功,重新构造并发送icmp差错报文给源终端,并记录发送icmp差错报文次数。
13、本发明作进一步改进,当所述发送次数超过设定阈值时,停止构造发送icmp差错报文,执行linux协议栈分片判断步骤,所述udp连接的数据包通过正常linux协议栈转发处理。
14、本发明作进一步改进,如果修改成功,则执行步骤s3中linux协议栈转发处理流程。
15、本发明作进一步改进,所述基于pmtu提升udp分片包转发性能的方法还包括加速匹配转发步骤,所述加速匹配转发步骤的处理过程为:
16、当接收到udp连接数据包时,首先进入加速模块,匹配加速表项,如果匹配成功,则加速转发处理,如果匹配不成功,则进入linux协议栈正常转发处理。
17、本发明作进一步改进,步骤s3中,如果udp连接数据包的长度不超过所述出口mtu值,还包括将转发信息记录到加速表项步骤,记录后返回linux协议栈执行分片判断步骤;
18、转发信息记录到加速表项后,后需接收到的所述udp连接的所有报文会先匹配加速表项,然后进入加速模块加速转发处理。
19、本发明还提供一种实现所述基于pmtu提升udp分片包转发性能的方法的系统,包括协议栈转发处理模块和pmtu加速处理模块,其中,
20、所述协议栈转发处理模块包括:
21、forwaed链:用于启动udp连接数据包转发处理;
22、第一判断模块:用于判断所述udp连接数据包是否为udp连接的第一个数据包;
23、分片判断模块:用于判断是否需要分片,并分片处理;
24、转发处理模块:用于对所述udp连接数据包转发处理,
25、所述pmtu加速处理模块包括:
26、获取出口路由信息模块:用于根据目的ip地址获取出口路由信息;
27、获取出口mtu值模块:用于基于所述出口路由信息获取出口mtu值;
28、第二判断模块:用于判断udp连接数据包的长度是否超过所述出口mtu值;
29、构造icmp差错报文模块:用于根据udp连接数据包的长度设置新的出口mtu值,构造icmp差错报文,所述icmp差错报文包括下一跳采用的新的出口mtu值;
30、发送模块:用于将icmp差错报文发送给源终端,用于将出口mtu值修改为新的出口mtu值;
31、数据包丢弃模块:用于丢弃要转发的udp连接数据包。
32、本发明作进一步改进,所述第二判断模块还包括判断单元:用于判断源终端修改出口mtu值是否成功,所述系统还包括计数模块:用于记录发送icmp差错报文次数。
33、本发明作进一步改进,还包括加速匹配转发模块:用于对接收到匹配加速表项成功的udp连接数据包加速转发处理。
34、本发明作进一步改进,所述第二判断模块还包括记录单元:用于将转发信息记录到加速表项。
35、与现有技术相比,本发明的有益效果是:通过构造icmp差错报文通知客户端按修改后的mtu进行udp包的分片发送,充分利用网络通信设备的软件/硬件加速模块、linux内核的协议栈,使其不再需要根据出口接入方式的不同先缓存接收到的报文后进行重组、切割再分片发送,充分利用已有的软件、硬件资源快速转发udp分片报文,这对于cpu处理能力较弱的网络通信设备非常有用,极大地提升了数据包转发效率,此外,由于不需要再缓存接收到的报文再重组,可以有效降低cpu、内存损耗,极大地提升了产品的竞争力及用户体验。
1.基于pmtu提升udp分片包转发性能的方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的基于pmtu提升udp分片包转发性能的方法,其特征在于:新构造的udp连接数据包报文进入linux协议栈的pmtu加快处理模块后,步骤s3还包括判断步骤:判断源终端修改出口mtu值是否成功,
3.根据权利要求2所述的基于pmtu提升udp分片包转发性能的方法,其特征在于:当所述发送次数超过设定阈值时,停止构造发送icmp差错报文,执行linux协议栈分片判断步骤,所述udp连接的数据包通过正常linux协议栈转发处理。
4.根据权利要求2所述的基于pmtu提升udp分片包转发性能的方法,其特征在于:如果修改成功,则执行步骤s3中linux协议栈转发处理流程。
5.根据权利要求1-4任一项所述的基于pmtu提升udp分片包转发性能的方法,其特征在于:所述基于pmtu提升udp分片包转发性能的方法还包括加速匹配转发步骤,所述加速匹配转发步骤的处理过程为:
6.根据权利要求5所述的基于pmtu提升udp分片包转发性能的方法,其特征在于:步骤s3中,如果udp连接数据包的长度不超过所述出口mtu值,还包括将转发信息记录到加速表项步骤,记录后返回linux协议栈执行分片判断步骤;
7.一种实现所述基于pmtu提升udp分片包转发性能的方法的系统,其特征在于,包括协议栈转发处理模块和pmtu加速处理模块,其中,
8.根据权利要求7所述的系统,其特征在于:所述第二判断模块还包括判断单元:用于判断源终端修改出口mtu值是否成功,
9.根据权利要求7或8所述的系统,其特征在于:还包括加速匹配转发模块:用于对接收到匹配加速表项成功的udp连接数据包加速转发处理。
10.根据权利要求9所述的系统,其特征在于:所述第二判断模块还包括记录单元:用于将转发信息记录到加速表项。