DPDK將來會成為趨勢嗎?
大大們,小螞蟻想問,隨著大數據的興起
1. 高密集數據處理會不會熱起來?2. 因特爾早年放出的 DPDK會不會藉此熱起來,6wind這些公司能不能取得更多的項 目?3. 由於DPDK是開源的,為什麼國內沒有基於DPDK去開發驅動的軟體公司呢?當然,我自己也會去調研下,如果發現什麼,就放上來拋磚引玉。
快睡覺了,簡答說點,並不一定對題。
先說說DPDK的來歷吧,大家就當聽個故事。早在2005年的時候,Intel大概還只有雙核、四核處理器,主要都是用在PC、伺服器上。這時的操作系統如Windows、Linux對網路的性能要求也都不高。但是網路設備製造商生產的網路設備卻對性能要求很高,不得不自行開發FPGA、ASIC、網路處理器等等不一而足,無不是為了提高性能絞盡腦汁。然而由於網路協議、設備功能又非常複雜、功能多樣,而FPGA、ASIC、網路處理器又有各種各樣的限制,這就導致系統的複雜性越來越高。這時候Cavium、RMI等公司推出了多至64核的Mips處理器,這樣一來,對一些功能複雜的設備可以完全用軟體來實現,並且可以有相當的性能了。想法是好的,現實卻不樂觀,發揮多核的性能也不容易。好在6WIND開發了一套基於多核的高性能協議棧,雖然那時還只到4層,但也給很多設備製造商減少了大量的工作。10年的時候,Intel的處理器的核數也多了上來,更重要的是隨著虛擬化在服務端的應用,以及服務端對高性能網路的需求越來越多,6WIND開始開發對Intel多核的支持。正好Intel也來找6WIND談合作,最後呢,6WIND給Intel開發了DPDK,對,你沒看錯,整個DPDK是6WIND開發的。最後Intel把DPDK開源了。說白了,DPDK對6WIND來講,是為了6WIND的高性能協議棧能夠跑在Intel上的一層適配層,所以其中並不包含協議棧。簡單回答下題主的第二個問題,最Intel做DPDK的初衷是希望多賣CPU給設備製造商的。不過隨著6WIND協議棧的完善,基本上現在國外不論是做雲的、虛擬化的、NFV的,基本上只要是你能叫得上名字的公司,都是6WIND的客戶,如:Cisco、AWS、微軟、Google,等等等等,所以不用擔心6WIND的項目多少。第三個問題,在我看來DPDK本來就是一個Intel網卡的PMD驅動,加少量必須的庫。不理解問題中說得再去開發驅動是什麼意思。再回到第一個問題,6WIND目前提供7層的協議棧,基於此開發的應用都可以獲得十倍至百倍於Linux的網路性能。對的,可以到一百倍。那麼以前處理大數據,有很多非計算密集型的應用,也要把演算法分發到分散式的伺服器上去,然後再收集結果,來減少網路傳輸數據的開銷或等待時間。而有了6WIND的解決方案,上層的應用就有了更多的選擇。當然真正用起來,還有其他工程方面的建設工作。但早就已經有人這麼用起來了,如Google。
利益相關:前6WIND中國研發中心總經理我的看法是:隨著硬體的發展,DPDK越來越受重視,將廣泛應用於各類分散式系統中。
目前,CPU核心計算能力垂直擴展已經到達極限,而水平擴展卻有很大空間,表現為cpu核數越來越高。這很像存儲系統,單機能力達到極限後,水平擴展成集群模式。網卡帶寬越來越大,40G、100G帶寬已不是什麼新鮮事情了。SSD盤無論從容量和帶寬都有長足進展。
硬體的持續發展,軟體並沒有及時跟上腳步。操作系統落後硬體發展表現的更為明顯。這樣的結果是,高性能的硬體並不能全力發揮起作用。就拿linux 內核提供的網路協議棧來說,因為鎖、上下文切換、中斷、用戶態與內核態切換、內存copy、以及這些動作引發的cache污染,導致應用讀寫網卡數據耗費很多不必要的CPU周期,造成硬體性能得不到充分利用。
於是乎,應用層希望在用戶態直接控制硬體,繞過內核。DPDK在網卡驅動之上,socket介面之下,提供了一種應用直接訪問網卡的介面。基於DPDK實現用戶態網路協議棧,就成為可能。並且用戶態協議棧可以避免中斷,避免不必要的上下文切換,可以作到真正的zero-copy。這些在雲計算,大數據場景下越發重要。
不光是網路設備,我相信在未來會有用戶態的文件系統出現,以可控、更有好的方式使用高性能SSD。如果他們能把配套的高性能tcp/ip協議棧也給開源了,順便移植 ethtool和ifconfig等網路工具到dpdk用戶層驅動上。那麼用的人會多很多吧。尤其是做dpi,ddos等功能的廠商。至少比在mips平台下成本要低很多,不管是招人還是硬體成本。
去年暑假和Intel中國DPDK的負責人聊過,Intel本身是非常支持開源的,甚至想圍繞DPDK打造一個完整的community,所以不存在Intel自己開發了但是不開源。
就去年溝通情況來看,Intel內部本身沒有實現高性能的協議棧,他們當時的關注點好像在NFV,但是也有過比較一系列的開源的的協議棧,包括MTCP。
MTCP將對ifconfig網路工具的支持移植到DPDK的中UIO中,大概只需要幾十行代碼。IX已經開源,而且已經支持GDB,perf和SRIOV了。所以問題在於,這些學術界幾年前就開始的嘗試,一堆的頂級會議甚至best paper的工作都是基於DPDK的,為何你會覺得不夠火?因為他們都不meet工業界的需求,需要Porting,所以不如還是直接用fastsocket吧,笑。使用DPDK實現的4層轉發要慢慢取代lvs了,我知道的阿里和美團已經這麼做了
DPDK主要解決網路虛擬化之後性能大幅度降低的問題,對跑在雲上的高帶寬低時延應用場景有比較大的價值。這幾年電信網路雲化逐漸成為不可逆轉的趨勢,而電信網路是典型的管道類業務,用ovs遠遠無法滿足動輒上百G的轉發需求,因此DPDK被廣泛應用。華為,愛立信,思科等電信設備商的高轉發電信雲設備基本都已經支持DPDK,在全球上百家主流運營商部署測試活商用,如ATT,Vodafone,中國移動等。DPDK目前面臨的一大競爭對手是Intel自家的SR-IOV,後者是硬直通技術,可以讓虛擬機直接識別Host OS上的物理網卡,從而實現線速吞吐。後者在性能上更優,但無法支持熱遷移,安全隔離等需求,靈活性較差。互聯網領域有些場景應該也會合適,像直播、視頻、CDN等,不知道普及情況如何。
話說現在內核有了XDP之後,DPDK還有存在的價值嗎?PS: 今年的linux netdev conf, David S. Miller讓下面人和他一起念 dpdk is not linux (視頻在這裡 https://www.youtube.com/watch?v=NlMQ0i09HMU )..笑死我了。。
國內鵝廠QQ已經在dpdk上移植了freebsd的協議棧,發布開源軟體f-stack。了解到瑞典的宜能enea應該也是這麼做的,看來freebsd的tcp協議棧較linux更能控制得住,不知道6wind是不是也是這樣呢?
DPDK現在已經逐步成熟了,在SDN時代,網路劃分為控制面和數據面。還是很多公司在使用,深信服北京有個團隊專門研究DPDK,很多產品都投入使用了,國內還是綠盟、華為,還有雲計算公司也在使用,例如我司UCloud也用。
以後肯定會火,阿里,百度,騰訊應該都在用了,但是協議棧還沒搞,已經用上的都是在流量清洗這一塊。360在測試,但是也沒有自己的協議棧,是在虛機上用的。當然協議棧會是dpdk永遠都繞不過的坎,我覺得intel自己不搞協議棧,主要是出於他們自己生態的考慮吧,如果intel給搞一個能用的免費的用戶態協議棧出來,估計dpdk本身立馬大火。另外一個就是,dpdk本身現在還不是特別完善,也還有不少bug,這些都是制約dpdk在生產環境大規模應用的因數。但是從長遠來看,dpdk還是非常有前途的。
要看三方生態社區的發展程度。我覺得結合現在的SDN,利用DPDK可以在一定程度上取代原來硬體的功能,比如:
1.軟tap,做鏡像流量,二層/三層轉發,因為是跑在通用linux平台上的,所以輾轉騰挪的餘地很大,可以做出很多花巧的功能來2.與openvswitch結合,打進SDN基礎層,這個想像空間就很大了3.順便移植 ethtool和ifconfig等網路工具到dpdk用戶層驅動上,打進各個linux發行版,以後可以再把協議棧作為基礎設施來完善,誰在我上面玩,至少自己的網卡會大賣啊,這個看似是小錢,積少成多嘛4.和某些硬體廠商合作,做一些網路盒子,實現部分tap、負載均衡、流量parse的功能,或者和riverbed這樣的廠商一樣,做流量壓縮等等,這個想像空間就更大了......
現在DPDK的性能真的很NB了,至少PktGen,在 E5-2650級別的CPU上,做到千萬pps打包發送毫無壓力,如果有人深耕的話,我覺得做軟tap、或者流量測試機器絕對是一條路。已經是趨勢了
已經很多人在研究了比如 http://sysight.com
為什麼國內沒有基於DPDK去開發驅動的軟體公司呢?有,某公司的IP管理系統,這裡我匿名了吧。
推薦閱讀:
※intel的工藝領先優勢要喪失了嗎?
※如何看待Intel第七代處理器Kaby Lake不支持Win7/Win8?
※求了解CPU的大神介紹龍芯的實際性能究竟如何?最近看了雷鋒網和太平洋電腦網關於龍芯性能的爭論文章
※如何看待 2018 年 1 月 2 日爆出的 Intel CPU 設計漏洞?
※如何評價intel最新發布的低功耗架構Apollolake?