亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種dpi系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法及裝置的制造方法

文檔序號:10492119閱讀:295來源:國知局
一種dpi系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法及裝置,涉及DPI技術(shù)領(lǐng)域。該方法的流程為:DPI系統(tǒng)啟動(dòng),初始化上報(bào)線程數(shù)目和上報(bào)隊(duì)列長度;當(dāng)有上報(bào)任務(wù)加入至上報(bào)隊(duì)列時(shí),將上報(bào)任務(wù)分配至上報(bào)線程池中空閑的上報(bào)線程;根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對應(yīng)的TCP文件連接描述符列表;從TCP文件連接描述符列表中有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;若返回值value為發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸完成;若value小于0,則TCP數(shù)據(jù)傳輸失敗;若value大于0且小于發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸未完成。本發(fā)明不僅提高了DPI的上報(bào)性能,實(shí)現(xiàn)數(shù)據(jù)高效并發(fā)上報(bào),而且提升了大數(shù)據(jù)解析的性能,降低了服務(wù)器的負(fù)荷。
【專利說明】
一種DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法及裝置
技術(shù)領(lǐng)域
[0001 ] 本發(fā)明涉及DPI(Deep Packet Inspect1n,深度包檢測)技術(shù)領(lǐng)域,具體涉及一種DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法及裝置。
【背景技術(shù)】
[0002]DPI技術(shù)是一種基于應(yīng)用層的流量檢測和控制技術(shù),當(dāng)IP數(shù)據(jù)包、TCP(Transmiss1n Control Protocol,傳輸控制協(xié)議)或 UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)數(shù)據(jù)流通過基于DPI技術(shù)的帶寬管理系統(tǒng)時(shí),該系統(tǒng)通過深入讀取IP包載荷的內(nèi)容來對OSI七層協(xié)議中的應(yīng)用層信息進(jìn)行重組,從而得到整個(gè)應(yīng)用程序的內(nèi)容,然后按照系統(tǒng)定義的管理策略對流量進(jìn)行整形操作,并通過多種檢測技術(shù),對包和流信息進(jìn)行數(shù)據(jù)提取、數(shù)據(jù)流量分析、用戶行為分析和客戶定制信息收集等。
[0003]基于DPI技術(shù)的帶寬管理系統(tǒng)與防病毒軟件系統(tǒng)的類似之處在于:能識別的應(yīng)用類型必須為系統(tǒng)已知的;以用戶熟知的BT(Bit Torrent,比特流)為例,其Handshake的協(xié)議特征字為“BitTorrent Protocol”。為了保證系統(tǒng)識別已知的應(yīng)用類型,防病毒系統(tǒng)后臺(tái)需要一個(gè)龐大的病毒特征數(shù)據(jù)庫,基于DPI技術(shù)的帶寬管理系統(tǒng)也要維護(hù)一個(gè)應(yīng)用特征數(shù)據(jù)庫。當(dāng)流量經(jīng)過帶寬管理系統(tǒng)時(shí),帶寬管理系統(tǒng)將解包后的應(yīng)用信息與后臺(tái)特征數(shù)據(jù)庫進(jìn)行比較來確定應(yīng)用類型。
[0004]但是,當(dāng)有新型應(yīng)用出現(xiàn)時(shí),后臺(tái)的應(yīng)用特征數(shù)據(jù)庫需要對新型應(yīng)用具備識別和控制能力。現(xiàn)有的基于DPI技術(shù)的帶寬管理系統(tǒng)上報(bào)數(shù)據(jù)時(shí),采用“依次上報(bào)數(shù)據(jù)”的方式,數(shù)據(jù)發(fā)送的效率較低,而且數(shù)據(jù)發(fā)送的總時(shí)長較長,進(jìn)而使得帶寬管理系統(tǒng)的性能下降,月艮務(wù)器的負(fù)荷較大。

【發(fā)明內(nèi)容】

