本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種報(bào)文通道的檢測方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,各種各樣的協(xié)議報(bào)文也隨著網(wǎng)絡(luò)設(shè)備功能的日益增強(qiáng)而不斷被應(yīng)用到網(wǎng)絡(luò)環(huán)境中,現(xiàn)在的網(wǎng)絡(luò)設(shè)備進(jìn)行通訊時(shí),都是通過專門網(wǎng)絡(luò)測試儀對各個(gè)網(wǎng)絡(luò)設(shè)備以及無線接入點(diǎn)進(jìn)行檢測,以檢測出無線網(wǎng)絡(luò)中連接的終端和無線信號強(qiáng)度等等,但是當(dāng)網(wǎng)絡(luò)設(shè)備中的報(bào)文通道出現(xiàn)故障如時(shí)延性出現(xiàn)嚴(yán)重延遲時(shí),就只能對網(wǎng)絡(luò)設(shè)備的各項(xiàng)功能一個(gè)個(gè)測試分析以排查故障,最終才能確定是時(shí)延性出現(xiàn)問題,顯然,現(xiàn)有的網(wǎng)絡(luò)設(shè)備檢測方式,對報(bào)文通道的檢測效率較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種報(bào)文通道的檢測方法及裝置,旨在解決現(xiàn)在的網(wǎng)絡(luò)設(shè)備檢測方式,對報(bào)文通道的檢測效率較低。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種報(bào)文通道的檢測方法,所述報(bào)文通道的檢測方法包括:
在待檢測報(bào)文通道的出口獲取檢測報(bào)文;
解析出所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳;
基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延;
將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延。
優(yōu)選地,所述在待檢測報(bào)文通道的出口獲取檢測報(bào)文的步驟之前,所述報(bào)文通道的檢測方法包括:
按照預(yù)設(shè)的報(bào)文格式構(gòu)造所述檢測報(bào)文;
根據(jù)預(yù)設(shè)的發(fā)送方式將構(gòu)造的所述檢測報(bào)文傳送至所述待檢測報(bào)文通道 中,其中,在將所述檢測報(bào)文傳送至所述待檢測報(bào)文通道的入口時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的起始時(shí)間戳;
在執(zhí)行所述在待檢測報(bào)文通道的出口獲取檢測報(bào)文的步驟的同時(shí),執(zhí)行以下步驟:
記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的終止時(shí)間戳。
優(yōu)選地,所述在待檢測報(bào)文通道的出口獲取檢測報(bào)文的步驟之后,所述報(bào)文通道的檢測方法還包括:
若預(yù)設(shè)時(shí)間間隔內(nèi),在所述待檢測報(bào)文通道的出口獲取到多個(gè)檢測報(bào)文,則統(tǒng)計(jì)獲取到的檢測報(bào)文的個(gè)數(shù);
根據(jù)統(tǒng)計(jì)的個(gè)數(shù)確定所述預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量。
優(yōu)選地,當(dāng)定時(shí)執(zhí)行所述在待檢測報(bào)文通道的出口獲取檢測報(bào)文的步驟時(shí),所述根據(jù)統(tǒng)計(jì)的個(gè)數(shù)確定所述預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量的步驟之后,所述報(bào)文通道的檢測方法還包括:
將所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量進(jìn)行比對;
在所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量相等時(shí),對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位。
優(yōu)選地,所述將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延的步驟之后,所述報(bào)文通道的檢測方法還包括:
將所述待檢測報(bào)文通道的平均時(shí)延與預(yù)設(shè)時(shí)延進(jìn)行比對;
在所述待檢測報(bào)文通道的平均時(shí)延高于預(yù)設(shè)時(shí)延時(shí),提高所述待檢測報(bào)文通道的優(yōu)先級。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種報(bào)文通道的檢測裝置,所述報(bào)文通道的檢測裝置包括:
獲取模塊,用于在待檢測報(bào)文通道的出口獲取檢測報(bào)文;
解析模塊,用于解析出所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳;
計(jì)算模塊,用于基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間 戳和終止時(shí)間戳,計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延;
處理模塊,用于將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延。
優(yōu)選地,所述報(bào)文通道的檢測裝置還包括:
構(gòu)造模塊,用于按照預(yù)設(shè)的報(bào)文格式構(gòu)造所述檢測報(bào)文;
傳送模塊,用于根據(jù)預(yù)設(shè)的發(fā)送方式將構(gòu)造的所述檢測報(bào)文傳送至所述待檢測報(bào)文通道中,其中,在將所述檢測報(bào)文傳送至所述待檢測報(bào)文通道的入口時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的起始時(shí)間戳;
記錄模塊,用于所述獲取模塊在待檢測報(bào)文通道的出口獲取檢測報(bào)文的同時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的終止時(shí)間戳。
優(yōu)選地,所述報(bào)文通道的檢測裝置還包括:
統(tǒng)計(jì)模塊,用于若預(yù)設(shè)時(shí)間間隔內(nèi),在所述待檢測報(bào)文通道的出口獲取到多個(gè)檢測報(bào)文,則統(tǒng)計(jì)獲取到的檢測報(bào)文的個(gè)數(shù);
確定模塊,用于根據(jù)統(tǒng)計(jì)的個(gè)數(shù)確定所述預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量。
優(yōu)選地,當(dāng)所述獲取模塊定時(shí)在待檢測報(bào)文通道的出口獲取檢測報(bào)文時(shí),所述報(bào)文通道的檢測裝置還包括:
第一比對模塊,用于將所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量進(jìn)行比對;
復(fù)位模塊,用于在所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量相等時(shí),對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位。
優(yōu)選地,所述報(bào)文通道的檢測裝置還包括:
第二比對模塊,用于將所述待檢測報(bào)文通道的平均時(shí)延與預(yù)設(shè)時(shí)延進(jìn)行比對;
提高模塊,用于在所述待檢測報(bào)文通道的平均時(shí)延高于預(yù)設(shè)時(shí)延時(shí),提高所述待檢測報(bào)文通道的優(yōu)先級。
本發(fā)明提出的報(bào)文通道的檢測方法及裝置,先在待檢測報(bào)文通道的出口獲取檢測報(bào)文,然后解析出所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,再基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí) 間戳和終止時(shí)間戳,計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延,最后將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延,而不是在檢測網(wǎng)絡(luò)設(shè)備的報(bào)文通道時(shí),只能對網(wǎng)絡(luò)設(shè)備的各項(xiàng)功能一個(gè)個(gè)測試分析以排查故障,最終才能確定是時(shí)延性出現(xiàn)問題,本發(fā)明通過對檢測報(bào)文進(jìn)行分析,以確定報(bào)文通道的時(shí)延,提高了對報(bào)文通道檢測的效率。
附圖說明
圖1為本發(fā)明報(bào)文通道的檢測方法第一實(shí)施例的流程示意圖;
圖2為本發(fā)明報(bào)文通道的檢測方法第二實(shí)施例的流程示意圖;
圖3為本發(fā)明報(bào)文通道的檢測方法第三實(shí)施例的流程示意圖;
圖4為本發(fā)明報(bào)文通道的檢測方法第四實(shí)施例的流程示意圖;
圖5為本發(fā)明報(bào)文通道的檢測裝置第一實(shí)施例的功能模塊示意圖;
圖6為本發(fā)明報(bào)文通道的檢測裝置第二實(shí)施例的功能模塊示意圖;
圖7為本發(fā)明報(bào)文通道的檢測裝置第三實(shí)施例的功能模塊示意圖;
圖8為本發(fā)明報(bào)文通道的檢測裝置第四實(shí)施例的功能模塊示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種報(bào)文通道的檢測方法。
參照圖1,圖1為本發(fā)明報(bào)文通道的檢測方法第一實(shí)施例的流程示意圖。
本實(shí)施例提出一種報(bào)文通道的檢測方法,所述報(bào)文通道的檢測方法包括:
步驟s10,在待檢測報(bào)文通道的出口獲取檢測報(bào)文;
在本實(shí)施例中,所述步驟s10之前,包括步驟:
1、按照預(yù)設(shè)的報(bào)文格式構(gòu)造所述檢測報(bào)文;
在本實(shí)施例中,首先按照預(yù)先定義的報(bào)文格式構(gòu)造檢測報(bào)文,為了降低檢測報(bào)文對報(bào)文通道產(chǎn)生的負(fù)載壓力,所述報(bào)文格式優(yōu)選包括檢測報(bào)文的報(bào) 文長度、報(bào)文類型、報(bào)文時(shí)戳標(biāo)記等等。具體地,將所述報(bào)文長度設(shè)置到小于預(yù)設(shè)長度,如8個(gè)字節(jié);而由于檢測報(bào)文的構(gòu)造要具有唯一性、特殊性,不能與真實(shí)的協(xié)議報(bào)文相混淆,因此通過設(shè)定檢測報(bào)文的各個(gè)字段域的特征值與知名協(xié)議進(jìn)行區(qū)分,相當(dāng)于將檢測報(bào)文的報(bào)文類型設(shè)置為不同于協(xié)議報(bào)文的報(bào)文類型。值得注意的是,檢測報(bào)文的生存期在報(bào)文通道處理流程范圍內(nèi),在完成報(bào)文通道性能統(tǒng)計(jì)處理后,該檢測報(bào)文便終結(jié)。
具體地,所述檢測報(bào)文的報(bào)文格式中包括的各個(gè)字段詳解如下:
dstmac(目的地址)—00:d0:d0:ff:ff:ff;
ehertype(以太網(wǎng)類型)—0x8875與知名ehertype進(jìn)行區(qū)分;
channelno—標(biāo)記該檢測報(bào)文所要檢測的報(bào)文通道的通道編號,也稱通道標(biāo)識;
rxtimestamp—檢測報(bào)文接收時(shí)的時(shí)戳標(biāo)記;
txtimestamp—檢測報(bào)文發(fā)送時(shí)的時(shí)戳標(biāo)記。
進(jìn)一步地,所述報(bào)文格式還可包括報(bào)文通道的通道標(biāo)識,即構(gòu)造檢測報(bào)文時(shí),還可將報(bào)文通道的通道標(biāo)識作為報(bào)文參數(shù)進(jìn)行檢測報(bào)文的構(gòu)造,后續(xù)檢測報(bào)文構(gòu)造完成后,可根據(jù)檢測報(bào)文中包括的報(bào)文通道的通道標(biāo)識,將檢測報(bào)文傳送至通道標(biāo)識對應(yīng)的報(bào)文通道中,而不是隨機(jī)發(fā)送至報(bào)文通道中,提高了報(bào)文通道檢測的智能性。
2、根據(jù)預(yù)設(shè)的發(fā)送方式將構(gòu)造的所述檢測報(bào)文傳送至所述待檢測報(bào)文通道中,其中,在將所述檢測報(bào)文傳送至所述待檢測報(bào)文通道的入口時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的起始時(shí)間戳;
在本實(shí)施例中,在構(gòu)造檢測報(bào)文完成后,可按照預(yù)設(shè)發(fā)送周期將構(gòu)造的檢測報(bào)文傳送至待檢測報(bào)文通道中,也可根據(jù)按需方式將檢測報(bào)文傳送至待檢測報(bào)文通道中,所述發(fā)送周期表示間隔多久發(fā)送一個(gè)檢測報(bào)文,具體時(shí)間可根據(jù)情況進(jìn)行設(shè)置,例如每隔0.1秒發(fā)送一個(gè)檢測報(bào)文,而所述按需方式可以根據(jù)用戶配置在指定周期內(nèi)發(fā)送特定數(shù)量的檢測報(bào)文,本實(shí)施例中,所述待檢測報(bào)文通道可包括網(wǎng)絡(luò)設(shè)備中的各個(gè)報(bào)文通道,也可以是指定的一個(gè)或多個(gè)報(bào)文通道,而根據(jù)預(yù)設(shè)的發(fā)送方式將構(gòu)造的檢測報(bào)文傳送至所述待檢測報(bào)文通道中時(shí),若構(gòu)造檢測報(bào)文時(shí)并沒有根據(jù)報(bào)文通道的通道標(biāo)識進(jìn)行構(gòu)造,則在發(fā)送檢測報(bào)文時(shí),循環(huán)向網(wǎng)絡(luò)設(shè)備的各個(gè)報(bào)文通道進(jìn)行入口發(fā)包,即此 時(shí)所述待檢測報(bào)文通道是網(wǎng)絡(luò)設(shè)備中的各個(gè)報(bào)文通道,此處發(fā)包周期要與當(dāng)前協(xié)議規(guī)定的最小發(fā)包周期相匹配,過小的發(fā)包周期會產(chǎn)生比較大的通道負(fù)載,影響檢測報(bào)文的傳輸時(shí)延,過大的發(fā)包周期會降低檢測的準(zhǔn)確性;若構(gòu)造檢測報(bào)文時(shí)是根據(jù)報(bào)文通道的通道標(biāo)識進(jìn)行構(gòu)造的,則在發(fā)送檢測報(bào)文時(shí),先識別檢測報(bào)文中攜帶的通道標(biāo)識,并根據(jù)預(yù)設(shè)的發(fā)送方式將檢測報(bào)文傳送至識別的所述報(bào)文通道中,即此時(shí)所述待檢測報(bào)文通道是指定的報(bào)文通道。
在將構(gòu)造的檢測報(bào)文傳送至所述待檢測報(bào)文通道中時(shí),為了報(bào)文通道的處理時(shí)延做出準(zhǔn)確檢測,采用在檢測報(bào)文內(nèi)打時(shí)戳的方式,具體的時(shí)戳處理要分別放置在所述待檢測報(bào)文通道的入口位置和所述待檢測報(bào)文通道的出口位置,這樣可以更準(zhǔn)確測試評估檢測報(bào)文在所述待檢測報(bào)文通道內(nèi)經(jīng)過的時(shí)間,從而測算所述待檢測報(bào)文通道當(dāng)前性能狀況,而時(shí)戳處理通過在底層硬件實(shí)現(xiàn),針對檢測報(bào)文直接在報(bào)文內(nèi)部指定偏移字段打上當(dāng)前時(shí)戳。而在將檢測報(bào)文傳送至所述待檢測報(bào)文通道的入口時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的起始時(shí)間戳。
在執(zhí)行所述步驟s10的同時(shí),執(zhí)行以下步驟:
記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的終止時(shí)間戳。
即在待檢測報(bào)文通道的出口獲取檢測報(bào)文時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的終止時(shí)間戳,最終,所述檢測報(bào)文就是攜帶進(jìn)入所述待檢測報(bào)文通道的起始時(shí)間點(diǎn)和從所述待檢測報(bào)文通道出來的終止時(shí)間點(diǎn)的檢測報(bào)文。
在本實(shí)施例中,在待檢測報(bào)文通道的出口獲取檢測報(bào)文的方式包括:同時(shí)在各個(gè)待檢測報(bào)文通道的出口獲取一個(gè)檢測報(bào)文,或同時(shí)在各個(gè)待檢測報(bào)文通道的出口依次獲取多個(gè)檢測報(bào)文;或者依次在各個(gè)待檢測報(bào)文通道的出口獲取一個(gè)檢測報(bào)文,或依次在各個(gè)待檢測報(bào)文通道的出口依次獲取多個(gè)檢測報(bào)文。
步驟s20,解析出所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳;
在本實(shí)施例中,在從待檢測報(bào)文通道的出口獲取到檢測報(bào)文后,進(jìn)入?yún)f(xié)議棧中對獲取的檢測報(bào)文進(jìn)行解析,本實(shí)施例中的所述待檢測報(bào)文通道可以表示為cpu(centralprocessingunit,中央處理器)列隊(duì),也可稱之為通道隊(duì)列,而所述協(xié)議??梢员硎綾pu協(xié)議棧,其中,所述cpu協(xié)議棧的報(bào)文通道 就有48個(gè)報(bào)文通道,相當(dāng)于有48個(gè)cpu隊(duì)列。
在本實(shí)施例中,在所述待檢測報(bào)文通道中獲取到檢測報(bào)文時(shí),即可確定待檢測報(bào)文通道的通道標(biāo)識,即檢測報(bào)文中哪一個(gè)報(bào)文通道中出來,則該報(bào)文通道即為待檢測的報(bào)文通道,并獲取所述待檢測報(bào)文通道的通道標(biāo)識;或者在所述待檢測報(bào)文通道中獲取到檢測報(bào)文時(shí),分析檢測報(bào)文攜帶的通道標(biāo)識,以確定待檢測待檢測報(bào)文通道。而在獲取到檢測報(bào)文之后,對獲取的檢測報(bào)文進(jìn)行解析,以解析出檢測報(bào)文的時(shí)間戳,所述時(shí)間戳即所述檢測報(bào)文在對應(yīng)的報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳。具體地,是通過dma((directmemoryaccess,直接內(nèi)存存取)方式把檢測報(bào)文從報(bào)文通道中提取到cpu協(xié)議棧(也可稱之為cpu內(nèi)存)中以便于進(jìn)行解析計(jì)算,在底層實(shí)現(xiàn)上當(dāng)cpu隊(duì)列緩存內(nèi)有檢測報(bào)文,則通過dma將檢測報(bào)文從報(bào)文通道中復(fù)制到cpu內(nèi)存區(qū)域并觸發(fā)中斷信號,以便于解析所述檢測報(bào)文的起始時(shí)間戳和終止時(shí)間戳。
步驟s30,基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延;
在確定檢測報(bào)文的起始時(shí)間戳或終止時(shí)間戳之后,基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,即可計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延,也就是將終止時(shí)間戳的時(shí)間減去起始時(shí)間戳的時(shí)間點(diǎn),即可得到時(shí)間差,該時(shí)間差即為所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延。具體地,在獲取到檢測報(bào)文內(nèi)容后從檢測報(bào)文指定位置讀取rxtimestamp和txtimestamp時(shí)戳。兩者通過delaytime=txtimestamp–rxtimestamp公式即可完成時(shí)延計(jì)算。而報(bào)文通道的通道標(biāo)識則直接通過channelno字段解析得出。另外,也可以通過底層dma機(jī)制攜帶報(bào)文通道的通道標(biāo)識到cpu內(nèi)存中,以通過軟件模塊讀取。在本實(shí)施例僅采用解析報(bào)文方式獲取。
步驟s40,將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延。
在計(jì)算檢測報(bào)文在所述待檢測報(bào)文通道的時(shí)延之后,將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延,具體地,在待檢測報(bào)文通道的出口獲取到的檢測報(bào)文為一個(gè)時(shí),將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延;而在待檢測報(bào)文通道的出口獲取到的檢測報(bào)文為多個(gè)時(shí),將所述待 檢測報(bào)文通道中各個(gè)檢測報(bào)文的時(shí)延進(jìn)行相加并求平均值,并將所述平均值作為所述待檢測報(bào)文通道的平均時(shí)延,根據(jù)這種方式即可得到各個(gè)待檢測報(bào)文通道的平均時(shí)延。而待檢測報(bào)文通道的平均時(shí)延的計(jì)算方式還可以以不同周期進(jìn)行計(jì)算:例如以周期為5秒、15秒、30秒進(jìn)行時(shí)延均值計(jì)算,計(jì)算公式如下:avg=(t1+t2···+tn)/period,其中,tn是一個(gè)檢測周期內(nèi)第n個(gè)檢測報(bào)文的時(shí)延值,根據(jù)這種計(jì)算方式即可計(jì)算各個(gè)待檢測報(bào)文通道的平均時(shí)延。
為更好理解本方案,舉例應(yīng)用場景如下:
首先,構(gòu)造檢測報(bào)文,檢測報(bào)文的格式為:
dstmac:
data:0x00d0d0ffffff
mask:0xffffffffffff
ethertype:
data:0x8875
mask:0xffff
channelno:
data:xx
mask:0xff
檢測報(bào)文構(gòu)造完成后,指定action動作如下:
copytocpu
cosqcpunew
drop
其中,copytocpu動作負(fù)責(zé)把檢測報(bào)文復(fù)制到cpu端口即報(bào)文通道的入口;cosqcpunew動作用于指定檢測報(bào)文需要進(jìn)入的cpu端口隊(duì)列即報(bào)文通道隊(duì)列的通道編號;drop動作表示丟棄檢測報(bào)文,該動作是在報(bào)文通道檢測完成后。
本發(fā)明提出的報(bào)文通道的檢測方法,先在待檢測報(bào)文通道的出口獲取檢測報(bào)文,然后解析出所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,再基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延,最后將計(jì) 算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延,而不是在檢測網(wǎng)絡(luò)設(shè)備的報(bào)文通道時(shí),只能對網(wǎng)絡(luò)設(shè)備的各項(xiàng)功能一個(gè)個(gè)測試分析以排查故障,最終才能確定是時(shí)延性出現(xiàn)問題,本發(fā)明通過對檢測報(bào)文進(jìn)行分析,以確定報(bào)文通道的時(shí)延,提高了對報(bào)文通道檢測的效率。
進(jìn)一步地,為了提高報(bào)文通道的檢測靈活性,基于第一實(shí)施例提出本發(fā)明報(bào)文通道的檢測方法的第二實(shí)施例,在本實(shí)施例,參照圖2,所述步驟s10之后,所述報(bào)文通道的檢測方法還包括:
步驟s50,若預(yù)設(shè)時(shí)間間隔內(nèi),在所述待檢測報(bào)文通道的出口獲取到多個(gè)檢測報(bào)文,則統(tǒng)計(jì)獲取到的檢測報(bào)文的個(gè)數(shù);
步驟s60,根據(jù)統(tǒng)計(jì)的個(gè)數(shù)確定所述預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量。
在本實(shí)施例中,若預(yù)設(shè)時(shí)間間隔內(nèi),在所述待檢測報(bào)文通道的出口獲取到多個(gè)檢測報(bào)文,則統(tǒng)計(jì)獲取到的檢測報(bào)文的個(gè)數(shù),然后根據(jù)統(tǒng)計(jì)的個(gè)數(shù)即可確定所述預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量。其中,所述預(yù)設(shè)時(shí)間間隔根據(jù)具體時(shí)間進(jìn)行設(shè)置,可以設(shè)置為30秒、1分鐘、10分鐘或30分鐘等等,最終,將所述待檢測報(bào)文通道的報(bào)文累計(jì)量作為所述待檢測報(bào)文通道的檢測結(jié)果。具體地,計(jì)算方式如下:avg=count/period,其中,count是一個(gè)統(tǒng)計(jì)周期內(nèi)待檢測報(bào)文通道傳輸?shù)臋z測報(bào)文的累加個(gè)數(shù)。
進(jìn)一步地,還可按照周期性統(tǒng)計(jì)所述待檢測報(bào)文通道的檢測報(bào)文個(gè)數(shù),即每隔預(yù)設(shè)時(shí)間間隔統(tǒng)計(jì)待檢測報(bào)文通道的檢測報(bào)文。
在本實(shí)施例中,不僅僅采用時(shí)延作為報(bào)文通道的檢測結(jié)果,還將累計(jì)量作為報(bào)文通道的檢測結(jié)果,提高了報(bào)文通道檢測的靈活性。
進(jìn)一步地,為了提高報(bào)文通道的檢測靈活性,基于第二實(shí)施例提出本發(fā)明報(bào)文通道的檢測方法的第三實(shí)施例,在本實(shí)施例,參照圖3,當(dāng)定時(shí)執(zhí)行所述在待檢測報(bào)文通道的出口獲取檢測報(bào)文的步驟時(shí),所述步驟s60之后,所述報(bào)文通道的檢測方法還包括:
步驟s70,將所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量進(jìn)行比對;
步驟s80,在所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量相等時(shí),對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位。
在本實(shí)施例中,在確定所述待檢測報(bào)文通道的累計(jì)量后,將所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量進(jìn)行比對,若比對結(jié)果相同,說明本次預(yù)設(shè)時(shí)間間隔內(nèi)檢測報(bào)文在所述待檢測通道中沒有傳送成功,即可表示所述待檢測報(bào)文通道已經(jīng)完全阻塞了,才導(dǎo)致檢測報(bào)文發(fā)送失敗,此時(shí),對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位,相當(dāng)于通過復(fù)位相關(guān)的底層模塊來解決問題。
具體地,在構(gòu)造報(bào)文的發(fā)送方式不同時(shí),待檢測報(bào)文通道累計(jì)量的檢測方式也包括以下兩種情況:
1)對于周期性發(fā)送檢測報(bào)文的情況下,則定時(shí)讀取待檢測報(bào)文通道中檢測報(bào)文的數(shù)量,并將本次讀取的檢測報(bào)文的數(shù)量與所述待檢測報(bào)文通道上次讀取的檢測報(bào)文的數(shù)量進(jìn)行比較,以判斷所述待檢測報(bào)文通道是否處于有效工作狀態(tài);如果統(tǒng)計(jì)計(jì)數(shù)有累加變化則說明所述待檢測報(bào)文通道工作正常,無需進(jìn)行自恢復(fù)處理,值得注意的是,在上述的定時(shí)處理中,定時(shí)周期要大于檢測報(bào)文的發(fā)送周期,這樣才能保證在正常情況下獲取檢測報(bào)文統(tǒng)計(jì)的數(shù)值是累加計(jì)數(shù)后;如果統(tǒng)計(jì)計(jì)數(shù)沒有變化,說明所述待檢測報(bào)文通道處于失效狀態(tài),即所述待檢測報(bào)文通道阻塞了,則此時(shí)對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位以恢復(fù)所述待檢測報(bào)文通道。
2)對于按需發(fā)送檢測報(bào)文的情況,如果前后兩次讀取檢測報(bào)文的累加計(jì)數(shù)無變化,需要進(jìn)一步區(qū)分當(dāng)前網(wǎng)絡(luò)設(shè)備是處于空閑狀態(tài)還是出現(xiàn)報(bào)文通道故障到檢測報(bào)文失效,在按需檢測狀況下,觸發(fā)檢測報(bào)文的發(fā)送,并在發(fā)送完成后重新讀取報(bào)文統(tǒng)計(jì)計(jì)數(shù);如果全局統(tǒng)計(jì)計(jì)數(shù)有累加變化,說明所述待檢測報(bào)文通道工作正常,無需自恢復(fù)處理;如果按需檢測狀況下,通過報(bào)文通道的統(tǒng)計(jì)計(jì)數(shù)判斷出產(chǎn)生故障,同樣對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位以恢復(fù)所述待檢測報(bào)文通道。
在本實(shí)施例中,若檢測報(bào)文發(fā)送周期是1秒,那么在故障檢測自恢復(fù)決策處理中,3秒內(nèi)若無法收到檢測報(bào)文或者檢測報(bào)文計(jì)數(shù)累加統(tǒng)計(jì)不變,則認(rèn)為所述待檢測報(bào)文通道產(chǎn)生故障,可對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位, 以保障所述待檢測報(bào)文通道不產(chǎn)生長時(shí)間的檢測報(bào)文丟失情況;或者是通過切換報(bào)文通道并采用復(fù)位底層硬件模塊方式來恢復(fù)原有報(bào)文通道。
進(jìn)一步地,為了提高報(bào)文通道的檢測靈活性,基于第一、第二或第三實(shí)施例提出本發(fā)明報(bào)文通道的檢測方法的第四實(shí)施例,參照圖4,在本實(shí)施例,所述步驟s40之后,所述報(bào)文通道的檢測方法還包括:
步驟s90,將所述待檢測報(bào)文通道的平均時(shí)延與預(yù)設(shè)時(shí)延進(jìn)行比對;
步驟s100,在所述待檢測報(bào)文通道的平均時(shí)延高于預(yù)設(shè)時(shí)延時(shí),提高所述待檢測報(bào)文通道的優(yōu)先級。
在本實(shí)施例中,首先獲取所述待檢測報(bào)文通道的平均時(shí)延;然后將所述平均時(shí)延與預(yù)設(shè)時(shí)延進(jìn)行比較;如果當(dāng)前能夠滿足協(xié)議要求,即所述待檢測報(bào)文通道的所述平均時(shí)延低于或等于預(yù)設(shè)時(shí)延時(shí),說明報(bào)文通道傳輸?shù)膱?bào)文速度較快,達(dá)到要求了,不會出現(xiàn)較大的延遲,此時(shí)不做處理;如果所述待檢測報(bào)文通道的所述平均時(shí)延高于預(yù)設(shè)時(shí)延,說明報(bào)文通道的時(shí)延性較大,可能是通道的報(bào)文傳輸速度較慢,不符合要求,則此時(shí)提高所述待檢測報(bào)文通道的優(yōu)先級,以增強(qiáng)所述報(bào)文通道的性能,以便于下次傳輸協(xié)議報(bào)文時(shí)該報(bào)文通道的時(shí)延性會降低。
進(jìn)一步地,還可以根據(jù)不同的策略需求查找更優(yōu)報(bào)文通道,具體地,可以是在協(xié)議提取階段指定需要變更的報(bào)文通道,以完成報(bào)文通道的自適應(yīng)優(yōu)化,以便于所述報(bào)文通道所在的網(wǎng)絡(luò)設(shè)備傳輸協(xié)議報(bào)文時(shí),先采用所述網(wǎng)絡(luò)設(shè)備中優(yōu)先級高的報(bào)文通道作為協(xié)議報(bào)文待傳送的報(bào)文通道。
進(jìn)一步地,本實(shí)施例中采用平均時(shí)延與協(xié)議要求最高時(shí)延門限即預(yù)設(shè)時(shí)延進(jìn)行比較。如果當(dāng)前報(bào)文通道的平均時(shí)延>協(xié)議要求時(shí)延最高時(shí)延門限,則在當(dāng)前調(diào)度節(jié)點(diǎn)內(nèi)較高優(yōu)先級報(bào)文通道開始查找,如果找到高優(yōu)先報(bào)文通道時(shí)延性能<協(xié)議要求時(shí)延最高門限,進(jìn)一步讀取當(dāng)前報(bào)文通道的檢測報(bào)文累計(jì)量和待優(yōu)選報(bào)文通道的檢測報(bào)文累計(jì)量,按累計(jì)量比例估算待選擇報(bào)文通道的預(yù)測時(shí)延性能。如果此預(yù)測時(shí)延性能大于當(dāng)前傳輸協(xié)議要求時(shí)延,則遞次查找更高優(yōu)先級報(bào)文通道直至最高優(yōu)先級報(bào)文通道。如果最高級優(yōu)先級報(bào)文通道依舊無法滿足,則不做自適應(yīng)優(yōu)化動作。
在本實(shí)施例中,由于應(yīng)用場景是網(wǎng)絡(luò)設(shè)備擁有多個(gè)報(bào)文通道,并且各個(gè) 報(bào)文通道根據(jù)檢測報(bào)文進(jìn)行自適應(yīng)檢測與處理的過程,并且到cpu協(xié)議棧的報(bào)文通道有48個(gè)cpu隊(duì)列,因此,隊(duì)列調(diào)度采用4級調(diào)度方式進(jìn)行調(diào)度。
在本發(fā)明中,實(shí)現(xiàn)了報(bào)文通道的自適應(yīng)檢測和自適應(yīng)決策處理,提高了檢測報(bào)文在網(wǎng)絡(luò)設(shè)備中的處理效能和檢測報(bào)文處理通道的冗余保護(hù),提高了網(wǎng)絡(luò)健壯性和容錯(cuò)能力。特別是在大業(yè)務(wù)量、復(fù)雜網(wǎng)絡(luò)場景下,有效地解決了網(wǎng)絡(luò)協(xié)議報(bào)文在設(shè)備內(nèi)部的優(yōu)化處理,保障了網(wǎng)絡(luò)的正常運(yùn)行。
本發(fā)明進(jìn)一步提供一種報(bào)文通道的檢測裝置。
參照圖5,圖5為本發(fā)明報(bào)文通道的檢測裝置第一實(shí)施例的功能模塊示意圖。
需要強(qiáng)調(diào)的是,對本領(lǐng)域的技術(shù)人員來說,圖5所示功能模塊圖僅僅是一個(gè)較佳實(shí)施例的示例圖,本領(lǐng)域的技術(shù)人員圍繞圖5所示的報(bào)文通道的檢測裝置的功能模塊,可輕易進(jìn)行新的功能模塊的補(bǔ)充;各功能模塊的名稱是自定義名稱,僅用于輔助理解該報(bào)文通道的檢測裝置的各個(gè)程序功能塊,不用于限定本發(fā)明的技術(shù)方案,本發(fā)明技術(shù)方案的核心是,各自定義名稱的功能模塊所要達(dá)成的功能。
本實(shí)施例提出一種報(bào)文通道的檢測裝置,所述報(bào)文通道的檢測裝置包括:
獲取模塊10,用于在待檢測報(bào)文通道的出口獲取檢測報(bào)文;
在本實(shí)施例中,所述獲取模塊10獲取檢測報(bào)文之前,所述報(bào)文通道的檢測裝置包括預(yù)設(shè)模塊,用于構(gòu)造檢測報(bào)文和傳送檢測報(bào)文至報(bào)文通道,所述預(yù)設(shè)模塊包括構(gòu)造模塊、傳送模塊和記錄模塊,具體地:
構(gòu)造模塊,用于按照預(yù)設(shè)的報(bào)文格式構(gòu)造所述檢測報(bào)文;
在本實(shí)施例中,所述構(gòu)造模塊首先按照預(yù)先定義的報(bào)文格式構(gòu)造檢測報(bào)文,為了降低檢測報(bào)文對報(bào)文通道產(chǎn)生的負(fù)載壓力,所述報(bào)文格式優(yōu)選包括檢測報(bào)文的報(bào)文長度、報(bào)文類型、報(bào)文時(shí)戳標(biāo)記等等。具體地,將所述報(bào)文長度設(shè)置到小于預(yù)設(shè)長度,如8個(gè)字節(jié);而由于檢測報(bào)文的構(gòu)造要具有唯一性、特殊性,不能與真實(shí)的協(xié)議報(bào)文相混淆,因此通過設(shè)定檢測報(bào)文的各個(gè)字段域的特征值與知名協(xié)議進(jìn)行區(qū)分,相當(dāng)于將檢測報(bào)文的報(bào)文類型設(shè)置為不同于協(xié)議報(bào)文的報(bào)文類型。值得注意的是,檢測報(bào)文的生存期在報(bào)文通道處理流程范圍內(nèi),在完成報(bào)文通道性能統(tǒng)計(jì)處理后,該檢測報(bào)文便終結(jié)。
具體地,所述檢測報(bào)文的報(bào)文格式中包括的各個(gè)字段詳解如下:
dstmac(目的地址)—00:d0:d0:ff:ff:ff;
ehertype(以太網(wǎng)類型)—0x8875與知名ehertype進(jìn)行區(qū)分;
channelno—標(biāo)記該檢測報(bào)文所要檢測的報(bào)文通道的通道編號,也稱通道標(biāo)識;
rxtimestamp—檢測報(bào)文接收時(shí)的時(shí)戳標(biāo)記;
txtimestamp—檢測報(bào)文發(fā)送時(shí)的時(shí)戳標(biāo)記。
進(jìn)一步地,所述報(bào)文格式還可包括報(bào)文通道的通道標(biāo)識,即所述構(gòu)造模塊構(gòu)造檢測報(bào)文時(shí),還可將報(bào)文通道的通道標(biāo)識作為報(bào)文參數(shù)進(jìn)行檢測報(bào)文的構(gòu)造,后續(xù)檢測報(bào)文構(gòu)造完成后,可根據(jù)檢測報(bào)文中包括的報(bào)文通道的通道標(biāo)識,將檢測報(bào)文傳送至通道標(biāo)識對應(yīng)的報(bào)文通道中,而不是隨機(jī)發(fā)送至報(bào)文通道中,提高了報(bào)文通道檢測的智能性。
傳送模塊,用于根據(jù)預(yù)設(shè)的發(fā)送方式將構(gòu)造的所述檢測報(bào)文傳送至所述待檢測報(bào)文通道中,其中,在將所述檢測報(bào)文傳送至所述待檢測報(bào)文通道的入口時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的起始時(shí)間戳;
在本實(shí)施例中,在所述構(gòu)造模塊構(gòu)造檢測報(bào)文完成后,所述傳送模塊可按照預(yù)設(shè)發(fā)送周期將構(gòu)造的檢測報(bào)文傳送至待檢測報(bào)文通道中,所述傳送模塊也可根據(jù)按需方式將檢測報(bào)文傳送至待檢測報(bào)文通道中,所述發(fā)送周期表示間隔多久發(fā)送一個(gè)檢測報(bào)文,具體時(shí)間可根據(jù)情況進(jìn)行設(shè)置,例如每隔0.1秒發(fā)送一個(gè)檢測報(bào)文,而所述按需方式可以根據(jù)用戶配置在指定周期內(nèi)發(fā)送特定數(shù)量的檢測報(bào)文,本實(shí)施例中,所述待檢測報(bào)文通道可包括網(wǎng)絡(luò)設(shè)備中的各個(gè)報(bào)文通道,也可以是指定的一個(gè)或多個(gè)報(bào)文通道,而根據(jù)預(yù)設(shè)的發(fā)送方式將構(gòu)造的檢測報(bào)文傳送至所述待檢測報(bào)文通道中時(shí),若構(gòu)造檢測報(bào)文時(shí)并沒有根據(jù)報(bào)文通道的通道標(biāo)識進(jìn)行構(gòu)造,則所述傳送模塊在發(fā)送檢測報(bào)文時(shí),循環(huán)向網(wǎng)絡(luò)設(shè)備的各個(gè)報(bào)文通道進(jìn)行入口發(fā)包,即此時(shí)所述待檢測報(bào)文通道是網(wǎng)絡(luò)設(shè)備中的各個(gè)報(bào)文通道,此處發(fā)包周期要與當(dāng)前協(xié)議規(guī)定的最小發(fā)包周期相匹配,過小的發(fā)包周期會產(chǎn)生比較大的通道負(fù)載,影響檢測報(bào)文的傳輸時(shí)延,過大的發(fā)包周期會降低檢測的準(zhǔn)確性;若構(gòu)造檢測報(bào)文時(shí)是根據(jù)報(bào)文通道的通道標(biāo)識進(jìn)行構(gòu)造的,則所述傳送模塊在發(fā)送檢測報(bào)文時(shí),先識別檢測報(bào)文中攜帶的通道標(biāo)識,并根據(jù)預(yù)設(shè)的發(fā)送方式將檢測報(bào)文傳送至 識別的所述報(bào)文通道中,即此時(shí)所述待檢測報(bào)文通道是指定的報(bào)文通道。
在將構(gòu)造的檢測報(bào)文傳送至所述待檢測報(bào)文通道中時(shí),為了報(bào)文通道的處理時(shí)延做出準(zhǔn)確檢測,采用在檢測報(bào)文內(nèi)打時(shí)戳的方式,具體的時(shí)戳處理要分別放置在所述待檢測報(bào)文通道的入口位置和所述待檢測報(bào)文通道的出口位置,這樣可以更準(zhǔn)確測試評估檢測報(bào)文在所述待檢測報(bào)文通道內(nèi)經(jīng)過的時(shí)間,從而測算所述待檢測報(bào)文通道當(dāng)前性能狀況,而時(shí)戳處理通過在底層硬件實(shí)現(xiàn),針對檢測報(bào)文直接在報(bào)文內(nèi)部指定偏移字段打上當(dāng)前時(shí)戳。而在將檢測報(bào)文傳送至所述待檢測報(bào)文通道的入口時(shí),記錄模塊記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的起始時(shí)間戳。
記錄模塊,用于所述獲取模塊在待檢測報(bào)文通道的出口獲取檢測報(bào)文的同時(shí),記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的終止時(shí)間戳。
即所述獲取模塊10在待檢測報(bào)文通道的出口獲取檢測報(bào)文時(shí),所述記錄模塊記錄當(dāng)前時(shí)刻作為所述檢測報(bào)文的終止時(shí)間戳,最終,所述檢測報(bào)文就是攜帶進(jìn)入所述待檢測報(bào)文通道的起始時(shí)間點(diǎn)和從所述待檢測報(bào)文通道出來的終止時(shí)間點(diǎn)的檢測報(bào)文。
在本實(shí)施例中,所述獲取模塊10在待檢測報(bào)文通道的出口獲取檢測報(bào)文的方式包括:同時(shí)在各個(gè)待檢測報(bào)文通道的出口獲取一個(gè)檢測報(bào)文,或同時(shí)在各個(gè)待檢測報(bào)文通道的出口依次獲取多個(gè)檢測報(bào)文;或者依次在各個(gè)待檢測報(bào)文通道的出口獲取一個(gè)檢測報(bào)文,或依次在各個(gè)待檢測報(bào)文通道的出口依次獲取多個(gè)檢測報(bào)文。
解析模塊20,用于解析出所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳;
在本實(shí)施例中,在從待檢測報(bào)文通道的出口獲取到檢測報(bào)文后,所述解析模塊20進(jìn)入?yún)f(xié)議棧中對獲取的檢測報(bào)文進(jìn)行解析,本實(shí)施例中的所述待檢測報(bào)文通道可以表示為cpu(centralprocessingunit,中央處理器)列隊(duì),也可稱之為通道隊(duì)列,而所述協(xié)議??梢员硎綾pu協(xié)議棧,其中,所述cpu協(xié)議棧的報(bào)文通道就有48個(gè)報(bào)文通道,相當(dāng)于有48個(gè)cpu隊(duì)列。
在本實(shí)施例中,所述獲取模塊10在所述待檢測報(bào)文通道中獲取到檢測報(bào)文時(shí),即可確定待檢測報(bào)文通道的通道標(biāo)識,即檢測報(bào)文中哪一個(gè)報(bào)文通道中出來,則該報(bào)文通道即為待檢測的報(bào)文通道,并獲取所述待檢測報(bào)文通道 的通道標(biāo)識;或者在所述待檢測報(bào)文通道中獲取到檢測報(bào)文時(shí),分析檢測報(bào)文攜帶的通道標(biāo)識,以確定待檢測待檢測報(bào)文通道。而在獲取到檢測報(bào)文之后,所述解析模塊20對獲取的檢測報(bào)文進(jìn)行解析,以解析出檢測報(bào)文的時(shí)間戳,所述時(shí)間戳即所述檢測報(bào)文在對應(yīng)的報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳。具體地,是通過dma((directmemoryaccess,直接內(nèi)存存取)方式把檢測報(bào)文從報(bào)文通道中提取到cpu協(xié)議棧(也可稱之為cpu內(nèi)存)中以便于進(jìn)行解析計(jì)算,在底層實(shí)現(xiàn)上當(dāng)cpu隊(duì)列緩存內(nèi)有檢測報(bào)文,則通過dma將檢測報(bào)文從報(bào)文通道中復(fù)制到cpu內(nèi)存區(qū)域并觸發(fā)中斷信號,以便于解析所述檢測報(bào)文的起始時(shí)間戳和終止時(shí)間戳。
計(jì)算模塊30,用于基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延;
在確定檢測報(bào)文的起始時(shí)間戳或終止時(shí)間戳之后,所述計(jì)算模塊30基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,即可計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延,也就是將終止時(shí)間戳的時(shí)間減去起始時(shí)間戳的時(shí)間點(diǎn),即可得到時(shí)間差,該時(shí)間差即為所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延。具體地,在獲取到檢測報(bào)文內(nèi)容后從檢測報(bào)文指定位置讀取rxtimestamp和txtimestamp時(shí)戳。兩者通過delaytime=txtimestamp–rxtimestamp公式即可完成時(shí)延計(jì)算。而報(bào)文通道的通道標(biāo)識則直接通過channelno字段解析得出。另外,也可以通過底層dma機(jī)制攜帶報(bào)文通道的通道標(biāo)識到cpu內(nèi)存中,以通過軟件模塊讀取。在本實(shí)施例僅采用解析報(bào)文方式獲取。
處理模塊40,用于將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延。
在所述計(jì)算模塊30計(jì)算檢測報(bào)文在所述待檢測報(bào)文通道的時(shí)延之后,所述處理模塊40將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延,具體地,在待檢測報(bào)文通道的出口獲取到的檢測報(bào)文為一個(gè)時(shí),將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延;而在待檢測報(bào)文通道的出口獲取到的檢測報(bào)文為多個(gè)時(shí),將所述待檢測報(bào)文通道中各個(gè)檢測報(bào)文的時(shí)延進(jìn)行相加并求平均值,并將所述平均值作為所述待檢測報(bào)文通道的平均時(shí)延,根據(jù)這種方式即可得到各個(gè)待檢測報(bào)文通道的平均時(shí)延。而待檢測報(bào)文通道的平 均時(shí)延的計(jì)算方式還可以以不同周期進(jìn)行計(jì)算:例如以周期為5秒、15秒、30秒進(jìn)行時(shí)延均值計(jì)算,計(jì)算公式如下:avg=(t1+t2···+tn)/period,其中,tn是一個(gè)檢測周期內(nèi)第n個(gè)檢測報(bào)文的時(shí)延值,根據(jù)這種計(jì)算方式即可計(jì)算各個(gè)待檢測報(bào)文通道的平均時(shí)延。
為更好理解本方案,舉例應(yīng)用場景如下:
首先,構(gòu)造檢測報(bào)文,檢測報(bào)文的格式為:
dstmac:
data:0x00d0d0ffffff
mask:0xffffffffffff
ethertype:
data:0x8875
mask:0xffff
channelno:
data:xx
mask:0xff
檢測報(bào)文構(gòu)造完成后,指定action動作如下:
copytocpu
cosqcpunew
drop
其中,copytocpu動作負(fù)責(zé)把檢測報(bào)文復(fù)制到cpu端口即報(bào)文通道的入口;cosqcpunew動作用于指定檢測報(bào)文需要進(jìn)入的cpu端口隊(duì)列即報(bào)文通道隊(duì)列的通道編號;drop動作表示丟棄檢測報(bào)文,該動作是在報(bào)文通道檢測完成后。
本發(fā)明提出的報(bào)文通道的檢測裝置,先在待檢測報(bào)文通道的出口獲取檢測報(bào)文,然后解析出所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,再基于所述檢測報(bào)文在所述待檢測報(bào)文通道中的起始時(shí)間戳和終止時(shí)間戳,計(jì)算所述檢測報(bào)文在所述待檢測報(bào)文通道中的時(shí)延,最后將計(jì)算的所述時(shí)延作為所述待檢測報(bào)文通道的平均時(shí)延,而不是在檢測網(wǎng)絡(luò)設(shè)備的報(bào)文通道時(shí),只能對網(wǎng)絡(luò)設(shè)備的各項(xiàng)功能一個(gè)個(gè)測試分析以排查故障,最終才能確定是時(shí)延性出現(xiàn)問題,本發(fā)明通過對檢測報(bào)文進(jìn)行分析,以確定報(bào) 文通道的時(shí)延,提高了對報(bào)文通道檢測的效率。
進(jìn)一步地,為了提高報(bào)文通道的檢測靈活性,基于第一實(shí)施例提出本發(fā)明報(bào)文通道的檢測裝置的第二實(shí)施例,在本實(shí)施例,參照圖6,所述報(bào)文通道的檢測裝置還包括:
統(tǒng)計(jì)模塊50,用于若預(yù)設(shè)時(shí)間間隔內(nèi),在所述待檢測報(bào)文通道的出口獲取到多個(gè)檢測報(bào)文,則統(tǒng)計(jì)獲取到的檢測報(bào)文的個(gè)數(shù);
確定模塊60,用于根據(jù)統(tǒng)計(jì)的個(gè)數(shù)確定所述預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量。
在本實(shí)施例中,若預(yù)設(shè)時(shí)間間隔內(nèi),在所述待檢測報(bào)文通道的出口獲取到多個(gè)檢測報(bào)文,則所述統(tǒng)計(jì)模塊50統(tǒng)計(jì)獲取到的檢測報(bào)文的個(gè)數(shù),然后所述確定模塊60根據(jù)統(tǒng)計(jì)的個(gè)數(shù)即可確定所述預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量。其中,所述預(yù)設(shè)時(shí)間間隔根據(jù)具體時(shí)間進(jìn)行設(shè)置,可以設(shè)置為30秒、1分鐘、10分鐘或30分鐘等等,最終,將所述待檢測報(bào)文通道的報(bào)文累計(jì)量作為所述待檢測報(bào)文通道的檢測結(jié)果。具體地,計(jì)算方式如下:avg=count/period,其中,count是一個(gè)統(tǒng)計(jì)周期內(nèi)待檢測報(bào)文通道傳輸?shù)臋z測報(bào)文的累加個(gè)數(shù)。
進(jìn)一步地,所述統(tǒng)計(jì)模塊50還可按照周期性統(tǒng)計(jì)所述待檢測報(bào)文通道的檢測報(bào)文個(gè)數(shù),即每隔預(yù)設(shè)時(shí)間間隔統(tǒng)計(jì)待檢測報(bào)文通道的檢測報(bào)文。
在本實(shí)施例中,不僅僅采用時(shí)延作為報(bào)文通道的檢測結(jié)果,還將累計(jì)量作為報(bào)文通道的檢測結(jié)果,提高了報(bào)文通道檢測的靈活性。
進(jìn)一步地,為了提高報(bào)文通道的檢測靈活性,基于第二實(shí)施例提出本發(fā)明報(bào)文通道的檢測裝置的第三實(shí)施例,在本實(shí)施例,參照圖7,當(dāng)所述獲取模塊定時(shí)在待檢測報(bào)文通道的出口獲取檢測報(bào)文時(shí),所述報(bào)文通道的檢測裝置還包括:
第一比對模塊70,用于將所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量進(jìn)行比對;
復(fù)位模塊80,用于在所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量相等時(shí),對所述待檢測報(bào)文通道 進(jìn)行清空復(fù)位。
在本實(shí)施例中,在確定所述待檢測報(bào)文通道的累計(jì)量后,所述第一比對模塊70將所述待檢測報(bào)文通道的報(bào)文累計(jì)量與上一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)所述待檢測報(bào)文通道的報(bào)文累計(jì)量進(jìn)行比對,若比對結(jié)果相同,說明本次預(yù)設(shè)時(shí)間間隔內(nèi)檢測報(bào)文在所述待檢測通道中沒有傳送成功,即可表示所述待檢測報(bào)文通道已經(jīng)完全阻塞了,才導(dǎo)致檢測報(bào)文發(fā)送失敗,此時(shí),所述復(fù)位模塊80對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位,相當(dāng)于通過復(fù)位相關(guān)的底層模塊來解決問題。
具體地,在構(gòu)造報(bào)文的發(fā)送方式不同時(shí),待檢測報(bào)文通道累計(jì)量的檢測方式也包括以下兩種情況:
1)對于周期性發(fā)送檢測報(bào)文的情況下,則定時(shí)讀取待檢測報(bào)文通道中檢測報(bào)文的數(shù)量,并且所述第一比對模塊70將本次讀取的檢測報(bào)文的數(shù)量與所述待檢測報(bào)文通道上次讀取的檢測報(bào)文的數(shù)量進(jìn)行比較,以判斷所述待檢測報(bào)文通道是否處于有效工作狀態(tài);如果統(tǒng)計(jì)計(jì)數(shù)有累加變化則說明所述待檢測報(bào)文通道工作正常,無需進(jìn)行自恢復(fù)處理,值得注意的是,在上述的定時(shí)處理中,定時(shí)周期要大于檢測報(bào)文的發(fā)送周期,這樣才能保證在正常情況下獲取檢測報(bào)文統(tǒng)計(jì)的數(shù)值是累加計(jì)數(shù)后;如果統(tǒng)計(jì)計(jì)數(shù)沒有變化,說明所述待檢測報(bào)文通道處于失效狀態(tài),即所述待檢測報(bào)文通道阻塞了,則此時(shí)所述復(fù)位模塊80對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位以恢復(fù)所述待檢測報(bào)文通道。
2)對于按需發(fā)送檢測報(bào)文的情況,如果前后兩次讀取檢測報(bào)文的累加計(jì)數(shù)無變化,需要進(jìn)一步區(qū)分當(dāng)前網(wǎng)絡(luò)設(shè)備是處于空閑狀態(tài)還是出現(xiàn)報(bào)文通道故障到檢測報(bào)文失效,在按需檢測狀況下,觸發(fā)檢測報(bào)文的發(fā)送,并在發(fā)送完成后重新讀取報(bào)文統(tǒng)計(jì)計(jì)數(shù);如果全局統(tǒng)計(jì)計(jì)數(shù)有累加變化,說明所述待檢測報(bào)文通道工作正常,無需自恢復(fù)處理;如果按需檢測狀況下,通過報(bào)文通道的統(tǒng)計(jì)計(jì)數(shù)判斷出產(chǎn)生故障,所述復(fù)位模塊80同樣對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位以恢復(fù)所述待檢測報(bào)文通道。
在本實(shí)施例中,若檢測報(bào)文發(fā)送周期是1秒,那么在故障檢測自恢復(fù)決策處理中,3秒內(nèi)若無法收到檢測報(bào)文或者檢測報(bào)文計(jì)數(shù)累加統(tǒng)計(jì)不變,則認(rèn)為所述待檢測報(bào)文通道產(chǎn)生故障,可對所述待檢測報(bào)文通道進(jìn)行清空復(fù)位, 以保障所述待檢測報(bào)文通道不產(chǎn)生長時(shí)間的檢測報(bào)文丟失情況;或者是通過切換報(bào)文通道并采用復(fù)位底層硬件模塊方式來恢復(fù)原有報(bào)文通道。
進(jìn)一步地,為了提高報(bào)文通道的檢測靈活性,基于第一、第二或第三實(shí)施例提出本發(fā)明報(bào)文通道的檢測裝置的第四實(shí)施例,在本實(shí)施例,參照圖8,所述報(bào)文通道的檢測裝置還包括:
第二比對模塊90,用于將所述待檢測報(bào)文通道的平均時(shí)延與預(yù)設(shè)時(shí)延進(jìn)行比對;
提高模塊100,用于在所述待檢測報(bào)文通道的平均時(shí)延高于預(yù)設(shè)時(shí)延時(shí),提高所述待檢測報(bào)文通道的優(yōu)先級。
在本實(shí)施例中,首先獲取所述待檢測報(bào)文通道的平均時(shí)延;然后所述第二比對模塊90將所述平均時(shí)延與預(yù)設(shè)時(shí)延進(jìn)行比較;如果當(dāng)前能夠滿足協(xié)議要求,即所述待檢測報(bào)文通道的所述平均時(shí)延低于或等于預(yù)設(shè)時(shí)延時(shí),說明報(bào)文通道傳輸?shù)膱?bào)文速度較快,達(dá)到要求了,不會出現(xiàn)較大的延遲,此時(shí)不做處理;如果所述待檢測報(bào)文通道的所述平均時(shí)延高于預(yù)設(shè)時(shí)延,說明報(bào)文通道的時(shí)延性較大,可能是通道的報(bào)文傳輸速度較慢,不符合要求,則此時(shí)所述提高模塊100提高所述待檢測報(bào)文通道的優(yōu)先級,以增強(qiáng)所述報(bào)文通道的性能,以便于下次傳輸協(xié)議報(bào)文時(shí)該報(bào)文通道的時(shí)延性會降低。
進(jìn)一步地,還可以根據(jù)不同的策略需求查找更優(yōu)報(bào)文通道,具體地,可以是在協(xié)議提取階段指定需要變更的報(bào)文通道,以完成報(bào)文通道的自適應(yīng)優(yōu)化,以便于所述報(bào)文通道所在的網(wǎng)絡(luò)設(shè)備傳輸協(xié)議報(bào)文時(shí),先采用所述網(wǎng)絡(luò)設(shè)備中優(yōu)先級高的報(bào)文通道作為協(xié)議報(bào)文待傳送的報(bào)文通道。
進(jìn)一步地,本實(shí)施例中采用平均時(shí)延與協(xié)議要求最高時(shí)延門限即預(yù)設(shè)時(shí)延進(jìn)行比較。如果當(dāng)前報(bào)文通道的平均時(shí)延>協(xié)議要求時(shí)延最高時(shí)延門限,則在當(dāng)前調(diào)度節(jié)點(diǎn)內(nèi)較高優(yōu)先級報(bào)文通道開始查找,如果找到高優(yōu)先報(bào)文通道時(shí)延性能<協(xié)議要求時(shí)延最高門限,進(jìn)一步讀取當(dāng)前報(bào)文通道的檢測報(bào)文累計(jì)量和待優(yōu)選報(bào)文通道的檢測報(bào)文累計(jì)量,按累計(jì)量比例估算待選擇報(bào)文通道的預(yù)測時(shí)延性能。如果此預(yù)測時(shí)延性能大于當(dāng)前傳輸協(xié)議要求時(shí)延,則遞次查找更高優(yōu)先級報(bào)文通道直至最高優(yōu)先級報(bào)文通道。如果最高級優(yōu)先級報(bào)文通道依舊無法滿足,則不做自適應(yīng)優(yōu)化動作。
在本實(shí)施例中,由于應(yīng)用場景是網(wǎng)絡(luò)設(shè)備擁有多個(gè)報(bào)文通道,并且各個(gè)報(bào)文通道根據(jù)檢測報(bào)文進(jìn)行自適應(yīng)檢測與處理的過程,并且到cpu協(xié)議棧的報(bào)文通道有48個(gè)cpu隊(duì)列,因此,隊(duì)列調(diào)度采用4級調(diào)度方式進(jìn)行調(diào)度。
在本發(fā)明中,實(shí)現(xiàn)了報(bào)文通道的自適應(yīng)檢測和自適應(yīng)決策處理,提高了檢測報(bào)文在網(wǎng)絡(luò)設(shè)備中的處理效能和檢測報(bào)文處理通道的冗余保護(hù),提高了網(wǎng)絡(luò)健壯性和容錯(cuò)能力。特別是在大業(yè)務(wù)量、復(fù)雜網(wǎng)絡(luò)場景下,有效地解決了網(wǎng)絡(luò)協(xié)議報(bào)文在設(shè)備內(nèi)部的優(yōu)化處理,保障了網(wǎng)絡(luò)的正常運(yùn)行。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者系統(tǒng)中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。