一群阿里人如何用 10 年自研洛神云网络平台?技术架构演进全揭秘!

【CSDN 编者按】逍遥子曾说,对阿里人来说「打仗是最好的团建,参加过双 11 的叫战友」,同样,参加过多次双 11 考验的系统技术都会成为真正意义上的基础设施,阿里云飞天系统的云网络平台洛神就是如此。

本文作者 —— 阿里云智能事业群研究员、网络产品线负责人祝顺民(花名江鹤)老师就是洛神背后的核心铸造者。在「CSDN 在线峰会 —— 阿里云核心技术竞争力」上,江鹤老师为我们详细分享洛神网络的 10 年演进之路。

复制链接或点击「阅读原文」可免费观看江鹤老师分享视频:

https://edu.csdn.net/course/play/28249/388353

作者 | 祝顺民(江鹤),阿里云研究员

责编 | 唐小引

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

今天的主题是《云网络技术架构的演进之路》,主要介绍阿里云网络产品从无到规模应用的 10 年过程中,云网络技术平台洛神是怎么发展的。 

阿里云飞天洛神云网络平台

阿里云系统叫飞天,云网络平台称为洛神,洛神和飞天系统的关系如下图所示,洛神云网络平台是阿里云飞天操作系统内核的核心组件和系统服务,伴随着飞天系统一起诞生、成长。

图 1 阿里云网络洛神平台与飞天操作系统

整个飞天系统架构分为几个层次,底层数据中心基础设施,包含物理资源、机房、服务器,还有多地域和可用区(AZ)、物理网络等;其上是飞天操作系统的核心,支撑了整个云计算的虚拟化,包括计算平台神龙,存储平台盘古,以及网络平台洛神;基于系统核心组件,构建了面向用户的系统服务以及原生服务,支撑不同行业客户在阿里云上构建自己的应用系统。

飞天洛神平台的诞生

洛神伴随飞天系统诞生,是云计算产业发展的结果,云计算首先是计算虚拟化,并提供给不同的用户使用,当用户在云上使用计算资源时,网络地址独立规划,不同用户地址可以相同,且虚拟机可以在不同机房之间迁移,地址保持不变,同时云计算是一个基础设施,支持海量用户同时使用,这些关键需求要求提供一个超大规模的虚拟化大二层的网络。

图 2 云计算租户网络应用需求

这些需求,使用传统商用物理交换机和路由器构建的网络,无法满足云计算的需求,也满足不了阿里云运营这张网络的需求,主要原因在于:

1)在百万级别的租户之下,如果每个租户都给到一张独立的地址空间,地址空间的数量非常庞大,传统交换机里面使用 VRF 来隔离租户之间的空间,意味着交换机要支持海量的 VRF 资源,这是目前硬件能力无法支持的。

2)服务器和虚拟机的数量增长,网络节点以及路由表的规模快速增大,虚拟机通讯和迁移要求路由表能快速同步。

3)当用户对云上网络层面的功能需求越来越多的时候,比如说用户在云上不仅希望有个虚拟机,还可以有个公网 IP;比如说用户可以自行定义这张网络 IP、路由和安全组。另外随着 NFV 技术发展,用户希望在云上运行虚拟化业务网元,例如负载均衡、NAT 网关、VPN 网络,要求对应的底层网络能快速进行功能迭代,以满足新需求和新技术的快速应用。

4)更关键的是,传统物理交换机是一个黑盒,各个厂商实现各异,接口各不一样,同时不支持设备内功能定制开发,让设备的运维成为一个难题。

图 3 传统网络设备应对云计算的约束

所以阿里云网络选择了一条自研的路,使用三大技术满足云计算的需求:

1)虚拟化网络; 

2)SDN 技术,软件来定义网络;

3)整个技术栈自研。

阿里云网络洛神平台就此诞生。

图 4 洛神网络 10 年演进

洛神云网络平台随着阿里云飞天系统一起,已经经历了 10 年演进,分为两个阶段,洛神 1.0 时代,主要定位为支撑超大规模和多租户的网络。

随着阿里云的业务快速发展,尤其近几年规模增长特别快,2018 年开始推出洛神 2.0,洛神 2.0 的特点主要在高性能、弹性开放能力。

现在阿里云上运行着很多超级规模的用户,比如阿里巴巴集团的淘宝业务,这些超大规模用户对网络的性能提出了很高的要求,特别是在例如双 11 这种大型活动期间,网络流量的峰值是十分巨大的,这对网络的性能提出了非常高的要求。

