阿里云飞天洛神2.0:高性能网络软硬一体化技术实践

云网络架构

云计算从9年前被质疑为新瓶装旧酒,到经过多年的高速发展,正在成为水电煤一样的基础设施。云网络构建在物理网络之上,为云计算提供灵动、智能的网络连接。云网络的性能和稳定性是云计算的基石。

VPC是云网络的基础,VPC的基础组件主要包括2部分:Gateway,vSwitch。

1.png
Gateway是VPC的流量入口,负责公网/专线和跨region流量的汇聚和分发。vSwitch负责ECS的虚拟交换,和Gateway一起为客户搭建一张虚拟专用网。

CPU软转发

物理网络经过几十年的发展,接口和协议相对标准和成熟,所以物理网络的各类交换机基本都是基于switch芯片(其中大部分是Broadcom的)做硬转发的。

云网络的发展是这几年的事,业务和需求都在快速变化中,缺乏行业标准,基本都是在按需做定制,所以云网络的各类业务基本都是基于CPU在做软转发。

DPDK是Intel针对x86开发的数据面优化技术,作为一个开源软件,DPDK也可以用于其它的CPU架构,比喻说ARM和Power。DPDK运行在用户态,通过大页/轮询/CPU亲和性等技术,达到减少内存拷贝/减少cache miss/减少中断调用/减少进程和线程切换等优化目标,进而实现CPU软转发的性能优化。

在DPDK出现之前,软转发通常是采用带加速引擎的NP,x86主要用于控制。DPDK出现之后,基于x86的转发从内核态迁移到用户态,性能有了大幅提升。

阿里是最早把DPDK产品化的公司之一,目前阿里云网络的各个组件已经全面切到DPDK。以vSwitch为例,通过DPDK,vSwitch的性能得到了数倍的提升。

软硬件一体化

基于CPU的软转发主要面临2个问题:一是CPU的单core性能瓶颈,在大流和攻击场景下比较容易被打爆,导致故障;二是CPU的摩尔定律逐步失效,CPU的频率和核数提升空间越来越小,靠CPU软转做进一步性能提升的空间有限。

以太网的接口速率正在飞速发展中,25G NRZ已经普及,50G PAM4已经成熟,单模块400G已经成为现实。PCIE的接口速率也在快速发展中,单lane 16Gb的PCIE Gen4还未规模上线,单lane 32Gb的PCIE Gen5的规范已经发布。

随着云计算的发展,云网络的流量出现了爆发式增长。游戏/视频/NFV化对ECS网络性能提出了更高的要求,vSwitch的网络正在朝百Gbps迈进。混合云的发展带来了专线和跨region流量的激增,Gateway的流量正在朝百Tbps迈进。

为了提升云网络的性能和稳定性,满足云计算的技术发展需求和业务发展需求,阿里云网络团队对VPC的基础组件做了全链路的软硬一体化设计,Gateway以超大流量+百万表项为目标,vSwitch以超大表项+百Gbps为目标。经过一年多的努力,2款产品都已顺利上线,把阿里云网络产品的竞争力提升了一个台阶。
2.png

vSwitch硬件加速

网络的业务可以理解为各种route + ACL的组合,一次报文转发要经过多次表项查找和head update。快慢速分离的思路就是让Slowpath负责复杂的业务逻辑,首包上送Slowpath生成Session/Flow,后续报文就不需要把整个业务流程再走一遍,直接在Fastpath里基于Session/Flow做Match/Action,提升转发性能。

3.png
软转发里,快慢速都是通过CPU实现的。为了提升vSwitch的性能和稳定性,阿里云网络团队经过一年多的努力,成功通过AISC实现了Fastpath的硬件化。

通过硬件化,vSwitch的性能对比软转发提升了10倍以上,延时大幅降低。

Gateway硬件加速

Gateway是VPC所有流量的入口,也是云网络带宽和稳定性压力最大的一环。随着搬站和企业上云的推进,专线流量出现了数量级的增长,达到几十Tbps。这么大的流量,通过堆服务器来提升转发能力基本成了不可能完成的任务。

传统交换芯片的数据面对客户是固定的pipeline;云网络由于业务和需求变化快,没有业界通用标准,方案基本都是按需做定制,没法使用固定转发的交换芯片。可编程交换芯片的出现给云网络打开了一扇窗,让Gateway硬件化成为可能。

为应对超大流量的挑战,阿里云网络团队启动了基于可编程交换芯片的Gateway设计。经过一年多的努力,成功实现了Gateway的软硬结合设计

5.png
通过可交换芯片的加速,Gateway单机bps性能提升20倍以上,单机pps性能提升近百倍,延时降低数十倍,整体Capex和Opex大幅降低。

