技术解析:UCloud云主机网络增强特性如何炼成? | U刻
  • 技术解析:UCloud云主机网络增强特性如何炼成?

    栏目:技术分享
    引 言

    随着产品交互需求越来越频繁,数据量也越来越大,高并发成为了一种常态,给网络带来了极大的挑战。特别是,大量频繁用户请求和数据交互、体积小的网络包通信的新业务场景下,单个云主机网络包处理能力已经无法满足需求。

    为解决单个云主机网络包处理能力存在的瓶颈,UCloud云主机发布了网络增强新特性,可以支撑数倍在线请求,将单台PPS提高数倍,从而保证网络性能的稳定。

    举个例子:就游戏而言,轻微的网络波动就会造成在线玩家掉线和卡顿,单台云主机平均更是有几万的包转发,单台云主机的网络包处理能力明显不足。但是,打开网络增强特性后,对于游戏商来说就能一个区服承载数倍游戏玩家,而对于不注重单机能力的情况也能起到一台顶多台的作用,所以网络增强特性不仅可以提高单台主机的包处理能力,还能减少云主机的部署数量与相应的成本。

    初识网络增强

    那么,UCloud云主机网络增强特性具体能为高包量并发的数据处理带来哪些优化呢? 在介绍UCloud云主机的网络增强新特性,先介绍数据包和并发的概念,了解一条消息的旅程:

    • 包(Packet),是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。在网络中,数据被划分为多个数据包,这些包沿着不同的路径在一个或多个网络中传输,在传输的路途上,每个小数据包还可能会被继续分片。当这些小数据包到达目标机器时,他们会被重新拼装到一起。

    简单的说,用户浏览网页、打开App、玩联网手机游戏,实际上就是数据包的交换,因为这些简单动作背后,你完成了给网站发送数据包,而网站接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包这两个过程,即数据包的交换。

    • 并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行,即两个或多个事件在同一时间间隔内发生。

    简单的说,当春运期间,12306网站开放购票,1秒内10000个人点击购买按钮,此时12306网站服务器就收到了10000个并发请求,并伴随几万甚至十几万的网络数据包收发。

    UCloud云主机的网络增强新特性,优化的就是网络数据包并行收发的能力,打开网络增强配置,创建的新主机可以拥有网络高包量多队列并发特性,使带宽能力大幅提升,能并行处理和接受批量连接的报文,极大提升了虚拟机的包处理能力。

    技术实现

    云主机的网络增强特性,利用的是网卡多队列特性,让多核CPU配合多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,使得CPU的各个核实现并发收包,所以在网络流量大的时候,数据包可以被分散到各个核上,避免了CPU成为瓶颈的尴尬。

    那多队列网卡特性又是如何实现的呢?事实上,以往的内核是不支持多队列的,而不支持多队列的内核中的每个网卡都拥有一个排队的规则,根据排队规则的过滤器将数据包区分为一个个类,类中还可以嵌套新的更细的排队规则,但这种以网卡为中心的方式实际上不适应如今的网络应用,从而诞生了多队列特性的网卡。

    实现了多队列的网卡图示如下:

    UCloud云主机网络增强特性如何炼成?1.webp

    数据被划分为数据包在网络传输,到达目标机器时,先通过网卡转发给内核,内核包括驱动和内存,最终到达CPU,CPU对数据包进行处理。对于普通的云主机来说,网卡只有一个根队列,所有的数据包进来都要进入这个根队列进行排队,由一个CPU进行处理。所以当数据量大的时候,就会造成瓶颈,以致CPU来不及处理数据包,最终导致丢包。

    而多队列网卡是一种技术,将各个队列通过中断绑定到不同的核上,实现了多队列,就不再逼迫数据包强挤到网卡的根队列进行排队,使得每个网卡拥有很多的根队列,甚至每个应用一个队列都有可能,从而增强并发处理能力,使带宽能力大幅提升,能并行处理和接受批量连接的报文,极大提升了虚拟机的包处理能力。

    实现上,我们主要是通过负载均衡方法论,升级宿主机和虚拟机操作系统Linux 的内核,实现对网卡驱动多队列的支持,并利用多核CPU的性能,让原来的一个队列变成四个队列,使得数据包的调度变得更加有效,同时也由多个CPU进行处理,从而提升并发处理的能力。

    (注: 目前只支持在部分Linux发行版4核CPU以上的标准机型上开启。)

    性能测试

    对于UCloud云主机网络增强的性能,我们也进行了测试。主要是通过使用通用网络性能测试工具netperf对UHost标准版机型在是否开启网络增加配置的两种情况下进行网络性能测试得到的结果,最新的测试数据如下图所示(鉴于是测试环境,该数据仅供参考):

    1

    经过测试,网络增强配置的特性,会让带宽利用率更是大幅提升,内网带宽接近4Gb/s,是业内平均水平的7倍以上。

    2

    经过测试,网络增强配置的特性,可以极大的提升包处理能力,是业内平均水平的3倍以上,最大包吞吐能力高达18万。

     

    总 结

    本文简单的介绍了利用多队列网卡特性使得云主机拥有网络高包量多队列并发特性的实现过程。希望通过分析数据包传输路径以及处理过程让大家直观的看到,UCloud云主机网络增强新特性带来的高包量并发处理能力的提升。

    未来,UCloud还会对网络增强配置进行升级,随着硬件提升和可能的内核优化,高包量处理能力还将有持续提升空间。希望此特性能够满足新场景下通讯频繁、数据包体积小但数量大的新需求。