網(wǎng)絡(luò)體檢技術(shù)大揭秘(中篇)
我們接著《網(wǎng)絡(luò)體檢技術(shù)大揭秘》的上篇聊。在上篇中我們介紹了網(wǎng)絡(luò)體檢的必要性,并提前和大家劇透了下我們將從OSI七層網(wǎng)絡(luò)模型或TCP/IP模型的二三層分別和大家一起認識一些標準的、主流的網(wǎng)絡(luò)體檢手段,接著給大家展示了一種名曰EFM的二層體檢手段。
記憶力好的同學(xué)應(yīng)該能猜到我們今天要講點啥,因為我們在上篇中用一個表格給大家展示了兩種二層體檢手段的異同。沒錯,上篇的EFM應(yīng)用范圍屬于鏈路級,所以也比較簡單。
今天打算和大家一起認識的這位大兄弟能耐比EFM高,它的應(yīng)用范圍屬于網(wǎng)絡(luò)級的,也就是所整個二層網(wǎng)絡(luò)(不管有多大,只要是二層的就行)它都能搞定。NB的人物必須配備NB的接待規(guī)格,NB的技術(shù)我們就單設(shè)個中篇來描述,也算是一種對NB技術(shù)的致敬吧~
2. CFD技術(shù)
(1) 概念介紹
· MD
MD(Maintenance Domain,維護域)是指連通錯誤檢測所覆蓋的一個網(wǎng)絡(luò)或網(wǎng)絡(luò)的一部分,它以"MD名稱"來標識。
為了準確定位故障點,在MD中引入了級別(層次)的概念。MD共分為八級,用整數(shù)0~7來表示,數(shù)字越大級別越高,MD的范圍也就越大。不同MD之間可以相鄰或嵌套,但不能交叉,且嵌套時只能由高級別MD向低級別MD嵌套,即低級別MD必須包含在高級別MD內(nèi)部。低級別MD的CFD PDU進入高級別MD后會被丟棄;高級別MD的CFD PDU則可以穿越低級別MD;相同級別的MD的CFD PDU不可以互相穿越。
圖4 MD嵌套示意圖
在實際應(yīng)用中,要對MD進行合理規(guī)劃:如圖4所示,有MD_A和MD_B兩個MD,MD_B嵌套在MD_A中,要在MD_A中進行連通性檢測,就要求MD_A的CFD PDU能夠穿越MD_B,因此需要將MD_A的級別配置得比MD_B高。這樣,MD_A的CFD PDU就可以穿越MD_B,從而實現(xiàn)了整個MD_A的連通性故障管理,而MD_B的CFD PDU則不會擴散到MD_A中。
· MA
MA(Maintenance Association,維護集)是MD的一部分,一個MD可劃分為一個或多個MA。MA以"MD名稱+MA名稱"來標識。
一個MA服務(wù)于一個VLAN,MA中的MP所發(fā)送的報文都帶有該VLAN的標簽,同時MA中的MP可以接收由本MA中其它MP發(fā)來的報文。
· MP
MP(Maintenance Point,維護點)配置在接口上,屬于某個MA,可分為MEP(Maintenance association End Point,維護端點)和MIP(Maintenance association Intermediate Point,維護中間點)兩種。
· MEP
MEP確定了MA的邊界,它以"MEP ID"來標識。
MEP所屬的MA確定了該MEP發(fā)出的報文所屬的VLAN;MEP的級別等于其所屬MD的級別,MEP發(fā)出的報文的級別等于該MEP的級別。MEP的級別決定了其所能處理的報文的級別:當MEP收到高于自己級別的報文時不會進行處理,而是將其按原有路徑轉(zhuǎn)發(fā);而當MEP收到小于等于自己級別的報文時才會進行處理。需要注意的是,本段是針對同一VLAN內(nèi)的報文處理方式進行描述,不同VLAN內(nèi)的報文之間是相互隔離的,不會相互影響。
MEP具有方向性,分為內(nèi)向MEP和外向MEP兩種:
- 內(nèi)向MEP通過除其所在的接口以外的所有接口向外發(fā)送CFD PDU,即在其所屬MA所服務(wù)的VLAN中進行廣播。
- 外向MEP則直接通過其所在的接口向外發(fā)送CFD PDU。
· MIP
MIP位于MA的內(nèi)部,不能主動發(fā)出CFD PDU,但可以處理和響應(yīng)CFD PDU。MIP可以配合MEP完成類似于ping和tracert的功能。當MIP收到不等于自己級別的報文時不會進行處理,而是將其按原有路徑轉(zhuǎn)發(fā);只有當MIP收到等于自己級別的報文時才會進行處理。
圖5 CFD的分級配置
圖5所示為CFD的一種分級配置方式,圖中共有0、2、3、5四個級別的MD,標識號較大的MD的級別高、控制范圍廣;標識號較小的MD的級別低、控制范圍小。在Device A~Device F的各接口上配置了MP,譬如Device B的接口Ethernet1/1上配置有:級別為5的MIP、級別為3的內(nèi)向MEP、級別為2的內(nèi)向MEP和級別為0的外向MEP。
(2) 協(xié)議報文
CFD的協(xié)議報文被稱為CFD PDU。不同的CFD PDU具有相同的報文頭,通過頭部的類型字段來區(qū)分報文類型。
圖6 CFD PDU報文格式示意圖
圖6所示為CFD PDU的報文格式和常見的CFD PDU,CFD PDU中重要字段的含義如表4所示。
表4 CFD PDU重要字段含義
表5和表6對常見CFD PDU的類型、目標MAC地址、用途等給大家做了個直觀的展示。
表5 常見的CFD PDU表6 組播地址中x和y的取值
表6 組播地址中x和y的取值
(3) 連續(xù)性檢測功能
MEP之間的連通失敗可能由設(shè)備故障或配置錯誤造成,連續(xù)性檢測(Continuity Check,CC)功能就是用來檢測MEP之間的連通狀態(tài)。該功能的實現(xiàn)方式是:由MEP周期性地發(fā)送CCM PDU,相同MA的其它MEP接收該報文,并由此獲知遠端狀態(tài)。若MEP在3.5個CCM PDU發(fā)送周期內(nèi)未收到遠端MEP發(fā)來的CCM PDU,則認為鏈路有問題,會輸出日志報告。當MD中的多個MEP在發(fā)送CCM PDU時,就實現(xiàn)了多點到多點之間的鏈路檢測。
CCM PDU中時間間隔域(Interval域)的值、CCM PDU的發(fā)送間隔和遠端MEP的超時時間這三者之間的關(guān)系如表7所示。

