一种dpi系统中数据并发上报的方法及装置的制造方法

文档序号:10492119阅读:239来源:国知局
一种dpi系统中数据并发上报的方法及装置的制造方法
【专利摘要】本发明公开了一种DPI系统中数据并发上报的方法及装置,涉及DPI技术领域。该方法的流程为:DPI系统启动,初始化上报线程数目和上报队列长度;当有上报任务加入至上报队列时,将上报任务分配至上报线程池中空闲的上报线程;根据上报任务的业务类型,选择对应的TCP文件连接描述符列表;从TCP文件连接描述符列表中有效的描述符中调用send函数,进行TCP数据传输;若返回值value为发送数据包的长度,则TCP数据传输完成;若value小于0,则TCP数据传输失败;若value大于0且小于发送数据包的长度,则TCP数据传输未完成。本发明不仅提高了DPI的上报性能,实现数据高效并发上报,而且提升了大数据解析的性能,降低了服务器的负荷。
【专利说明】
一种DPI系统中数据并发上报的方法及装置
技术领域
[0001 ] 本发明涉及DPI(Deep Packet Inspect1n,深度包检测)技术领域,具体涉及一种DPI系统中数据并发上报的方法及装置。
【背景技术】
[0002]DPI技术是一种基于应用层的流量检测和控制技术,当IP数据包、TCP(Transmiss1n Control Protocol,传输控制协议)或 UDP(User Datagram Protocol,用户数据报协议)数据流通过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作,并通过多种检测技术,对包和流信息进行数据提取、数据流量分析、用户行为分析和客户定制信息收集等。
[0003]基于DPI技术的带宽管理系统与防病毒软件系统的类似之处在于:能识别的应用类型必须为系统已知的;以用户熟知的BT(Bit Torrent,比特流)为例,其Handshake的协议特征字为“BitTorrent Protocol”。为了保证系统识别已知的应用类型,防病毒系统后台需要一个庞大的病毒特征数据库,基于DPI技术的带宽管理系统也要维护一个应用特征数据库。当流量经过带宽管理系统时,带宽管理系统将解包后的应用信息与后台特征数据库进行比较来确定应用类型。
[0004]但是,当有新型应用出现时,后台的应用特征数据库需要对新型应用具备识别和控制能力。现有的基于DPI技术的带宽管理系统上报数据时,采用“依次上报数据”的方式,数据发送的效率较低,而且数据发送的总时长较长,进而使得带宽管理系统的性能下降,月艮务器的负荷较大。

【发明内容】