同时阿里云提供了丰富的基础 IaaS、 PaaS 产品与服务,第三方的生态伙伴可以在阿里云上提供众多的 SaaS 服务,包括网络类的 SaaS 服务,例如网络管理类、网络数据分析类、网络日志管理类、网络转发类的软件。这些软件在阿里云上很好的运行,需要网络提供弹性,开放的能力,就是洛神 2.0 的定位。 

飞天洛神 1.0:超大规模、多租户网络

洛神 1.0 平台由很多网络组件组成,架构上主要分成两类:AVS(Apsara vSwitch)和各种网关网元。AVS 是部署在每个物理服务器上的软件网元。最早基于 XEN 的 Kernel 架构实现,转发性能不高,单机只有 15 万 PPS。随后演进到了 KVM 的架构,在这个架构下,vSwitch 还是在 Kernel 的,但已能提供单机 120 万 PPS 性能。然后在 Intel 推出 DPDK 版本后,AVS 进行了架构升级,使用用户态 DPDK,转发性能提升至 600 万 PPS。

AVS 的演进,是为了追求网络性能大幅提升的过程,是阿里云网络持续迭代和改造网络软件架构的原动力。

关于业务网关,最早也是基于 Kernel 网络协议开发。例如 Load Balance 设备,第一代也是基于 Kernel 开发,当时整台物理机性能大约只有 300 万 PPS。为了追求更高的性能,这些网元基于 DPDK 进行了重新构建,既包括公网网关、私网网关,还有 SLB、NAT 网关、VPN 网关等等,转发性能提升了 20 倍。

洛神 1.0,基于 DPDK 的 AVS 和各种网关,最终搭建出一张支持超大规模租户、超大规模虚拟机的网络。 

图 5 洛神 1.0 支持超大规模租户网络

如图所示,在这张超大规模的租户网络里面,我们达到的核心能力包含:

1)多租户隔离,每个区域可以支持百万规模的 VPC。如果说一个租户对应一个 VPC,一个区域就可以支持百万规模的租户;

2)单个 VPC 支持超大规模虚拟实例,目前有一些超大规模的 VPC 中实际部署并运行了超过 30 万的 ECS,也就意味着此租户的这张网络里面有 30 万个以上的 IP, ECS 之间的通讯,包括东西和南北向的流量,都能很好的在虚拟网络里面运行。

3)最后就是基于 AVS 能力,单个 ECS 能够提供百万级 PPS 能力的转发性能。

飞天洛神 2.0:连接全球,高性能,弹性开放网络

洛神 1.0 支撑了阿里云网络从无到有,至规模应用,随着阿里云的业务不断增长,租户越来越多,也带来了越来越多的 VPC。租户购买的虚拟机越来越多,也代表着网络里的节点越来越多,转发性能要求越来越高。此外,也有越来越多的租户在云上不但仅仅满足简单的连通性要求,提出了丰富的业务网元处理诉求。例如用户原来在自己的数据中心里面构建了防火墙和 NAT,或者自己买了一些 Load balancer 的设备,现在业务系统搬到阿里云上之后,希望原来的网络功能继续在阿里云使用。

在此背景下,洛神平台升级到 2.0。如图所示,洛神 2.0 提供了更加丰富的转发网元,既有神龙 MOC 卡,还有专用可编程芯片以及通用 ECS;同时洛神 2.0 新构建了一个 NFV 平台,支持业务网元不再依赖传统 X86 服务器,直接基于 NFV 平台构建,例如 NAT、SLB、VPN 产品,同时 NFV 平台支持开放能力,第三方的网元也可以基于 NFV 平台部署,通过 VPC 内和 VPC 间的访问。 

图 6 洛神 2.0 架构图

洛神 2.0 的基础是阿里云遍布全球的网络基础设施和 Region 数据中心的基础设施。目前在全球有 20 个 Region、61 个可用区,100 多个 POP 节点。当国内用户需要出海或者国外的用户需要进中国的时候,不再需要自己购买很多物理形态的设备和网络连接,并花很长的时间搭建出网络基础设施。基于洛神 2.0,阿里云的网络产品就可以分钟内快速构建出运营网络、基础设施。

洛神 2.0 的 AVS 和业务网关都进行了架构跨越式升级,AVS 基于软硬件一体化方式,使用神龙 MOC 卡实现快速转发,转发性能提升数倍,达到千万 PPS。

图 7 软硬件一体的新一代 AVS