(4) 環(huán)回測試功能
環(huán)回測試(Loopback,LB)功能類似于IP層的ping功能,用于驗證源MEP與目標MP之間的連接狀態(tài)。該功能的實現(xiàn)方式是:由源MEP發(fā)送LBM PDU給目標MP,并根據(jù)能否收到對端反饋的LBR PDU來檢驗鏈路狀態(tài)。
圖7 環(huán)回測試示意圖
如圖7所示,在Device A與Device C之間進行環(huán)回測試的過程如下:
- Device A向Device C發(fā)送LBM PDU,其中攜帶有該報文的發(fā)送時間;
- Device C收到該報文后,回復(fù)LBR PDU給Device A,其中攜帶有LBM PDU的發(fā)送和接收時間,以及LBR PDU的發(fā)送時間。
在超時時間內(nèi),如果Device A收到了Device C回應(yīng)的LBR PDU,則可以根據(jù)其中攜帶的時間信息算出Device A到Device C的網(wǎng)絡(luò)時延;否則,便認為Device A到Device C不可達。此外,通過連續(xù)發(fā)送多個LBM PDU并觀察LBR PDU的返回情況,還可以了解網(wǎng)絡(luò)的丟包情況。
(5) 鏈路跟蹤功能
鏈路跟蹤(Linktrace,LT)功能類似于IP層的tracert功能,用于確定源MEP到目標MEP的路徑,其實現(xiàn)方式是:由源MEP發(fā)送LTM PDU給目標MEP,目標MEP及LTM PDU所經(jīng)過的MIP收到該報文后,會發(fā)送LTR PDU給源MEP,源MEP則根據(jù)收到的LTR PDU來確定到目標MEP的路徑。
圖8 鏈路跟蹤示意圖
如圖8所示,在Device A與Device C之間進行鏈路跟蹤的過程如下:
- Device A向Device C發(fā)送LTM PDU,其中攜帶有TTL值和目標MEP的MAC地址;
- Device B收到該報文后,先將其TTL值減1,再繼續(xù)轉(zhuǎn)發(fā)給Device C,并回復(fù)LTR PDU給Device A,其中也攜帶有TTL值(等于Device A發(fā)送來的LTM PDU中的TTL值減1);
- Device C收到該報文后,回復(fù)LTR PDU給Device A,其中也攜帶有TTL值(等于Device B轉(zhuǎn)發(fā)來的LTM PDU中的TTL值再減1)。由于根據(jù)LTM PDU中攜帶的目標MEP的MAC地址,Device C可以判斷出自己就是目標MEP,因此不會再轉(zhuǎn)發(fā)該報文。
如果Device A到Device C之間的路徑有故障,則故障點下游的設(shè)備將無法收到LTM PDU,也不會回復(fù)LTR PDU,據(jù)此可判定故障點的位置。例如,若Device A能收到Device B回復(fù)的LTR PDU,但收不到Device C回復(fù)的LTR PDU,就可以判定Device B和Device C之間的路徑有故障。
(6) 告警抑制功能
告警抑制功能是ITU-T Y.1731基于CFD定義的擴展功能,用來減少MEP故障告警的數(shù)量。如果MEP在3.5個CCM PDU發(fā)送周期內(nèi)未收到遠端MEP發(fā)來的CCM PDU,便立刻開始周期性地發(fā)送AIS(Alarm Indication Signal,告警指示信號) PDU,該報文的發(fā)送方向與CCM PDU相反。其它MEP在收到AIS PDU后,會抑制本端的故障告警,并繼續(xù)發(fā)送AIS PDU。此后,如果MEP收到了CCM PDU,便停止發(fā)送AIS PDU并恢復(fù)故障告警。
圖9 告警抑制示意圖
如圖9所示,告警抑制的觸發(fā)過程如下:
- 當Device B和Device C之間的鏈路出現(xiàn)故障,Device B和Device C之間的連續(xù)性檢測失敗,向用戶發(fā)出故障告警信息;
- 檢測到故障后,Device B向Device A發(fā)送AIS PDU,而Device C則向Device D發(fā)送AIS PDU;
- Device A和Device D收到AIS PDU后,都進入告警抑制狀態(tài)。此后,如果Device A和Device D之間的連續(xù)性檢測失敗,將不再向用戶發(fā)出故障告警信息。
AIS PDU的缺省發(fā)送周期為1秒,由于告警抑制功能可以配置很多發(fā)送VLAN,而報文發(fā)送數(shù)量過多將對設(shè)備CPU造成負擔,因此在這種情況下可將AIS PDU的發(fā)送周期調(diào)整為1分鐘,從而減少報文發(fā)送數(shù)量。
(7) 單向丟包測試功能
單向丟包測試(Loss Measurement,LM)功能用來檢測MEP之間的單向丟包情況,其實現(xiàn)方式是:由源MEP發(fā)送LMM(Loss Measurement Message,丟包測試報文) PDU給目標MEP,目標MEP收到該報文后,會發(fā)送LMR(Loss Measurement Reply,丟包測試應(yīng)答) PDU給源MEP,源MEP則根據(jù)兩個連續(xù)的LMR PDU來計算源MEP和目標MEP間的丟包數(shù),即源MEP從收到第二個LMR PDU開始,根據(jù)本LMR PDU和前一個LMR PDU的統(tǒng)計計數(shù)來計算源MEP和目標MEP間的丟包數(shù)。
源MEP發(fā)送LMM PDU時會填充當前接口的發(fā)包統(tǒng)計計數(shù)TxFCf,目標MEP收到該報文后,會獲取當前接口的收發(fā)包統(tǒng)計計數(shù),并向源MEP回應(yīng)。LMR PDU中攜帶以下統(tǒng)計值:
- TxFCf:從收到的最后一個LMM PDU中的TxFCf字段復(fù)制而來。
- RxFCf:收到最后一個LMM PDU時,當前接口的收包統(tǒng)計計數(shù)。
- TxFCb:發(fā)送LMR PDU時,當前接口的發(fā)包統(tǒng)計計數(shù)。
源MEP收到LMR PDU后(至少需要兩次報文交互過程),進行丟包統(tǒng)計的計算公式如下:
- 遠端丟包數(shù)=|TxFCb[tc] – TxFCb[tp]| – |RxFCb[tc] – RxFCb[tp]|
- 本端丟包數(shù)=|TxFCf[tc] – TxFCf[tp]| – |RxFCl[tc] – RxFCl[tp]|
其中,tc表示前一次收發(fā)的測試報文,tp表示當前一次收發(fā)的報文。
圖10 單向丟包測試示意圖
如圖10所示,Device A與Device B之間的單向丟包測試過程如下:
- Device A以100毫秒為間隔向Device B發(fā)送指定數(shù)量(缺省為5個)的LMM PDU,報文中填充有發(fā)送接口的發(fā)包統(tǒng)計計數(shù)TxFCf。
- Device B收到LMM PDU時,先獲取當前接口的收包統(tǒng)計計數(shù)RxFCf,并在向Device A回應(yīng)LMR PDU時獲取當前接口的發(fā)包統(tǒng)計計數(shù)TxFCb。LMR PDU中會同時填充有TxFCf、RxFCf和TxFCb。后向Device A回應(yīng)DMR PDU,其中填充有TxTimef、RxTimef和TxTimeb
- Device A收到LMR PDU時,先獲取當前接口的收包統(tǒng)計計數(shù)RxFCl。從收到第二個LMR PDU開始,Device A就按前面的公式分別計算遠端和本端的丟包數(shù),并記錄本次交互的計算結(jié)果。在本次測試完成后再進行平均的測試統(tǒng)計結(jié)果。
單向丟包測試結(jié)果的準確度依賴于發(fā)送LMM PDU和LMR PDU,以及接收LMM PDU時,獲取硬件統(tǒng)計計數(shù)的及時性和和準確性。一般需要硬件支持直接向報文中填充報文的收發(fā)統(tǒng)計計數(shù)。
(8) 幀時延測試功能
幀時延測試(Delay Measurement,DM)功能用來檢測MEP之間報文傳輸?shù)臅r延情況,分為單向時延測試和雙向時延測試兩種:
a. 單向時延測試
單向時延測試功能的實現(xiàn)方式是:源MEP發(fā)送1DM(One-way Delay Measurement,單向時延測試) PDU給目標MEP,該報文中攜帶有其發(fā)送時間。目標MEP收到該報文后記錄其接收時間,并結(jié)合其發(fā)送時間來計算并記錄鏈路傳輸?shù)臅r延和抖動(即時延變化值)。
1DM PDU中的TxTimeStampf字段填充源MEP的發(fā)送時間TxTimef,RxTimeStampf字段填充目標MEP的接收時間RxTimef。源MEP會以100毫秒為間隔發(fā)送指定數(shù)量(缺省為5個)的1DM PDU。目標MEP收到該報文后,計算RxTimef與TxTimef的差值即為此次測試的時延。時延抖動則是本次測出的時延與已測出的最小時延的差值。單向時延測試要求測試設(shè)備之間已完成時鐘同步,否則測試出的時延有較大誤差,而只能進行時延抖動測試。
b. 雙向時延測試
雙向時延是用于測量報文從本端發(fā)送到接收的一次往返過程中,報文在鏈路上的消耗時間。測試是從源MEP向目的MEP發(fā)送測試請求報文,然后在接收到目的MEP的應(yīng)答報文后,根據(jù)應(yīng)答報文的接收時間和測試請求的發(fā)送時間的差值計算雙向報文時延。
DMM PDU中的TxTimeStampf字段填充源MEP的發(fā)送時間TxTimef,目標MEP收到此報文后直接將其中的TxTimef填充到DMR PDU中,并在DMR PDU中填充上DMM PDU的接收時間RxTimef和DMR PDU的發(fā)送時間TxTimeb。
源MEP在收到DMR PDU后,需要獲取到DMR PDU的接收時間RxTimeb。如果報文中填充了DMM PDU的接收時間和DMR PDU的發(fā)送時間,則可根據(jù)以下公式計算出報文往返消耗在鏈路上的雙向時延:雙向鏈路時延= (RxTimeb – TxTimef) – (TxTimeb – RxTimef);否則,只能計算出雙向報文時延= RxTimeb – TxTimef。
如圖11所示,Device A與Device B之間的雙向時延測試過程如下:
- Device A以100毫秒為間隔向Device B發(fā)送指定數(shù)量(缺省為5個)的DMM PDU,報文中填充有發(fā)送時間TxTimef。
- Device B收到DMM PDU后向Device A回應(yīng)DMR PDU,其中填充有TxTimef、RxTimef和TxTimeb。
- Device A收到DMR PDU后,計算出本此交互的雙向鏈路時延。從收到第二個DMR PDU開始,還要計算出雙向時延抖動和平均雙向時延。
(9) 比特錯誤測試功能
比特錯誤測試功能用來測試MEP之間的報文比特錯誤。由源MEP發(fā)送指定數(shù)量的TST(Test,比特錯誤測試) PDU給目標MEP(每個TST PDU都攜帶不同的遞增序號),該報文中攜帶有偽隨機序列或全0值。目標MEP收到該報文后,根據(jù)其中指定的測試模式和測試比特內(nèi)容進行計算和比較,從而確定報文是否有比特錯誤。測試的比特長度為32位,有以下幾種測試模式:
- 全0比特不帶校驗和
- 全0比特帶校驗和
- 偽隨機比特帶校驗和
- 偽隨機比特不帶校驗和