国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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

      [0005]針對(duì)現(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ì)列長(zhǎng)度,轉(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ù)類型,選擇對(duì)應(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ù)包的長(zhǎng)度,則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ù)包的長(zhǎng)度,則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后保存至對(duì)應(yīng)的TCP文件連接描述符列表中,重新執(zhí)行步驟C。
      [0016]在上述技術(shù)方案的基礎(chǔ)上,步驟D中所述根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為可用狀態(tài)I后保存至對(duì)應(yīng)的TCP文件連接描述符列表中的具體流程為:
      [0017]D01:定義DPI系統(tǒng)中服務(wù)器的ip為X,服務(wù)器所用的端口 y為ipxy,y根據(jù)上報(bào)業(yè)務(wù)的業(yè)務(wù)類型選擇,每種業(yè)務(wù)類型對(duì)應(yīng)不同的服務(wù)器端口,每個(gè)ipxy分別唯一對(duì)應(yīng)一個(gè)記錄前2個(gè)上報(bào)周期發(fā)送的總時(shí)長(zhǎng)ipxy.durat1n[2],每個(gè)上報(bào)周期為5min; ipxy.durat1n[0]對(duì)應(yīng)當(dāng)前時(shí)刻前10分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長(zhǎng),ipxy.durat1n[l]對(duì)應(yīng)當(dāng)前時(shí)刻前5分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長(zhǎng);ipxy.durat1n[0]和ipxy.durat1n[I]的初始值均為0;
      [0018]D02:分別對(duì)當(dāng)前上報(bào)業(yè)務(wù)中攜帶的每個(gè)ipxy創(chuàng)建TCP連接,將socket存入每個(gè)ipxy連接的描述符;
      [0019]D03:計(jì)算每個(gè)ipxy的發(fā)送評(píng)分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后,保存至對(duì)應(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ì)列長(zhǎng)度,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào);
      [0031 ]上報(bào)任務(wù)分配模塊用于:收到上報(bào)任務(wù)分配信號(hào)后,控制上報(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ā)送描述符列表選擇信號(hào);
      [0032]描述符列表選擇模塊用于:收到描述符列表選擇信號(hào)后,根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對(duì)應(yīng)的TCP文件連接描述符列表,向有效描述符判定模塊發(fā)送有效描述符判定信號(hào);
      [0033]有效描述符判定模塊用于:收到有效描述符判定信號(hào)后,判斷TCP文件連接描述符列表中存在有效的描述符,若是,向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);否則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對(duì)應(yīng)的TCP文件連接描述符列表中,重新向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào);
      [0034]TCP數(shù)據(jù)傳輸模塊用于:收到TCP數(shù)據(jù)傳輸信號(hào)后,從有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長(zhǎng)度,則TCP數(shù)據(jù)傳輸完成,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào);若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)Count_fail加I后向失敗計(jì)數(shù)判定模塊發(fā)送失敗計(jì)數(shù)判定信號(hào),若value大于O且小于發(fā)送數(shù)據(jù)包的長(zhǎng)度,則TCP數(shù)據(jù)傳輸未完成,向阻塞判定模塊發(fā)送阻塞判定信號(hào);
      [0035]失敗計(jì)數(shù)判定模塊用于:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào),否則向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào);
      [0036]阻塞判定模塊用于:收到阻塞判定信號(hào)后,判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后向阻塞計(jì)數(shù)判定模塊發(fā)送阻塞計(jì)數(shù)判定信號(hào),否則繼續(xù)向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);
      [0037]阻塞計(jì)數(shù)判定模塊用于:判斷count_block是否小于正整數(shù)N,若是,重新向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào)。
      [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)的裝置的信號(hào)流向示意圖。
      【具體實(shí)施方式】
      [0042]以下結(jié)合附圖及實(shí)施例對(duì)本發(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ì)列長(zhǎng)度等,轉(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ù)類型,選擇對(duì)應(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后保存至對(duì)應(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ù)包的長(zhǎng)度,貝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ù)包的長(zhǎng)度,貝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ù)測(cè)試經(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ù)類型對(duì)應(yīng)不同的服務(wù)器端口),每個(gè)ipxy分別唯一對(duì)應(yīng)一個(gè)記錄前2個(gè)上報(bào)周期(假設(shè)每個(gè)上報(bào)周期為5min)發(fā)送的總時(shí)長(zhǎng)ipXy.durati0n[2],ipxy.durat1n[0]對(duì)應(yīng)當(dāng)前時(shí)刻前10分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長(zhǎng),ipxy.durat1n[l]對(duì)應(yīng)當(dāng)前時(shí)刻前5分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長(zhǎng)。ipxy.durat1n[0]和 ipxy.durat1n[ I ]的初始值均為O。
      [0062]S105b:分別對(duì)當(dāng)前上報(bào)業(yè)務(wù)中攜帶的每個(gè)ipxy創(chuàng)建TCP連接,將socket存入每個(gè)ipxy連接的描述符。
      [0063]S105c:計(jì)算每個(gè)ipxy的發(fā)送評(píng)分ipxyscore,計(jì)算公式為:ipxyscore =ipxy.durat1n[0].α+ipxy.durat1n[ I ].β;上述公式中α+β= I,針對(duì)不同的用戶α和β的比例可能會(huì)有差異,通過對(duì)某省匯聚平臺(tái)測(cè)試,得到最佳經(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后,保存至對(duì)應(yīng)的TCP文件連接描述符列表中。
      [0066]本實(shí)施例上報(bào)業(yè)務(wù)包括通用類上報(bào)TASKl和流量流向類上報(bào)TASK2,TASK1對(duì)應(yīng)端口 I,TASK2對(duì)應(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ì)列長(zhǎng)度,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào);
      [0070]上報(bào)任務(wù)分配模塊用于:收到上報(bào)任務(wù)分配信號(hào)后,控制上報(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ā)送描述符列表選擇信號(hào);
      [0071 ]描述符列表選擇模塊用于:收到描述符列表選擇信號(hào)后,根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對(duì)應(yīng)的TCP文件連接描述符列表,向有效描述符判定模塊發(fā)送有效描述符判定信號(hào);
      [0072]有效描述符判定模塊用于:收到有效描述符判定信號(hào)后,判斷TCP文件連接描述符列表中存在有效的描述符,若是,向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);否則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對(duì)應(yīng)的TCP文件連接描述符列表中,重新向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào);
      [0073]TCP數(shù)據(jù)傳輸模塊用于:收到TCP數(shù)據(jù)傳輸信號(hào)后,從有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長(zhǎng)度,則TCP數(shù)據(jù)傳輸完成,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào);若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)Count_fail加I后向失敗計(jì)數(shù)判定模塊發(fā)送失敗計(jì)數(shù)判定信號(hào),若value大于O且小于發(fā)送數(shù)據(jù)包的長(zhǎng)度,則TCP數(shù)據(jù)傳輸未完成,向阻塞判定模塊發(fā)送阻塞判定信號(hào);
      [0074]失敗計(jì)數(shù)判定模塊用于:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào),否則向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào);
      [0075]阻塞判定模塊用于:收到阻塞判定信號(hào)后,判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后向阻塞計(jì)數(shù)判定模塊發(fā)送阻塞計(jì)數(shù)判定信號(hào),否則繼續(xù)向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);
      [0076]阻塞計(jì)數(shù)判定模塊用于:判斷count_block是否小于正整數(shù)N,若是,重新向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào)。
      [0077]本發(fā)明不局限于上述實(shí)施方式,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rù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ì)列長(zhǎng)度,轉(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ù)類型,選擇對(duì)應(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ù)包的長(zhǎng)度,則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ù)包的長(zhǎng)度,則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后保存至對(duì)應(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后保存至對(duì)應(yīng)的TCP文件連接描述符列表中的具體流程為: DOl:定義DPI系統(tǒng)中服務(wù)器的ip為X,服務(wù)器所用的端口 y為ipxy,y根據(jù)上報(bào)業(yè)務(wù)的業(yè)務(wù)類型選擇,每種業(yè)務(wù)類型對(duì)應(yīng)不同的服務(wù)器端口,每個(gè)ipxy分別唯一對(duì)應(yīng)一個(gè)記錄前2個(gè)上報(bào)周期發(fā)送的總時(shí)長(zhǎng)ipxy.durat1n[2],每個(gè)上報(bào)周期為5min; ipxy.durat1n [O]對(duì)應(yīng)當(dāng)前時(shí)刻前10分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長(zhǎng),ipxy.durat1n[l]對(duì)應(yīng)當(dāng)前時(shí)刻前5分鐘上報(bào)周期內(nèi)TCP發(fā)送所占用總時(shí)長(zhǎng);丨口1^(11^^1:;[011[0]和丨口17.(111作1:;[011[1]的初始值均為O; D02:分別對(duì)當(dāng)前上報(bào)業(yè)務(wù)中攜帶的每個(gè)ipxy創(chuàng)建TCP連接,將socket存入每個(gè)ipxy連接的描述符; D03:計(jì)算每個(gè)ipxy的發(fā)送評(píng)分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后,保存至對(duì)應(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ì)列長(zhǎng)度,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào); 上報(bào)任務(wù)分配模塊用于:收到上報(bào)任務(wù)分配信號(hào)后,控制上報(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ā)送描述符列表選擇信號(hào); 描述符列表選擇模塊用于:收到描述符列表選擇信號(hào)后,根據(jù)上報(bào)任務(wù)的業(yè)務(wù)類型,選擇對(duì)應(yīng)的TCP文件連接描述符列表,向有效描述符判定模塊發(fā)送有效描述符判定信號(hào);有效描述符判定模塊用于:收到有效描述符判定信號(hào)后,判斷TCP文件連接描述符列表中存在有效的描述符,若是,向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);否則根據(jù)歷史發(fā)送狀態(tài),選擇合適的描述符、并將其常用標(biāo)志置為I后保存至對(duì)應(yīng)的TCP文件連接描述符列表中,重新向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào); TCP數(shù)據(jù)傳輸模塊用于:收到TCP數(shù)據(jù)傳輸信號(hào)后,從有效的描述符中調(diào)用send函數(shù),進(jìn)行TCP數(shù)據(jù)傳輸;查看send函數(shù)的返回值value:若value為發(fā)送數(shù)據(jù)包的長(zhǎng)度,則TCP數(shù)據(jù)傳輸完成,向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào);若value小于O,則TCP數(shù)據(jù)傳輸失敗,將發(fā)送失敗計(jì)數(shù)count_f ail加I后向失敗計(jì)數(shù)判定模塊發(fā)送失敗計(jì)數(shù)判定信號(hào),若value大于O且小于發(fā)送數(shù)據(jù)包的長(zhǎng)度,則TCP數(shù)據(jù)傳輸未完成,向阻塞判定模塊發(fā)送阻塞判定信號(hào);失敗計(jì)數(shù)判定模塊用于:判斷count_fail是否小于服務(wù)器臺(tái)數(shù),若是,將所述有效的描述符的常用標(biāo)志置為不可用狀態(tài)-1后向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào),否則向上報(bào)任務(wù)分配模塊發(fā)送上報(bào)任務(wù)分配信號(hào); 阻塞判定模塊用于:收到阻塞判定信號(hào)后,判斷value是否小于單次DPI最大傳輸字節(jié)數(shù),若是,則發(fā)送阻塞,將發(fā)送阻塞計(jì)數(shù)count_block加I后向阻塞計(jì)數(shù)判定模塊發(fā)送阻塞計(jì)數(shù)判定信號(hào),否則繼續(xù)向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào); 阻塞計(jì)數(shù)判定模塊用于:判斷coun t_b I ο ck是否小于正整數(shù)N,若是,重新向TCP數(shù)據(jù)傳輸模塊發(fā)送TCP數(shù)據(jù)傳輸信號(hào);否則將所述有效的描述符的常用標(biāo)志置為阻塞狀態(tài)2后向描述符列表選擇模塊發(fā)送描述符列表選擇信號(hào)。
      【文檔編號(hào)】H04L12/825GK105847179SQ201610167800
      【公開日】2016年8月10日
      【申請(qǐng)日】2016年3月23日
      【發(fā)明人】程波, 侯賀明
      【申請(qǐng)人】武漢綠色網(wǎng)絡(luò)信息服務(wù)有限責(zé)任公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1