Azure虚拟机网络性能

    虚拟机支撑运行着大规模快速增长的在线软件服务,其网络性能至关重要。了解虚拟机的网络性能指标(包括带宽、延迟、PPS等)并合理使用不仅可以设计搭建出高性能、稳定、可扩展的业务系统,还可以避免不必要的坑。

 

虚拟机加速网络

    公有云网络发展很快,5年以前虚拟机运行的网络带宽通常只有1Gbps左右,现在可以达到40Gbps甚至50-100Gpbs。2016年,Azure发布了加速网络(AccelNet),通过将主机网络处理卸载至基于现场可编程门阵列(FPGA)定制的SmartNICs智能网卡硬件,为客户提供公有云中最快的网络,VM之间TCP延迟可稳定地小于15微秒,吞吐能力可达32Gbps。

 

 

 

相较于未采用加速网络的主机软件定义网络(SDN),开启了VM加速网络功能的优点:

  1. 低延迟/更高的数据包数处理能力(pps):数据路径绕开了虚拟交换机,减少了主机用于处理数据包的时间
  2. 减少抖动:虚拟交换机处理取决于需要应用的策略数量以及正在进行处理的CPU的工作负载。 将策略执行卸载到硬件通过将数据包直接发送到VM,可消除不稳定性
  3. 降低CPU利用率:绕开主机的虚拟交换机,可降低处理网络流量CPU使用率

 

虚拟机网络带宽

Azure提供不同种虚拟机类型和大小,每一种虚拟机的性能和处理能力各不相同。由于虚拟机托管在共享硬件上,因此虚拟机网络吞吐量(也称带宽)也必须公平地共享,较大的虚拟机相对于较小的虚拟机会获得相对较多的带宽。

分配给每个虚拟机的网络带宽按传出(出站)流量计算,不管出站流量的目标是同一虚拟网络中的另一虚拟机,还是 Azure 外部,均适用该限制。传入流量带宽不直接计算和限制,但其它因素(例如 CPU 和存储限制)可能会影响虚拟机处理传入数据的带宽能力。加速网络是一项旨在改进网络性能(包括延迟、吞吐量和 CPU 使用率)的功能,虽然可以改进虚拟机的吞吐量,但仍受分配给该虚拟机的带宽限制。虚拟机可以有一个或多个网卡,虚拟机分配的带宽只针对虚拟机与网卡数量无关,分配的带宽是所有网卡出站流量带宽总和。

例如Standard_D8_v3(8vCPU/32G内存)型号虚拟机的网络带宽限制为4000Mbps; Standard_D64_v3(64vCPU/256G内存)型号虚拟机,它的网络带宽限制为30,000 Mbps,最大网卡数量为8个。详细虚拟机预期网络带宽 (Mbps)可参看官网说明:

https://docs.microsoft.com/en-us/azure/virtual-machines/linux/sizes-general

 

通常,我们可以用NTTTCP跨平台工具来测试虚拟机的网络带宽,当然也可以用iperf等其它工具。测试方法请参看:

https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-bandwidth-testing

 

下面以2台Standard_D8_v3 (OS:Centos )虚拟机为例测试验证其网络带宽。

 

  1. 创建两台加速网络虚拟机,型号为Standard_D8_v3, 操作系统为Centos 7.5
  2. 安装ntttcp for Linux:
  3. 取其中一台为接收机(Receiver),另外一台为发送机(Sender)
  4. 测试带宽为3700Mbps,接近限制带宽4000Mbps。注意,限制出站带宽

     

     

     

    虚拟机PPS

    PPS,即每秒发送多少个分组数据包,是常用的网络吞吐率的单位,网络性能通常用吞吐率(throughput)这个指标来衡量。

     

    下面以1台加速网络Standard_D8_v3 (OS:Centos )虚拟机,6台Standard_D8_v3 (OS:Centos )陪练虚拟机为例测试入站流量。

    1. 安装Netperf

       

    2. 测试
    3. 测试结果,该虚拟机PPS为165万。需要注意的是,在这里我们看到了两个网卡,其中一个是虚拟机默认网卡(NETVSC),另外一个是SR-IOV 虚拟功能(VF)映射的网卡,二者MAC地址一样,NETSVSC网卡有IP地址。NETVSC网卡也有流量是因为默认透明绑定VF映射的网卡。

       

       

      SR-IOV加速网络的明显优势是降低延迟,更稳定、提高CPU利用率。虽然可以提升PPS,但如果遇到要求超高PPS的需求场景,例如虚拟路由器、防火墙、VPN、负载均衡、DDoS应用等NVA,DPDK将发挥作用。

      DPDK, 数据平面开发包(Data Plane Development Kit),它提供了更快速的用户空间包处理框架,适用于上述网络性能密集型应用程序。DPDK绕过虚拟机内核网络堆栈,消除了上下文切换和中断指令驱动方法,在用户空间以轮询模式驱动程序实现更快的网络包处理。DPDK可以让Azure Linux虚拟机获得更高的PPS。

       

      了解Azure虚拟机网络性能信息和相关限制,可以更好的根据业务场景选择合适的虚拟机类型和构建合适的系统架构。比如要部署一款MMO游戏,每台游戏服务器通常需要几十万PPS和数以万计的TCP/UDP网络并发访问,可以根据Azure虚拟机带宽、网络流、PPS等网络指标以及计算、存储等指标规划每台虚拟机承载的玩家数和计算容量,进而构建可扩展的游戏服务器群,就近部署在Azure全球不同区域让玩家获得无以伦比的流畅体验。

posted @ 2019-11-30 17:44  royang  阅读(...)  评论(... 编辑 收藏