Azure的VM在經過幾代發展後已經有多種硬體型別。目前Azure China的多種機型都配置了FPGA卡,可以實現網路加速。本文將介紹Azure的加速網路相關的內容。
一、 加速網路的硬體準備
下圖是Azure中支援加速網路的一種硬體的邏輯圖。可以看到硬體中增加了一塊FPGA卡,通過40G與網路卡連線,同時FPGA還通過PCIe與CPU直接連線。這塊FPGA卡是實現wan過來加速的硬體條件。同時可以看出,支援硬體加速型別的VM所在是物理機的網路介面起碼是40Gbps。
二、 SR-IOV
在介紹Azure的加速網路前,先介紹一下加速網路中用到的一個技術:SR-IOV。
SR-IOV 是PCI-SIG的一個IOV的規範,目的是提供一種標準規範,通過為虛擬機器提供獨立的記憶體空間,中斷,DMA流,實現VM直接掛載物理邏輯網路卡。SR-IOV 架構被設計用於將單個裝置通過支援多個VF,並減少硬體的開銷。
SR-IOV 引入了兩種型別:
- PF: 包含完整的PCIe 功能,包括SR-IOV的擴張能力,該功能用於SR-IOV的配置和管理。
- FV: 包含輕量級的PCIe 功能。包含資料移動所需要的最小的必要的資源。
如下圖:
可以看到,VM bypass了虛擬化層面的hypervisor,直接和物理網路卡的邏輯網路卡通訊。減少了對物理機CPU的佔用,提高了效率。
三、 SmartNIC
Azure的SmartNIC就是在FPGA的硬體下,通過SR-IOV實現的一種加速網路。下圖是通過FPGA實現的SmartNIC的邏輯圖:
VM的某個網路資料流的第一個資料包還是經過虛擬交換機,用於生成SDN的流表,一旦生成後,流表將offload到FPGA的SmartNIC中,由FPGA硬體實現轉發。
加速網路可實現虛擬機器的單根I / O虛擬化(SR-IOV),從而大大提高VM的網路效能。 這種高效能路徑繞過了資料路徑中的主機,減少了延遲,抖動和CPU利用率,可用於支援的VM型別上最苛刻的網路工作負載。 下圖顯示了有和沒有加速網路的兩臺虛擬機器之間的通訊:
通過SR-IOV技術,在過載的應用中,網路側佔用CPU的資源大大減少,可以明顯提升應用的流暢性。當然如果在輕載情況下,效果並不明顯。
四、 加速網路(Accelerated networking)
在Azure的VM中,如下的VM支援加速網路功能:
加速網路支援大多數具有4個或更多vCPU的通用和計算優化例項大小。 但在支援超執行緒的D / DSv3或E / ESv3等例項上,需要具有8個或更多vCPU的VM例項支援加速網路。
支援的系列有:D / DSv2,D / DSv3,E / ESv3,F / Fs / Fsv2和Ms / Mms。
目前在Azure China支援的是Dv2、DSv2、F、FS系列。在Global Azure,還有Dv3系列、Ev3系列、Fv2系列、M系列等。
在Azure China支援加速網路最小的VM型號是D3v2和F4的VM。
目前支援加速網路的作業系統有:
- Ubuntu 16.04: 4.11.0-1013 or greater kernel version
- SLES 12 SP3: 4.4.92-6.18 or greater kernel version
- RHEL 7.4: 7.4.2017120423 or greater kernel version
- CentOS 7.4: 7.4.20171206 or greater kernel version
- Microsoft Windows Server 2012 R2 Datacenter
- Windows Server 2016
五、 具體配置
以建立一臺Linux的VM為例:
1、 建立Resouce Group
az group create --name hwan --location chinanorth
2、 建立Vnet
az network vnet create \ --resource-group hwan \ --name hwan-vnet \ --address-prefix 10.1.1.0/24 \ --subnet-name vlan1 \ --subnet-prefix 10.1.1.0/24
3、 建立PIP地址
az network public-ip create \ --name hwan-pip \ --resource-group hwan
4、 建立網路卡
az network nic create \ --resource-group hwan \ --name hwan-nic \ --vnet-name hwan-vnet \ --subnet vlan1 \ --accelerated-networking true \ --public-ip-address hwan-pip
此時的網路卡開啟了加速網路的功能,可以通過命令檢視到其狀態:
5 建立VM
az vm create \ --resource-group hwan \ --name hwanvm01 \ --image OpenLogic:CentOS:7.4:latest \ --size Standard_D3_v2 \ --admin-username hengwei \ --authentication-type Password \ --admin-password xxxx \ --nics hwan-nic
此時帶有加速網路功能的VM就建立好了。
6、 驗證
登陸到VM中去,通過lspci命令檢視:
可以看到Mellanox的網路卡的VF介面。這樣帶有加速網路的VM就建立好了。
7、 限制
目前在China的Azure上,建立帶有加速網路的VM只能通過Azure CLI或者PowerShell來建立。在Global Azure上可以通過Portal頁面建立。
另外目前只能在建立VM的時候開啟加速網路功能,在已有的VM上,不能新增這個功能。
六、 總結
Azure通過FPGA開啟SR-IOV功能,使VM獲得SmartNIC,開啟了VM的加速網路功能,可以實現:
- 低延遲/更高的資料包數處理能力(pps):從資料路徑bypass了虛擬交換機,這減少了主機中用於處理資料包的時間。
- 減少抖動:虛擬交換機處理取決於需要應用的策略數量以及正在進行處理的CPU的工作負載。 將策略執行解除安裝到硬體通過將資料包直接傳送到VM,從而消除了這種可變性。
- CPU利用率降低:Bypass主機的虛擬交換機會降低CPU處理網路流量的時間,提高CPU的利用率。