[0005]針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明解決的技術(shù)問題為:提供一種DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法及裝置,本發(fā)明不僅提高了DPI的上報(bào)性能,實(shí)現(xiàn)數(shù)據(jù)高效并發(fā)上報(bào),而且提升了大數(shù)據(jù)解析的性能,降低了服務(wù)器的負(fù)荷。
[0006]為達(dá)到以上目的,本發(fā)明提供的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,該方法包括以下步驟:
[0007]A:DPI系統(tǒng)啟動(dòng),初始化上報(bào)線程池的上報(bào)線程數(shù)目和上報(bào)隊(duì)列長度,轉(zhuǎn)到步驟B;
[0008]B:上報(bào)線程池中的所有上報(bào)線程進(jìn)入等待狀態(tài),當(dāng)有上報(bào)任務(wù)加入至上報(bào)隊(duì)列時(shí),將上報(bào)任務(wù)分配至上報(bào)線程池中空閑的上報(bào)線程,轉(zhuǎn)到步驟C;
[0009]C:根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對應(yīng)的TCP文件連接描述符列表,轉(zhuǎn)到步驟D;
[0010]D:判定TCP文件連接描述符列表中存在有效的描述符,選擇所述有效的描述符,轉(zhuǎn)到步驟E;
[0011]E:從有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸完成,轉(zhuǎn)到步驟B等待其他任務(wù)觸發(fā);若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)count_fai I加I后轉(zhuǎn)到步驟F,若value大于O且小于發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸未完成,轉(zhuǎn)到步驟G;
[0012]F:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后轉(zhuǎn)到步驟C,否則轉(zhuǎn)到步驟B;
[0013]G:判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后轉(zhuǎn)到步驟H,否則繼續(xù)執(zhí)行步驟E;
[0014]H:判斷COunt_blOCk是否小于正整數(shù)N,若是,重新執(zhí)行步驟E;否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后轉(zhuǎn)到步驟C。
[0015]在上述技術(shù)方案的基礎(chǔ)上,步驟D中若TCP文件連接描述符列表中不存在有效的描述符,則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對應(yīng)的TCP文件連接描述符列表中,重新執(zhí)行步驟C。
[0016]在上述技術(shù)方案的基礎(chǔ)上,步驟D中所述根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為可用狀態(tài)I后保存至對應(yīng)的TCP文件連接描述符列表中的具體流程為:
[0017]D01:定義DPI系統(tǒng)中服務(wù)器的ip為X,服務(wù)器所用的端口 y為ipxy,y根據(jù)上報(bào)業(yè)務(wù)的業(yè)務(wù)類型選擇,每種業(yè)務(wù)類型對應(yīng)不同的服務(wù)器端口,每個(gè)ipxy分別唯一對應(yīng)一個(gè)記錄前2個(gè)上報(bào)周期發(fā)送的總時(shí)長ipxy.durat1n[2],每個(gè)上報(bào)周期為5min; ipxy.durat1n[0]對應(yīng)當(dāng)前時(shí)刻前10分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長,ipxy.durat1n[l]對應(yīng)當(dāng)前時(shí)刻前5分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長;ipxy.durat1n[0]和ipxy.durat1n[I]的初始值均為0;
[0018]D02:分別對當(dāng)前上報(bào)業(yè)務(wù)中攜帶的每個(gè)ipxy創(chuàng)建TCP連接,將socket存入每個(gè)ipxy連接的描述符;
[0019]D03:計(jì)算每個(gè)ipxy的發(fā)送評分ipxyscore,計(jì)算公式為:ipxyscore =ipxy.durat1n[0].α+ipxy.durat1n[I].β;上述公式中α+β= I;
[°02°] D04:判斷所有的ipxyscore是否相同,若是,選擇ipxy.durat1n[ I ]最小值的服務(wù)器ip,否則選擇所有的ipxyscore中最小值ipxyscore_min的服務(wù)器ip;
[0021 ] D05:確定選擇的服務(wù)器ipx和端口y為本次發(fā)送的目標(biāo)地址,將選擇的ipxy連接的描述符置為1,其他ipxy連接的描述符置為初始狀態(tài)O后,保存至對應(yīng)的TCP文件連接描述符列表中。
[0022]在上述技術(shù)方案的基礎(chǔ)上,步驟E中進(jìn)行TCP數(shù)據(jù)傳輸后,需要根據(jù)傳輸?shù)纳蠄?bào)周期更新ipxy.durat1n[0]和ipxy.durat1n[ I ]。
[0023]在上述技術(shù)方案的基礎(chǔ)上,D中選擇所述有效的描述符的具體流程為:判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為I的描述符:
[0024]若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為I的描述符;否則判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為O的描述符:
[0025]若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為O的描述符、并將其常用標(biāo)志置為I,轉(zhuǎn)到步驟E;否則判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為2的描述符:
[0026]若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為2的描述符、并將其常用標(biāo)志置為I,轉(zhuǎn)到步驟E;否則確定TCP文件連接描述符列表中不存在有效的描述符。
[0027]在上述技術(shù)方案的基礎(chǔ)上,步驟B中確定上報(bào)任務(wù)加入至上報(bào)隊(duì)列的流程為:判斷上報(bào)線程的上報(bào)隊(duì)列是否為空,若是,則沒有上報(bào)任務(wù)加入到上報(bào)隊(duì)列,此時(shí)繼續(xù)執(zhí)行步驟B,否則有上報(bào)任務(wù)加入到上報(bào)隊(duì)列。
[0028]在上述技術(shù)方案的基礎(chǔ)上,步驟D中所述判定TCP文件連接描述符列表中存在有效的描述符的流程為:判斷TCP文件連接描述符列表是否為空、且TCP文件連接描述符列表所有文件描述符的常用標(biāo)志均不為I,若是,則TCP文件連接描述符列表中不存在有效的描述符,否則TCP文件連接描述符列表中存在有效的描述符。
[0029]本發(fā)明提供的基于上述方法的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的裝置,該裝置包括DPI系統(tǒng)初始化模塊、上報(bào)任務(wù)分配模塊、描述符列表選擇模塊、有效描述符判定模塊、TCP數(shù)據(jù)傳輸模塊、失敗計(jì)數(shù)判定模塊、阻塞判定模塊和阻塞計(jì)數(shù)判定模塊;
[0030]DPI系統(tǒng)初始化模塊用于:控制DPI系統(tǒng)啟動(dòng),初始化上報(bào)線程池的上報(bào)線程數(shù)目和上報(bào)隊(duì)列長度,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號;
[0031 ]上報(bào)任務(wù)分配模塊用于:收到上報(bào)任務(wù)分配信號后,控制上報(bào)線程池中的所有上報(bào)線程進(jìn)入等待狀態(tài),當(dāng)有上報(bào)任務(wù)加入至上報(bào)隊(duì)列時(shí),將上報(bào)任務(wù)分配至上報(bào)線程池中空閑的上報(bào)線程,向描述符列表選擇模塊發(fā)送描述符列表選擇信號;
[0032]描述符列表選擇模塊用于:收到描述符列表選擇信號后,根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對應(yīng)的TCP文件連接描述符列表,向有效描述符判定模塊發(fā)送有效描述符判定信號;
[0033]有效描述符判定模塊用于:收到有效描述符判定信號后,判斷TCP文件連接描述符列表中存在有效的描述符,若是,向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;否則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對應(yīng)的TCP文件連接描述符列表中,重新向描述符列表選擇模塊發(fā)送描述符列表選擇信號;
[0034]TCP數(shù)據(jù)傳輸模塊用于:收到TCP數(shù)據(jù)傳輸信號后,從有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸完成,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號;若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)Count_fail加I后向失敗計(jì)數(shù)判定模塊發(fā)送失敗計(jì)數(shù)判定信號,若value大于O且小于發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸未完成,向阻塞判定模塊發(fā)送阻塞判定信號;
[0035]失敗計(jì)數(shù)判定模塊用于:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后向描述符列表選擇模塊發(fā)送描述符列表選擇信號,否則向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號;
[0036]阻塞判定模塊用于:收到阻塞判定信號后,判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后向阻塞計(jì)數(shù)判定模塊發(fā)送阻塞計(jì)數(shù)判定信號,否則繼續(xù)向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;
[0037]阻塞計(jì)數(shù)判定模塊用于:判斷count_block是否小于正整數(shù)N,若是,重新向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后向描述符列表選擇模塊發(fā)送描述符列表選擇信號。
[0038]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
[0039]與現(xiàn)有技術(shù)中采用“依次上報(bào)數(shù)據(jù)”的方式,本發(fā)明結(jié)合了DPI處理大數(shù)據(jù)、多業(yè)務(wù)的需求,提供了一種在DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法及裝置。該方法采用多業(yè)務(wù)分類上報(bào)、多線程并發(fā)上報(bào)、文件描述符傳輸狀態(tài)機(jī)制、以及多服務(wù)器負(fù)載均衡設(shè)計(jì),不僅提高了DPI的上報(bào)性能,實(shí)現(xiàn)數(shù)據(jù)高效并發(fā)上報(bào),而且提升了大數(shù)據(jù)解析的性能,降低了服務(wù)器的負(fù)荷。
【附圖說明】
[0040]圖1為本發(fā)明實(shí)施例中的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法的流程圖;
[0041]圖2為本發(fā)明實(shí)施例中的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的裝置的信號流向示意圖。
【具體實(shí)施方式】
[0042]以下結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0043]參見圖1所示,本發(fā)明實(shí)施例中的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,包括以下步驟:
[0044]SlOl:DPI系統(tǒng)開機(jī),系統(tǒng)中各個(gè)業(yè)務(wù)啟動(dòng),根據(jù)業(yè)務(wù)配置完成初始化工作(完成上報(bào)策略等策略接收存儲(chǔ)工作,業(yè)務(wù)進(jìn)入等待處理數(shù)據(jù)狀態(tài));根據(jù)配置(業(yè)務(wù)上報(bào)規(guī)模和物理設(shè)備處理能力)初始化上報(bào)線程池的上報(bào)線程數(shù)目和上報(bào)隊(duì)列長度等,轉(zhuǎn)到S102。
[0045]S102:上報(bào)線程池中的所有上報(bào)線程進(jìn)入等待狀態(tài),判斷上報(bào)線程的上報(bào)隊(duì)列是否為空,若是,則沒有上報(bào)任務(wù)加入至上報(bào)隊(duì)列,繼續(xù)執(zhí)行S102,否則有上報(bào)任務(wù)加入至上報(bào)隊(duì)列,將上報(bào)任務(wù)分配至上報(bào)線程池中空閑的上報(bào)線程,轉(zhuǎn)到S103。
[0046]S103:根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對應(yīng)的TCP(Transmiss1n ControlProtocol,傳輸控制協(xié)議)文件連接描述符列表,轉(zhuǎn)到S104。
[0047]S104:判斷TCP文件連接描述符列表中是否存在有效的描述符,若是,轉(zhuǎn)到S106,否則轉(zhuǎn)到S105。
[0048]S104中判斷TCP文件連接描述符列表中是否存在有效的描述符的具體流程為:判斷TCP文件連接描述符列表是否為空、且TCP文件連接描述符列表所有文件描述符的常用標(biāo)志均不為1(可用狀態(tài)),若是,則TCP文件連接描述符列表中不存在有效的描述符,否則TCP文件連接描述符列表中存在有效的描述符。
[0049]S105:根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對應(yīng)的TCP文件連接描述符列表中,重新執(zhí)行S103。
[0050]S106:選擇TCP文件連接描述符列表中有效的描述符,轉(zhuǎn)到S107。
[0051 ] S106的具體流程為:判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為I的描述符:
[0052]若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為I的描述符;否則判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為0(初始狀態(tài))的描述符:
[0053]若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為O的描述符、并將其常用標(biāo)志置為1,轉(zhuǎn)到S107;否則判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為2(阻塞狀態(tài))的描述符:
[0054]若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為2的描述符、并將其常用標(biāo)志置為1,轉(zhuǎn)到S107;否則轉(zhuǎn)到S105。
[0055]S107:從有效的描述符中取出socket調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸,轉(zhuǎn)到S108。
[0056]S108:查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長度,貝IjTCP數(shù)據(jù)傳輸完成,轉(zhuǎn)到S102等待其他任務(wù)觸發(fā);若value小于0(例如-1,-2等),則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)count_fail加I后轉(zhuǎn)到S109,若value大于O且小于發(fā)送數(shù)據(jù)包的長度,貝IjTCP數(shù)據(jù)傳輸未完成,轉(zhuǎn)到SI 10。
[0057]S109:判斷Count_fail是否小于服務(wù)器臺(tái)數(shù)(本實(shí)施例中服務(wù)器臺(tái)數(shù)為3),若是,將S107中有效的描述符的常用標(biāo)志置為_1(不可用狀態(tài))后轉(zhuǎn)到S103,否則轉(zhuǎn)到S102。
[0058]S110:判斷value是否小于單次DPI最大傳輸字節(jié)數(shù)(例如4.1024字節(jié)),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_blOCk加I后轉(zhuǎn)到Slll,否則表明要發(fā)送的數(shù)據(jù)量大于DPI的發(fā)送能力,需要分多次發(fā)送,繼續(xù)執(zhí)行S107。
[0059]Slll:判斷count_block是否小于N(N為正整數(shù),其具體數(shù)值根據(jù)測試經(jīng)驗(yàn)確定,本實(shí)施例中N定義為3,表明TCP數(shù)據(jù)傳輸?shù)姆?wù)器負(fù)載較重,需要負(fù)載均衡),若是,重新執(zhí)行S107;否則將S107中有效的描述符的常用標(biāo)志置為2后轉(zhuǎn)到S103。
[0060]S105的具體流程為:
[0061]S105a:定義DPI系統(tǒng)中服務(wù)器的ip為X,服務(wù)器所用的端口 y為ipxy(y根據(jù)上報(bào)業(yè)務(wù)的業(yè)務(wù)類型選擇,每種業(yè)務(wù)類型對應(yīng)不同的服務(wù)器端口),每個(gè)ipxy分別唯一對應(yīng)一個(gè)記錄前2個(gè)上報(bào)周期(假設(shè)每個(gè)上報(bào)周期為5min)發(fā)送的總時(shí)長ipXy.durati0n[2],ipxy.durat1n[0]對應(yīng)當(dāng)前時(shí)刻前10分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長,ipxy.durat1n[l]對應(yīng)當(dāng)前時(shí)刻前5分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長。ipxy.durat1n[0]和 ipxy.durat1n[ I ]的初始值均為O。
[0062]S105b:分別對當(dāng)前上報(bào)業(yè)務(wù)中攜帶的每個(gè)ipxy創(chuàng)建TCP連接,將socket存入每個(gè)ipxy連接的描述符。
[0063]S105c:計(jì)算每個(gè)ipxy的發(fā)送評分ipxyscore,計(jì)算公式為:ipxyscore =ipxy.durat1n[0].α+ipxy.durat1n[ I ].β;上述公式中α+β= I,針對不同的用戶α和β的比例可能會(huì)有差異,通過對某省匯聚平臺(tái)測試,得到最佳經(jīng)驗(yàn)值α趨近為0.3,β趨近為0.7。
[0064]S105d:判斷所有的ipxyscore是否相同,若是,選擇ipxy.durat1n[ I ]最小值的服務(wù)器ip,否則選擇所有的ipxyscore中最小值ipxyscore_min的服務(wù)器ip。
[0065]S105e:確定選擇的服務(wù)器ipx和端口 y為本次發(fā)送的目標(biāo)地址,將選擇的ipxy連接的描述符置為I,其他ipxy連接的描述符置為O后,保存至對應(yīng)的TCP文件連接描述符列表中。
[0066]本實(shí)施例上報(bào)業(yè)務(wù)包括通用類上報(bào)TASKl和流量流向類上報(bào)TASK2,TASK1對應(yīng)端口 I,TASK2對應(yīng)端口 2,服務(wù)器數(shù)量為3,ip分別為ipl,ip2和ip3。ipl和端口 I,ip2和端口 1、以及ip3和端口 I的ipxyscore,分別為ip 11 score、ip21 score和ip31 score。本實(shí)施例實(shí)施S105時(shí),當(dāng)上報(bào)業(yè)務(wù)為TASKl和TASKl時(shí),ipl lscore均為最小值,因此,sl05d中選擇的服務(wù)器ip為I。
[0067]在此基礎(chǔ)上,S107中進(jìn)行TCP數(shù)據(jù)傳輸后,需要根據(jù)傳輸?shù)纳蠄?bào)周期更新ipxy.durat1n[0]和ipxy.durat1n[I]。
[0068]參見圖2所示,本發(fā)明實(shí)施例中的基于上述方法的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的裝置,該裝置包括DPI系統(tǒng)初始化模塊、上報(bào)任務(wù)分配模塊、描述符列表選擇模塊、有效描述符判定模塊、TCP數(shù)據(jù)傳輸模塊、失敗計(jì)數(shù)判定模塊、阻塞判定模塊和阻塞計(jì)數(shù)判定模塊;
[0069]DPI系統(tǒng)初始化模塊用于:控制DPI系統(tǒng)啟動(dòng),初始化上報(bào)線程池的上報(bào)線程數(shù)目和上報(bào)隊(duì)列長度,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號;
[0070]上報(bào)任務(wù)分配模塊用于:收到上報(bào)任務(wù)分配信號后,控制上報(bào)線程池中的所有上報(bào)線程進(jìn)入等待狀態(tài),當(dāng)有上報(bào)任務(wù)加入至上報(bào)隊(duì)列時(shí),將上報(bào)任務(wù)分配至上報(bào)線程池中空閑的上報(bào)線程,向描述符列表選擇模塊發(fā)送描述符列表選擇信號;
[0071 ]描述符列表選擇模塊用于:收到描述符列表選擇信號后,根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對應(yīng)的TCP文件連接描述符列表,向有效描述符判定模塊發(fā)送有效描述符判定信號;
[0072]有效描述符判定模塊用于:收到有效描述符判定信號后,判斷TCP文件連接描述符列表中存在有效的描述符,若是,向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;否則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對應(yīng)的TCP文件連接描述符列表中,重新向描述符列表選擇模塊發(fā)送描述符列表選擇信號;
[0073]TCP數(shù)據(jù)傳輸模塊用于:收到TCP數(shù)據(jù)傳輸信號后,從有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸完成,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號;若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)Count_fail加I后向失敗計(jì)數(shù)判定模塊發(fā)送失敗計(jì)數(shù)判定信號,若value大于O且小于發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸未完成,向阻塞判定模塊發(fā)送阻塞判定信號;
[0074]失敗計(jì)數(shù)判定模塊用于:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后向描述符列表選擇模塊發(fā)送描述符列表選擇信號,否則向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號;
[0075]阻塞判定模塊用于:收到阻塞判定信號后,判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后向阻塞計(jì)數(shù)判定模塊發(fā)送阻塞計(jì)數(shù)判定信號,否則繼續(xù)向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;
[0076]阻塞計(jì)數(shù)判定模塊用于:判斷count_block是否小于正整數(shù)N,若是,重新向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后向描述符列表選擇模塊發(fā)送描述符列表選擇信號。
[0077]本發(fā)明不局限于上述實(shí)施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
【主權(quán)項(xiàng)】
1.一種DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,其特征在于,該方法包括以下步驟: A:DPI系統(tǒng)啟動(dòng),初始化上報(bào)線程池的上報(bào)線程數(shù)目和上報(bào)隊(duì)列長度,轉(zhuǎn)到步驟B; B:上報(bào)線程池中的所有上報(bào)線程進(jìn)入等待狀態(tài),當(dāng)有上報(bào)任務(wù)加入至上報(bào)隊(duì)列時(shí),將上報(bào)任務(wù)分配至上報(bào)線程池中空閑的上報(bào)線程,轉(zhuǎn)到步驟C; C:根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對應(yīng)的TCP文件連接描述符列表,轉(zhuǎn)到步驟D; D:判定TCP文件連接描述符列表中存在有效的描述符,選擇所述有效的描述符,轉(zhuǎn)到步驟E; E:從有效的描述符中調(diào)用s end函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸完成,轉(zhuǎn)到步驟B等待其他任務(wù)觸發(fā);若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)count_fai I加I后轉(zhuǎn)到步驟F,若value大于O且小于發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸未完成,轉(zhuǎn)到步驟G; F:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后轉(zhuǎn)到步驟C,否則轉(zhuǎn)到步驟B; G:判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后轉(zhuǎn)到步驟H,否則繼續(xù)執(zhí)行步驟E; H:判斷COunt_blOCk是否小于正整數(shù)N,若是,重新執(zhí)行步驟E;否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后轉(zhuǎn)到步驟C。2.如權(quán)利要求1所述的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,其特征在于:步驟D中若TCP文件連接描述符列表中不存在有效的描述符,則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對應(yīng)的TCP文件連接描述符列表中,重新執(zhí)行步驟C。3.如權(quán)利要求2所述的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,其特征在于:步驟D中所述根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為可用狀態(tài)I后保存至對應(yīng)的TCP文件連接描述符列表中的具體流程為: DOl:定義DPI系統(tǒng)中服務(wù)器的ip為X,服務(wù)器所用的端口 y為ipxy,y根據(jù)上報(bào)業(yè)務(wù)的業(yè)務(wù)類型選擇,每種業(yè)務(wù)類型對應(yīng)不同的服務(wù)器端口,每個(gè)ipxy分別唯一對應(yīng)一個(gè)記錄前2個(gè)上報(bào)周期發(fā)送的總時(shí)長ipxy.durat1n[2],每個(gè)上報(bào)周期為5min; ipxy.durat1n [O]對應(yīng)當(dāng)前時(shí)刻前10分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長,ipxy.durat1n[l]對應(yīng)當(dāng)前時(shí)刻前5分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長;丨口1^(11^^1:;[011[0]和丨口17.(111作1:;[011[1]的初始值均為O; D02:分別對當(dāng)前上報(bào)業(yè)務(wù)中攜帶的每個(gè)ipxy創(chuàng)建TCP連接,將socket存入每個(gè)ipxy連接的描述符; D03:計(jì)算每個(gè)ipxy的發(fā)送評分ipxy score,計(jì)算公式為:ipxyscore = ipxy.durat1n[O].α+ipxy.durat1n[I].β;上述公式中α+β= I; D04:判斷所有的ipxyscore是否相同,若是,選擇ipxy.durat1n[ I ]最小值的服務(wù)器ip,否則選擇所有的ipxyscore中最小值ipxyscore_min的服務(wù)器ip; D05:確定選擇的服務(wù)器ipx和端口y為本次發(fā)送的目標(biāo)地址,將選擇的ipxy連接的描述符置為I,其他ipxy連接的描述符置為初始狀態(tài)O后,保存至對應(yīng)的TCP文件連接描述符列表中。4.如權(quán)利要求3所述的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,其特征在于:步驟E中進(jìn)行TCP數(shù)據(jù)傳輸后,需要根據(jù)傳輸?shù)纳蠄?bào)周期更新ipxy.durat1n[O WPIipxy.durat1n[ I ]。5.如權(quán)利要求2所述的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,其特征在于:D中選擇所述有效的描述符的具體流程為:判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為I的描述符: 若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為I的描述符;否則判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為O的描述符: 若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為O的描述符、并將其常用標(biāo)志置為I,轉(zhuǎn)到步驟E;否則判斷TCP文件連接描述符列表中是否存在常用標(biāo)志為2的描述符: 若是,選擇TCP文件連接描述符中第一個(gè)常用標(biāo)志為2的描述符、并將其常用標(biāo)志置為I,轉(zhuǎn)到步驟E;否則確定TCP文件連接描述符列表中不存在有效的描述符。6.如權(quán)利要求1至5任一項(xiàng)所述的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,其特征在于:步驟B中確定上報(bào)任務(wù)加入至上報(bào)隊(duì)列的流程為:判斷上報(bào)線程的上報(bào)隊(duì)列是否為空,若是,則沒有上報(bào)任務(wù)加入到上報(bào)隊(duì)列,此時(shí)繼續(xù)執(zhí)行步驟B,否則有上報(bào)任務(wù)加入到上報(bào)隊(duì)列。7.如權(quán)利要求1至5任一項(xiàng)所述的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的方法,其特征在于:步驟D中所述判定TCP文件連接描述符列表中存在有效的描述符的流程為:判斷TCP文件連接描述符列表是否為空、且TCP文件連接描述符列表所有文件描述符的常用標(biāo)志均不為1,若是,則TCP文件連接描述符列表中不存在有效的描述符,否則TCP文件連接描述符列表中存在有效的描述符。8.—種基于權(quán)利要求1至7任一項(xiàng)所述方法的DPI系統(tǒng)中數(shù)據(jù)并發(fā)上報(bào)的裝置,其特征在于:該裝置包括DPI系統(tǒng)初始化模塊、上報(bào)任務(wù)分配模塊、描述符列表選擇模塊、有效描述符判定模塊、TCP數(shù)據(jù)傳輸模塊、失敗計(jì)數(shù)判定模塊、阻塞判定模塊和阻塞計(jì)數(shù)判定模塊; DPI系統(tǒng)初始化模塊用于:控制DPI系統(tǒng)啟動(dòng),初始化上報(bào)線程池的上報(bào)線程數(shù)目和上報(bào)隊(duì)列長度,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號; 上報(bào)任務(wù)分配模塊用于:收到上報(bào)任務(wù)分配信號后,控制上報(bào)線程池中的所有上報(bào)線程進(jìn)入等待狀態(tài),當(dāng)有上報(bào)任務(wù)加入至上報(bào)隊(duì)列時(shí),將上報(bào)任務(wù)分配至上報(bào)線程池中空閑的上報(bào)線程,向描述符列表選擇模塊發(fā)送描述符列表選擇信號; 描述符列表選擇模塊用于:收到描述符列表選擇信號后,根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對應(yīng)的TCP文件連接描述符列表,向有效描述符判定模塊發(fā)送有效描述符判定信號;有效描述符判定模塊用于:收到有效描述符判定信號后,判斷TCP文件連接描述符列表中存在有效的描述符,若是,向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;否則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對應(yīng)的TCP文件連接描述符列表中,重新向描述符列表選擇模塊發(fā)送描述符列表選擇信號; TCP數(shù)據(jù)傳輸模塊用于:收到TCP數(shù)據(jù)傳輸信號后,從有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸完成,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號;若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)count_f ail加I后向失敗計(jì)數(shù)判定模塊發(fā)送失敗計(jì)數(shù)判定信號,若value大于O且小于發(fā)送數(shù)據(jù)包的長度,則TCP數(shù)據(jù)傳輸未完成,向阻塞判定模塊發(fā)送阻塞判定信號;失敗計(jì)數(shù)判定模塊用于:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后向描述符列表選擇模塊發(fā)送描述符列表選擇信號,否則向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號; 阻塞判定模塊用于:收到阻塞判定信號后,判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后向阻塞計(jì)數(shù)判定模塊發(fā)送阻塞計(jì)數(shù)判定信號,否則繼續(xù)向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號; 阻塞計(jì)數(shù)判定模塊用于:判斷coun t_b I ο ck是否小于正整數(shù)N,若是,重新向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號;否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后向描述符列表選擇模塊發(fā)送描述符列表選擇信號。
【文檔編號】H04L12/825GK105847179SQ201610167800
【公開日】2016年8月10日
【申請日】2016年3月23日
【發(fā)明人】程波, 侯賀明
【申請人】武漢綠色網(wǎng)絡(luò)信息服務(wù)有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1