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/ \
--subnet-name vlan1 \
--subnet-prefix 10.1.1.0/

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

Azure VM的加速网络的更多相关文章

  1. Windows Azure Virtual Machine (27) 使用psping工具,测试Azure VM网络连通性

    <Windows Azure Platform 系列文章目录> 微软Azure在设计架构的时候,从安全角度考虑,是禁用ICMP协议的.所以对于Azure VM,是无法使用ping命令的. ...

  2. Azure 中的多个 VM NIC 和网络虚拟设备

    YU-SHUN WANG Azure 网络高级项目经理 在 2014 年欧洲 TechEd 大会上,我们宣布了在Azure VM 中为多个网络接口 (NIC) 提供支持,并与多家重要厂商合作,在 Az ...

  3. Windows Azure Virtual Machine (24) Azure VM支持多网卡功能

    <Windows Azure Platform 系列文章目录> Update 2016-03-30 一个VM的多张网卡可以在一个VNet的同一个Subnet子网下,笔者亲自测试过了. 如果 ...

  4. Windows Azure Virtual Machine (30) 修改Azure VM 的Subnet

    <Windows Azure Platform 系列文章目录> 我在使用Azure Virtual Machine虚拟机的时候,常常会结合Virtual Network虚拟网络一起使用. ...

  5. Dynamic CRM 2013 on Windows Azure VM

    三个A2 Size的VM,运行Windows Server 2012: AD Server,SQL Server,App Server 将AD Server的ip地址填写到Windows Azure虚 ...

  6. Windows Azure Virtual Machine (34) Azure VM挂载WebDAV

    <Windows Azure Platform 系列文章目录> 之前使用Azure VM,挂载box网盘.发现不能正常挂载,这里简单记录一下. 1.WebDAV的网络映射,需要WebCli ...

  7. 新版Azure CDN HTTPS加速服务正式上线

    随着网络安全问题日益得到全民重视,HTTPS网络访问协议在互联网访问中得到了广泛的使用.Azure CDN也早在一年前的2015年4月上线了HTTPS加速服务.该加速服务上线一年以来,用户使用量逐渐增 ...

  8. 在 Azure VM 中使用应用商店映像创建 HPC Pack 群集的头节点

    使用 Azure 应用商店和 Azure 门户中的 Microsoft HPC Pack 2012 R2 虚拟机映像创建 HPC 群集的头节点. 此 HPC Pack VM 映像基于预安装了 HPC ...

  9. Azure 中的虚拟网络和虚拟机

    创建 Azure 虚拟机 (VM) 时,必须创建虚拟网络 (VNet) 或使用现有的 VNet. 此外,还需要确定如何在 VNet 上访问 VM. 在创建资源之前必须做好规划,确保了解网络资源的限制. ...

随机推荐

  1. 跨平台移动开发 Xuijs超轻量级的框架Style CSS属性用法

    PhoneGap里面推荐使用的超轻量级的框架 Style CSS属性用法 设置css属性:setstyle 通过ID设置css属性 x$('#top1').setStyle('color', '#DB ...

  2. linux 安装jdk1.7 环境

    由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创 ...

  3. 10个超有趣的linux命令

    本文展示了 10 个有趣的 Linux 动态命令,这些命令和实用功能无关,仅供娱乐!看完此文,你会对 Linux 有个全新的认识,谁说 IT 男就没有屌丝娱乐的一面呢?还等什么,就让我们开始看文章吧~ ...

  4. 音乐下载api

    青檬音乐 http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&format=js ...

  5. oracle修改密码和设置密码有效期

    一.修改密码1)修改密码 sql>alter user user01 identified by password; 2)修改密码并unlock sql>alter user user01 ...

  6. Linux 基本命令___0002

    来源:https://mp.weixin.qq.com/s/DmfpDfWpWRV3EDItDdYgXQ #配置vim #http://www.cnblogs.com/ma6174/archive/2 ...

  7. org.apache.flume.ChannelException: Take list for MemoryTransaction, capacity 100 full, consider committing more frequently, increasing capacity, or increasing thread count

    flume在抽取MySQL数据到kafka时报错,如下 [SinkRunner-PollingRunner-DefaultSinkProcessor] ERROR org.apache.flume.s ...

  8. js的介绍

    需要了解的 如果没有宽带产业的发展,即便是发送JSON这种轻量级数据所带来的延时成本也是不可想象的. 如果没有ECMA-262这份标准文档,各大浏览器在客户端的表现完全不一致,我们就没有办法对Web应 ...

  9. Python快速学习-函数

    函数定义总结: 1.定义函数时,需要确定函数名和参数个数:2.如果有必要,先对参数的数据类型进行检查:3.函数体内部可以用return随时返回函数结果:4.函数执行完毕没有return语句时,自动re ...

  10. MDX中Filter 与Exist的区别

        获得一个集合,这个一般用来筛选出一个自定义的set,比如在中国的餐厅 该set返回所有MSDNteam下并且在Fact Thread度量上有记录的products 用Exists实现 sele ...