鄭航飛,張顯峰,周成龍
(1.武漢郵電科學(xué)研究院,湖北武漢 430073;2.烽火通信科技股份有限公司,湖北武漢 430073)
隨著通信技術(shù)的發(fā)展,網(wǎng)絡(luò)已經(jīng)自然而深刻地融入人類的日常生活和工作。人們希望借助于網(wǎng)絡(luò),隨時(shí)隨地通過語(yǔ)音、圖像以及視頻等多種方式進(jìn)行靈活通信。隨著網(wǎng)絡(luò)的普及性越來越高,網(wǎng)絡(luò)的用戶群體也在逐漸擴(kuò)大,這些用戶群體對(duì)網(wǎng)絡(luò)使用過程中的滿意度是很重要的。因此對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)流量進(jìn)行分析也成了至關(guān)重要的一個(gè)環(huán)節(jié)。
傳統(tǒng)的網(wǎng)絡(luò)流量分類都是通過傳輸層的端口號(hào)進(jìn)行區(qū)分不同的業(yè)務(wù),但是隨著網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)中的業(yè)務(wù)急速增長(zhǎng),傳統(tǒng)的網(wǎng)絡(luò)流量分類已經(jīng)滿足不了移動(dòng)互聯(lián)網(wǎng)中大量業(yè)務(wù)的解析,進(jìn)而有了深度報(bào)文檢測(cè)技術(shù),這種技術(shù)能夠更深層次地對(duì)報(bào)文進(jìn)行解析,從而能夠更精確地對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)流量進(jìn)行識(shí)別分類。但是,深度報(bào)文分析能做到的只是對(duì)網(wǎng)絡(luò)流量進(jìn)行識(shí)別,無(wú)法對(duì)識(shí)別到的數(shù)據(jù)流量進(jìn)行分析計(jì)算。
該文基于PON 接入系統(tǒng),提出了一種網(wǎng)絡(luò)質(zhì)差分析方法,該方法與傳統(tǒng)報(bào)文檢測(cè)方法不同的是,在網(wǎng)絡(luò)流量經(jīng)過OLT(光線路終端)時(shí),對(duì)現(xiàn)網(wǎng)中的網(wǎng)絡(luò)流量進(jìn)行動(dòng)態(tài)分析,通過特征庫(kù)將網(wǎng)絡(luò)中的流量分為視頻流量、線上辦公流量、游戲流量、在線教育流量等,進(jìn)一步對(duì)這些數(shù)據(jù)流量進(jìn)行計(jì)算,從而精確地得出相關(guān)的網(wǎng)絡(luò)問題[1-4]。
質(zhì)差分析方法架構(gòu)圖如圖1 所示,系統(tǒng)部署在OLT 上,用戶上網(wǎng)的網(wǎng)絡(luò)流量會(huì)經(jīng)過OLT 的主控盤交換芯片的鏡像功能進(jìn)行鏡像,將所有的網(wǎng)絡(luò)流量鏡像到網(wǎng)絡(luò)資源板卡。
圖1 質(zhì)差分析方法架構(gòu)設(shè)計(jì)圖
在網(wǎng)絡(luò)質(zhì)差分析設(shè)備的底層收包,采用了DPDK(Data Plane Development Kit)架構(gòu),DPDK 的主要職責(zé)是管理網(wǎng)卡,將網(wǎng)卡收到的數(shù)據(jù)包進(jìn)行處理。在傳統(tǒng)的網(wǎng)絡(luò)協(xié)議棧中,網(wǎng)絡(luò)報(bào)文會(huì)通過網(wǎng)卡接收和發(fā)送,傳統(tǒng)的報(bào)文接收發(fā)送都需要向CPU 發(fā)送中斷,而且每次中斷都需要保存、恢復(fù)處理器狀態(tài),同時(shí)運(yùn)行中斷程序,這樣的操作會(huì)消耗大量的時(shí)間,對(duì)于這樣數(shù)據(jù)量大、高性能的方法,處理速度將會(huì)成為整個(gè)方法的性能瓶頸。因此,在底層收包的處理上選用了DPDK,其采用輪詢模式驅(qū)動(dòng)的方式直接操作網(wǎng)卡的接收和發(fā)送隊(duì)列,將報(bào)文直接拷貝到用戶內(nèi)存空間[5-9]。
在DPDK 收包處理之后,原始的數(shù)據(jù)報(bào)文會(huì)進(jìn)入到網(wǎng)絡(luò)流量質(zhì)差分析方法中進(jìn)行深度報(bào)文分析以及相關(guān)網(wǎng)絡(luò)指標(biāo)的計(jì)算,在程序運(yùn)行的過程中,會(huì)將計(jì)算的結(jié)果上報(bào)到主控盤的CPU,然后輸出計(jì)算的結(jié)果。
方法模塊圖如圖2 所示,首先在現(xiàn)網(wǎng)中獲取到一些應(yīng)用的域名,然后將這些域名手動(dòng)配置進(jìn)特征庫(kù),在DPDK 做了收包處理以后,首先會(huì)結(jié)合配置的特征庫(kù)對(duì)該數(shù)據(jù)流進(jìn)行識(shí)別,在將數(shù)據(jù)流進(jìn)行了初步識(shí)別之后,將收到的數(shù)據(jù)包進(jìn)行深度報(bào)文解析,根據(jù)不同報(bào)文的端口、標(biāo)識(shí)號(hào)不同等特點(diǎn),進(jìn)行不同的解析。解析部分分為DNS 報(bào)文解析以及MAC 地址同步。在將數(shù)據(jù)報(bào)文深度解析得到需要的數(shù)據(jù)之后,就進(jìn)入到最重要的網(wǎng)絡(luò)KPI計(jì)算部分,該部分用到了一些現(xiàn)階段比較優(yōu)秀的算法,根據(jù)特征庫(kù)配置的應(yīng)用來進(jìn)行計(jì)算[10-11],然后將分析計(jì)算出來的數(shù)據(jù)存放在共享內(nèi)存中,最后將計(jì)算結(jié)果上報(bào)到主控盤。
2.1.1 MAC地址同步
整個(gè)網(wǎng)絡(luò)流量分析方法部署在OLT,OLT 的主控盤會(huì)定時(shí)向網(wǎng)絡(luò)流量分析資源板卡發(fā)送MAC 地址同步報(bào)文,這種報(bào)文采用的是UDP 報(bào)文格式。在OLT 上進(jìn)行組包時(shí),只打包了OLT 下所掛的ONU(光網(wǎng)絡(luò)單元)的基本信息,如OLT 的IP 地址,ONU 的MAC地址,所屬的OLT編號(hào)、槽位號(hào)以及VLAN號(hào)等。
在DPDK 收包處理以后,報(bào)文解析模塊會(huì)收到原始報(bào)文,在經(jīng)過深度報(bào)文分析,可以解析獲得OLT封裝在報(bào)文中的ONU 信息。
2.1.2 DNS解析
DNS 解析是很重要的一個(gè)部分,在這個(gè)部分,DNS 解析模塊同樣能收到網(wǎng)絡(luò)中的原始報(bào)文,在這個(gè)模塊會(huì)根據(jù)DNS 報(bào)文的特點(diǎn),逐層解包。根據(jù)數(shù)據(jù)報(bào)文的格式,在收到報(bào)文后,先將報(bào)文中的以太頭剝離,獲取到數(shù)據(jù)報(bào)文中的源Mac 地址和目的Mac地址,同時(shí)還將獲取數(shù)據(jù)包的類型。DNS 數(shù)據(jù)報(bào)文屬于UDP 數(shù)據(jù)報(bào)文的一種,因此在進(jìn)行DNS 解析時(shí),會(huì)優(yōu)先過濾掉其他類型的報(bào)文,提高后續(xù)的處理效率。
在經(jīng)過多次剝離報(bào)文后,DNS 數(shù)據(jù)報(bào)文中攜帶的DNS 信息會(huì)暴露出來,然后將報(bào)文中的數(shù)據(jù)解析出來。主要需要獲取的指標(biāo)有該DNS 交互的ONU的MAC 地址、域名、IP 地址列表以及響應(yīng)時(shí)間。在獲取到ONU 的MAC 地址后,根據(jù)上述的MAC 地址同步獲取到ONU 信息,并更新DNS 信息,將DNS 信息與對(duì)應(yīng)的ONU 信息綁定。完成了DNS 解析后,將解析所獲取的IP 地址列表回填到特征庫(kù)。
與傳統(tǒng)的深度報(bào)文檢測(cè)不同的是流處理,對(duì)網(wǎng)絡(luò)指標(biāo)進(jìn)行計(jì)算。流處理階段將計(jì)算現(xiàn)網(wǎng)中的用戶在對(duì)不同的應(yīng)用進(jìn)行訪問時(shí),所產(chǎn)生的不同的丟包、時(shí)延、抖動(dòng)等指標(biāo)。
在這個(gè)模塊中,根據(jù)不同的協(xié)議類型在網(wǎng)絡(luò)中傳輸?shù)奶攸c(diǎn),分別計(jì)算丟包、時(shí)延、抖動(dòng)。在收到數(shù)據(jù)報(bào)文以后,會(huì)初步將報(bào)文分為TCP、UDP、ICMP 三種報(bào)文。在分包處理時(shí),由于TCP 傳輸會(huì)進(jìn)行三次握手,并且有報(bào)文順序等特點(diǎn),所以這里只對(duì)正常報(bào)文之間的時(shí)延以及抖動(dòng)進(jìn)行計(jì)算,將其他的重傳報(bào)文、亂序報(bào)文不作計(jì)算時(shí)延抖動(dòng)的處理,而這些重傳亂序報(bào)文將會(huì)進(jìn)行丟包計(jì)算的處理。而對(duì)所有的UDP、ICMP 報(bào)文都只計(jì)算時(shí)延與抖動(dòng)[12]。
2.2.1 時(shí)延、抖動(dòng)計(jì)算
在計(jì)算算法方面,三種報(bào)文對(duì)于時(shí)延抖動(dòng)的計(jì)算采用的是一種計(jì)算方法。主要計(jì)算的指標(biāo)有平均往返時(shí)延(rtt_mean)、平均往返時(shí)延抖動(dòng)(rtt_jitter)以及TCP 數(shù)據(jù)流的超時(shí)重傳時(shí)間(Retrans_rto)。當(dāng)數(shù)據(jù)經(jīng)過報(bào)文解析的數(shù)據(jù)報(bào)文進(jìn)入到流處理模塊時(shí),首先在提前創(chuàng)建好的數(shù)據(jù)流中查詢這個(gè)數(shù)據(jù)報(bào)文的上一個(gè)符合要求的數(shù)據(jù)報(bào)文進(jìn)行計(jì)算,這里先計(jì)算出兩個(gè)報(bào)文之間的采樣時(shí)間,即往返時(shí)間(SampleRTT),如果在數(shù)據(jù)流中沒有找到符合要求的數(shù)據(jù)報(bào)文,那么當(dāng)前處理的這個(gè)數(shù)據(jù)報(bào)文將繼續(xù)掛在數(shù)據(jù)流尾部供下面到來的數(shù)據(jù)報(bào)文進(jìn)行計(jì)算。
計(jì)算表達(dá)式如下[13]:
1)平均往返時(shí)延:
2)平均往返時(shí)延抖動(dòng):
3)采用滾動(dòng)迭代的方法對(duì)兩種參數(shù)進(jìn)行計(jì)算,初始時(shí),rtt_mean=SampleRTT,后續(xù)每計(jì)算出一次SampleRTT 就更新得出一次rtt_mean,直到統(tǒng)計(jì)周期結(jié)束,得出最終rtt_mean。對(duì)于抖動(dòng),同樣也是采用滾動(dòng)迭代的方式進(jìn)行計(jì)算,初始時(shí),rtt_jitter=1/2 SampleRTT,后續(xù)每計(jì)算出一次SampleRTT 就更新一次,直到最終計(jì)算出rtt_jitter。
對(duì)于TCP 數(shù)據(jù)報(bào)文,還會(huì)存在重傳超時(shí)時(shí)間,對(duì)于重傳超時(shí)時(shí)間,計(jì)算表達(dá)式如下:
根據(jù)RFC6289,并經(jīng)過多次測(cè)試計(jì)算,在參數(shù)α取1/8,β取1/4,μ取1,γ取4 時(shí),計(jì)算結(jié)果最佳。
2.2.2 丟包計(jì)算
從數(shù)據(jù)報(bào)文的特點(diǎn)出發(fā),主要計(jì)算TCP 數(shù)據(jù)報(bào)文的丟包率。根據(jù)現(xiàn)網(wǎng)中數(shù)據(jù)流的方向可以初步將網(wǎng)絡(luò)流量分成上下行,如果收到的數(shù)據(jù)報(bào)文的目的MAC 地址為網(wǎng)絡(luò)側(cè)的MAC 地址,則判斷為上行數(shù)據(jù)報(bào)文,如果收到的數(shù)據(jù)報(bào)文源MAC 地址為網(wǎng)絡(luò)側(cè)的MAC 地址,則判斷為下行數(shù)據(jù)報(bào)文。
其次,對(duì)于網(wǎng)絡(luò)故障定位功能來說,僅做上下行判斷的準(zhǔn)確性遠(yuǎn)遠(yuǎn)不夠,因此,除了判斷上下行之外,還對(duì)丟包做了更加精確的定位處理。以監(jiān)測(cè)點(diǎn)為基準(zhǔn),除了將數(shù)據(jù)報(bào)文分為上下行外,還在上下行的基礎(chǔ)上將數(shù)據(jù)報(bào)文分為網(wǎng)絡(luò)側(cè)和用戶側(cè),網(wǎng)絡(luò)側(cè)數(shù)據(jù)報(bào)文即監(jiān)測(cè)點(diǎn)到服務(wù)器之間的數(shù)據(jù)報(bào)文,用戶側(cè)數(shù)據(jù)報(bào)文即監(jiān)測(cè)點(diǎn)到客戶端之間的數(shù)據(jù)報(bào)文。從而可以將數(shù)據(jù)報(bào)文更精確地分為上行用戶側(cè)數(shù)據(jù)報(bào)文、上行網(wǎng)絡(luò)側(cè)數(shù)據(jù)報(bào)文、下行用戶側(cè)數(shù)據(jù)報(bào)文、下行網(wǎng)絡(luò)側(cè)數(shù)據(jù)報(bào)文。因此,基于監(jiān)測(cè)點(diǎn),丟包可以分為上行用戶側(cè)丟包、上行網(wǎng)絡(luò)側(cè)丟包、下行用戶側(cè)丟包、下行網(wǎng)絡(luò)側(cè)丟包。
下行數(shù)據(jù)丟包分為下行網(wǎng)絡(luò)側(cè)丟包和下行用戶側(cè)丟包,即發(fā)送端為Client 端時(shí),發(fā)送的報(bào)文丟失,為下行數(shù)據(jù)丟包。下行網(wǎng)絡(luò)側(cè)丟包如圖3 所示,當(dāng)1 號(hào)報(bào)文發(fā)生下行網(wǎng)絡(luò)側(cè)丟包時(shí),User 端會(huì)在未收到1號(hào)報(bào)文的情況下,會(huì)持續(xù)向服務(wù)器發(fā)送0 號(hào)報(bào)文的Ack 報(bào)文,Client 端在持續(xù)收到三個(gè)0 號(hào)報(bào)文的Ack報(bào)文后,重新發(fā)送1 號(hào)數(shù)據(jù)報(bào)文,此時(shí),設(shè)置的監(jiān)測(cè)點(diǎn)上就會(huì)檢測(cè)到1 號(hào)報(bào)文的重傳報(bào)文。下行用戶側(cè)丟包如圖4 所示,1 號(hào)報(bào)文在監(jiān)測(cè)點(diǎn)與User 端發(fā)生了丟失,此時(shí)監(jiān)測(cè)點(diǎn)能檢測(cè)到一次1 號(hào)數(shù)據(jù)報(bào)文,但是User 端還是會(huì)向Client 端發(fā)送0 號(hào)數(shù)據(jù)報(bào)文的Ack報(bào)文,Client 繼而重發(fā)1 號(hào)數(shù)據(jù)報(bào)文,那么在監(jiān)測(cè)點(diǎn)就能再次檢測(cè)到1 號(hào)數(shù)據(jù)報(bào)文。
同理,上行數(shù)據(jù)丟包也分為上行網(wǎng)絡(luò)側(cè)丟包和上行用戶側(cè)丟包,即發(fā)送端為User 端時(shí),發(fā)送的報(bào)文丟失,為下行數(shù)據(jù)丟包[14-15]。
根據(jù)TCP 數(shù)據(jù)報(bào)文存在IP 首部ID 號(hào)(ID(i))、TCP報(bào)文首部序號(hào)(seq(i))以及超時(shí)重傳,基于方法中對(duì)于各種丟包的定義,在判定TCP 報(bào)文是否發(fā)生丟包之前,先定義如下表達(dá)式[16]:
①seq(i) 圖3 下行網(wǎng)絡(luò)側(cè)丟包 圖4 下行用戶側(cè)丟包 ②seq(i)=seq(j) ③T(i,j)>Retrans_rto(Retrans_rto 為上述重傳超時(shí)時(shí)間,T(i,j)為兩個(gè)數(shù)據(jù)報(bào)文之間的時(shí)間間隔) ④ID(i)-ID(j)>=3(ID為對(duì)應(yīng)報(bào)文IP 首部的ID號(hào)) 如果當(dāng)前處理的數(shù)據(jù)報(bào)文使表達(dá)式①and{③or④}為真時(shí),那么對(duì)于上行數(shù)據(jù)報(bào)文來說就是產(chǎn)生上行用戶側(cè)丟包,對(duì)于下行數(shù)據(jù)報(bào)文來說就是產(chǎn)生了下行網(wǎng)絡(luò)側(cè)丟包。如果當(dāng)前處理的數(shù)據(jù)報(bào)文使表達(dá)式②and{③or④}為真時(shí),對(duì)于上行就是產(chǎn)生上行網(wǎng)絡(luò)側(cè)丟包,對(duì)于下行就是產(chǎn)生下行用戶側(cè)丟包。 實(shí)驗(yàn)環(huán)境主要依賴于OLT,實(shí)驗(yàn)拓?fù)洵h(huán)境如圖5 所示,首先搭建模擬現(xiàn)網(wǎng)中的上網(wǎng)環(huán)境,在網(wǎng)關(guān)下面連接OLT,在OLT 下面連接多個(gè)ONU,然后在每個(gè)ONU 下面掛多個(gè)終端進(jìn)行上網(wǎng),產(chǎn)生上網(wǎng)流量,然后將檢測(cè)點(diǎn)設(shè)置到OLT 上,使用OLT 的鏡像功能,將OLT 正常的上網(wǎng)流量全部鏡像到質(zhì)差分析系統(tǒng)上,然后DPDK 進(jìn)行收包處理,之后開始對(duì)這些數(shù)據(jù)流量進(jìn)行分析。 圖5 實(shí)驗(yàn)拓?fù)洵h(huán)境 網(wǎng)絡(luò)流量質(zhì)差分析方法基于上述網(wǎng)絡(luò)拓?fù)溥M(jìn)行了實(shí)際的測(cè)試,在對(duì)數(shù)據(jù)流量進(jìn)行了初步的識(shí)別之后,統(tǒng)計(jì)并列舉出訪問域名的一些識(shí)別信息,如圖6所示。 結(jié)果顯示,該網(wǎng)絡(luò)流量質(zhì)差分析方法能將從OLT 經(jīng)過的網(wǎng)絡(luò)流量進(jìn)行識(shí)別分類,每個(gè)域名會(huì)對(duì)應(yīng)多個(gè)IP 地址,同時(shí)這種方法可以統(tǒng)計(jì)訪問該域名的次數(shù)以及成功的次數(shù)與未響應(yīng)的次數(shù),然后對(duì)每一種應(yīng)用的數(shù)據(jù)流進(jìn)行時(shí)延、抖動(dòng)計(jì)算。并對(duì)這些流量進(jìn)行TCP 的丟包、重傳的計(jì)算,部分結(jié)果數(shù)據(jù)如圖7 所示。 在將數(shù)據(jù)流初步識(shí)別之后,將每一種應(yīng)用的數(shù)據(jù)流進(jìn)行分類,然后根據(jù)分類后的數(shù)據(jù)流進(jìn)行計(jì)算,最后得出訪問不同的應(yīng)用時(shí),網(wǎng)絡(luò)出現(xiàn)的丟包、時(shí)延、抖動(dòng)等參數(shù)指標(biāo)。 基于PON 接入系統(tǒng),該文提出了一種網(wǎng)絡(luò)流量質(zhì)差分析方法,對(duì)現(xiàn)網(wǎng)中的數(shù)據(jù)流量進(jìn)行質(zhì)差分析,能將網(wǎng)絡(luò)流量根據(jù)業(yè)務(wù)類型進(jìn)行分類,該方法在對(duì)數(shù)據(jù)報(bào)文識(shí)別分類的基礎(chǔ)上能計(jì)算出這些數(shù)據(jù)流量的時(shí)延、抖動(dòng)、丟包等網(wǎng)絡(luò)性能參數(shù),并能定位到出現(xiàn)網(wǎng)絡(luò)故障的地方。同時(shí)用到了幾種參數(shù)的計(jì)算算法,這些算法能夠很好地解決在計(jì)算時(shí)延、抖動(dòng)、丟包等方面的問題。 盡管該方法能夠識(shí)別出現(xiàn)網(wǎng)中大部分類型的流量,但是還存在許多不足,比如目前只支持IPv4 數(shù)據(jù)報(bào)文的解析與識(shí)別,暫不支持IPv6 的數(shù)據(jù)報(bào)文進(jìn)行識(shí)別。同時(shí),參數(shù)計(jì)算準(zhǔn)確率還有待提高。在后續(xù),將針對(duì)IPv6 業(yè)務(wù)進(jìn)行完善,并改進(jìn)計(jì)算算法,以提高參數(shù)計(jì)算的準(zhǔn)確率。 圖6 流量識(shí)別信息截圖(部分) 圖7 流量KPI計(jì)算結(jié)果截圖(部分)3 實(shí)驗(yàn)結(jié)果分析
3.1 實(shí)驗(yàn)拓?fù)洵h(huán)境
3.2 實(shí)驗(yàn)結(jié)果數(shù)據(jù)分析
4 結(jié)束語(yǔ)