摘要:隨著互聯網深入發展,許多應用程序都需要頻繁的交互操作,這讓許多單臺云主機網絡包處理的瓶頸愈發顯現,一些增強云主機網絡的新特性開始出現,他們優化數據包并發處理的能力,UCloud云主機就是這樣一個優秀案例。
引子
隨著產品交互需求越來越頻繁,數據量也越來越大,高并發成為了一種常態,給網絡帶來了極大的挑戰。特別是,大量頻繁用戶請求和數據交互、體積小的網絡包通信的新業務場景下,單個云主機網絡包處理能力已經無法滿足需求。
為解決單個云主機網絡包處理能力存在的瓶頸,UCloud云主機發布了網絡增強新特性,可以支撐數倍在線請求,將單臺PPS提高數倍,從而保證網絡性能的穩定。
舉個例子:就游戲而言,輕微的網絡波動就會造成在線玩家掉線和卡頓,單臺云主機平均更是有幾萬的包轉發,單臺云主機的網絡包處理能力明顯不足。但是,打開網絡增強特性后,對于游戲商來說就能一個區服承載數倍游戲玩家,而對于不注重單機能力的情況也能起到一臺頂多臺的作用,所以網絡增強特性不僅可以提高單臺主機的包處理能力,還能減少云主機的部署數量與相應的成本。
初識網絡增強
那么,UCloud云主機網絡增強特性具體能為高包量并發的數據處理帶來哪些優化呢? 在介紹UCloud云主機的網絡增強新特性,先介紹數據包和并發的概念,了解一條消息的旅程:
包(Packet),是TCP/IP協議通信傳輸中的數據單位,一般也稱“數據包”。在網絡中,數據被劃分為多個數據包,這些包沿著不同的路徑在一個或多個網絡中傳輸,在傳輸的路途上,每個小數據包還可能會被繼續分片。當這些小數據包到達目標機器時,他們會被重新拼裝到一起。
簡單的說,用戶瀏覽網頁、打開App、玩聯網手機游戲,實際上就是數據包的交換,因為這些簡單動作背后,你完成了給網站發送數據包,而網站接收到了之后,根據你發送的數據包的IP地址,返回給你網頁的數據包這兩個過程,即數據包的交換。
并發,在操作系統中,是指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行,即兩個或多個事件在同一時間間隔內發生。
簡單的說,當春運期間,12306網站開放購票,1秒內10000個人點擊購買按鈕,此時12306網站服務器就收到了10000個并發請求。
UCloud云主機的網絡增強新特性,優化的就是數據包并發處理的能力,打開網絡增強配置,創建的新主機可以擁有網絡高包量多隊列并發特性,使帶寬能力大幅提升,能并行處理和接受批量連接的報文,極大提升了虛擬機的包處理能力。
技術實現
云主機的網絡增強特性,利用的是網卡多隊列特性,讓多核CPU配合多隊列網卡驅動的支持,將各個隊列通過中斷綁定到不同的核上,使得CPU的各個核實現并發收包,所以在網絡流量大的時候,數據包可以被分散到各個核上,避免了CPU成為瓶頸的尷尬。
那多隊列網卡特性又是如何實現的呢?事實上,以往的內核是不支持多隊列的,而不支持多隊列的內核中的每個網卡都擁有一個排隊的規則,根據排隊規則的過濾器將數據包區分為一個個類,類中還可以嵌套新的更細的排隊規則,但這種以網卡為中心的方式實際上不適應如今的網絡應用,從而誕生了多隊列特性的網卡。
實現了多隊列的網卡圖示如下:
數據被劃分為數據包在網絡傳輸,到達目標機器時,先通過網卡轉發給內核,內核包括驅動和內存,最終到達CPU,CPU對數據包進行處理。對于普通的云主機來說,網卡只有一個根隊列,所有的數據包進來都要進入這個根隊列進行排隊,由一個CPU進行處理。所以當數據量大的時候,就會造成瓶頸,以致CPU來不及處理數據包,最終導致丟包。
而多隊列網卡是一種技術,將各個隊列通過中斷綁定到不同的核上,實現了多隊列,就不再逼迫數據包強擠到網卡的根隊列進行排隊,使得每個網卡擁有很多的根隊列,甚至每個應用一個隊列都有可能,從而增強并發處理能力,使帶寬能力大幅提升,能并行處理和接受批量連接的報文,極大提升了虛擬機的包處理能力。
實現上,我們主要是通過負載均衡方法論,升級宿主機和虛擬機操作系統Linux 的內核,實現對網卡驅動多隊列的支持,并利用多核CPU的性能,讓原來的一個隊列變成四個隊列,使得數據包的調度變得更加有效,同時也由多個CPU進行處理,從而提升并發處理的能力。
(注:目前只支持在部分Linux發行版4核CPU以上的標準機型上開啟。)
性能測試
對于UCloud云主機網絡增強的性能,我們也進行了測試。主要是通過使用通用網絡性能測試工具netperf對UHost標準版機型在是否開啟網絡增加配置的兩種情況下進行網絡性能測試得到的結果,最新的測試數據如下圖所示(鑒于是測試環境,該數據僅供參考):
圖解:
1. ucloud-yg: 未開啟網絡增強的云主機
2. ucloud-gre: 開啟網絡增強的云主機
3. 未標注的數據為業內其他云主機
經過測試,網絡增強配置的特性,會讓帶寬利用率更是大幅提升,內網帶寬接近4Gb/s,是業內平均水平的7倍以上。
經過測試,網絡增強配置的特性,可以極大的提升包處理能力,是業內平均水平的3倍以上,最大包吞吐能力高達18萬。
(注:相關測試數據見鏈接)
總結
本文簡單的介紹了利用多隊列網卡特性使得云主機擁有網絡高包量多隊列并發特性的實現過程。希望通過分析數據包傳輸路徑以及處理過程讓大家直觀的看到,UCloud云主機網絡增強新特性帶來的高包量并發處理能力的提升。
未來,UCloud還會對網絡增強配置進行升級,隨著硬件提升和可能的內核優化,高包量處理能力還將有持續提升空間。希望此特性能夠滿足新場景下通訊頻繁、數據包體積小但數量大的新需求。
申請創業報道,分享創業好點子。點擊此處,共同探討創業新機遇!