Azure VM的加速網路

衡子發表於2018-03-29

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的利用率。

 

相關文章