[0005]针对现有技术中存在的缺陷,本发明解决的技术问题为:提供一种DPI系统中数据并发上报的方法及装置,本发明不仅提高了DPI的上报性能,实现数据高效并发上报,而且提升了大数据解析的性能,降低了服务器的负荷。
[0006]为达到以上目的,本发明提供的DPI系统中数据并发上报的方法,该方法包括以下步骤:
[0007]A:DPI系统启动,初始化上报线程池的上报线程数目和上报队列长度,转到步骤B;
[0008]B:上报线程池中的所有上报线程进入等待状态,当有上报任务加入至上报队列时,将上报任务分配至上报线程池中空闲的上报线程,转到步骤C;
[0009]C:根据上报任务的业务类型,选择对应的TCP文件连接描述符列表,转到步骤D;
[0010]D:判定TCP文件连接描述符列表中存在有效的描述符,选择所述有效的描述符,转到步骤E;
[0011]E:从有效的描述符中调用send函数,进行TCP数据传输;查看send函数的返回值value:若value为发送数据包的长度,则TCP数据传输完成,转到步骤B等待其他任务触发;若value小于O,则TCP数据传输失败,将发送失败计数count_fai I加I后转到步骤F,若value大于O且小于发送数据包的长度,则TCP数据传输未完成,转到步骤G;
[0012]F:判断count_fail是否小于服务器台数,若是,将所述有效的描述符的常用标志置为不可用状态-1后转到步骤C,否则转到步骤B;
[0013]G:判断value是否小于单次DPI最大传输字节数,若是,则发送阻塞,将发送阻塞计数count_block加I后转到步骤H,否则继续执行步骤E;
[0014]H:判断COunt_blOCk是否小于正整数N,若是,重新执行步骤E;否则将所述有效的描述符的常用标志置为阻塞状态2后转到步骤C。
[0015]在上述技术方案的基础上,步骤D中若TCP文件连接描述符列表中不存在有效的描述符,则根据历史发送状态,选择合适的描述符、并将其常用标志置为I后保存至对应的TCP文件连接描述符列表中,重新执行步骤C。
[0016]在上述技术方案的基础上,步骤D中所述根据历史发送状态,选择合适的描述符、并将其常用标志置为可用状态I后保存至对应的TCP文件连接描述符列表中的具体流程为:
[0017]D01:定义DPI系统中服务器的ip为X,服务器所用的端口 y为ipxy,y根据上报业务的业务类型选择,每种业务类型对应不同的服务器端口,每个ipxy分别唯一对应一个记录前2个上报周期发送的总时长ipxy.durat1n[2],每个上报周期为5min; ipxy.durat1n[0]对应当前时刻前10分钟上报周期内TCP发送所占用总时长,ipxy.durat1n[l]对应当前时刻前5分钟上报周期内TCP发送所占用总时长;ipxy.durat1n[0]和ipxy.durat1n[I]的初始值均为0;
[0018]D02:分别对当前上报业务中携带的每个ipxy创建TCP连接,将socket存入每个ipxy连接的描述符;
[0019]D03:计算每个ipxy的发送评分ipxyscore,计算公式为:ipxyscore =ipxy.durat1n[0].α+ipxy.durat1n[I].β;上述公式中α+β= I;
[°02°] D04:判断所有的ipxyscore是否相同,若是,选择ipxy.durat1n[ I ]最小值的服务器ip,否则选择所有的ipxyscore中最小值ipxyscore_min的服务器ip;
[0021 ] D05:确定选择的服务器ipx和端口y为本次发送的目标地址,将选择的ipxy连接的描述符置为1,其他ipxy连接的描述符置为初始状态O后,保存至对应的TCP文件连接描述符列表中。
[0022]在上述技术方案的基础上,步骤E中进行TCP数据传输后,需要根据传输的上报周期更新ipxy.durat1n[0]和ipxy.durat1n[ I ]。
[0023]在上述技术方案的基础上,D中选择所述有效的描述符的具体流程为:判断TCP文件连接描述符列表中是否存在常用标志为I的描述符:
[0024]若是,选择TCP文件连接描述符中第一个常用标志为I的描述符;否则判断TCP文件连接描述符列表中是否存在常用标志为O的描述符:
[0025]若是,选择TCP文件连接描述符中第一个常用标志为O的描述符、并将其常用标志置为I,转到步骤E;否则判断TCP文件连接描述符列表中是否存在常用标志为2的描述符:
[0026]若是,选择TCP文件连接描述符中第一个常用标志为2的描述符、并将其常用标志置为I,转到步骤E;否则确定TCP文件连接描述符列表中不存在有效的描述符。
[0027]在上述技术方案的基础上,步骤B中确定上报任务加入至上报队列的流程为:判断上报线程的上报队列是否为空,若是,则没有上报任务加入到上报队列,此时继续执行步骤B,否则有上报任务加入到上报队列。
[0028]在上述技术方案的基础上,步骤D中所述判定TCP文件连接描述符列表中存在有效的描述符的流程为:判断TCP文件连接描述符列表是否为空、且TCP文件连接描述符列表所有文件描述符的常用标志均不为I,若是,则TCP文件连接描述符列表中不存在有效的描述符,否则TCP文件连接描述符列表中存在有效的描述符。
[0029]本发明提供的基于上述方法的DPI系统中数据并发上报的装置,该装置包括DPI系统初始化模块、上报任务分配模块、描述符列表选择模块、有效描述符判定模块、TCP数据传输模块、失败计数判定模块、阻塞判定模块和阻塞计数判定模块;
[0030]DPI系统初始化模块用于:控制DPI系统启动,初始化上报线程池的上报线程数目和上报队列长度,向上报任务分配模块发送上报任务分配信号;
[0031 ]上报任务分配模块用于:收到上报任务分配信号后,控制上报线程池中的所有上报线程进入等待状态,当有上报任务加入至上报队列时,将上报任务分配至上报线程池中空闲的上报线程,向描述符列表选择模块发送描述符列表选择信号;
[0032]描述符列表选择模块用于:收到描述符列表选择信号后,根据上报任务的业务类型,选择对应的TCP文件连接描述符列表,向有效描述符判定模块发送有效描述符判定信号;
[0033]有效描述符判定模块用于:收到有效描述符判定信号后,判断TCP文件连接描述符列表中存在有效的描述符,若是,向TCP数据传输模块发送TCP数据传输信号;否则根据历史发送状态,选择合适的描述符、并将其常用标志置为I后保存至对应的TCP文件连接描述符列表中,重新向描述符列表选择模块发送描述符列表选择信号;
[0034]TCP数据传输模块用于:收到TCP数据传输信号后,从有效的描述符中调用send函数,进行TCP数据传输;查看send函数的返回值value:若value为发送数据包的长度,则TCP数据传输完成,向上报任务分配模块发送上报任务分配信号;若value小于O,则TCP数据传输失败,将发送失败计数Count_fail加I后向失败计数判定模块发送失败计数判定信号,若value大于O且小于发送数据包的长度,则TCP数据传输未完成,向阻塞判定模块发送阻塞判定信号;
[0035]失败计数判定模块用于:判断count_fail是否小于服务器台数,若是,将所述有效的描述符的常用标志置为不可用状态-1后向描述符列表选择模块发送描述符列表选择信号,否则向上报任务分配模块发送上报任务分配信号;
[0036]阻塞判定模块用于:收到阻塞判定信号后,判断value是否小于单次DPI最大传输字节数,若是,则发送阻塞,将发送阻塞计数count_block加I后向阻塞计数判定模块发送阻塞计数判定信号,否则继续向TCP数据传输模块发送TCP数据传输信号;
[0037]阻塞计数判定模块用于:判断count_block是否小于正整数N,若是,重新向TCP数据传输模块发送TCP数据传输信号;否则将所述有效的描述符的常用标志置为阻塞状态2后向描述符列表选择模块发送描述符列表选择信号。
[0038]与现有技术相比,本发明的优点在于:
[0039]与现有技术中采用“依次上报数据”的方式,本发明结合了DPI处理大数据、多业务的需求,提供了一种在DPI系统中数据并发上报的方法及装置。该方法采用多业务分类上报、多线程并发上报、文件描述符传输状态机制、以及多服务器负载均衡设计,不仅提高了DPI的上报性能,实现数据高效并发上报,而且提升了大数据解析的性能,降低了服务器的负荷。
【附图说明】
[0040]图1为本发明实施例中的DPI系统中数据并发上报的方法的流程图;
[0041]图2为本发明实施例中的DPI系统中数据并发上报的装置的信号流向示意图。
【具体实施方式】
[0042]以下结合附图及实施例对本发明作进一步详细说明。
[0043]参见图1所示,本发明实施例中的DPI系统中数据并发上报的方法,包括以下步骤:
[0044]SlOl:DPI系统开机,系统中各个业务启动,根据业务配置完成初始化工作(完成上报策略等策略接收存储工作,业务进入等待处理数据状态);根据配置(业务上报规模和物理设备处理能力)初始化上报线程池的上报线程数目和上报队列长度等,转到S102。
[0045]S102:上报线程池中的所有上报线程进入等待状态,判断上报线程的上报队列是否为空,若是,则没有上报任务加入至上报队列,继续执行S102,否则有上报任务加入至上报队列,将上报任务分配至上报线程池中空闲的上报线程,转到S103。
[0046]S103:根据上报任务的业务类型,选择对应的TCP(Transmiss1n ControlProtocol,传输控制协议)文件连接描述符列表,转到S104。
[0047]S104:判断TCP文件连接描述符列表中是否存在有效的描述符,若是,转到S106,否则转到S105。
[0048]S104中判断TCP文件连接描述符列表中是否存在有效的描述符的具体流程为:判断TCP文件连接描述符列表是否为空、且TCP文件连接描述符列表所有文件描述符的常用标志均不为1(可用状态),若是,则TCP文件连接描述符列表中不存在有效的描述符,否则TCP文件连接描述符列表中存在有效的描述符。
[0049]S105:根据历史发送状态,选择合适的描述符、并将其常用标志置为I后保存至对应的TCP文件连接描述符列表中,重新执行S103。
[0050]S106:选择TCP文件连接描述符列表中有效的描述符,转到S107。
[0051 ] S106的具体流程为:判断TCP文件连接描述符列表中是否存在常用标志为I的描述符:
[0052]若是,选择TCP文件连接描述符中第一个常用标志为I的描述符;否则判断TCP文件连接描述符列表中是否存在常用标志为0(初始状态)的描述符:
[0053]若是,选择TCP文件连接描述符中第一个常用标志为O的描述符、并将其常用标志置为1,转到S107;否则判断TCP文件连接描述符列表中是否存在常用标志为2(阻塞状态)的描述符:
[0054]若是,选择TCP文件连接描述符中第一个常用标志为2的描述符、并将其常用标志置为1,转到S107;否则转到S105。
[0055]S107:从有效的描述符中取出socket调用send函数,进行TCP数据传输,转到S108。
[0056]S108:查看send函数的返回值value:若value为发送数据包的长度,贝IjTCP数据传输完成,转到S102等待其他任务触发;若value小于0(例如-1,-2等),则TCP数据传输失败,将发送失败计数count_fail加I后转到S109,若value大于O且小于发送数据包的长度,贝IjTCP数据传输未完成,转到SI 10。
[0057]S109:判断Count_fail是否小于服务器台数(本实施例中服务器台数为3),若是,将S107中有效的描述符的常用标志置为_1(不可用状态)后转到S103,否则转到S102。
[0058]S110:判断value是否小于单次DPI最大传输字节数(例如4.1024字节),若是,则发送阻塞,将发送阻塞计数count_blOCk加I后转到Slll,否则表明要发送的数据量大于DPI的发送能力,需要分多次发送,继续执行S107。
[0059]Slll:判断count_block是否小于N(N为正整数,其具体数值根据测试经验确定,本实施例中N定义为3,表明TCP数据传输的服务器负载较重,需要负载均衡),若是,重新执行S107;否则将S107中有效的描述符的常用标志置为2后转到S103。
[0060]S105的具体流程为:
[0061]S105a:定义DPI系统中服务器的ip为X,服务器所用的端口 y为ipxy(y根据上报业务的业务类型选择,每种业务类型对应不同的服务器端口),每个ipxy分别唯一对应一个记录前2个上报周期(假设每个上报周期为5min)发送的总时长ipXy.durati0n[2],ipxy.durat1n[0]对应当前时刻前10分钟上报周期内TCP发送所占用总时长,ipxy.durat1n[l]对应当前时刻前5分钟上报周期内TCP发送所占用总时长。ipxy.durat1n[0]和 ipxy.durat1n[ I ]的初始值均为O。
[0062]S105b:分别对当前上报业务中携带的每个ipxy创建TCP连接,将socket存入每个ipxy连接的描述符。
[0063]S105c:计算每个ipxy的发送评分ipxyscore,计算公式为:ipxyscore =ipxy.durat1n[0].α+ipxy.durat1n[ I ].β;上述公式中α+β= I,针对不同的用户α和β的比例可能会有差异,通过对某省汇聚平台测试,得到最佳经验值α趋近为0.3,β趋近为0.7。
[0064]S105d:判断所有的ipxyscore是否相同,若是,选择ipxy.durat1n[ I ]最小值的服务器ip,否则选择所有的ipxyscore中最小值ipxyscore_min的服务器ip。
[0065]S105e:确定选择的服务器ipx和端口 y为本次发送的目标地址,将选择的ipxy连接的描述符置为I,其他ipxy连接的描述符置为O后,保存至对应的TCP文件连接描述符列表中。
[0066]本实施例上报业务包括通用类上报TASKl和流量流向类上报TASK2,TASK1对应端口 I,TASK2对应端口 2,服务器数量为3,ip分别为ipl,ip2和ip3。ipl和端口 I,ip2和端口 1、以及ip3和端口 I的ipxyscore,分别为ip 11 score、ip21 score和ip31 score。本实施例实施S105时,当上报业务为TASKl和TASKl时,ipl lscore均为最小值,因此,sl05d中选择的服务器ip为I。
[0067]在此基础上,S107中进行TCP数据传输后,需要根据传输的上报周期更新ipxy.durat1n[0]和ipxy.durat1n[I]。
[0068]参见图2所示,本发明实施例中的基于上述方法的DPI系统中数据并发上报的装置,该装置包括DPI系统初始化模块、上报任务分配模块、描述符列表选择模块、有效描述符判定模块、TCP数据传输模块、失败计数判定模块、阻塞判定模块和阻塞计数判定模块;
[0069]DPI系统初始化模块用于:控制DPI系统启动,初始化上报线程池的上报线程数目和上报队列长度,向上报任务分配模块发送上报任务分配信号;
[0070]上报任务分配模块用于:收到上报任务分配信号后,控制上报线程池中的所有上报线程进入等待状态,当有上报任务加入至上报队列时,将上报任务分配至上报线程池中空闲的上报线程,向描述符列表选择模块发送描述符列表选择信号;
[0071 ]描述符列表选择模块用于:收到描述符列表选择信号后,根据上报任务的业务类型,选择对应的TCP文件连接描述符列表,向有效描述符判定模块发送有效描述符判定信号;
[0072]有效描述符判定模块用于:收到有效描述符判定信号后,判断TCP文件连接描述符列表中存在有效的描述符,若是,向TCP数据传输模块发送TCP数据传输信号;否则根据历史发送状态,选择合适的描述符、并将其常用标志置为I后保存至对应的TCP文件连接描述符列表中,重新向描述符列表选择模块发送描述符列表选择信号;
[0073]TCP数据传输模块用于:收到TCP数据传输信号后,从有效的描述符中调用send函数,进行TCP数据传输;查看send函数的返回值value:若value为发送数据包的长度,则TCP数据传输完成,向上报任务分配模块发送上报任务分配信号;若value小于O,则TCP数据传输失败,将发送失败计数Count_fail加I后向失败计数判定模块发送失败计数判定信号,若value大于O且小于发送数据包的长度,则TCP数据传输未完成,向阻塞判定模块发送阻塞判定信号;
[0074]失败计数判定模块用于:判断count_fail是否小于服务器台数,若是,将所述有效的描述符的常用标志置为不可用状态-1后向描述符列表选择模块发送描述符列表选择信号,否则向上报任务分配模块发送上报任务分配信号;
[0075]阻塞判定模块用于:收到阻塞判定信号后,判断value是否小于单次DPI最大传输字节数,若是,则发送阻塞,将发送阻塞计数count_block加I后向阻塞计数判定模块发送阻塞计数判定信号,否则继续向TCP数据传输模块发送TCP数据传输信号;
[0076]阻塞计数判定模块用于:判断count_block是否小于正整数N,若是,重新向TCP数据传输模块发送TCP数据传输信号;否则将所述有效的描述符的常用标志置为阻塞状态2后向描述符列表选择模块发送描述符列表选择信号。
[0077]本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
【主权项】
1.一种DPI系统中数据并发上报的方法,其特征在于,该方法包括以下步骤: A:DPI系统启动,初始化上报线程池的上报线程数目和上报队列长度,转到步骤B; B:上报线程池中的所有上报线程进入等待状态,当有上报任务加入至上报队列时,将上报任务分配至上报线程池中空闲的上报线程,转到步骤C; C:根据上报任务的业务类型,选择对应的TCP文件连接描述符列表,转到步骤D; D:判定TCP文件连接描述符列表中存在有效的描述符,选择所述有效的描述符,转到步骤E; E:从有效的描述符中调用s end函数,进行TCP数据传输;查看send函数的返回值value:若value为发送数据包的长度,则TCP数据传输完成,转到步骤B等待其他任务触发;若value小于O,则TCP数据传输失败,将发送失败计数count_fai I加I后转到步骤F,若value大于O且小于发送数据包的长度,则TCP数据传输未完成,转到步骤G; F:判断count_fail是否小于服务器台数,若是,将所述有效的描述符的常用标志置为不可用状态-1后转到步骤C,否则转到步骤B; G:判断value是否小于单次DPI最大传输字节数,若是,则发送阻塞,将发送阻塞计数count_block加I后转到步骤H,否则继续执行步骤E; H:判断COunt_blOCk是否小于正整数N,若是,重新执行步骤E;否则将所述有效的描述符的常用标志置为阻塞状态2后转到步骤C。2.如权利要求1所述的DPI系统中数据并发上报的方法,其特征在于:步骤D中若TCP文件连接描述符列表中不存在有效的描述符,则根据历史发送状态,选择合适的描述符、并将其常用标志置为I后保存至对应的TCP文件连接描述符列表中,重新执行步骤C。3.如权利要求2所述的DPI系统中数据并发上报的方法,其特征在于:步骤D中所述根据历史发送状态,选择合适的描述符、并将其常用标志置为可用状态I后保存至对应的TCP文件连接描述符列表中的具体流程为: DOl:定义DPI系统中服务器的ip为X,服务器所用的端口 y为ipxy,y根据上报业务的业务类型选择,每种业务类型对应不同的服务器端口,每个ipxy分别唯一对应一个记录前2个上报周期发送的总时长ipxy.durat1n[2],每个上报周期为5min; ipxy.durat1n [O]对应当前时刻前10分钟上报周期内TCP发送所占用总时长,ipxy.durat1n[l]对应当前时刻前5分钟上报周期内TCP发送所占用总时长;丨口1^(11^^1:;[011[0]和丨口17.(111作1:;[011[1]的初始值均为O; D02:分别对当前上报业务中携带的每个ipxy创建TCP连接,将socket存入每个ipxy连接的描述符; D03:计算每个ipxy的发送评分ipxy score,计算公式为:ipxyscore = ipxy.durat1n[O].α+ipxy.durat1n[I].β;上述公式中α+β= I; D04:判断所有的ipxyscore是否相同,若是,选择ipxy.durat1n[ I ]最小值的服务器ip,否则选择所有的ipxyscore中最小值ipxyscore_min的服务器ip; D05:确定选择的服务器ipx和端口y为本次发送的目标地址,将选择的ipxy连接的描述符置为I,其他ipxy连接的描述符置为初始状态O后,保存至对应的TCP文件连接描述符列表中。4.如权利要求3所述的DPI系统中数据并发上报的方法,其特征在于:步骤E中进行TCP数据传输后,需要根据传输的上报周期更新ipxy.durat1n[O WPIipxy.durat1n[ I ]。5.如权利要求2所述的DPI系统中数据并发上报的方法,其特征在于:D中选择所述有效的描述符的具体流程为:判断TCP文件连接描述符列表中是否存在常用标志为I的描述符: 若是,选择TCP文件连接描述符中第一个常用标志为I的描述符;否则判断TCP文件连接描述符列表中是否存在常用标志为O的描述符: 若是,选择TCP文件连接描述符中第一个常用标志为O的描述符、并将其常用标志置为I,转到步骤E;否则判断TCP文件连接描述符列表中是否存在常用标志为2的描述符: 若是,选择TCP文件连接描述符中第一个常用标志为2的描述符、并将其常用标志置为I,转到步骤E;否则确定TCP文件连接描述符列表中不存在有效的描述符。6.如权利要求1至5任一项所述的DPI系统中数据并发上报的方法,其特征在于:步骤B中确定上报任务加入至上报队列的流程为:判断上报线程的上报队列是否为空,若是,则没有上报任务加入到上报队列,此时继续执行步骤B,否则有上报任务加入到上报队列。7.如权利要求1至5任一项所述的DPI系统中数据并发上报的方法,其特征在于:步骤D中所述判定TCP文件连接描述符列表中存在有效的描述符的流程为:判断TCP文件连接描述符列表是否为空、且TCP文件连接描述符列表所有文件描述符的常用标志均不为1,若是,则TCP文件连接描述符列表中不存在有效的描述符,否则TCP文件连接描述符列表中存在有效的描述符。8.—种基于权利要求1至7任一项所述方法的DPI系统中数据并发上报的装置,其特征在于:该装置包括DPI系统初始化模块、上报任务分配模块、描述符列表选择模块、有效描述符判定模块、TCP数据传输模块、失败计数判定模块、阻塞判定模块和阻塞计数判定模块; DPI系统初始化模块用于:控制DPI系统启动,初始化上报线程池的上报线程数目和上报队列长度,向上报任务分配模块发送上报任务分配信号; 上报任务分配模块用于:收到上报任务分配信号后,控制上报线程池中的所有上报线程进入等待状态,当有上报任务加入至上报队列时,将上报任务分配至上报线程池中空闲的上报线程,向描述符列表选择模块发送描述符列表选择信号; 描述符列表选择模块用于:收到描述符列表选择信号后,根据上报任务的业务类型,选择对应的TCP文件连接描述符列表,向有效描述符判定模块发送有效描述符判定信号;有效描述符判定模块用于:收到有效描述符判定信号后,判断TCP文件连接描述符列表中存在有效的描述符,若是,向TCP数据传输模块发送TCP数据传输信号;否则根据历史发送状态,选择合适的描述符、并将其常用标志置为I后保存至对应的TCP文件连接描述符列表中,重新向描述符列表选择模块发送描述符列表选择信号; TCP数据传输模块用于:收到TCP数据传输信号后,从有效的描述符中调用send函数,进行TCP数据传输;查看send函数的返回值value:若value为发送数据包的长度,则TCP数据传输完成,向上报任务分配模块发送上报任务分配信号;若value小于O,则TCP数据传输失败,将发送失败计数count_f ail加I后向失败计数判定模块发送失败计数判定信号,若value大于O且小于发送数据包的长度,则TCP数据传输未完成,向阻塞判定模块发送阻塞判定信号;失败计数判定模块用于:判断count_fail是否小于服务器台数,若是,将所述有效的描述符的常用标志置为不可用状态-1后向描述符列表选择模块发送描述符列表选择信号,否则向上报任务分配模块发送上报任务分配信号; 阻塞判定模块用于:收到阻塞判定信号后,判断value是否小于单次DPI最大传输字节数,若是,则发送阻塞,将发送阻塞计数count_block加I后向阻塞计数判定模块发送阻塞计数判定信号,否则继续向TCP数据传输模块发送TCP数据传输信号; 阻塞计数判定模块用于:判断coun t_b I ο ck是否小于正整数N,若是,重新向TCP数据传输模块发送TCP数据传输信号;否则将所述有效的描述符的常用标志置为阻塞状态2后向描述符列表选择模块发送描述符列表选择信号。
【文档编号】H04L12/825GK105847179SQ201610167800
【公开日】2016年8月10日
【申请日】2016年3月23日
【发明人】程波, 侯贺明
【申请人】武汉绿色网络信息服务有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1