開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

微軟研究院AI頭條發表於2017-08-04

2017年6月19-20日,開源技術盛會LinuxCon + ContainerCon + CloudOpen(LC3)首次在中國舉行。兩天議程滿滿,包括 17 個主旨演講、8 個分會場的 88 場技術報告和微軟等公司的技術展覽和動手實驗。LinuxCon 吸引了眾多國際國內網際網路巨頭、電信巨頭和上千名業界人士參會,包括Linux創始人Linus Torvalds,大咖齊聚共同關注業界動態。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

SDN/NFV:兩大支柱構建未來網路

本次LC3 會議,探討未來網路的構建,其中出現頻率最高的關鍵詞就是 SDN(軟體定義網路)和NFV(網路功能虛擬化)。傳統網路是個“黑盒子”,管理不夠靈活,支援的網路規模不夠大,網路狀態的可見性和可除錯性不足。隨著雲端計算興起的軟體定義網路(SDN)和網路功能虛擬化(NFV)就致力於解決“黑盒”的問題。SDN 南向介面統一了紛雜的網路裝置 API,北向介面則可以提供網路全域性檢視,方便集中運維。NFV 則是用軟體來實現防火牆、負載均衡、虛擬網路隧道等網路功能(network function),使得網路功能更加靈活。

在會議上,雲端計算和5G 巨頭紛紛指出使用 SDN 和 NFV 的新理由:異構網路需求的集中排程。不管是雲服務,還是萬物互聯的 5G 電信網路,客戶和應用的需求都千差萬別,有的需要高頻寬,有的需要低延遲,有的需要高穩定性。這就需要雲端計算平臺和 5G 電信網路的基礎架構能夠在一張物理網路上支援多張虛擬網路,併為不同的虛擬網路提供不同的服務質量保證(QoS)。只有軟體定義的網路管理、網路功能和網路排程才能靈活應對客戶和應用的異構網路需求。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

開放網路生態系統

隨著SDN 和 NFV 在業界的廣泛採用,生態和分享變得越來越重要,ONAP、ODL、OPNFV等網路管理、網路功能的開源專案受到眾多企業關注。

快速增長的網路速度和Linux網路協議棧處理能力之間的差距日漸明顯,Linux 網路協議棧也存在延遲的不穩定性,多個技術報告提到使用Intel DPDK、eBPF等技術提高資料平面的吞吐量和延遲穩定性。Open vSwitch開發組的報告中,特別提到用 P4 作為 CPU和可程式設計交換機上統一的SDN程式語言,減輕用C語言開發OVS功能的負擔。DPDK開發組提出了基於fd.io的cryptodev框架,使用Intel QuickAssist等硬體加速裝置加速資料包加解密,利用非同步和向量包處理實現了單機40Gbps線速的IPSec閘道器。Azure雲使用SR-IOV和FPGA加速,提供了單虛擬機器25Gbps的網路吞吐量、比軟體虛擬交換機低10倍的延遲。

大規模虛擬網路的SDN控制器效能是業界共同關注的話題。例如阿里雲一個資料中心超過 10萬臺伺服器,每秒上報一次heartbeat;如果資料中心斷電後電力恢復,10萬臺交換機初始化配置需要多久;虛擬機器遷移在不斷髮生,全部由SDN控制器處理負載過高。阿里雲的解決方案是做配置快取,每臺伺服器採用類似 ARP 的方式自學習網路配置,減輕SDN控制器的負載;使用UDP、定製高效能TCP協議棧來加速SDN控制器。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

虛擬網路層次眾多,需要抽象和封裝才能讓人理解

SDN控制器傳統上是隻負責config、provisioning,思科提出,還應該加入實時資料分析(例如硬體支援的資料包路徑跟蹤、統計和取樣能力)、端到端的資源管理、基於身份的策略支援,使得開發者不必關心虛擬和物理網路的結構,而是可以直接指定應用的需求。阿里雲也強調了虛擬網路的除錯和運維能力,依賴SDN控制器實現了抓包的軟體化、API化,即上層輸入使用者和虛擬機器資訊,下層自動對相關資料包進行染色和映象。

