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