為什么需要NQA?NQA到底為何物?一文告訴你!
網(wǎng)絡(luò)質(zhì)量分析NQA(Network Quality Analysis)是一種實(shí)時(shí)的網(wǎng)絡(luò)性能探測和統(tǒng)計(jì)技術(shù),可以對響應(yīng)時(shí)間、網(wǎng)絡(luò)抖動、丟包率等網(wǎng)絡(luò)指標(biāo)進(jìn)行統(tǒng)計(jì)。NQA能夠?qū)崟r(shí)監(jiān)視網(wǎng)絡(luò)服務(wù)質(zhì)量,在網(wǎng)絡(luò)發(fā)生故障時(shí)進(jìn)行有效的故障診斷和定位。
1. 為什么需要NQA
隨著運(yùn)營商增值業(yè)務(wù)的開展,用戶和運(yùn)營商對QoS(Quality of Service)的相關(guān)要求越來越高,特別是在傳統(tǒng)的IP網(wǎng)絡(luò)承載語音和視頻業(yè)務(wù)后,運(yùn)營商與客戶之間簽訂SLA(Service Level Agreement)成為普遍現(xiàn)象。
為了讓用戶看到承諾的帶寬是否達(dá)到需求,運(yùn)營商需要提供相關(guān)的時(shí)延、抖動、丟包率等相關(guān)的統(tǒng)計(jì)參數(shù),以及時(shí)了解網(wǎng)絡(luò)的性能狀況。傳統(tǒng)的網(wǎng)絡(luò)性能分析方法(如Ping、Tracert等)已經(jīng)不能滿足用戶對業(yè)務(wù)多樣性和監(jiān)測實(shí)時(shí)性的要求。
NQA可以實(shí)現(xiàn)對網(wǎng)絡(luò)運(yùn)行狀況的準(zhǔn)確測試,輸出統(tǒng)計(jì)信息。NQA可以監(jiān)測網(wǎng)絡(luò)上運(yùn)行的多種協(xié)議的性能,使運(yùn)營商能夠?qū)崟r(shí)采集到各種網(wǎng)絡(luò)運(yùn)行指標(biāo),例如:HTTP的總時(shí)延、TCP連接時(shí)延、DNS解析時(shí)延、文件傳輸速率、FTP連接時(shí)延、DNS解析錯(cuò)誤率等。通過對這些指標(biāo)進(jìn)行控制,運(yùn)營商可以為用戶提供不同等級的網(wǎng)絡(luò)服務(wù)。同時(shí),NQA也是網(wǎng)絡(luò)故障診斷和定位的有效工具。
2. NQA工作原理
NQA客戶端和服務(wù)器 NQA測試中,把測試兩端稱為客戶端和服務(wù)器端(或者稱為源端和目的端),NQA的測試是由客戶端(源端)發(fā)起??蛻舳烁鶕?jù)測試?yán)臏y試類型,構(gòu)造符合相應(yīng)協(xié)議的報(bào)文并打上時(shí)間戳,再發(fā)送至服務(wù)器端。
NQA服務(wù)器負(fù)責(zé)處理NQA客戶端發(fā)來的測試報(bào)文,通過偵聽指定IP地址和端口號的報(bào)文對客戶端發(fā)起的測試進(jìn)行響應(yīng)??蛻舳烁鶕?jù)發(fā)送和接收報(bào)文來計(jì)算各項(xiàng)性能指標(biāo),如連通性、時(shí)延、丟包率等。
3.NQA測試?yán)幚頇C(jī)制
ICMP測試
ICMP測試是通過發(fā)送ICMP報(bào)文來判斷目的地的可達(dá)性、計(jì)算網(wǎng)絡(luò)響應(yīng)時(shí)間及丟包率。
源端向目的端發(fā)送構(gòu)造的ICMP Echo Request報(bào)文。目的端收到報(bào)文后,直接回應(yīng)ICMP Echo Reply報(bào)文給源端。
源端收到報(bào)文后,通過計(jì)算源端接收時(shí)間和源端發(fā)送時(shí)間之差,計(jì)算出源端到目的端的通信時(shí)間,從而清晰的反映出網(wǎng)絡(luò)性能及網(wǎng)絡(luò)暢通情況。
Trace測試
Trace測試用于檢測源端到目的端的轉(zhuǎn)發(fā)路徑,并沿該路徑記錄源設(shè)備到中間各個(gè)設(shè)備的時(shí)延等信息。
Trace測試的過程如下:
客戶端向目的端發(fā)送構(gòu)造的UDP報(bào)文,報(bào)文中的TTL為1。第一跳收到該報(bào)文后,判斷TTL后丟棄該報(bào)文,返回一份ICMP超時(shí)報(bào)文??蛻舳耸盏皆揑CMP超時(shí)報(bào)文后,記錄下第一跳設(shè)備的IP地址,并重新構(gòu)造一份UDP報(bào)文,報(bào)文中的TTL為2。第二跳收到該報(bào)文后,判斷TTL后丟棄該報(bào)文,返回一份ICMP超時(shí)報(bào)文。以此類推,最終報(bào)文到達(dá)最后一跳設(shè)備,返回一份ICMP端口不可達(dá)報(bào)文給客戶端??蛻舳耸盏矫刻祷氐腎CMP報(bào)文后,統(tǒng)計(jì)并打印出從客戶端到目的端的轉(zhuǎn)發(fā)路徑和該路徑上各設(shè)備的信息,從而清晰的反映出網(wǎng)絡(luò)狀況。
TCP測試
TCP測試用于檢測客戶端與TCP Server之間經(jīng)過三次握手建立TCP連接的速度。
客戶端通過接收TCP SYN ACK報(bào)文和發(fā)送TCP SYN報(bào)文、ACK報(bào)文的時(shí)間的差,計(jì)算出與TCP Server之間三次握手建立TCP連接的時(shí)間,從而清晰地反映出網(wǎng)絡(luò)中TCP協(xié)議的性能狀況。
UDP測試
網(wǎng)絡(luò)中的很多業(yè)務(wù)都是由UDP協(xié)議來承載的,一旦業(yè)務(wù)質(zhì)量下降后,沒有辦法檢測是業(yè)務(wù)本身的問題,還是UDP承載的性能問題。NQA的UDP測試可以用于檢測UDP承載的性能問題。
源端向目的端發(fā)送構(gòu)造的UDP報(bào)文,目的端回應(yīng)報(bào)文給源端。源端收到數(shù)據(jù)包后通過計(jì)算源端接收報(bào)文的時(shí)間和源端發(fā)送報(bào)文的時(shí)間的差,計(jì)算出源端與目的端之間通信的時(shí)間。從而清晰的反映出網(wǎng)絡(luò)UDP協(xié)議的性能狀況。
DNS測試
DNS測試以UDP報(bào)文為承載,通過模擬DNS Client向指定的DNS服務(wù)器發(fā)送域名解析請求,根據(jù)域名解析是否成功及域名解析需要的時(shí)間,來判斷DNS服務(wù)器是否可用,及域名解析速度。
FTP測試
FTP測試以TCP報(bào)文為承載,用于檢測是否可以與指定的FTP服務(wù)器建立連接,以及從FTP服務(wù)器下載指定文件或向FTP服務(wù)器上載指定文件的速度。
HTTP測試
HTTP測試主要是測試客戶端是否可以與指定的HTTP服務(wù)器建立連接,從而判斷該設(shè)備是否提供了HTTP服務(wù)以及建立連接的時(shí)間。
SNMP測試
SNMP測試主要用于檢測主機(jī)與SNMP Agent之間SNMP協(xié)議的連通性以及通信速度,以UDP報(bào)文為承載。
源端向SNMP Agent發(fā)送構(gòu)造的請求報(bào)文,SNMP Agent回應(yīng)報(bào)文給源端。源端收到數(shù)據(jù)包后通過計(jì)算源端接收報(bào)文的時(shí)間和源端發(fā)送報(bào)文的時(shí)間的差,計(jì)算出源端與SNMP Agent之間通信的時(shí)間。從而清晰的反映出網(wǎng)絡(luò)SNMP協(xié)議的性能狀況。
LSP Ping測試
LSP Ping測試用于檢測兩種類型(LDP, TE)的LSP路徑是否可達(dá)。
源端首先構(gòu)造MPLS Echo Request報(bào)文,在IP頭填入127.0.0.0/8網(wǎng)段的地址作為IP的目的地,根據(jù)配置對端LSR ID查找相應(yīng)的LSP,按指定的LSP進(jìn)行MPLS域內(nèi)的轉(zhuǎn)發(fā)。目的端偵聽3503端口發(fā)送MPLS Echo Reply響應(yīng)報(bào)文。
源端通過接收到的響應(yīng)報(bào)文,統(tǒng)計(jì)出測試結(jié)果,通過計(jì)算源端接收時(shí)間和源端發(fā)送時(shí)間之差,計(jì)算出源端到目的端的通信時(shí)間,從而清晰地反應(yīng)出MPLS網(wǎng)絡(luò)鏈路暢通情況。
LSP Trace測試
LSP Trace測試用于檢測兩種類型(LDP,TE)的LSP轉(zhuǎn)發(fā)路徑,并沿該路徑收集各設(shè)備的有關(guān)的統(tǒng)計(jì)信息。
源端首先構(gòu)造UDP的MPLS Echo Request報(bào)文,在IP頭填入127.0.0.0/8網(wǎng)段的地址作為IP的目的地,查找相應(yīng)的LSP。MPLS Echo Request報(bào)文應(yīng)該包含有Downstream MapPing TLV(用來攜帶LSP在當(dāng)前節(jié)點(diǎn)的下游信息,主要包括下一跳地址、出標(biāo)簽等)。
第一次發(fā)送的MPLS Echo Request報(bào)文的TTL為1。報(bào)文按指定的LSP進(jìn)行MPLS域內(nèi)的轉(zhuǎn)發(fā),TTL超時(shí)返回MPLS Echo Reply消息。源端繼續(xù)以TTL遞增的方式發(fā)送MPLS Echo Request報(bào)文,如此重復(fù),直到整條LSP上的所有LSR都應(yīng)答后,LSP Trace測試過程完成。
源端收到每跳LSR的應(yīng)答消息后,統(tǒng)計(jì)出從源端到目的端的LSP轉(zhuǎn)發(fā)路徑和該路徑上各設(shè)備的有關(guān)信息。從而清晰的反映出從源端到目的端的LSP轉(zhuǎn)發(fā)路徑。
PWE3 Ping測試
PWE3(Pseudo-Wire Emulation Edge to Edge) Ping測試?yán)糜跈z測基于MPLS轉(zhuǎn)發(fā)的PW路徑是否可達(dá)。
源端發(fā)送MPLS Echo Request報(bào)文并經(jīng)過PW轉(zhuǎn)發(fā)。報(bào)文到達(dá)遠(yuǎn)端PE后,返回MPLS Echo Reply報(bào)文。源端通過接收到的響應(yīng)報(bào)文,統(tǒng)計(jì)出測試結(jié)果,通過計(jì)算源端接收時(shí)間和源端發(fā)送時(shí)間之差,計(jì)算出源端到目的端的通信時(shí)間,從而清晰的反應(yīng)出此條PW通路暢通情況。
PWE3 Trace測試
PWE3 Trace測試用于檢測基于MPLS的PW轉(zhuǎn)發(fā)路徑,并沿該路徑收集各設(shè)備的有關(guān)的統(tǒng)計(jì)信息。
PWE3 Trace是源端通過連續(xù)發(fā)送TTL值從1到某個(gè)值的MPLS Echo Request報(bào)文,這樣路徑上的每個(gè)節(jié)點(diǎn)在TTL超時(shí)后,都返回一個(gè)MPLS Echo Reply報(bào)文。源端就可以收集PW上每個(gè)節(jié)點(diǎn)的信息,從而清晰的反映出從源端到目的端的PW轉(zhuǎn)發(fā)路徑,以及該路徑上各設(shè)備的有關(guān)的統(tǒng)計(jì)信息。
4. NQA典型應(yīng)用
靜態(tài)路由與NQA聯(lián)動
靜態(tài)路由本身并沒有檢測機(jī)制,如果非本機(jī)直連鏈路發(fā)生了故障,靜態(tài)路由不會自動從IP路由表中自動刪除,需要管理員介入,這就無法保證及時(shí)進(jìn)行鏈路切換,可能造成較長時(shí)間的業(yè)務(wù)中斷。
基于以上原因,需要有一種有效的方案來檢測靜態(tài)路由所在的鏈路。對于靜態(tài)路由而言,現(xiàn)有的靜態(tài)路由與BFD聯(lián)動特性,由于受到互通設(shè)備兩端都必須支持BFD的限制,在某些應(yīng)用場景無法實(shí)施。而靜態(tài)路由與NQA聯(lián)動則只要求互通設(shè)備的其中一端支持NQA即可。
靜態(tài)路由與NQA聯(lián)動組網(wǎng)
利用NQA測試?yán)齺頇z測靜態(tài)路由所在鏈路的狀態(tài),根據(jù)NQA的檢測結(jié)果,決定靜態(tài)路由是否活躍,達(dá)到避免通信的中斷或服務(wù)質(zhì)量降低的目的。
以上圖為例,RouterA至RouterD有主、備兩條鏈路,RouterA作為NQA客戶端來檢測至RouterD的鏈路狀態(tài):
- 如果NQA測試?yán)龣z測到主鏈路故障,RouterA將這條靜態(tài)路由設(shè)置為“非激活”狀態(tài);
- 如果NQA測試?yán)龣z測到主鏈路恢復(fù)正常,RouterA將這條靜態(tài)路由設(shè)置為“激活”狀態(tài)。