NQA技術配置簡單,但NQA報文發送有很多細節,如“多少秒探測一次?”、“兩個報文發送間隔是多久?”等等問題;
本節介紹NQA中報文的發送機製,具體實現請以官方技術文檔為主。
華三的NQA可以拆分為三個部分來理解:NQA測試組、NQA服務器與客戶端、NQA模板;
這三者的最終目的都是用於探測某個協議是否可達,但使用場景不同,具體如下:
NQA測試組:在NQA測試設備上做的單向NQA配置,稱為NQA測試組。
有兩個特點:
支持探測的類型如下:ICMP-echo測試(判斷可達)、ICMP-jitter測試(獲得網絡的單向和雙向時延抖動)、DHCP測試、DNS測試、FTP測試、HTTP測試、SNMP測試、UDP-tracert測試(使用UDP報文進行tracert測試)、DLSw測試;
NQA客戶端與服務器
測試組的特點是隻需要單向配置,對於如TCP此類需要三次握手的協議而言,僅僅NQA探測設備的單向報文無法滿足要求;
所以對於TCP、UDP-echo(探測UDP端口之間的連通性以及UDP報文的往返時間)、UDP-jitter(用UDP探測鏈路抖動時間,用於實時性業務)和Voice(語音)類型測試,探測對端也必須配置NQA來響應探測報文。
探測方就稱為NQA客戶段,被探測方稱為NQA服務器;
NQA客戶端實際就是NQA測試組,不過是名稱有區別,客戶端配置後需要手動開啟探測。NQA服務器配置後自動監聽
NQA模板
和NQA客戶端服務器類似,NQA模塊是對NQA測試組的補充;
測試組中提及要聯動其他模塊必須使用Track,這對於部分功能來說不便調用,比如LB健康檢測。NQA模板主要解決這類問題,其本質和測試組相同,隻是命令和測試組不同,同時可以被支持的模塊直接調用而無需手動開啟探測,其報文發送原理和測試組一致。
我個人將一個NQA測試組在構成上分三級:一輪NQA測試 -> 一次NQA探測-> 一個NQA探測報文
這裏特意注明“一次、一個”,是由於NQA是有多輪、多次、多個探測的,根據探測類型的不同,探測的數量也不相同
先來看一個基本的NQA配置模板:
[SW1]nqa ?
agent NQA客戶端的開關,如果要配置entry必須先使能agent
entry NQA客戶端測試組配置
schedule NQA調度,配置測試組後,必須調用調度才能啟動
server NQA服務端配置,隻有有限的幾個有用
template NQA模板配置,對於例如LB的功能,隻需要調用NQA模塊就可以自動執行而無需調度(schedule)
nqa entry 1 1 # 創建NQA測試組
type icmp-echo # 配置類型為ICMP-ECHO(ping測試)
destination ip 2.2.2.2 # 配置目的地址
source ip 10.0.12.1 # 配置源地址
frequency 5000
probe count 3
probe timeout 1000
reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
NQA測試組運行一次可以進行多輪NQA測試,測試輪次和frequency
參數有關,這個參數缺省為0ms,即測試組一次運行隻發送一輪測試。所以如果要一直探測,這個參數必須配置,配置後當上輪測試結束並經過一個frequency參數指定的時間間隔後,NQA進行下一輪探測。
每一輪測試可以有多次探測,這個數量由probe count決定,除UDP-tracert缺省是3次外,其他類型缺省都是一次。
每一次探測中ICMP-jitter、UDP-jitter或Path-jitter發送10個探測報文,一次Voice探測中發送1000個探測報文,這個數量可以通過probe packet-number修改,此外的其他類型均為1且無法修改。
注意:如果NQA類型不支持修改參數,則對應的命令無法配置
一次NQA探測發送多個報文的探測中,報文發送間隔由probe packet-interval命令決定,報文超時時間由packet-timeout
決定;
一次探測發送多個報文的NQA測試類型中,報文超時和發送間隔是兩個獨立計時器,一次探測中隻要到達發送間隔,立即發送下個報文,而不是等待超時時間到達;
一次探測發送一個報文的NQA測試類型中,無法配置probe packet-interval、packet-timeout命令,報文超時時間由probe timeout
決定,代表本次探測超時時間;
多個報文的報文超時時間由packet-timeout指定,和probe timeout配置互斥。即多報文一次探測的時間隻和配置的報文發送數量有關,單報文和probe timeout有關
一輪測試的間隔由frequency命令決定;在一輪測試內,隻有上輪測試完成,才進行下輪測試的等待,等待時間由frequency決定。【例如frequency 5s,上輪測試用時10s,那麼還需要再等待5s才能進入下輪測試,那麼總計就用了15s】
在一次探測內,對於發送多個探測報文的測試類型,隻要到達報文發送間隔就立即發送下一個報文,不等待上個報文超時,一次探測報文中所有發送的報文均收到響應或均超時則進入下次探測;對於發送單個報文的探測類型,本次探測超時或收到響應,進入下一次探測。
下圖為多報文UDP-jitter類型探測(多個探測報文),隻有收到響應或者所有報文均超時,才進入下一次探測動作
下圖為單報文icmp-echo探測,收到響應後立即進入下次探測動作,不繼續等待probe timeout 到達
如下圖是多報文的UDP-jitter類型探測抓包,第一個框是是一次探測結束,下次探測開始的現象。此時上次探測發送完最後一個報文,下次探測立即開始;第二個框是探測正常執行的狀態,前一個報文發送後,等待一個發送間隔發送下個報文
因為probe timeout和packet-timeout互斥,兩者不會同時配置在一個類型的探測中。所以不存在packet-timeout沒有結束,probe timeout已經超時的情況
NQA有三種動作
none:隻在本地記錄監測結果,以便通過顯示命令查看,不向網絡管理係統發送Trap消息。
trap-only:不僅在本地記錄監測結果,當閾值告警項的狀態改變時,還向網絡管理係統發送Trap消息。
trigger-only:在顯示信息中記錄監測結果的同時,觸發其他模塊聯動。
所以想要讓測試組和其他模塊聯動,動作必須配置為trigger-only
NQA失敗條件有三種
平均值(average):監測一次測試中探測結果的平均值,如果平均值不在指定的範圍內,則該監測對象超出閾值。例如,監測一次測試中探測持續時間的平均值。
累計數目(accumulate):監測一次測試中探測結果不在指定範圍內的累計數目,如果累計數目達到或超過設定的值,則該監測對象超出閾值。
連續次數(consecutive):NQA測試組啟動後,監測探測結果連續不在指定範圍內的次數,如果該次數達到或超過設定的值,則該監測對象超出閾值。
除平均值外,累計數目和連續次數的單位都是報文,1個報文探測失敗失敗次數就會+1
例如配置ICMP-ECHO測試,一輪探測次數為3次,連續3次失敗為閾值,則隻要一輪全部失敗,立即認為超出閾值。如果一輪探測次數為1次,連續3次失敗為閾值,則三輪連續失敗認為超出閾值。
對於一些特殊的類型,隻能按其功能選擇其中一項,如丟包探測隻能選擇累計
探測成功的條件也是按報文計算,但需要注意,NQA探測計數是在一次探測完畢後才計算的,比如probe packet-number 10,那麼隻有這是個報文都探測發送完畢,NQA才會計數,否則不計數(大部分NQA測試類型隻發送一個報文,不涉及這種場景)
NQA 配置案例可以參考官網,這裏不做重複://www.yolosolive.com/cn/d_202407/2223057_30005_0.htm#_Toc169638159
該案例暫時沒有網友評論
✖
案例意見反饋
親~登錄後才可以操作哦!
確定你的郵箱還未認證,請認證郵箱或綁定手機後進行當前操作