Underlay网络:如何立住可靠又支持大规模无收敛的“人设”
摘要:Underlay网络要如何演进,才能满足5个9的指标?
这几年公有云业务急速上涨,network as a service理念越来越深入人心。云厂商给租户提供了越来越丰富的云服务,VPC、LB等服务功能越来越完善。这需要网络提供灵活编程的能力,可以针对租户的业务诉求迅速改变策略。而这一理念其实与传统的网络是背道而驰的。在传统网络观念中,信奉“稳定压倒一切”的套路,为了保证网络稳定,需要尽量减少对于网络的配置变更。那么,在云的环境下,网络如何自处才能满足既稳定又灵活的要求?
为满足云业务的需要,网络逐渐分化为underlay和overlay。Underlay网络就是传统数据中心的路由交换设备,依然信奉稳定压倒一切的理念,提供可靠的网络数据传输能力;overlay则是在其上封装的业务网络,更加跟服务贴近,通过VXLAN 或者GRE等协议封装,给租户提供一个易用的网络服务。Underlay网络和overlay网络即关联又解耦,两者相互关联又能独立演进。
今天主要是讲一下underlay网络的演进策略。Underlay网络是整个公有云的地基,承载网络不稳,业务便无SLA可言。特别随着云上承载的业务越来越庞大,客户越来越多,对于underlay网络的稳定性要求越来越高。Underlay网络要如何演进,才能满足5个9的指标?
传统的“胖树”网络,结构简单,维护方便,但是随着组网规模的扩大,却存在很多问题。
1、 二层稳定性问题
传统以POD为拓展交付单元的网络,POD使用大规格交换机做汇聚,POD内多为二层组网。破解二层环路的常用方案有2种:STP+VRRP、堆叠
VRRP+STP是传统数据中心最常用的组网方案,网关通过VRRP冗余,环路通过STP破环,真是传统网络的“黄金搭档”。然而,随着组网规模做大,当TOR的数量达到100台以上时,stp协议会面临较大挑战,计算偶然性错误,收敛时间慢等。100台TOR,按每台40个下行口计算,服务器双归接入,可以支持规模2K。规模也还算可观,可一旦STP出现问题,2K服务器全都受影响,就不太能接受了。
堆叠,堆叠可以直接规避掉环路的问题,维护起来也简单很多。可是堆叠终究也是一个大二层,大二层就存在风暴一起瘫的风险。并且堆叠系统无法平滑升级,一直是运维工程师心中的痛,汇聚一堆叠,升级的风险就太大了。
2、 带宽收敛问题
胖树结构,通过增加上层设备的线路带宽和线路数量的方式增加带宽。但随着规模的增加,下挂服务器越来越多,TOR越来越多,汇聚到核心的连线往往不足以实现无收敛组网。且再多的连线,都是从某台设备上出来的,此设备故障,带宽损失太严重。
3、 拓展性问题
按照AWS提供的数据,一个云数据中心的规模,在6W时的规模收益是最大的。而胖树方案要支持6W台服务器接入,基本不太可能。哪怕真的接上了,任何一台骨干设备故障,引起的网络问题是难以预计的。就跟电影《长城》中饕餮的阵型一样,所有饕餮都围绕兽王行动,兽王一死全军覆没。
那么在公有云的业务诉求中,underlay网络如何发展,才能满足它即可靠又支持大规模无收敛的“人设”呢?那当然是clos,scale out,anycast等潮流玩法(也没那么潮流,人家10年前就做出来了)
给大家分享一下google和Facebook的做法,这两家公司的组网堪称业绩标杆。
Google:
Google还是保留了类似于POD的概念,但他们的POD有4台汇聚,而且上行所对接的核心数量,想要多少有多少,完全超出了传统的范畴。N个核心之间与每一个POD汇聚之间都有互联,任意两个POD之间,有4*N条线路互通,任意一条挂掉,基本无影响。
POD四台汇聚,网关在哪里?这么多条线路,怎么做的管理和路由?
要做成这样的组网,肯定不是改改连线方式就能搞定的。underlay的网关需要下沉到TOR上,TOR上行汇聚直接跑动态路由协议,汇聚和核心之间也跑动态路由协议,形成多条等价路径。报文可以随意转发,条条大路通罗马。
传统的OSPF、BGP等动态路由协议,能支持的ECMP路径毕竟是受限的。Google自己改造了传统的动态路由协议,让他可以支持更多地等价路径,更快速地发现线路问题。
Facebook:
上图是Facebook典型的乐高组网,分了多个层次多个平面。下层的每一个平面对应了一个POD,POD的汇聚有自己组成多个平面与核心之间组成一个上一级POD。
这样看可能会有点晕,我们简化一下如下:
- 每一个POD有48台TOR,每台服务器只出1根线接入到1台TOR
- 每一台TOR上行对接4个汇聚,每一个汇聚上行对接48个核心
- 任意2台服务器之间,有4*48=192条通路
- 任意1台TOR故障,软件自己做冗余,业务不受影响
- 任意1台汇聚或核心故障,业务基本不感知
这样的组网,业务跑在上面,是不是有一种很踏实的感觉。
总结一下这两家公司网络的特点:
1、去中心化,不再存在唯一的汇聚或者核心,而是拓展了多台
2、网关下沉到TOR,TOR以上为路由转发,抑制二层广播域扩散
3、多条等价路径,核心汇聚之间线路冗余高,任何一台设备一条线路故障基本无影响
以上是我们可以直接从物理图上看出来的,而在“看不到”的地方,还做了更多地优化:
1、 硬件设备控制器,所有设备统一管理,配置标准化
2、 设备监控信息上报通道,任何链路皆有完善监控
3、 流量调度能力,线路有拥塞,流量调度到其他链路
当然,还有好多优化,是笔者无法知道的,但这些优化肯定都有一个共同的目的:网络更加稳定。
互联网的设计理念,永远不相信单点的可靠性。要通过冗余设计,达到任何一个节点故障,均无法影响整体业务的目的。基础网络也是如此,随着云上承载的业务越来越多,若底层网络不稳定,受损的业务会越来越多,造成的损失不是扛可以扛过去的。所有底层网络的设计理念,必然要围绕“无论如何业务都不能down”的方向努力。Google、Facebook的组网算是我们的先驱,国内的各个云厂商其实也在用类似的组网方案。
物理架构的fabric,带来的是工程上的可靠性。而很多的故障模式,物理架构不一定能cover住。还必须要设计出与之匹配的软件,才能更好的保证网络的稳定运行。相比于物理架构来说,监控、调度等软件能力的补齐更加重要。
现在越来越多的公司在推行“白牌”交换机,其实是把传统交换机的系统打开了,给传统封闭的交换机系统打上API接口,可以通过编程系统直接调度,获取内部更多信息,以方便针对各种情况,做出调整。比如,交换机丢包分析,远程抓包,指定流监控,指定流调度等能力。
传统的交换机,虽然功能齐全,但是相对于公有云来说,齐全的功能未必不是一种累赘。刚好齐全的功能,加上开放可编程的系统,才是云的需要。你看,AWS都要自己出交换机了。
Underlay网络:如何立住可靠又支持大规模无收敛的“人设”的更多相关文章
- sdn学习-1(概念:Underlay网络和Overlay网络)
随着云计算.大数据.移动互联网等新技术的普及,部署大量虚拟机成为一种必然趋势.解决这些虚拟机迁移问题理想的方案是在传统单层网络(Underlay)基础上叠加(Overlay)一层逻辑网络,将网络分成两 ...
- 开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等
开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等 C++开发网络通信程序时用asio是个不错的选择 ...
- 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练
计图(Jittor) 1.1版本:新增骨干网络.JIT功能升级.支持多卡训练 深度学习框架-计图(Jittor),Jittor的新版本V1.1上线了.主要变化包括: 增加了大量骨干网络的支持,增强了辅 ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- [New learn] 网络基础-apache本地服务搭建(支持php)
1.简介 无网不利,无网不胜.对于移动应用来说离开网络那和咸鱼有什么分别?所以对于开发者来说更要学习好网络开发的技术. 2.搭建apache本地服务器 1.在finder中显示影藏的用户文件夹 fin ...
- 基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类
这段时间做新的Android项目的client和和REST API通讯框架架构设计.使用了非常多新技术,终于的方案也相当简洁优雅.client仅仅须要传Java对象,server端返回json字符串, ...
- 网络协议 13 - HTTPS 协议:加密路上无尽头
系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...
- 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(转)
.net core 3.0 Preview 6,vs2019 16.1.4 暂时还不支持Winform designer 解决方案: 将Form1修改为其他名字 WinForm 编辑项目文件 加 ...
- 让VS2019支持.NET Core WinForms和WPF设计器的临时办法(比微软给出的办法更方便)
参考以下代码片段,给项目添加NET Framework目标框架,切换到NET472运行时重新生成项目,然后打开设计器界面. 如果遇到设计器报错,尝试以NET472运行时为目标重新生成项目,并重新打开V ...
- Unity5.1 新的网络引擎UNET(七) UNET 单人游戏转换为多人
单人游戏转换为多人 孙广东 2015.7.12 本文档描写叙述将单人游戏转换为使用新的网络系统的多人游戏的步骤.这里描写叙述的过程是简化,对于一个真正的游戏事实上须要更高级别版本号的实际 ...
随机推荐
- CF82D Two out of Three
题目描述 Vasya has recently developed a new algorithm to optimize the reception of customer flow and he ...
- 2020/4/29 一场令人头疼的cf。。。
今天是被安排的cf...我真的是太菜了啊...又双叒叕被机房的一群dalao吊打了... 这就是我与6年级的dalao的区别吗...我裂开了 T1:A - Exercising Walk 简单题. 就 ...
- powershell 7 初体验
支持枚举定义,类定义\类继承\接口继承,不支持接口定义\泛型类定义\泛型函数定义,但是作为shell脚本已经相当让人惊喜了, 基本逻辑可以直接套用C#语法格式 # enum_sample/main.p ...
- 如何避免JavaScript中的内存泄漏?
前言 过去,我们浏览静态网站时无须过多关注内存管理,因为加载新页面时,之前的页面信息会从内存中删除. 然而,随着单页Web应用(SPA)的兴起,应用程序消耗的内存越来越多,这不仅会降低浏览器性能,甚至 ...
- 记录一下我的ctf比赛的web题目
Web之getshell: 具体代码如下 <?php highlight_file(__FILE__); error_reporting(0); echo "<h1>WEL ...
- 搓一个Pythonic list
总所周知,Python语言当中的list是可以存储不同类型的元素的,对应到现代C++当中,可以用std::variant或者std::any实现类似的功能.而Python官方的实现当中用到了二级指 ...
- [转载]R2: 已解释和未解释的方差
估计值的方差与总体方差之间的差异就是回归方程对方差的解释率.试举一例,如图 1,身高与体重的回归线显示身高与体重之间呈正相关,Mr. Y身高76英寸体重220磅(图 1中插图.cdr的红点),他与体重 ...
- MongoDB 位置查询报错 planner returned error: unable to find index for $geoNear query
执行查询语句,使用 $nearSphere /** * 1千米 = 0.6213712英里 15千米 = 9.3205679英里 查询通过除以地球的大约赤道半径(3963.2英里)将距离转换为弧度. ...
- Linux Media 子系统链路分析
一.概述 Media 子系统是一个用于处理多媒体设备的框架,它提供了一组 API 和驱动程序,用于管理和控制视频.音频和其他多媒体设备.而 V4L2 是 media 子系统的一部分,用于处理视频相关的 ...
- php开发之文件上传的实现
前言 php是网络安全学习里必不可少的一环,简单理解php的开发环节能更好的帮助我们去学习php以及其他语言的web漏洞原理 正文 在正常的开发中,文件的功能是必不可少,比如我们在论坛的头像想更改时就 ...