AWS针对内存密集型应用(如SAP HANA内存数据库),推出了全新的实例规格X1.32xlarge,首次明确承诺了实例带宽可以达到20Gbps,当然要达到这个带宽,必须使用伴随X1一起推出的一款AWS平台专用的网卡驱动ENA,其源代码在github上已经开源(https://github.com/amzn/amzn-drivers),最新的AMI镜像自带这个内核驱动模块,其它linux发行版就需要下载源代码自行编译加载才可使用。
分析和推测之前AWS的所有支持增强型联网的实例都是使用intel 82599网卡,实例内部加载的是ixgbevf驱动,但是我们知道intel 82599网卡的物理带宽极限是10Gbps,而此次伴随X1推出,20Gbps的实例带宽成为现实,说明AWS在其数据中心内部已经开始了物理网络设备的更新换代(包括服务器网卡和交换机),正在从10Gbps向25/40Gbps演进。
从ENA驱动的源代码看,ENA是一款支持SRIOV的硬件网卡驱动,而不是如nefront或virtio那样的软件模拟的前后端驱动,我猜测AWS在自制设计公有云数据中心的服务器、交换机和存储设备之后,已经开始使用自己专属的服务器网卡了。
根据其源代码的readme上的描述(The driver supports a wide range of ENA devices, is link-speed
independent (i.e., the same driver is used for 10GbE, 25GbE, 40GbE, etc.)),支持ENA驱动的这款网卡应该是类似intel xl710的一个网卡系列,支持从10Gbps、25Gbps到40Gbps的不同带宽规格。我猜测不排除AWS早就使用了ENA网卡,只不过之前一直将它作为前后端驱动实例的软件交换机的上行链路,用户没有感知到它的存在而已。
我一直在思考AWS的VPC网络功能是在哪里实现的,是像neutron的标准实现ovs、iptables那样纯软方式,还是使用了智能网卡、又或者在独家的定制交换机上,还是在服务器上有某种特殊的网络处理的芯片?今天看了一下ENA驱动的源码和描述,有这么一句(Some ENA devices support SR-IOV. This driver is used for both the SR-IOV Physical Function (PF) and Virtual Function (VF) devices.)这个驱动同时也用于pf。但是我在ENA源码里没有找到任何VPC网络功能的配置接口或是相关的东东,那是否说明AWS的网络功能不会是做在网卡上的呢。但是这句描述是否可信,也说不定,毕竟AWS用户只能确定这个源码是完整的VF源码,因为要编译,但是不能确定这个源码是完整的pf源码,有没有可能AWS将pf的一些功能裁剪掉才放出的!
最后的疑问在最新的linux主干版本(4.7)上,我没有找到ENA代码的影子,那么对于ENA这个驱动,主要的linux商业发行版(redhat suse ubuntu)是否会支持和维护呢,因为这毕竟是编译了一个内核模块加载在系统中,如果在生产环境中panic了,用户已经购买的linux维护承诺是否仍然适用呢?