本發(fā)明屬于電力系統(tǒng)通訊網(wǎng)絡(luò)報(bào)文記錄分析領(lǐng)域,尤其涉及到變電站內(nèi)的goose、sv、mms、104通訊報(bào)文抓取及分析技術(shù)。
背景技術(shù):
隨著電力系統(tǒng)網(wǎng)絡(luò)化和智能化的發(fā)展進(jìn)程,查詢網(wǎng)絡(luò)故障原因就需要網(wǎng)絡(luò)報(bào)文記錄分析儀長期高效穩(wěn)定運(yùn)行,當(dāng)網(wǎng)絡(luò)故障發(fā)生時(shí),可以提供現(xiàn)場證據(jù)和問題分析的依據(jù),所以提供長期高效穩(wěn)定運(yùn)行的網(wǎng)絡(luò)分析儀非常有必要。
目前,電力系統(tǒng)的網(wǎng)絡(luò)報(bào)文記錄分析多采用fpga進(jìn)行報(bào)文抓取,并需要進(jìn)行從fpga到內(nèi)核,內(nèi)核到應(yīng)用進(jìn)程,應(yīng)用進(jìn)程內(nèi)的多次拷貝過程,導(dǎo)致報(bào)文記錄和分析的效率下降,報(bào)文流量大時(shí)容易丟包,并且長時(shí)間運(yùn)行不穩(wěn)定,容易形成過多內(nèi)存碎片,導(dǎo)致記錄裝置故障的問題。解決以上問題的關(guān)鍵就在于提供一種可以解決上述問題的長期高效穩(wěn)定運(yùn)行的報(bào)文處理方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于,克服現(xiàn)有處理方式的不足,提供一種電力系統(tǒng)網(wǎng)絡(luò)報(bào)文處理方法,提高處理的效率和長期運(yùn)行穩(wěn)定性,為網(wǎng)絡(luò)故障分析提供可靠依據(jù)。
為了實(shí)現(xiàn)以上目的,本發(fā)明采用的技術(shù)方案是:
基于二級緩存的報(bào)文記錄分析方法,包含以下步驟:
步驟1:分配一級緩存、二級緩存,設(shè)置物理網(wǎng)卡進(jìn)入監(jiān)聽模式;
步驟2:物理網(wǎng)卡接收到報(bào)文數(shù)據(jù)后,直接dma方式將報(bào)文數(shù)據(jù)拷貝到一級緩存,并通知協(xié)議解析模塊,將報(bào)文數(shù)據(jù)首地址傳遞給協(xié)議解析模塊;
步驟4:協(xié)議解析模塊接收到報(bào)文數(shù)據(jù)首地址后,進(jìn)行協(xié)議解析,并將解析結(jié)果組織成業(yè)務(wù)邏輯數(shù)據(jù)結(jié)構(gòu)壓入二級緩存,同時(shí)通知業(yè)務(wù)邏輯模塊;
步驟5:業(yè)務(wù)邏輯模塊接收到協(xié)議解析模塊的通知后,直接彈出二級緩存內(nèi)緩存的業(yè)務(wù)邏輯數(shù)據(jù)結(jié)構(gòu)并進(jìn)行業(yè)務(wù)邏輯處理。
進(jìn)一步的,步驟1中一級緩存分配于內(nèi)核高端內(nèi)存區(qū)域,并映射成共享區(qū)域,按照2048字節(jié)為單位的報(bào)文數(shù)據(jù)塊進(jìn)行組織。
進(jìn)一步的,步驟2中當(dāng)物理網(wǎng)卡接收到報(bào)文數(shù)據(jù)后,物理網(wǎng)卡觸發(fā)硬件中斷激活內(nèi)核網(wǎng)卡數(shù)據(jù)中斷處理函數(shù),處理函數(shù)在一級緩存中尋找空閑報(bào)文數(shù)據(jù)塊,并啟動dma方式將報(bào)文數(shù)據(jù)從物理網(wǎng)卡緩存拷貝到一級緩存空閑的報(bào)文數(shù)據(jù)塊中。
進(jìn)一步的,步驟3中協(xié)議解析模塊直接獲取報(bào)文數(shù)據(jù)首地址而不進(jìn)行報(bào)文數(shù)據(jù)的拷貝。
進(jìn)一步的,步驟3中協(xié)議解析模塊在完成協(xié)議解析后立即釋放掉報(bào)文數(shù)據(jù)對應(yīng)的一級緩存。
進(jìn)一步的,步驟3中的二級緩存分配于操作系統(tǒng)應(yīng)用空間,采用隊(duì)列實(shí)現(xiàn),由協(xié)議解析模塊向隊(duì)列壓入數(shù)據(jù),由業(yè)務(wù)邏輯模塊從隊(duì)列彈出數(shù)據(jù)。
進(jìn)一步的,協(xié)議解析模塊和業(yè)務(wù)邏輯模塊相互獨(dú)立,當(dāng)二級緩存沒有數(shù)據(jù)時(shí),業(yè)務(wù)邏輯模塊將進(jìn)入睡眠狀態(tài)。
本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下有益效果:
降低了報(bào)文數(shù)據(jù)拷貝次數(shù),增加系統(tǒng)處理效率,降低內(nèi)存碎片率,提高系統(tǒng)穩(wěn)定性;二級緩存增加了大流量數(shù)據(jù)的處理能力,避免因?yàn)闃I(yè)務(wù)邏輯處理緩慢導(dǎo)致的丟包。
附圖說明
圖1是本發(fā)明的報(bào)文處理方法示意圖;
圖2是二級緩存的結(jié)構(gòu);
圖3是一級緩存的結(jié)構(gòu)。
具體實(shí)施方式
下面結(jié)合說明書附圖,對本發(fā)明作進(jìn)一步的說明。
如圖1所示,本發(fā)明提供一種基于兩級緩存的報(bào)文處理方法,包括以下步驟:
步驟1:內(nèi)核在啟動時(shí),劃分出一塊高端內(nèi)存空間作為一級緩存,將該內(nèi)存空間映射成共享區(qū)域,并以2048字節(jié)的報(bào)文數(shù)據(jù)塊進(jìn)行組織,如圖3所示;內(nèi)核初始化物理網(wǎng)卡進(jìn)入監(jiān)聽模式,同時(shí)設(shè)置網(wǎng)卡數(shù)據(jù)中斷處理程序,并初始化dma控制器;
步驟2:協(xié)議解析模塊和業(yè)務(wù)邏輯模塊在啟動時(shí),初始化二級緩存,并打開內(nèi)核提供的報(bào)文通知接口,監(jiān)聽內(nèi)核的報(bào)文數(shù)據(jù)通知;二級緩存采用隊(duì)列實(shí)現(xiàn),如圖2所示;
步驟3:當(dāng)物理網(wǎng)卡接收到報(bào)文數(shù)據(jù),物理網(wǎng)卡觸發(fā)硬件中斷激活內(nèi)核網(wǎng)卡數(shù)據(jù)中斷處理函數(shù),處理函數(shù)在一級緩存中尋找空閑報(bào)文數(shù)據(jù)塊,并啟動dma(直接內(nèi)存存?。┲苯訉?bào)文數(shù)據(jù)從物理網(wǎng)卡緩存拷貝到空閑一級緩存報(bào)文數(shù)據(jù)塊;
步驟4:dma完成報(bào)文數(shù)據(jù)拷貝后,內(nèi)核通知協(xié)議解析模塊收到報(bào)文數(shù)據(jù),并將一級緩存報(bào)文數(shù)據(jù)塊首地址傳遞給協(xié)議解析模塊;
步驟5:協(xié)議解析模塊收到報(bào)文數(shù)據(jù)塊首地址后,解析報(bào)文數(shù)據(jù)形成業(yè)務(wù)邏輯數(shù)據(jù)結(jié)構(gòu),并將業(yè)務(wù)邏輯數(shù)據(jù)結(jié)構(gòu)壓入二級緩存,同時(shí)釋放一級緩存報(bào)文數(shù)據(jù)塊,并通知業(yè)務(wù)邏輯模塊;
步驟6:業(yè)務(wù)邏輯模塊接收到協(xié)議分析模塊的通知后,從二級緩存彈出業(yè)務(wù)邏輯數(shù)據(jù)結(jié)構(gòu),并進(jìn)行業(yè)務(wù)邏輯處理;當(dāng)二級緩存為空時(shí),業(yè)務(wù)邏輯模塊將進(jìn)入睡眠狀態(tài)。
以上顯示和描述了本發(fā)明的基本原理、主要特征及優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。