一种降低UDP报文发送时延的方法
技术领域
本发明涉及文件传输领域,尤其涉及一种降低UDP报文发送时延的方法。
背景技术
在目前的操作系统中,应用层发送UDP报文时,如果该UDP报文小于IP层的最大负荷单元(比如以太网是1500字节),则该UDP报文会被直接发出,如果该UDP报文大于IP层的最大负荷单元,则UDP报文会被分拆成多个IP报文进行发送,多个IP报文公用同一个UDP报文头。当UDP报文被分拆成多个IP报文时,如果UDP报文对应的多个IP报文在传输过程中,有一个报文丢失,则该UDP报文在接收端会被整体丢弃。
基于上述原因,目前在进行UDP报文发送时,应用层都选择使用小于最大负荷单元的大小来发送单个UDP报文,而这样带来一个非常明显的发送效率问题,比如发送64KB数据,如果是通过发送1个64KB的UDP报文来完成,则该UDP报文从应用层调用send接口后到本机网卡实际发出,只需要10微秒,如果是通过拆分成64个1KB的UDP报文进行发送,则整体发送时间需要500微秒,UDP报文发送的时延大幅增加,导致UDP报文传输效率降低。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明的目的是克服现有技术的不足,提供一种降低UDP报文发送时延的方法,解决现有技术中,UDP报文传输时延长,传输效率低的问题。
本发明的技术方案如下:一种降低UDP报文发送时延的方法,所述方法包括以下步骤:
S1:用户在传输客户端上设定UDP报文的拆分字节值。
所述拆分字节值不大于IP层的MTU值。
S2:传输客户端与传输服务端建立传输连接,并向传输服务端发送UDP报文。
S3:若发送的所述UDP报文小于IP层的MTU值,则传输客户端向传输服务端发送所述UDP报文。
S4:若发送的所述UDP报文大于IP层的MTU值,则UDP分包驱动程序根据所述拆分字节值,将所述UDP报文拆分为若干个UDP数据报文,并为所述UDP数据报文增加对应的UDP报文头。
S5:将增加UDP报文头的UDP数据报文发送给传输服务端。
在传输客户端上插入UDP分包驱动程序,用户根据具体传输要求,设定UDP报文需要拆分时的拆分字节值;当所发送的UDP报文小于传输IP层的MTU值时,无需拆分UDP报文,直接将UDP报文传输至传输服务端,当所发送的UDP报文大于传输IP层的MTU值时,则通过UDP分包驱动程序根据拆分字节值将UDP报文拆分成若干个单独的UDP数据报文,并且为所拆分的所有的UDP数据报文增加UDP报文头,使得拆分后的UDP数据报文在传输网络中传输时,都是独立的UDP数据报文,在其中任意一个UDP数据报文丢失时,传输客户端只需要重新发送丢失的UDP数据报文,而无需重新发送所有拆分后的UDP数据报文,有效节约传输时间,提高传输效率;另一方面,在传输过程中,无需通过IP层分包,可根据传输过程中的实际情况,设定拆分字节值,最大拆分字节值可为IP层的MTU值,增加单次传输的数据量,缩短UDP数据文件的传输时间,降低传输时延,极大提高传输效率。
进一步地,所述传输客户端采用send()接口和/或sendto()接口向所述传输服务端发送UDP报文、UDP数据报文。
进一步地,在所述步骤S4中,若用户未设定UDP报文的拆分字节值,则UDP分包驱动程序自动获取IP层的MTU值,并根据所述MTU值将所述UDP报文拆分成若干个UDP数据报文,并为所述UDP数据报文增加对应的UDP报文头。当用户未设定UDP报文的拆分字节值时,UDP分包驱动程序会自动获取IP层的MTU值,保证传输过程中UDP报文的正常拆包,拆分字节值为MTU值时,单次传输的数据量增加,可大幅度降低由于数据发送所导致的时延问题,降低传输客户端CPU的消耗。
进一步地,所述UDP分包驱动程序在传输客户端将UDP报文传输至网卡前,完成UDP报文的拆分、UDP数据报文增加UDP报文头操作。
进一步地,所述UDP报文头包括:源端口、目的端口、UDP校验和。
进一步地,所述UDP数据报文不大于64KB。拆分后的单个UDP数据报文的数据量最大可以达到64KB,降低UDP数据报文从传输客户端调用send()接口和/或sendto()接口到网卡的实际发出的时间,从而有效降低传输过程中的时延。
采用上述方案,本发明提供一种降低UDP报文发送时延的方法,具有以下有益效果:
1、本发明通过UDP分包驱动程序根据拆分字节值将UDP报文拆分成若干个单独的UDP数据报文,并且为所拆分的所有的UDP数据报文增加UDP报文头,使得拆分后的UDP数据报文在传输网络中传输时,都是独立的UDP数据报文,在其中任意一个UDP数据报文丢失时,传输客户端只需要重新发送丢失的UDP数据报文,而无需重新发送所有拆分后的UDP数据报文,有效节约传输时间,提高传输效率。
2、本发明UDP报文的拆分,无需通过IP层分包,可根据传输过程中的实际情况,设定拆分字节值,最大拆分字节值可为IP层的MTU值,单次传输的数据量增加,可大幅度降低由于数据发送所导致的时延问题,降低传输客户端CPU的消耗。
附图说明
图1为本发明的流程框图。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
请参照图1,本发明提供一种降低UDP报文发送时延的方法,所述方法包括以下步骤:
S1:用户在传输客户端上设定UDP报文的拆分字节值。
所述拆分字节值不大于IP层的MTU值。
S2:传输客户端与传输服务端建立传输连接,并向传输服务端发送UDP报文。
S3:若发送的所述UDP报文小于IP层的MTU值,则传输客户端向传输服务端发送所述UDP报文。
S4:若发送的所述UDP报文大于IP层的MTU值,则UDP分包驱动程序根据所述拆分字节值,将所述UDP报文拆分为若干个UDP数据报文,并为所述UDP数据报文增加对应的UDP报文头。
S5:将增加UDP报文头的UDP数据报文发送给传输服务端。
在传输客户端上插入UDP分包驱动程序,用户根据具体传输要求,设定UDP报文需要拆分时的拆分字节值;当所发送的UDP报文小于传输IP层的MTU值时,无需拆分UDP报文,直接将UDP报文传输至传输服务端,当所发送的UDP报文大于传输IP层的MTU值时,则通过UDP分包驱动程序根据拆分字节值将UDP报文拆分成若干个单独的UDP数据报文,并且为所拆分的所有的UDP数据报文增加UDP报文头,使得拆分后的UDP数据报文在传输网络中传输时,都是独立的UDP数据报文,在其中任意一个UDP数据报文丢失时,传输客户端只需要重新发送丢失的UDP数据报文,而无需重新发送所有拆分后的UDP数据报文,有效节约传输时间,提高传输效率;另一方面,在传输过程中,无需通过IP层分包,可根据传输过程中的实际情况,设定拆分字节值,最大拆分字节值可为IP层的MTU值,增加单次传输的数据量,缩短UDP数据文件的传输时间,降低传输时延,极大提高传输效率。
所述传输客户端采用sendto()接口向所述传输服务端发送UDP报文、UDP数据报文。
在所述步骤S4中,若用户未设定UDP报文的拆分字节值,则UDP分包驱动程序自动获取IP层的MTU值,并根据所述MTU值将所述UDP报文拆分成若干个UDP数据报文,并为所述UDP数据报文增加对应的UDP报文头。当用户未设定UDP报文的拆分字节值时,UDP分包驱动程序会自动获取IP层的MTU值,保证传输过程中UDP报文的正常拆包,拆分字节值为MTU值时,单次传输的数据量增加,可大幅度降低由于数据发送所导致的时延问题,降低传输客户端CPU的消耗。
所述UDP分包驱动程序在传输客户端将UDP报文传输至网卡前,完成UDP报文的拆分、UDP数据报文增加UDP报文头操作。
所述UDP报文头包括:源端口、目的端口、UDP校验和。
所述UDP数据报文为64KB。拆分后的单个UDP数据报文的数据量最大可以达到64KB,降低UDP数据报文从传输客户端调用send()接口到网卡的实际发出的时间,从而有效降低传输过程中的时延。
综上所述,本发明提供一种降低UDP报文发送时延的方法,具有以下有益效果:
1、本发明通过UDP分包驱动程序根据拆分字节值将UDP报文拆分成若干个单独的UDP数据报文,并且为所拆分的所有的UDP数据报文增加UDP报文头,使得拆分后的UDP数据报文在传输网络中传输时,都是独立的UDP数据报文,在其中任意一个UDP数据报文丢失时,传输客户端只需要重新发送丢失的UDP数据报文,而无需重新发送所有拆分后的UDP数据报文,有效节约传输时间,提高传输效率。
2、本发明UDP报文的拆分,无需通过IP层分包,可根据传输过程中的实际情况,设定拆分字节值,最大拆分字节值可为IP层的MTU值,单次传输的数据量增加,可大幅度降低由于数据发送所导致的时延问题,降低传输客户端CPU的消耗。
以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。