客户价值

技术创新的目的是为了更好的客户体验,实现客户第一的目标。通过软硬一体化的技术,阿里云可以给客户提供更大带宽/更低延时/更加可靠的网络连接。
6.png

持续演进

可编程交换芯片的转发能力强,但片内SRAM/TCAM容量有限。阿里云体量大/客户多,表项规格大,没法全量下发到硬件里。解决方法之一是对表项做水平拆分,但云网络的业务复杂,客户的配置变化快,水平拆分的难度大/成本高。解决方法之二是软硬结合+动态调整,通过速率计算动态检测大象流/长尾流,长尾流动态调整到软转发,大象流动态调整到硬转发,软硬一体/动态优化。
7.png
云网络的二八原则明显,长尾流的表项大/流量小,大象流的流量大/表项小。通过软硬结合+动态调整的方式,一个集群可以容纳全量配置。软转发弥补硬件的表项容量问题,硬转发弥补软件的转发能力问题,相互配合/相得益彰。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作为后端开发如何设计数据库系列文章 设计SaaS系统表结构

在公司做了一年的SaaS内核系统,但是有些东西不知道能不能透露出来。我尽量在不透露一些敏感东西的情况下(这个度我无法把控,只能是笼统了),将某些关于数据库方面的精髓传递出来。如果表达不畅,请谅解。 前…

重学 VBA - 基础与实战篇(含正则表达式)

目录 前置内容1. 单元格对象属性与方法1.1 查找最后的行、列1.1.1 End 属性1.1.2 SpecialCells 和 UsedRange1.1.3 Find 方法1.1.4 四种方法属性效果比较1.2 多重循环(案例)1.2.1 实现数据之间的匹配(不同列)1.2.2 实现数据之间的匹配(同列)1.2.3 排序 - 简单选择排序法1…

js 时间比较大小

const startTime parseInt(this.timeValue.replace(:, ));const endTime parseInt(this.timeValue2.replace(:, ));//进行比较if (startTime > endTime) {//添加校验提示console.log("startTime>endTime")} else {console.log("startTime<endTime&qu…

新一轮支付革命,利楚扫呗的数据库优化之路

中国移动支付市场崛起过程中&#xff0c;第三方、第四方等非银行支付机构在2017年至2019年之间&#xff0c;把移动支付交易量从300多亿笔拉升至近1800亿笔&#xff0c;充分彰显以扫码支付为代表的移动支付革命引领一时风潮。 利楚扫呗作为华中地区领先的金融收单企业也是其中一…

IM、RTC技术两生花,看融云如何打造“IM+RTC+Push”一站式通信云服务

11月9日&#xff0c;融云宣布完成数亿元人民币的D轮融资。从李佳琦和明星扎堆的电商直播&#xff0c;到疫情期间在线教育的全面普及&#xff0c;再到5G技术进入商用&#xff0c;实时音视频技术&#xff08;Real-Time Communication&#xff0c;以下简称RTC&#xff09;迎来了全…

Nginx实现通过不同的url前缀访问不同的前后端项目

&#xff0c;所以目前就可以通过给网页访问链接增加不同的url前缀&#xff0c;来让Nginx去实现同一端口下访问不同的前后端项目。具体配置如下&#xff1a; &#xff08;我这里是前端两个项目各自对应后端的两个服务&#xff09; server {#这里默认监听80端口&#xff0c;可根…

阿里云助力浙江大学信息化建设,以实时数据驱动校园智能管理

随着网络信息化技术的不断进步&#xff0c;就我国高校而言&#xff0c;传统的学习和生活模式已无法满足学生的需求&#xff1b;老机房堆硬件的建设&#xff0c;给信息化深度建设的管理和运维工作人员造成了巨大的麻烦。这些因素促使各所高校对校园智能管理的需求日益剧增。 20…

1 元秒杀 1000+ 册爆款电子书,错过再等一年!

wow代码人们让钱包瑟瑟发抖的双十一已经来啦与此同时码不停蹄地向你奔赴而来的还有 CSDN 为你准备的???? 1 元秒杀 ????价值 3.5 万元的爆款电子书限时特惠&#xff0c;仅需 1 元你&#xff0c;准备好了吗仅限 1000 人速领????????????错过悔10年系列好书

vue 单独页面定时器 离开页面销毁定时器

