亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于通信的列車控制系統(tǒng)數(shù)據(jù)采集與解析軟件的設(shè)計(jì)與實(shí)現(xiàn)*

        2018-11-02 06:35:18白廣爭白廣良
        城市軌道交通研究 2018年10期
        關(guān)鍵詞:程序數(shù)據(jù)庫

        白廣爭 李 亮 白廣良

        (1.中國鐵道科學(xué)研究院通信信號(hào)研究所,100081,北京;2. 中國石油遼河油田興隆臺(tái)采油廠,124011,盤錦 //第一作者,助理研究員)

        CBTC(基于通信的列車控制)系統(tǒng)包括CBI(計(jì)算機(jī)聯(lián)鎖)、ATS(列車自動(dòng)監(jiān)控)、VOBC(車載控制器)、ZC(區(qū)域控制器)和DCS(數(shù)據(jù)通信)等子系統(tǒng)[1]。各子系統(tǒng)之間實(shí)時(shí)進(jìn)行各種控制信息及反饋信息的交互,各子系統(tǒng)內(nèi)部實(shí)時(shí)完成自身邏輯功能運(yùn)算。為了深入分析各子系統(tǒng)自身邏輯運(yùn)算的準(zhǔn)確性及系統(tǒng)間信息交互的可靠性,從系統(tǒng)的角度而言,需要開發(fā)一套對(duì)整個(gè)CBTC系統(tǒng)進(jìn)行實(shí)時(shí)數(shù)據(jù)抓包并根據(jù)接口協(xié)議進(jìn)行解析的軟件,為工程測試人員提供參考。

        文獻(xiàn)[2]是在Wireshark的基礎(chǔ)上通過腳本嵌入二次開發(fā)實(shí)現(xiàn)的應(yīng)用協(xié)議解析。本文所介紹的軟件,其開發(fā)基于C# 語言,包含了數(shù)據(jù)抓包解包的過程。本文描述了解決軟件開發(fā)過程中出現(xiàn)的一些關(guān)鍵問題的思路。軟件主要完成局域網(wǎng)內(nèi)數(shù)據(jù)抓包、接口解析配置文件設(shè)計(jì)與讀取、數(shù)據(jù)記錄與歷史查詢、界面顯示等功能。

        1 數(shù)據(jù)抓包

        CBTC系統(tǒng)一般采用交換機(jī)組建局域網(wǎng)。為了實(shí)現(xiàn)抓取流經(jīng)交換機(jī)的所有數(shù)據(jù),需要做兩方面的工作:一是設(shè)計(jì)數(shù)據(jù)抓包機(jī)制,二是對(duì)交換機(jī)進(jìn)行端口鏡像配置。

        1.1 數(shù)據(jù)抓包機(jī)制

        在硬件方面,網(wǎng)卡的工作模式分為廣播模式、多播傳送、直接模式和混雜模式等。默認(rèn)情況下,網(wǎng)卡只接收廣播幀和發(fā)至本終端的幀[3]。只有采用混雜模式,網(wǎng)卡才能接收局域網(wǎng)絡(luò)內(nèi)所有發(fā)送至本終端的數(shù)據(jù)包,實(shí)現(xiàn)監(jiān)視捕獲網(wǎng)絡(luò)信息的目的。在軟件方面,通過調(diào)用Sharpcap應(yīng)用類庫進(jìn)行底層網(wǎng)卡的操作。CBTC系統(tǒng)采用A、B雙網(wǎng)組建局域網(wǎng),分別由兩臺(tái)交換機(jī)管理。因此,在同一終端上,可采用兩個(gè)網(wǎng)卡分別抓取兩臺(tái)交換機(jī)上的數(shù)據(jù),數(shù)據(jù)抓包機(jī)制如圖1所示。

        圖1 數(shù)據(jù)抓包機(jī)制

        為了避免多個(gè)線程同時(shí)操作某一塊內(nèi)存,引起并發(fā)性問題,需要在數(shù)據(jù)存入緩存的過程中設(shè)置互斥鎖?;コ怄i的原理為:當(dāng)線程n需要操作某一被鎖定的內(nèi)存時(shí),必須首先獲取鎖,然后才能進(jìn)行該內(nèi)存操作;當(dāng)線程n正在操作某一內(nèi)存時(shí),該內(nèi)存則被置于鎖定狀態(tài),其他線程不能再對(duì)其進(jìn)行操作;當(dāng)線程n操作某一內(nèi)存結(jié)束后,需要釋放鎖,從而允許其他線程進(jìn)行相關(guān)操作。

        1.2 交換機(jī)端口鏡像配置

        由于交換機(jī)不會(huì)把收到的每個(gè)數(shù)據(jù)信息都以廣播的方式發(fā)送到其他所有端口,而是根據(jù)MAC地址表進(jìn)行智能轉(zhuǎn)發(fā)。因此,經(jīng)過1.1節(jié)的配置仍無法實(shí)現(xiàn)在一個(gè)端口上抓取局域網(wǎng)內(nèi)的所有數(shù)據(jù)。通過端口鏡像配置方法,能夠?qū)⒍鄠€(gè)端口的數(shù)據(jù)流鏡像到同一個(gè)端口上,這樣,局域網(wǎng)數(shù)據(jù)抓包條件就能從物理上得到保證。

        為了完成端口鏡像配置,首先,交換機(jī)需具有網(wǎng)絡(luò)管理功能;其次,由于不同型號(hào)交換機(jī)的配置命令不同,因此對(duì)不同的交換機(jī)采用與其相應(yīng)的配置命令進(jìn)行配置。

        2 數(shù)據(jù)包解析

        對(duì)于從交換機(jī)上獲得的數(shù)據(jù)包,需要獲取應(yīng)用層數(shù)據(jù),并根據(jù)接口協(xié)議進(jìn)行解包,從而提供給測試人員進(jìn)行驗(yàn)證。本軟件的數(shù)據(jù)包解析由XML配置文件和文件讀取程序(解包程序)兩個(gè)模塊完成。

        2.1 XML配置文件

        通常情況下,隨著工程的深入和細(xì)化,一些接口協(xié)議、工程數(shù)據(jù)等都會(huì)有所改動(dòng),為了降低這種改變對(duì)程序開發(fā)的影響,同時(shí)也為了提高開發(fā)效率,減少程序開發(fā)工作量,接口協(xié)議及工程數(shù)據(jù)等需要以配置文件的方式提供,以便于后期的維護(hù)。本解析軟件采用XML文件對(duì)CBTC系統(tǒng)中的接口協(xié)議進(jìn)行描述。

        XML文件格式能跨平臺(tái)使用,具有良好的可擴(kuò)展性,適合面向?qū)ο蟮某绦蜷_發(fā)。XML提供的是樹形層次結(jié)構(gòu),可以很方便地定位某個(gè)功能塊[4]。針對(duì)CBTC各子系統(tǒng)接口協(xié)議,本軟件采用5層節(jié)點(diǎn)的XML文件來描述。第1層為標(biāo)志數(shù)據(jù)方向的節(jié)點(diǎn),如ZC→VOBC等;第2層為標(biāo)志數(shù)據(jù)包類型的節(jié)點(diǎn),如列車控制信息、列車注冊(cè)請(qǐng)求報(bào)文等;第3層為普通節(jié)點(diǎn),如ZC_ID等應(yīng)用層字段含義;第4層為被控節(jié)點(diǎn),如某號(hào)道岔的信息等;第5層為表示被控節(jié)點(diǎn)屬性的子節(jié)點(diǎn),如道岔定位、反位信息等。

        其中,普通節(jié)點(diǎn)又分為非控制類型節(jié)點(diǎn)和控制類型節(jié)點(diǎn)兩類,設(shè)置節(jié)點(diǎn)屬性control來區(qū)分這兩種類型。若control為0,表示該節(jié)點(diǎn)為非控制類型節(jié)點(diǎn)。對(duì)于該類節(jié)點(diǎn),只需獲取其中各屬性的值,如每個(gè)字段的長度、字段含義描述等。若control為1,表示該節(jié)點(diǎn)為控制類型節(jié)點(diǎn)。對(duì)該類節(jié)點(diǎn)的處理方式是,根據(jù)控制節(jié)點(diǎn)的值對(duì)被控節(jié)點(diǎn)進(jìn)行操作。例如,假設(shè)數(shù)據(jù)包中包含N個(gè)道岔信息,則通過道岔控制節(jié)點(diǎn)獲取N值,然后對(duì)描述道岔的被控節(jié)點(diǎn)進(jìn)行N次循環(huán)讀取。XML配置文件整體結(jié)構(gòu)如圖2所示。

        圖2 XML配置文件結(jié)構(gòu)設(shè)計(jì)示意圖

        采取這種設(shè)計(jì)模式能夠?qū)BTC系統(tǒng)的所有接口協(xié)議文件轉(zhuǎn)化為XML配置文件,供解包程序統(tǒng)一調(diào)用。若后期協(xié)議中需要增加新的字段,只需增加新的節(jié)點(diǎn),文件結(jié)構(gòu)及解包程序均不需改變;若出現(xiàn)新的控制條件或控制類型時(shí),可以通過調(diào)整control的值做進(jìn)一步擴(kuò)展。

        2.2 解包程序

        XML配置文件的解包程序,首先獲取數(shù)據(jù)包的源ID、目的ID和數(shù)據(jù)類型等包頭信息,讀取XML配置文件,并據(jù)此查找與該數(shù)據(jù)包的數(shù)據(jù)方向和類型相同的方向節(jié)點(diǎn)和類型節(jié)點(diǎn)。在此基礎(chǔ)上,對(duì)數(shù)據(jù)包中其他各字段按節(jié)點(diǎn)逐個(gè)進(jìn)行解析。XML配置文件解包程序讀取流程如圖3所示。

        圖3 XML配置文件解包程序流程圖

        為了提高程序的實(shí)時(shí)響應(yīng)能力,在抓包過程中,并不對(duì)應(yīng)用層數(shù)據(jù)全部進(jìn)行實(shí)時(shí)解包,而是只獲取包頭的一些必要信息,如時(shí)間、PacketID、數(shù)據(jù)包類型等,并進(jìn)行數(shù)據(jù)分類存儲(chǔ),以便于以后的查詢操作。只有在離線情況下,才響應(yīng)測試人員的查詢記錄請(qǐng)求,調(diào)用解包程序?qū)ο鄳?yīng)的數(shù)據(jù)包進(jìn)行解包處理。

        3 數(shù)據(jù)存儲(chǔ)設(shè)計(jì)

        為了方便測試,提高軟件的可用性,降低數(shù)據(jù)庫對(duì)環(huán)境配置的要求,本項(xiàng)目采用SQLite數(shù)據(jù)庫。該數(shù)據(jù)庫是一種開源的嵌入式關(guān)系型數(shù)據(jù)庫,與Oracle復(fù)雜的客戶-服務(wù)器模式不同,SQLite整個(gè)數(shù)據(jù)庫都在一個(gè)單一文件中,可以直接通過程序來創(chuàng)建數(shù)據(jù)庫文件及表單,并進(jìn)行相關(guān)的數(shù)據(jù)庫操作。另外,SQLite還具有處理速度快、支持跨平臺(tái)、能與多種程序語言相結(jié)合等優(yōu)點(diǎn)。

        從網(wǎng)絡(luò)上抓取到的數(shù)據(jù)均需存入數(shù)據(jù)庫,若每獲得一條數(shù)據(jù)即進(jìn)行一次存儲(chǔ)操作,頻繁連接和斷開數(shù)據(jù)庫比較耗時(shí),存儲(chǔ)速度就無法滿足實(shí)時(shí)性要求。通常情況下,對(duì)于實(shí)時(shí)數(shù)據(jù)都采取集中式存儲(chǔ)方式。

        本文介紹的軟件設(shè)置了兩個(gè)緩存區(qū),輪流接收抓取的數(shù)據(jù),并在緩存區(qū)滿時(shí)各自進(jìn)行存儲(chǔ)。緩存區(qū)的大小與抓包速率有關(guān),若單位時(shí)間內(nèi)從局域網(wǎng)上抓到的數(shù)據(jù)包較多,則需要設(shè)計(jì)較大的緩存區(qū)。通過顯式啟動(dòng)事務(wù)的方法將緩存中的數(shù)據(jù)批量插入數(shù)據(jù)庫,能夠大大提高存儲(chǔ)效率。

        存儲(chǔ)機(jī)制分定量存儲(chǔ)和定時(shí)存儲(chǔ)兩種方式。定量存儲(chǔ)是指在程序中開辟固定大小的緩存區(qū),當(dāng)緩存區(qū)滿時(shí),執(zhí)行數(shù)據(jù)存儲(chǔ)過程。這種存儲(chǔ)機(jī)制便于控制內(nèi)存的合理運(yùn)用,但存儲(chǔ)周期是不確定的,需要根據(jù)緩存區(qū)大小和網(wǎng)絡(luò)內(nèi)數(shù)據(jù)流量來計(jì)算;定時(shí)存儲(chǔ)是指每間隔固定的時(shí)間進(jìn)行一次存儲(chǔ),這種存儲(chǔ)機(jī)制在存儲(chǔ)周期上是固定的,但需定義動(dòng)態(tài)緩存區(qū),不利于內(nèi)存管理。本文介紹的軟件采用定量存儲(chǔ)的方式。

        根據(jù)以上設(shè)計(jì)思路,設(shè)存儲(chǔ)周期為T,網(wǎng)絡(luò)抓包速率為v,單個(gè)緩沖區(qū)大小為s,則三者滿足如下的關(guān)系:

        T=s/v

        (1)

        設(shè)每次存儲(chǔ)事務(wù)的執(zhí)行時(shí)間為t,若要保證有足夠的時(shí)間存儲(chǔ)數(shù)據(jù),則須滿足如下的要求:

        t≤T

        (2)

        存儲(chǔ)速率根據(jù)程序的抓包速率來設(shè)計(jì)。存儲(chǔ)速率要略大于抓包速率,這樣既能避免內(nèi)存溢出,又能有效減少資源占用。

        根據(jù)式(1)、式(2)的關(guān)系,v、s與t之間的關(guān)系需滿足:

        tv

        (3)

        當(dāng)式(3)的條件滿足時(shí),能有效避免內(nèi)存溢出。同時(shí),若式(3)右端遠(yuǎn)大于左端,則會(huì)造成內(nèi)存資源的浪費(fèi)或數(shù)據(jù)庫連接資源的浪費(fèi)。

        為了提高程序的實(shí)時(shí)性,抓包線程負(fù)責(zé)將抓取的數(shù)據(jù)包放入緩存中,并調(diào)用解包頭程序,將更新界面顯示和存儲(chǔ)事務(wù)交由數(shù)據(jù)存儲(chǔ)線程處理。設(shè)置兩個(gè)緩存區(qū)進(jìn)行數(shù)據(jù)的輪流接收與存儲(chǔ),同一時(shí)刻只能由其中一個(gè)緩存區(qū)負(fù)責(zé)數(shù)據(jù)接收,當(dāng)該緩存區(qū)存滿后才能由另一個(gè)緩存區(qū)進(jìn)行數(shù)據(jù)接收,具體的控制流程如圖4所示。

        圖4 數(shù)據(jù)接收及存儲(chǔ)流程圖

        4 軟件總體結(jié)構(gòu)及界面

        以上描述了軟件所涉及到的主要功能模塊,軟件采用基于Winform的C# 語言編程,整體運(yùn)作流程如圖5所示。

        軟件界面提供實(shí)時(shí)數(shù)據(jù)抓包顯示,用Listview控件顯示。用戶選擇某一包的數(shù)據(jù)記錄,軟件界面相應(yīng)顯示該數(shù)據(jù)包的解析信息。也可以通過設(shè)置篩選條件進(jìn)行選擇性顯示。該軟件具有歷史數(shù)據(jù)查詢、Excel導(dǎo)入/導(dǎo)出等功能。

        圖5 主程序控制流程圖

        通過應(yīng)用驗(yàn)證,軟件在Intel Core i5-4590四核8 G內(nèi)存的終端上運(yùn)行,能夠滿足CBTC系統(tǒng)的需求,沒有出現(xiàn)漏包現(xiàn)象,抓包及處理效率能夠跟上系統(tǒng)內(nèi)數(shù)據(jù)包的產(chǎn)生速度。

        5 結(jié)語

        本文闡述了抓包、存儲(chǔ)及離線解析CBTC系統(tǒng)局域網(wǎng)內(nèi)數(shù)據(jù)的軟件的設(shè)計(jì)過程。該軟件的研發(fā)有助于提高CBTC系統(tǒng)接口測試效率,加快問題定位,提高測試質(zhì)量。按照本文介紹的設(shè)計(jì)方法開發(fā)的軟件具有擴(kuò)展性好、開發(fā)效率高、通用性強(qiáng)等特點(diǎn),這些設(shè)計(jì)方法對(duì)于其他類似應(yīng)用系統(tǒng)的開發(fā)具有一定的借鑒意義。

        在此基礎(chǔ)上的進(jìn)一步研究工作是:通過統(tǒng)計(jì)所抓取數(shù)據(jù)包的類型來判斷CBTC系統(tǒng)實(shí)時(shí)網(wǎng)絡(luò)狀態(tài);通過修改數(shù)據(jù)包內(nèi)容,模擬某一子系統(tǒng)向其他子系統(tǒng)發(fā)送錯(cuò)誤數(shù)據(jù)包,實(shí)現(xiàn)故障注入等功能。

        猜你喜歡
        程序數(shù)據(jù)庫
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        數(shù)據(jù)庫
        英國與歐盟正式啟動(dòng)“離婚”程序程序
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        加勒比婷婷色综合久久| YW亚洲AV无码乱码在线观看| 欧美亚洲另类国产18p| 日韩一区三区av在线| www夜片内射视频在观看视频| 99精品欧美一区二区三区| 国产女精品| 亚洲天堂av大片暖暖| 日本一区二区三区人妻| 色拍自拍亚洲综合图区| 真实的国产乱xxxx在线| 天堂8中文在线最新版在线 | 免费观看18禁无遮挡真人网站| 国产亚洲av人片在线观看| 国产成人精品曰本亚洲| 高潮av一区二区三区| 国产精品国产亚洲精品看不卡| 香蕉久久福利院| 国产在亚洲线视频观看| 亚洲女同精品一区二区久久| 欧美xxxxx在线观看| 人人妻人人狠人人爽天天综合网 | 亚洲国产成人av第一二三区| 亚洲av不卡一区男人天堂 | 街拍丝袜美腿美女一区| 亚洲av永久无码精品一福利| 狠狠色综合网站久久久久久久 | 国产情侣自拍在线视频| 琪琪的色原网站| 亚洲AV秘 无码二区在线| 激情免费视频一区二区三区| 精品亚洲国产成人蜜臀av| 国产乱人伦av在线a| 1234.com麻豆性爰爱影| 国产不卡在线观看视频| 中字幕人妻一区二区三区| 日本视频中文字幕一区在线| 亚洲不卡毛片在线观看| 亚洲自偷自拍另类第1页| 中国一 片免费观看| 成人自拍视频国产一区|