一種支持小業(yè)務(wù)的流量處理電路及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)通信技術(shù),涉及一種支持小業(yè)務(wù)的流量處理電路及方法。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)檢測(cè)系統(tǒng)中,需要對(duì)網(wǎng)絡(luò)中捕獲到的各種業(yè)務(wù)流進(jìn)行統(tǒng)計(jì)分析,業(yè)務(wù)流量具有動(dòng)態(tài)變化的特征,流量網(wǎng)絡(luò)呈現(xiàn)出“大象和老鼠”的關(guān)系,即網(wǎng)絡(luò)中大部分的業(yè)務(wù)流占據(jù)了很少的流量,而少部分的業(yè)務(wù)流占據(jù)了大部分流量。尤其對(duì)于高速鏈路實(shí)時(shí)監(jiān)控時(shí),由于檢測(cè)系統(tǒng)的存儲(chǔ)能力有限,往往會(huì)丟失小流量業(yè)務(wù)(稱為小業(yè)務(wù))的數(shù)據(jù),嚴(yán)重影響網(wǎng)絡(luò)統(tǒng)計(jì)特性的分析,如業(yè)務(wù)流大小分布、數(shù)據(jù)包長(zhǎng)度分布等。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是:提供一種支持小業(yè)務(wù)的流量處理電路及方法,解決現(xiàn)有技術(shù)中小業(yè)務(wù)的流量數(shù)據(jù)丟失進(jìn)而影響網(wǎng)絡(luò)通緝特性分析的問題。
[0004]本發(fā)明的技術(shù)方案是:
[0005]一種支持小業(yè)務(wù)的流量處理電路,其特殊之處在于,
[0006]所述支持小業(yè)務(wù)的流量處理電路包括寄存器訪問接口、N個(gè)業(yè)務(wù)流管理器、業(yè)務(wù)流調(diào)度器、鏈表存儲(chǔ)器管理器、出隊(duì)控制器以及入隊(duì)控制器;
[0007]所述鏈表存儲(chǔ)器管理器包括入隊(duì)狀態(tài)機(jī)、出隊(duì)狀態(tài)機(jī)、業(yè)務(wù)流鏈表存儲(chǔ)器、業(yè)務(wù)流頭尾指針存儲(chǔ)器以及空閑流頭尾指針寄存器;
[0008]所述業(yè)務(wù)流管理器包括計(jì)時(shí)器、幀計(jì)數(shù)器、配置寄存器、譯碼器以及存儲(chǔ)器釋放控制器;
[0009]所述寄存器訪問接口的輸出端接入業(yè)務(wù)流管理器中的配置寄存器;
[0010]所述入隊(duì)控制器的輸出端分別接入業(yè)務(wù)流管理器的譯碼器、幀計(jì)數(shù)器和鏈表存儲(chǔ)器管理器的入隊(duì)狀態(tài)機(jī);
[0011]N個(gè)業(yè)務(wù)流管理器的計(jì)時(shí)器將各自的調(diào)度請(qǐng)求發(fā)送給業(yè)務(wù)流調(diào)度器;業(yè)務(wù)流調(diào)度器根據(jù)N個(gè)業(yè)務(wù)流管理器的優(yōu)先級(jí)調(diào)度出一個(gè)請(qǐng)求,把調(diào)度完成信號(hào)及獲得調(diào)度的業(yè)務(wù)流的ID號(hào)輸出給鏈表存儲(chǔ)器管理器的出隊(duì)狀態(tài)機(jī);
[0012]出隊(duì)狀態(tài)機(jī)的輸出端接入業(yè)務(wù)流管理器的幀計(jì)數(shù)器;
[0013]出隊(duì)控制器分別與業(yè)務(wù)流調(diào)度器和鏈表存儲(chǔ)器管理器的出隊(duì)狀態(tài)機(jī)連接;出隊(duì)控制器輸出端還連接至計(jì)時(shí)器用于啟動(dòng)計(jì)時(shí)器;
[0014]存儲(chǔ)器釋放控制器受計(jì)時(shí)器和幀計(jì)數(shù)器控制輸出使能或禁止信號(hào)給入隊(duì)狀態(tài)機(jī);
[0015]業(yè)務(wù)流鏈表存儲(chǔ)器、業(yè)務(wù)流頭尾指針存儲(chǔ)器以及空閑流頭尾指針寄存器均受出隊(duì)狀態(tài)機(jī)和入隊(duì)狀態(tài)機(jī)的控制;
[0016]配置寄存器配置計(jì)時(shí)器的最大值。
[0017]上述業(yè)務(wù)流調(diào)度器是一組多路選擇器。
[0018]上述業(yè)務(wù)流鏈表存儲(chǔ)器和業(yè)務(wù)流頭尾指針存儲(chǔ)器均由雙端口存儲(chǔ)器構(gòu)成。
[0019]一種支持小業(yè)務(wù)的流量處理方法,其特殊之處在于,包括如下步驟:
[0020]I】系統(tǒng)上電復(fù)位后,處理器通過寄存器訪問接口對(duì)N個(gè)業(yè)務(wù)流管理器內(nèi)部的配置寄存器進(jìn)行初始化,設(shè)置相鄰兩次數(shù)據(jù)幀提交的最小時(shí)間間隔,并使計(jì)時(shí)器和幀計(jì)數(shù)器清零;
[0021]上電復(fù)位后,業(yè)務(wù)流頭尾指針存儲(chǔ)器自動(dòng)載入初始化值;業(yè)務(wù)流頭尾指針存儲(chǔ)器用于存儲(chǔ)N個(gè)業(yè)務(wù)流隊(duì)列的頭指針和尾指針;
[0022]2】對(duì)入隊(duì)控制器接收到某個(gè)ID的業(yè)務(wù)流的第一幀數(shù)據(jù)的處理:
[0023]2.1】入隊(duì)控制器把該幀數(shù)據(jù)的控制字發(fā)送給業(yè)務(wù)流管理器中的譯碼器和鏈表存儲(chǔ)器管理器的入隊(duì)狀態(tài)機(jī),控制字包括該幀所在業(yè)務(wù)流的ID號(hào),入隊(duì)控制器輸出入隊(duì)請(qǐng)求信號(hào)給入隊(duì)狀態(tài)機(jī);
[0024]2.2】業(yè)務(wù)流管理器的譯碼器根據(jù)入隊(duì)控制器提供的所在業(yè)務(wù)流的ID號(hào)從N個(gè)業(yè)務(wù)流管理器中選出當(dāng)前數(shù)據(jù)幀對(duì)應(yīng)的業(yè)務(wù)流管理器;
[0025]同時(shí),鏈表存儲(chǔ)器管理器的入隊(duì)狀態(tài)機(jī)根據(jù)入隊(duì)控制器提供的數(shù)據(jù)的控制字和入隊(duì)控制器輸出的入隊(duì)請(qǐng)求信號(hào)進(jìn)行入隊(duì)操作,入隊(duì)完成后,入隊(duì)狀態(tài)機(jī)通知當(dāng)前數(shù)據(jù)幀對(duì)應(yīng)的業(yè)務(wù)流管理器中的幀計(jì)數(shù)器加一;
[0026]2.3】當(dāng)前幀對(duì)應(yīng)的業(yè)務(wù)流管理器的計(jì)時(shí)器向業(yè)務(wù)流調(diào)度器發(fā)出調(diào)度請(qǐng)求;
[0027]2.4】當(dāng)調(diào)度請(qǐng)求被業(yè)務(wù)流調(diào)度器調(diào)度成功后,業(yè)務(wù)流調(diào)度器向出隊(duì)控制器發(fā)送指示信號(hào),同時(shí)向出隊(duì)狀態(tài)機(jī)發(fā)送調(diào)度成功的業(yè)務(wù)流的ID號(hào)及調(diào)度完成指示信號(hào),出隊(duì)狀態(tài)機(jī)控制出隊(duì)控制器完成出隊(duì)操作,出隊(duì)完成后,出隊(duì)狀態(tài)機(jī)通知當(dāng)前數(shù)據(jù)幀對(duì)應(yīng)的業(yè)務(wù)流管理器中的幀計(jì)數(shù)器減一,同時(shí)出隊(duì)控制器啟動(dòng)計(jì)時(shí)器;
[0028]3】入隊(duì)控制器等待新幀到來;
[0029]4】如果入隊(duì)控制器接收到新幀,依次執(zhí)行步驟2.1】、2.2】、4.1】和2.4】,重復(fù)步驟31;
[0030]步驟4.1】:當(dāng)計(jì)時(shí)器計(jì)時(shí)到步驟I所配置的最小時(shí)間間隔且該業(yè)務(wù)流管理器內(nèi)部的幀計(jì)數(shù)器不為O時(shí),計(jì)時(shí)器向業(yè)務(wù)調(diào)度器發(fā)送調(diào)度請(qǐng)求;同時(shí)存儲(chǔ)器釋放控制器使能,即該幀數(shù)據(jù)發(fā)送后,會(huì)釋放所占用的鏈表存儲(chǔ)器空間;
[0031]當(dāng)計(jì)時(shí)器計(jì)時(shí)到步驟I所配置的最小時(shí)間間隔且該業(yè)務(wù)流管理器內(nèi)部的幀計(jì)數(shù)器為O時(shí),但若該ID號(hào)的業(yè)務(wù)流已經(jīng)發(fā)送過一幀數(shù)據(jù)后,計(jì)時(shí)器開始計(jì)時(shí),當(dāng)計(jì)時(shí)到步驟I所配置的最小時(shí)間間隔,計(jì)時(shí)器向業(yè)務(wù)調(diào)度器發(fā)送調(diào)度請(qǐng)求;同時(shí)存儲(chǔ)器釋放控制器禁止,即該幀數(shù)據(jù)發(fā)送后,不會(huì)釋放所占用的鏈表存儲(chǔ)器空間,并在下一次計(jì)時(shí)超過最小時(shí)間間隔時(shí),重復(fù)發(fā)送該幀數(shù)據(jù)。
[0032]上述步驟2.2】中入隊(duì)狀態(tài)機(jī)控制完成入隊(duì)操作的具體過程是:
[0033]2.21】當(dāng)鏈表存儲(chǔ)器管理器的入隊(duì)狀態(tài)機(jī)檢測(cè)到入隊(duì)控制器輸出的入隊(duì)請(qǐng)求信號(hào)有效時(shí),將來自入隊(duì)控制器的當(dāng)前入隊(duì)業(yè)務(wù)流的ID號(hào),作為業(yè)務(wù)流頭尾指針存儲(chǔ)器的地址讀業(yè)務(wù)流頭尾指針存儲(chǔ)器,獲取該業(yè)務(wù)流隊(duì)列的尾指針;
[0034]2.22】入隊(duì)狀態(tài)機(jī)將步驟2.21】中獲取的該業(yè)務(wù)流隊(duì)列的尾指針作為業(yè)務(wù)流鏈表存儲(chǔ)器的地址,將空閑流頭指針及入隊(duì)的數(shù)據(jù)幀的控制字寫入業(yè)務(wù)流鏈表存儲(chǔ)器;然后,將入隊(duì)的數(shù)據(jù)幀對(duì)應(yīng)的業(yè)務(wù)流管理器內(nèi)部的幀計(jì)數(shù)器加I ;
[0035]2.23】入隊(duì)狀態(tài)機(jī)將步驟2.21】中入隊(duì)的業(yè)務(wù)流隊(duì)列的ID號(hào)作為地址,向業(yè)務(wù)流頭尾指針存儲(chǔ)器寫入空閑流頭指針;同時(shí),用空閑流頭指針作為業(yè)務(wù)流鏈表存儲(chǔ)器的地址讀業(yè)務(wù)流鏈表存儲(chǔ)器;
[0036]2.24】入隊(duì)狀態(tài)機(jī)用步驟2.23】中從業(yè)務(wù)流鏈表存儲(chǔ)器讀出的數(shù)據(jù)更新空閑流頭指針,入隊(duì)完成。
[0037]上述步驟2.4】中,出隊(duì)狀態(tài)機(jī)控制完成出隊(duì)操作的具體過程是:
[0038]2.41】當(dāng)鏈表存儲(chǔ)器管理器的出隊(duì)狀態(tài)機(jī)根據(jù)業(yè)務(wù)流調(diào)度器輸入的業(yè)務(wù)流的ID號(hào)作為業(yè)務(wù)流頭尾指針存儲(chǔ)器的地址讀業(yè)務(wù)流頭尾指針存儲(chǔ)器,獲取該業(yè)務(wù)流隊(duì)列的頭指針;
[0039]2.42】出隊(duì)狀態(tài)機(jī)將步驟2.41】獲得的頭指針作為業(yè)務(wù)流鏈表存儲(chǔ)器的地址去讀業(yè)務(wù)流鏈表存儲(chǔ)器,讀出要出隊(duì)的數(shù)據(jù)幀的控制字;
[0040]2.43】出隊(duì)狀態(tài)機(jī)將步驟2.42】讀出的控制字輸出給出隊(duì)控制器發(fā)送;
[0041]2.44】出隊(duì)狀態(tài)機(jī)根據(jù)當(dāng)前調(diào)度到的業(yè)務(wù)流的業(yè)務(wù)流管理器內(nèi)部的存儲(chǔ)器釋放控制器使能或禁止來決定是否要釋放業(yè)務(wù)流鏈表存儲(chǔ)器,如果要釋放,則繼續(xù)步驟2.45】,否貝1J,直接進(jìn)入空閑狀態(tài);
[0042]2.45】出隊(duì)狀態(tài)機(jī)將該業(yè)務(wù)流隊(duì)列的頭指針更新為步驟2.41】讀出的頭指針,同時(shí)該業(yè)務(wù)流對(duì)應(yīng)的業(yè)務(wù)流管理器內(nèi)部的幀計(jì)數(shù)器減I ;
[0043]2.46】出隊(duì)狀態(tài)機(jī)用剛出隊(duì)的業(yè)務(wù)流隊(duì)列的頭指針更新空閑流尾指針,出隊(duì)完成。
[0044]本發(fā)明的優(yōu)點(diǎn)是:
[0045]通用性好:本發(fā)明適用于以太網(wǎng)、FC、1394等網(wǎng)絡(luò),可以方便的應(yīng)用到這些網(wǎng)絡(luò)的實(shí)時(shí)數(shù)據(jù)采集分析系統(tǒng)中。
[0046]易于擴(kuò)展:該電路對(duì)小業(yè)務(wù)流