軟體定義的概念不僅在網路,在儲存領域也得到了實踐。華為的OpenSDS把傳統管理員視角的命令列配置API改進成統一、簡單、表意的YAML配置檔案,把依賴儲存專業知識的非自動化配置改進成基於策略的自動化業務編排,並允許應用在雲平臺上體現差異化的高階特性。

Microservices:開發和管理的最靈活選擇

傳統基於指令碼的軟體安裝部署容易導致複雜的依賴問題和不一致的執行環境,現代服務應當拆分為多個微服務(microservice)的組合。以Docker為代表的容器(container)技術是微服務目前應用最廣泛的載體。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

Windows 支援的三種容器部署方式

容器是軟體封裝、部署、分發的一種工具。容器可以執行在Linux 核心名稱空間裡,可以執行在 CoreOS、Atomic等定製作業系統上,也可以執行在半虛擬化或全虛擬化的虛擬機器裡。Windows 系統也已經支援三種容器部署方式:基於 Linux 子系統的原生Linux 容器、基於Hyper-V虛擬機器的 Linux 容器、基於 Hyper-V虛擬機器的Windows容器。事實上,由於EPT、SR-IOV等硬體輔助虛擬化技術的成熟,基於虛擬機器的容器帶來的虛擬化開銷是可以接受的,還提供了更好的隔離性。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

虛擬機器、容器、虛擬機器內容器、Unikernel 的比較

除了容器,Unikernel也是部署微服務的一種高效方案。既然hypervisor已經提供了資源管理、排程和隔離,虛擬機器裡如果只執行一個任務,為什麼還需要虛擬機器裡的核心呢?虛擬機器裡的應用可以直接通過一套library 訪問 hypervisor。劍橋大學和Docker 社群聯合開發的 MirageOS 就是用 OCaml編寫的一套library OS,提供了clean-slate design的型別安全 API,支援 Xen、KVM 虛擬機器和 x86、ARM 架構。對於較簡單的微服務,Unikernel 更加高效;對於依賴關係較複雜的微服務,可以使用 LinuxKit 精簡現有的容器。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

容器技術棧


微服務帶來的主要效能挑戰是:微服務的粒度比傳統的虛擬機器小很多,容器的數量多、生命週期短。Red Hat 援引New Relic 的統計,46% 的容器只存活不到一個小時,25% 的容器甚至存活不到 5 分鐘。Google 把絕大多數內部服務容器化、使用 Kubernetes 管理,每週需要新建 20 億個容器,這意味著平均每秒新建 3000 多個容器,每個容器又需要 IP 地址,這對容器編排系統(orchestrator)和虛擬網路管理系統提出了可擴放性的挑戰。此外,對於同樣數量的物理伺服器,容器的數量比虛擬機器多一個數量級,給監控和日誌分析帶來了挑戰。

將傳統服務拆分為微服務、每個微服務部署為一臺容器後,每臺物理機上執行的容器數量多、容器間的通訊頻繁,容器的網路通訊和容器之間的上下文切換都會成為效能瓶頸。Red Hat 提出了預建立容器的方法,維護一個容器池以分攤容器建立銷燬的開銷;在網路方面,容器間互聯的overlay network需要用硬體加速MACVLAN、IPVLAN 等隧道協議和 IPSec、MACSec 等加密解密。在虛擬機器網路中,通常使用 SR-IOV 把虛擬機器暴露給物理網路卡虛擬出的 VF 實現加速,然而容器的數量通常遠遠多於虛擬機器,網路卡無法虛擬出足夠的 VF 給容器,而 Docker 預設使用的Linux bridge 吞吐量和延遲穩定性都不能滿足要求,業界多使用 DPDK 等高效能資料平面來解決容器間的通訊問題。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

多種網路訪問模型