data: {return {timer: null} }, created() {this.timer setInterval(....); }, beforeDestroy() {if(this.timer) { //如果定时器还在运行 或者直接关闭&#xff0c;不用判断clearInterval(this.timer); //关闭} }

谊品生鲜:放弃传统数据库架构,全站上阿里云

疫情之下&#xff0c;生鲜电商的订单突然暴涨。 社区生鲜龙头企业谊品生鲜就是一个典型代表。它的在线交易量激增&#xff0c;日订单量超过10万单。 对电商企业而言&#xff0c;这对业务是个巨大的好消息&#xff1b;但对于IT、对于谊品生鲜的核心业务系统则是一个巨大的挑战…

教你一招,如何解决 “这台电脑无法运行 Windows 11” 的问题

目录1. 系统兼容性检测2. 为什么我的电脑不能运行Windows 11&#xff1f;3. 最低系统要求4. 如何开启 TPM 受信任模块5. 微软坚持最低要求的理由6. 最新补充6.1 更新支持的 CPU 列表6.2 旧电脑也能安装 Windows 11&#xff0c;但后果自负微软于 6.24 正式推出了全新的 Windows …

Flink SQL 的 9 个示例

作者&#xff1a;贺小令&#xff08;晓令&#xff09; 本文由阿里巴巴技术专家贺小令分享&#xff0c;社区志愿者郑仲尼整理。文章基于 Flink 1.9 版本&#xff0c;从用户的角度来讲解 Flink 1.9 版本中 SQL 相关原理及部分功能变更&#xff0c;希望对大家有所帮助。主要内容分…

如何破解“中国开源拿来主义”?包云岗的几点分析

作者 | 包云岗责编 | 王晓曼本文经作者授权转载自包云岗知乎以下视频是2011-2019期间全世界开源代码贡献最多的城市排名&#xff1a;旧金山一骑绝尘&#xff0c;其他主要是美欧城市&#xff1b;亚洲有东京、首尔上榜&#xff1b;莫斯科也贡献突出。但是&#xff0c;很遗憾没有中…

uni-app获取腾讯地图计算两经纬度的实际距离(可批量)

地址 https://lbs.qq.com/service/webService/webServiceGuide/webServiceDistance getDistance() {uni.request({url: https://apis.map.qq.com/ws/distance/v1/matrix, //仅为示例&#xff0c;并非真实接口地址。method: GET,data: {mode: walking,from: 39.071510,117.190…

JavaScript 常用工具函数

目录 1. 为元素添加 on 方法2. 为元素添加trigger方法3. 转义 HTML 标签4. HTML 标签转义5. 跨浏览器绑定事件5. 加入收藏夹7. 提取页面代码中所有网址8. 动态加载脚本文件9. 返回顶部的通用方法10. 实现base64解码11. 确认是否是键盘有效输入值12. 全角半角转换13. 版本对比14…

js获取数组中最大和最小值

文章目录1. 排序法2. 假设法3. 使用 Math 中的 max/min 方法4. 使用ES6的扩展运算符1. 排序法 // 数组中获取最大和最小值compareMaxMin() {const arr [12, 56, 25, 5, 82, 51, 22, 100, 2];arr.sort(function (a, b) {return a - b;}); // [5,12,22,25,51,56]const min arr[…

JS前端常用工具方法

目录 1. 邮箱2. 手机号码3. 电话号码4. URL地址5. 是否字符串6. 是否数字7. 是否Boolean8. 是否函数9. 是否为null10. 是否undefined11. 是否对象12. 是否数组13. 是否时间14. 是否正则15. 是否错误对象16. 是否Symbol函数17. 是否Promise对象18. 是否Set对象19. 是否是微信浏览…

JS向数组添加元素,插入数据

js中对于数组的操作很常见&#xff0c;下面记录一下js向数组添加元素的方法。 let myArray[11,22,33];console.log(原数组&#xff1a;,myArray);myArray.push(44,55);console.log(用push在数组后面插入元素&#xff1a;,myArray);myArray.unshift(66,77);console.log(用unshif…

小程序 获取腾讯地图计算两经纬度的实际距离(可批量)_多地打卡

文章目录一、小程序1. 安装vue-jsonp2. 引入腾讯sdk3. 实例化4. 二点求距离5. 多点求距离文档地址&#xff1a;https://lbs.qq.com/service/webService/webServiceGuide/webServiceDistance申请开发者密钥&#xff08;key&#xff09;&#xff1a; 申请密钥一、小程序 1. 安装…

前端常用 JavaScript 方法封装

目录 1. 输入一个值,返回其数据类型**2. 数组去重3. 字符串去重4. 深拷贝 浅拷贝5. reverse底层原理和扩展6. 圣杯模式的继承7. 找出字符串中第一次只出现一次的字母8. 找元素的第 n 级父元素9. 返回元素的第n个兄弟节点10. 封装mychildren,解决浏览器的兼容问题11. 判断元素…