王 偉,黃 海,李軍政
(國家數(shù)字交換系統(tǒng)工程技術研究中心 河南 鄭州450002)
基于DPDK技術的VoIP流量識別研究與實現(xiàn)
王 偉,黃 海,李軍政
(國家數(shù)字交換系統(tǒng)工程技術研究中心 河南 鄭州450002)
作為廣泛應用和發(fā)展的VoIP技術,其流量識別和有效監(jiān)控仍然受到各類運營商的關注。針對當前互聯(lián)網(wǎng)海量流量的網(wǎng)絡形式,實現(xiàn)VoIP流量高效識別的目的,本文采用基于DPDK技術的VOIP流量識別方法,將受限于網(wǎng)卡和帶寬的傳統(tǒng)服務器離散式框架整合至一個擴展性更高且更簡單的單個網(wǎng)絡流量識別框構。最后通過DPDK平臺的VoIP流量識別試驗,試驗得出DPDK方案以64 byte小包識別率是基于Linux內(nèi)核的5~10倍,驗證了該方案對VoIP流量識別的提升作用。
高速網(wǎng)絡;DPDK;VoIP流量識別;識別框架
互聯(lián)網(wǎng)的迅速發(fā)展,使VoIP業(yè)務得到迅速推廣和廣泛應用。研究高速有效的VoIP流量識別技術,提供網(wǎng)絡業(yè)務管理和應用,當下仍然是運營商關注的焦點。面對大量高速高吞吐量的網(wǎng)絡環(huán)境,高速有效的數(shù)據(jù)包處理性能至關重要。在新的網(wǎng)絡形勢下,基于通用硬件平臺的流量識別技術不再滿足業(yè)務需求。數(shù)據(jù)包收發(fā)過程中,通用服務器和網(wǎng)卡同樣面臨著嚴重的性能瓶頸。傳統(tǒng)流量識別方案調(diào)用內(nèi)核網(wǎng)絡協(xié)議棧,導致大量的資源浪費和網(wǎng)絡開銷。因此新形勢下的VoIP流量識別方法需要提出擴展性更高更簡單的解決辦法。
在X86服務器和多核技術的發(fā)展對對數(shù)據(jù)包性能提升的基礎上,文中首先介紹了DPDK技術,隨后提出了基于DPDK開源技術的VoIP流量識別方法,旨在當前主流技術的基礎上,實現(xiàn)更高性能的VoIP流量識別。最后試驗驗證了方案對VoIP流量識別的提升能力,為DPDK技術推廣提升了新的思路。
當前高速海量的網(wǎng)絡形式,網(wǎng)絡流量的識別性能,一部分取決于流量識別方法的效率和準確度,一部分取決于來自服務器內(nèi)部的收發(fā)性能。
1.1 主流的VoIP流量識別方法
面對當前的網(wǎng)絡環(huán)境,數(shù)據(jù)流量多樣化。傳統(tǒng)的協(xié)議識別方法,例如端口識別,雖然能夠達到一定的準確度,但卻不適用于識別基于動態(tài)端口的數(shù)據(jù)流量。傳統(tǒng)的包流量識別,僅分析網(wǎng)絡層包頭中的“五元組”,即IP數(shù)據(jù)包的源地址,目的地址,協(xié)議類型,源端口,目的端口,不能夠真正實現(xiàn)流量識別[1],有很大的局限性。
DPI(Deep Packet Inspection)技術,在傳統(tǒng)包流量識別基礎上,增加應用層分析。當數(shù)據(jù)包、TCP、UDP數(shù)據(jù)流經(jīng)過DPI技術的網(wǎng)絡設備時,DPI引擎通過深入讀取IP數(shù)據(jù)包載荷的內(nèi)容來對OSI7層協(xié)議中的應用信息進行重組,從而識別出IP包的應用層協(xié)議[2]。
針對 DPI進行關鍵字掃描,由此識別VoIP數(shù)據(jù)流,可以大大提高數(shù)據(jù)流識別的效率,也會獲得較高的準確率。
1.2 流量識別性能影響因素
本節(jié)我們將要對數(shù)據(jù)轉(zhuǎn)發(fā)影響因素進行討論,分析研究VoIP流量識別性能的優(yōu)化問題。數(shù)據(jù)包轉(zhuǎn)發(fā)能力是影響流量識別性能的關鍵因素之一。對當前傳統(tǒng)服務器而言,網(wǎng)絡流量收發(fā)問題是流量識別的主要瓶頸,在通用服務器內(nèi)部,流量的收發(fā)要經(jīng)過服務器I/O通道(網(wǎng)卡或虛擬網(wǎng)卡)、物理網(wǎng)卡驅(qū)動、內(nèi)核協(xié)議棧等多個復雜轉(zhuǎn)發(fā)流程[3],通用網(wǎng)卡性能低,另外報文復制,內(nèi)核上下文切換等一系列問題會占用大量資源。同時造成CPU周期消耗。
因此,提升數(shù)據(jù)流量識別性能需要從以下幾點考慮:
1)減少網(wǎng)卡頻繁中斷
網(wǎng)卡在接收到報文后,會直接寫入內(nèi)存。面對海量的網(wǎng)絡流量,CPU就會長時間處于硬中斷狀態(tài),無法滿足服務需求,因此網(wǎng)卡性能提升關鍵是要減少中斷,減少開銷。
2)減少內(nèi)核協(xié)議棧資源占用問題
以Linux系統(tǒng)為例,數(shù)據(jù)包轉(zhuǎn)發(fā)時需要系統(tǒng)調(diào)用套接字。系統(tǒng)調(diào)用使用的內(nèi)核協(xié)議棧,會產(chǎn)生大量的內(nèi)核上下文切換及內(nèi)核與進程間的報文復制。不可避免的造成CPU周期消耗和占用。
綜上:提高數(shù)據(jù)包轉(zhuǎn)發(fā)性能是流量識別的關鍵因素之一,而提升數(shù)據(jù)包轉(zhuǎn)發(fā)功能面臨的困難在于如何減少網(wǎng)卡中斷,棄用內(nèi)核協(xié)議棧。
針對上述問題,解決網(wǎng)絡框架的瓶頸問題至關重要,當前以Intel提出DPDK開源技術提供了解決方法的新思路。
本節(jié)我們將對DPDK技術背景及原理進行簡要介紹(詳細了解請參考文獻[4]程序員指南)。
2.1 DPDK技術背景及組成
DPDK正是在這一環(huán)境下,DPDK以其出色的快速有效的數(shù)據(jù)包性能優(yōu)化能力,以及與通用計算平臺的完美契合度,使之成為數(shù)據(jù)包處理關鍵技術。同時也成為產(chǎn)業(yè)界共同關注的數(shù)據(jù)平臺熱點技術。當前針對DPDK開源技術的研究工作已經(jīng)有了一定的基礎。
2.2 DPDK技術原理
DPDK(Data Plane Development Kit,數(shù)據(jù)平面開發(fā)套件)是基于X86平臺為數(shù)據(jù)處理提供低開銷和高性能的運行環(huán)境。DPDK包含報文快速處理的庫和驅(qū)動的集合,以此最大限度的提升數(shù)據(jù)包的處理性能。DPDK技術使用UIO機制使網(wǎng)卡驅(qū)動程序運行在用戶態(tài),繞開內(nèi)核網(wǎng)絡協(xié)議棧,直接從網(wǎng)卡上讀取數(shù)據(jù),并組織成數(shù)據(jù)塊進行處理。相當于LINUX的設備無關IO接口。采用輪詢(PMD,Poll Mode Driver)和零拷貝方式從網(wǎng)卡收取報文,提高收發(fā)報文的性能,并且使用Hugepage和CPU affinity機制提高應用程序處理報文的性能[5]。由此可以節(jié)約開銷,達到提升數(shù)據(jù)包處理性能的要求。對比前面提到的Linux系統(tǒng)中關于網(wǎng)絡流量轉(zhuǎn)發(fā)的瓶頸問題[6],DPDK提供了有效的解決方案。
DPDK還包含了優(yōu)化和高效的庫文件,核心模塊的一系列庫對高性能包處理程序提供了所有必須的接口。
圖1為核心模塊結構圖。
圖1 DPDK核心模塊結構
DPDK性能非常高,以Intel官方系統(tǒng)測試為例,處理一個包80時鐘周期,以一個3.6 GHz的單核雙線程至強,64字節(jié)小包,純轉(zhuǎn)發(fā)能力是普通Linux內(nèi)核協(xié)議棧的5~10倍[7]。
本節(jié)基于對流量識別性能的研究和DPDK開源技術對流量轉(zhuǎn)發(fā)性能的優(yōu)化問題認知的基礎上,提出基于DPDK的性能優(yōu)化框架,并結合部門現(xiàn)有成熟的技術(DPI技術),進一步實現(xiàn)VoIP流量識別模塊到DPDK平臺的移植,從而提出基于DPDK的VoIP流量識別方案。
3.1 基于DPDK開源技術的性能優(yōu)化框構
根據(jù)上面的分析,我們知道DPDK技術具有更良好、更有效的數(shù)據(jù)包轉(zhuǎn)發(fā)性能。DPDK技術繞開內(nèi)核網(wǎng)絡協(xié)議棧[8],直接從網(wǎng)卡上讀取數(shù)據(jù),并組織成數(shù)據(jù)塊進行處理。由此進行DPDK平臺的搭建[9]。
如圖2所示,系統(tǒng)基于DPDK優(yōu)越的數(shù)據(jù)包轉(zhuǎn)化性能,旁路內(nèi)核協(xié)議棧,減少開銷和網(wǎng)卡中斷、內(nèi)核復制[10],進一步提高數(shù)據(jù)包轉(zhuǎn)發(fā)的效率和準確性。為此本文提出基于X86服務器的串行網(wǎng)絡框架[11]。
圖2 基于DPDK的流量識別框架
基于DPDK平臺的數(shù)據(jù)收發(fā)過程如圖3所示:
圖3 數(shù)據(jù)收發(fā)過程圖
I/O RX core以輪詢的方式從網(wǎng)卡收包,將數(shù)據(jù)報文放入內(nèi)存。然后以輪詢的方式從Worker core的TX隊列中對要發(fā)送的報文進行接收,再通過網(wǎng)卡將數(shù)據(jù)發(fā)出[12]。隨后對數(shù)據(jù)包進行解包,解析出源IP、目的IP地址、源端口、目的端口等信息。
3.2 基于DPDK平臺的數(shù)據(jù)識別方案
前面已經(jīng)提到在新的網(wǎng)絡框架上加載 DPDK模塊及VoIP流量識別模塊。就可以實現(xiàn)對數(shù)據(jù)包的高效轉(zhuǎn)發(fā)和識別。結合部門現(xiàn)有的VoIP流量識別技術,能夠?qū)崿F(xiàn)數(shù)據(jù)包的高效識別。
如圖4所示,為VoIP流量識別方法的移植方案。
圖4 基于DPDK平臺的數(shù)據(jù)識別方案
下面進行基于DPDK技術的VoIP流量識別實驗。實驗目的是在DPDK技術和傳統(tǒng)情況的VoIP流量識別性能比較為了實驗結果的清晰性[13],不考慮多核環(huán)境,只在單機條件下進行實驗。
實現(xiàn)的系統(tǒng)平臺為Linux Ubuntu2015,在虛擬機上面裝有DPDK版本2.1.0,并虛擬兩個1 000 M網(wǎng)卡,利用DPDK對數(shù)據(jù)包的處理調(diào)用VoIP流量識別模塊來完成識別實驗[14]。實驗通過以下步驟進行:
實驗進行Linux內(nèi)核與DPDK版本2.1.0的數(shù)據(jù)包識別性能的對比 ,主要比較識別流量基于DPDK平臺和基于Linux內(nèi)核的傳統(tǒng)方法與實際VoIP流量的接近程度。
實現(xiàn)過程:首先Linux系統(tǒng)利用Libpacp工具獲取網(wǎng)絡中的數(shù)據(jù)包[15],在加載DPDK模塊后,API調(diào)用VoIP流量識別程序,實驗比較兩種識別方案。
實驗結果如圖5所示。
實驗結果:以10 Gbit/s高速率發(fā)送數(shù)據(jù)包時,基于Linux內(nèi)核協(xié)議棧和基于DPDK技術的識別方案差別很大,基于DPDK方案以64 byte小包來看識別率是基于Linux內(nèi)核的5~10倍。如圖5所示,基于DPDK的流量識別方案較Linux內(nèi)核方案有了很大提升。
圖5 兩種方案對比圖
文中結合當前的網(wǎng)絡形式,針對通用服務器和網(wǎng)卡的性能瓶頸,文中介紹了DPDK開源方法對數(shù)據(jù)包轉(zhuǎn)發(fā)的性能提升作用。在DPDK技術的基礎上,利用部門成熟的流量識別技術,提出一個擴展性更高更簡單的系統(tǒng)框架,實現(xiàn)了VoIP流量的高效識別。最后通過對比實驗,驗證了基于DPDK開源方法流量識別方案的高效性。
[1]畢夏安,張大方,謝鯤,等.基于H.323協(xié)議的VoIP語音流量識別[J].計算機應用,2008,28(9):2204-2206.
[2]張婧婧,陳福文.互聯(lián)網(wǎng)流量分析技術及部署方案[J].移動通信,2013(19):71-75.
[3]唐宏,歐亮.網(wǎng)絡功能虛擬化中的網(wǎng)絡轉(zhuǎn)發(fā)性能優(yōu)化技術研究[J].電信科學,2014,30(11):135-139.
[4]Intel DPDK Programmers Guide[EB/OL].2012
[5]英特爾攜手合作伙伴舉辦2015中國DPDK開發(fā)者大會[EB/OL].(2015).http://data.tsci.com.cn/News/HTM/20150427/ 1000102996.html.
[6]唐宏,羅雨佳.NFV業(yè)務鏈資源分配技術[J].電信科學,2015,31(11):143-148.
[7]聶瑞華,黃偉強,吳仕毅,等.基于 DPI技術的校園網(wǎng)絡帶寬管理[J].計算機技術與發(fā)展,2009,19(4):250-252.
[8]韓耀明.基于DPI技術的 VoIP流量檢測系統(tǒng)的設計與實現(xiàn)[D].北京:北京郵電大學,2010.
[9]程斌,魏國強,何光營.基于應用層的校園網(wǎng)網(wǎng)絡流量監(jiān)測與分析[J].上海電力學院學報,2010(1):75-78.
[10]桑寅,孟少卿,鹿凱寧.基于DPI和機器學習方法傳輸層檢測的P2P流量識別模型[J].電子測量技術,2011,34(10):45-48.
[11]郭虹,楊白薇,蘭巨龍,等.AS級 Internet拓撲層次性分析與建模[J].通信學報,2011,32(9):182-190.
[12]李仲剛.基于DPI的WLAN網(wǎng)絡業(yè)務深度設計與實現(xiàn)[J].魅力中國,2013(10):357.
[13]李宏達,林嘉燕.P2P流量識別技術研究[J].軟件工程師,2010(12):41-43.
[14]王剛,張曦煌.基于IPv6流標簽的服務質(zhì)量研究[J].微計算機信息,2010(15):129-131.
[15]李洪波.網(wǎng)絡安全事件預警系統(tǒng)方法研究[J].科技信息,2012(33):105-106.
VoIP traffic identification and implementation based on DPDK technology
WANG Wei,HUANG Hai,LI Jun-zheng
(China National Digital Switching System Engineering&Technological R&D Center,Zhengzhou 450002,China)
As a broad application and development of VoIP technology,its traffic identification and effective monitoring has been on the focus of concern of all types of operators.we use VOIP traffic identification method DPDK technology,F(xiàn)aced with the current network in the form of massive Internet traffic,this paper based on VoIP traffic identification program DPDK technology,the card will be limited to traditional server and bandwidth discrete integrated into the framework of a more scalable and easier identification of network traffic of a single frame.Finally,VoIP traffic recognition test DPDK platform,the test results DPDK programs to 64byte packet recognition rate is based on the Linux kernel 5~10 times to verify the effect of the program to enhance the identification of VoIP traffic.
high-speed network;DPDK;VoIP traffic identification;recognition framework
TN0
A
1674-6236(2016)23-0004-03
2016-03-15稿件編號:201603192
國家科技支撐計劃項目(61521003)
王 偉(1992—),女,河南新鄉(xiāng)人,碩士。研究方向:智能信息處理。