容器中的應用程式訪問網路的介面有DPDK、socket、定製協議棧等;容器間通訊和匯聚的 overlay 層面有OVS、Linux bridge、SR-IOV 直通等;物理網路卡的驅動程式又有多種。不同的網路訪問模型在效能、靈活性、相容性間有不同的折中,華為雲網路實驗室提出了 iCAN 容器網路框架,簡化程式設計多種容器網路的資料通路、控制策略和服務質量要求,支援 flannel、OpenStack等多種容器網路編排器(orchestator)。

容器技術致力於微服務的可靠部署,從微服務原始碼到二進位制的編譯過程也是需要保證可靠性的,這就是可重現構建(reproducible build)。可重建構建採用輸入校驗和、有序編譯過程、編譯環境版本號一致、消除未初始化記憶體、偽裝時間戳、清洗檔案屬性等技術保證生成的軟體包是逐位元組完全確定的。Debian 等發行版已經採用可重現構建技術。

GPU虛擬化:共享、安全、高效

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

LinusTorvalds(左)與Dirk Hohndel(右)進行訪談


Linux 和Git 的創始人、開源軟體的精神領袖 Linus Torvalds 與VMWare VP Dirk Hohndel 的訪談是 LC3 大會的最大看點。Dirk 的一個問題是,如果你從今天開始,準備做什麼專案。Linus 回答,他創造Linux 的時代,計算機硬體的程式設計比他童年時代變得容易了很多。Linus 自嘲自己不是一個硬體高手,因為總是把硬體弄壞。在今天,Linus 可能會考慮做 FPGA,如果對晶片設計感興趣的話,因為 FPGA 的開發成本現在低了很多;或者 Raspberry Pi,可以做一些很酷的小東西。

在雲和機器學習相結合的浪潮中,GPU 虛擬化和 GPU 容器的排程帶來了新的技術挑戰。GPU 可以通過 PCIepass-through 繫結到虛擬機器內,Azure 等雲服務就採用了這樣的技術實現虛擬機器的高效GPU 訪問。當多個虛擬機器需要共享 GPU 時,vSphere和 Xen 支援把一個物理 GPU 的核分割分配到多個虛擬機器裡,但是採用 hypervisor 虛擬裝置轉發的方式,效能較低。Intel的 GVT 和 NVIDIA的GPUvm 技術可以把一個GPU虛擬化成多個vGPU,vGPU 可以被分配到不同的虛擬機器裡,以實現物理 GPU 的空間多路複用。為了實現 GPU 的分時多路複用,Intel 提出了 GPU 名稱空間和控制組,容器核心的顯示卡驅動把各個容器的計算任務按照優先順序和時間片排程到GPU 執行。

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

Intel GVT-gGPU 虛擬化技術


GPU 虛擬化是為了複用 GPU 解決多個小型的計算問題(一虛多),而一些大規模的計算問題需要多個 GPU,這就需要排程互聯的 GPU 虛擬機器或容器(多虛一)。GPU 之間可以通過 NVLink、PCIe或者GPUDirect RDMA 通訊,比通過CPU 的網路協議棧通訊高效得多。隨之而來的挑戰,在虛擬網路環境下誰來給 GPUDirect RDMA 的資料包做隧道封裝和訪問控制;如何在虛擬機器和容器的排程演算法中體現 GPU 通訊的需求。

微軟:與開源共舞

開源技術盛會LinuxCon首次來到中國,大咖齊聚關注業界動態

Azure 支援的開源軟體

雲端計算平臺也正在打破公司的界限,擁抱開源和開放技術。微軟在主旨演講中提到,Azure 公有云平臺中國區超過60% 的虛擬機器執行 Linux,全球 30% 的虛擬機器執行 Linux,這個比例還在逐年增加。Azure 雲從作業系統、容器編排服務到資料庫、程式語言、運維框架、應用程式都全面支援開源。之前只能執行在 Windows 上的SQL Server、PowerShell 等也支援 Linux了。與此同時,Windows 對開發者的友好程度也在與日俱增,例如 Linux 子系統使Linux 開發工具可以原生執行在 Windows 系統上、VisualStudio 與 Git 的整合、Hyper-V 對 Docker 容器的支援。

原文連結:http://mp.weixin.qq.com/s/vN7W-1VOVhFkssqLMeMUOA

相關文章