洛神 2.0 另一个跨越式架构升级是提供新一代的 NFV 平台,通过网元逻辑部署在通用 ECS 上,提供弹性和开放能力。当第三方厂商将其应用移植到阿里云之后,就可以在阿里云市场里对阿里云的租户进行售卖和提供能力,形成了一个非常好的生态:

1)网元可以给大量租户使用;

2)客户的白天流量很大,半夜的流量很少时,阿里云会自动帮你缩容。

如果说在某个时刻点突然碰到高峰,阿里云会自动协助扩容,也就意味着第三方的网元利用洛神 NFV 平台,不仅可以开放部署,还可以享受到自动的弹性。

图 8 洛神 2.0 NFV 开放平台架构

飞天洛神的未来

洛神 2.0 中,还有一个齐天智能网络平台,是未来演进的重要能力,未来的网络将是一个智能化的网络。当客户业务部署在阿里云的时候,如果网络发生波动或故障,需要非常快速的排查问题,因为网络是属于最底层的服务,当业务不能对外提供服务的时候,首先会想到网络问题。这个时候网络可能是正常的,有可能是上层业务的问题。如何让上层业务团队快速定界问题所在,如何让网络的管理员能快速自证清白,提升未来生产运营服务的效率,就这是未来智能化网络需要解决的问题。

图 9 洛神的未来演进

未来阿里云洛神平台的发展方向就是智能化,未来会通过自研网元,采集网络中数据,并且用大数据的方式去做产品问题分析和资源规划,目前洛神齐天系统已经构建在一部分能力,在内部使用,未来会提供给阿里云的客户,让客户可以智能化的运营自己的网络基础设施,这就是阿里云洛神平台未来演进的方向。

作者简介:祝顺民(花名江鹤),阿里云智能事业群研究员,网络产品线负责人,在软件定义网络(SDN)和网络功能虚拟化(NFV)领域有多年技术研发和管理经验。他带领团队历时多年,从无到有,打造了业内最丰富的云网络产品线,并铸造了阿里云飞天系统的云网络平台-洛神,服务了百万用户,并历经 8 次天猫双十一考验,已经成为真正意义上的基础设施。

同时,欢迎所有开发者扫描下方二维码填写《开发者与AI大调研》,只需2分钟,便可收获价值299元的「AI开发者万人大会」在线直播门票!

推荐阅读:在容器上构建持续部署及最佳实践初探在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!全球呼吸机告急!医疗科技巨头美敦力“开源”设计图和源代码互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 访问科学家微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!2020年,这20个大家都认识的加密交易所过得怎么样?真香,朕在看了

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

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

相关文章

数据人看Feed流-架构实践

背景 Feed流:可以理解为信息流,解决的是信息生产者与信息消费者之间的信息传递问题。 我们常见的Feed流场景有: 1 手淘,微淘提供给消费者的首页商品信息,用户关注店铺的新消息等 2 微信朋友圈,及时获取朋友…

Java-端口

windows 查看端口 netstat -ano # 查看所有端口 netstat -ano | findstr "8080" # 查看含有8080的行,查看指定端口 tasklist | findstr "20100" # 查看指定端口的进程 Ctrl Shift Esc # 打开任务管理器public class TestInetSocketAddr…

“出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?

作者 | Matt Asay译者 | 天道酬勤 责编 | 徐威龙封图| CSDN下载于视觉中国很难相信Kubernetes直到2015年中期(首次提交后的一年)才达到1.0版本,因为容器编排平台目前已经在云原生计算基金会(CNCF)调查的企业中生产了78…

Java-内置注解

注解: Java.Annotation (注释 comment) // 什么是注解 public class Test01 extends Object{// Override 重写的注解Overridepublic String toString() {return super.toString();} }// SuppressWarnings 镇压警告,写了就没有 变量没有使用的警告了Sup…

使用Quick BI连接AnalyticDB for PostgreSQL数据源

本文介绍如何通过阿里云Quick BI连接AnalyticDB for PostgreSQL数据库。 在Quick BI中新建AnalyticDB for PostgreSQL数据源 登录Quick BI控制台。单击工作空间>数据源,进入数据源管理页面。单击新建数据源>AnalyticDB for PostgreSQL。在添加AnalyticDB fo…

开源背后 | 面对端侧推理引擎的挑战,阿里工程师如何应对?

阿里妹导读:MNN(Mobile Neural Network)已于今年5月7日在 Github 上正式开源。淘宝无线开发专家——陈以鎏(离青)在 GMTC 全球大前端技术大会为大家分享了 MNN 开发、开源中的思考与总结,通过淘宝在移动 AI…

财报上新不久的Mobvista,还内藏何种“惊艳”?

本文为CSDN博主「L-JingJing」的原创文章 原文链接:https://blog.csdn.net/sch881226/article/details/105362679 就在不久前,Mobvista刚刚发布了2019年的财报数据。我们观察到其程序化广告收入已高达22.3亿元,同比增长40.8%;经…

Java-元注解

// 测试 元注解 public class Test02 {MyAnnotationpublic void test(){} } // 定义一个注解 // Target 表示注解可以用在哪些地方 ElementType.METHOD 是方法 ElementType.TYPE是类 Target(value {ElementType.METHOD, ElementType.TYPE})// Retention 表示注解在什么地方有…

容器十年 ——一部软件交付编年史

作者| 张磊,阿里云容器平台高级技术专家,CNCF Ambassador (CNCF 官方大使),Kubernetes 项目资深成员与维护者,曾就职于 Hyper、微软研究院(MSR),现在负责 Kubernetes 技术…

Java-自定义注解

// 自定义注解 public class Test03 {// 注解可以显示赋值, 如果没有默认值,我们就必须给注解赋值MyAnnotation2(name"wang")public void test1(){}// 当只有 一个值 为value 时, 可以不用写 value""MyAnnotation3("…

如何带领团队“攻城略地”?优秀的架构师这样做

阿里妹导读:架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后,是艰辛的探索。今天,阿里巴巴技术专家九摩将多年经验,进行系统性地总结,帮助更…

资深程序员总结:分析Linux进程的6个方法,我全都告诉你

来源 | 后端技术学堂封图| CSDN下载于视觉中国操作系统「进程」是学计算机都要接触的基本概念,抛开那些纯理论的操作系统底层实现,在Linux下做软件开发这么多年,每次程序运行出现问题,都要一步一步分析进程各种状态,去…

蚂蚁金服胡喜:金融服务将成为开源的下个前沿领域

近日,全球知名开源组织云原生计算基金会 CNCF 宣布,蚂蚁金服正式成为 CNCF 黄金会员。为什么蚂蚁金服会拥抱开源,科技公司和开源社区如何实现双赢且可持续发展?蚂蚁金服副CTO胡喜在TechCrunch上发表专栏阐述了自己的见解。 自诞生…

Java-反射概述

// 什么叫反射 public class Test02 {public static void main(String[] args) throws ClassNotFoundException {// 通过反射获取类的 Class 对象Class c1 Class.forName("reflection.User");Class c2 Class.forName("reflection.User");Class c3 Class…

PLSQL 设置日期格式为年月日不显示时分秒

在这里插入代码片nls_date_format YYYY-MM-DDnls_timestamp_format YYYY-MM-DD

云原生应用 Kubernetes 监控与弹性实践

前言 云原生应用的设计理念已经被越来越多的开发者接受与认可,而Kubernetes做为云原生的标准接口实现,已经成为了整个stack的中心,云服务的能力可以通过Cloud Provider、CRD Controller、Operator等等的方式从Kubernetes的标准接口向业务层…

零基础小白10分钟用Python搭建小说网站!网友:我可以!

都说Python什么都能做,本来我是不信的!直到我在CSDN站内看到了一件真事儿:一位博主贴出了自己10分钟用Python搭建小说网站的全过程!全程只用了2步操作,简直太秀了!!……第一步:爬取小…

Java-得到 Class 类的几种方式

public class Test03 {public static void main(String[] args) throws ClassNotFoundException {Person person new Student();System.out.println("这个人是:"person.name);// 方式一: 通过对象获取Class c1 person.getClass();System.out…

就是要你懂负载均衡--lvs和转发模式

本文希望阐述清楚LVS的各种转发模式,以及他们的工作流程和优缺点,同时从网络包的流转原理上解释清楚优缺点的来由,并结合阿里云的slb来说明优缺点。 如果对网络包是怎么流转的不太清楚,推荐先看这篇基础:程序员的网络知…

JVM-SANDBOX:从阿里精准测试走出的开源贡献奖

阿里妹导读:稳定性是历年双11的技术质量保障核心。从 2016 年开始淘宝技术质量部潜心修行,创新地研发了一套实时无侵入的字节码增强框架,于是「JVM-SANDBOX」诞生了,并且顺手在 MTSC 大会上拿了开源贡献奖,今天&#x…