鹅厂如何构建大型基础网络平台
本文转载自微信公众号“ 鹅厂网事”(ID:tencent_network),作者:黄翔。
鹅厂是一个业务类型非常丰富的互联网公司,涵盖了大型社交流量平台(微信/QQ)、在线游戏、公有云、媒体(新闻/视频)、移动应用、开放平台、互联网金融等,不同类型的业务都有着自己的技术应用特点、业绩目标、成本考量体系,从而产生了对后台技术支撑能力的不同诉求。网络作为基础架构中的重要一环,也面临着这些海量业务运营带来的种种挑战。好在鹅厂是一个专业技术能力较强、内部合作顺畅的生态系统,将“不断提升用户体验”作为统一的技术目标,很多事情就可以分布式合作去完成,基于这一特点,作为鹅厂基础网络平台的架构师也深感幸福,因为可以更收敛、更聚焦的去解决一些有共性的重点问题——标准化的基础网络平台。
成都创新互联主营包头网站建设的网络公司,主营网站建设方案,重庆APP软件开发,包头h5微信平台小程序开发搭建,包头网站营销推广欢迎包头等地区企业咨询
怎么搭建这个庞大的基础网络平台本身是一个非常复杂的议题,网络技术本身在这其中可能只占据不到20%的分量,为了让网络规划、建设、运营形成一个健康的体系,并不断提升业务系统面向用户的体验,需要考虑非常多的问题:包括网络技术选型、公司资源发放趋势、端到端的运营体系、网络技术发展趋势、硬件供应链管理、综合成本把控、迭代与稳定运营之间的Trade-off、风火水电、国内/国际通信环境等等因素,而这其中每一项几乎都可以写几本书来讲了。本文则聚焦于网络本身,笔者争取用通俗易懂的描述,简单的分享一下鹅厂构建基础网络平台的思路。
先看一张鹅厂基础网络平台的整体架构图(如下),网络之所以会演进到今天这个样子,主要是因为鹅厂网络的价值主体是不断构建和优化的两个能力——“连接服务与服务的能力”与“连接服务与用户的能力”,网络架构的发展必须围绕着两个能力来演进。同时,再根据上层业务特点(离线/在线)、地理资源丰富程度(地/电)、ISP网络布局、灾备要求、综合成本构成等因素,将整体基础网络平台分为三大块:
· Edge:边缘网络,用于对接用户(ISP)的边界网络。
· DCI:数据中心互联广域网络,负责将散落在全球的这些Data Center与Edge连接起来。
每一块网络架构都会遵循整体基础网络的价值目标,并且结合自身独有的特点进行演进与优化,下面就针对这三大网络架构的构建思路展开进行探讨。
数据中心网络
数据中心网络聚焦于“连接服务与服务的能力”,在整个网络投资板块占据很高分量,通过多年的积累,数据中心网络已经形成几万网元的体量。面对如此体量的网络,一定是需要有一套严密的构建体系来支撑的,包括设计、建设、运营、供应链管理等环节,因为随便一个错误意味着不可想象的影响范围和返工量。按照常理来看,数据中心网络是离业务最近的网络,而如此大的体量应该是运营压力最大的部分,其实这个问题在鹅厂并没有想象的那么严重,前文提到过,鹅厂是一个专业能力较强、内部合作顺畅的生态系统,经过了多年的磨合,上层业务和基础网络形成了很好的合作默契,业务系统架构(尤其是平台级业务)的健壮性、容灾设计、调度能力达到了非常高的水平,使得基础网络平台的架构师可以用标准化、健壮性好的技术来满足几乎绝大部分业务对数据中心网络的要求,从而可以有更多精力集中在数据中心网络相关更底层、更专业领域内深耕细作。
关于鹅厂数据中心网络的玩法,或者说要运转数据中心网络需要具备什么能力,将这些年的经验和思路可以稍作总结如下:
· 数据中心网络与基建环境(Campus/Building)深度结合进行整体设计和交付,采用多级CLOS方案进行Campus-level/Building-level的整体端到端设计,包括设备功耗规划、设备上架布局、布线规划、物理故障域规划等方面,以达到综合架构、建设、成本、维护上的最优解。要从方法论高度对数据中心组网的CLOS结构有深入研究(上图是Sigcomm论文中G家的数据中心网络的逻辑图),这个议题其实没有想象的那么简单,是一整套综合考虑交换机成本、光成本、风火水电环境、网络技术等一些列问题的方法论体系,关于CLOS网络怎么搭建,鹅厂架构师甚至总结出了一整套公式算法,后续会开设专题进行探讨。
· 要对交换网络体系架构有较深入的理解,这是网络架构设计最基础的技术储备部分,无论是自研交换机还是商用交换机,都对技术开发、测试能力、基础技术的掌握能力有较高的要求,这里面涉及的点包括交换芯片、光部件、系统协议栈、对SDK使用的积累等部分。
· 对行业现状和趋势的整体分析能力,对行业供应链的整体把控能力,并且可以针对行业环境的变化具备敏捷的适应能力。比如随着服务器接入速率的不断提高,在数据中心网络总成本中,光的比重越来越高,要能提前洞察到这些趋势和变化,并结合自身的情况调整战略和架构。
· 海量标准化的数据中心网络生产已经成为贯穿全年的常规工作,需要有一整套贯穿架构设计、建设、运营、扩容、资产、变更、退役等生命周期线上自动化管理工具系统,才能保证IDC生产业务的健康运转,鹅厂在2014年重构了一整套这样的工具系统,并不断优化迭代,从架构设计到机房退役,都可以在线上完成。
· 运营工具平台需要从多维度对数据中心网络进行立体监控,包含了白盒监控方法,比如针对网元本身的告警管理与收敛;黑盒监控方案,比如Full-Mesh的Probe反映网络健康状况;还包括与上层业务之间的映射和互相联动,比如鹅厂最大的流量平台微信有大量的服务器和一整套网络质量监控系统,与网络平台合作一同快速发现故障并联动操作隔离。
· 对SDN方法论的正确使用,是需要根据场景来构建SDN体系的工作内容和效用,SDN在数据中心网络更多的是针对大规模网络的Routing适应性问题、集中链路状态维护、拥塞管理、故障屏蔽等方面发力,非常有针对性的解决问题,而不是SDN for ALL。
边缘网络(海外)
边缘网络(Edge)聚焦于“连接服务与用户的能力”,其主要任务就是能将鹅厂的服务以最短的路径、最好的质量送到全球各地用户的手上。国内的边缘网络普遍以静态对接ISP的形式存在,海外则以BGP对接为主,本章节主要对鹅厂海外的边缘网络架构进行介绍。
海外ISP数量众多,导致全球Internet是一个非常复杂的网络环境,如果鹅厂所有的服务都是从海外的Data Center直接送给当地的几个大ISP从而触达全球每一位用户的话,是非常难做到给各地用户都提供非常好的网络体验的。鹅厂花了大力气来解决这个问题:
· 鹅厂部署了很多资源来获取全球用户触达鹅厂各地服务的探测和质量数据,作为业务开展和网络加速的依据,从而可以制定出有针对性的架构方案和建设计划。
· 边缘网络用于连接各个ISP,这个连接我们称之为“出口”,出口的类型我们从架构上分为两种:基于Region的主出口Edge,和用于区域网络加速的Edge-POP。
· Edge作为基于Region的主出口往往靠近Data Center,连接了大量的ISP,作为该Region的缺省出口。
· Edge-POP作为区域加速的覆盖点,其规划和建设的节奏是综合众多依据来考虑的,包括当地网民数量、上层业务规划、覆盖质量、当地通信环境、综合成本等因素。
· 所有的Edge和Edge-POP可以看成一整个资源池,承载于DCI网络上面。
边缘网络在技术上也会遇到很多挑战,即多出口管理能力、流量调度能力、故障恢复能力等。在很早的时候,管理多出口和调度流量还使用的是传统的网络手段,经常会因为某一个出口的质量恶化,鹅厂网络工程师需要手工登录到网络设备上用脚本去调整路由策略,以牵引流量去往质量更好的出口,随着出口数量的不断增加,不管是在网络规划方面还是手工优化流量方面,都变的越来越复杂和力不从心。举一个简单的例子,当只有两个出口的时候,规划和优化都非常简单,要么双活要么主备,谁出问题就关掉谁,动态路由协议会自动收敛,看起来非常简单,但试想当出口的数量有几百个甚至上千个的时候,如何规划这些出口的使用规则?正常情况下每个出口走哪些服务或者用户的流量?故障或者质量恶化情况下这些出口之间的备份关系如何?还要结合带宽、成本、互联ISP网络内部负载情况等因素来进行综合考虑和设计,这个就变成了非常复杂的议题了,曾几何时,鹅厂的出口网络设备上有着几千行的路由策略命令,有的跟规划有关,有的跟优化有关,有的跟处理故障有关,网络运营变的越来越复杂,而且出口的数量还在迅猛增长。
几年前,我们就意识到如果不重构这一块的设计,迟早有一天会玩不下去,正当SDN的浪潮席卷而来,我们借鉴了SDN的思路,并花了不短的时间来构建这一块的能力,形成鹅厂网络的一个非常重要的竞争力,这个能力的核心就是多出口的集中控制,我们内部称之为 “用上帝视角来选择出口和调度流量”。简单的来说,我们将所有出口的带宽、路由、流量、质量、成本、IP与AS对应关系等信息采集或输入至中央控制系统中,再开发出一套符合我们业务要求的算法,实现集中计算,保证各ISP、各地的用户都能以当下的基础设施条件下,以最好的网络质量访来问鹅厂的服务,计算完成后再将执行策略下发到转发设备从而牵引流量落地。目前,这一整套体系已经在现网落地,同时,我们还在这个平台上构建了一套服务层,让上层业务可以自行开发APP使用这套集中控制系统来实现自己的需求,比如在DDOS就近清洗与一键封堵方面、公有云客户流量自动切换出口方面、平台级业务区域质量优化方面等。
DCI广域网络
· DCI for Elastic Services:大流量广域网,承载了鹅厂90%以上的广域流量,为大多数鹅厂成熟平台级业务服务,是一张新技术快速迭代与扩容频率较高的网络,部分链路利用率有时会到达80%以上。
· DCI for Interactive Services:精品广域网,服务互联网金融等对网络质量依赖很强的业务,使用通用、成熟、稳定的技术构建,链路利用率控制在40%以下,无新技术迭代,扩容变更频率也非常低。
前文多次提到,网络架构设计是一个庞大的系统工程,需要考虑非常多的因素,而这些因素中最基础,以及与网络本身最贴近的部分就是组网与技术选型了。广域网拓扑按需建设,随着业务的发展和流量增长,最终形成一张非常复杂的无序拓扑,对比数据中心组网有着显著的区别,这其中的核心原因大概有以下几点:
· 互联网公司分布式架构盛行,即Network as a Computer,网络已经成为业务系统的一部分,需要高带宽支撑业务系统的灵活构建,而数据中心内带宽便宜,广域网带宽贵且时延高,故高带宽需求和强耦合业务模块都集中在数据中心内,跨广域网的业务模块间调用和带宽使用量会谨慎很多。这就形成了数据中心内点到点每服务器带宽高,跨广域网点到点每服务器带宽低这一通用现象。
· 对于网络来讲,带宽就意为着成本,成本主要由网元硬件成本和链路成本构成。数据中心网元硬件成本占大头,链路成本低;而广域网硬件成本占小头,链路成本极高。
· 综合以上两点,数据中心网络通常会使用低成本、高带宽、特性简单的网络设备进行构建,即“Fast and Stupid Fabric”,以最低的成本去尽可去获取更高的带宽。而广域网的带宽建设扩容会非常谨慎,基本上会按照容量使用情况来进行按需扩容,最终形成无序拓扑。
· 关于流量调度,数据中心内部点到点带宽管理较为粗放,因为带宽容易获取,且网元特性简单,用CLOS架构堆高带宽,每个访问目的地都只有一个方向(ECMP视为一个方向),完全不需要调度。而广域网拓扑无序,去往一个目的地有很多条非等价的路径可选,当访问关系非常庞大,且这些流量在一个无序拓扑中承载的时候,流量调度就不可避免了。
上述四点基本描述了广域网的特点,这些都是在做架构设计的时候要考虑的最基本的要素,那么下面就着重介绍一下鹅厂“DCI for Elastic Services”这张广域网的构建思路。
· 将“路由控制系统”和“路径控制系统”解耦,路由跟业务有关,只能决定目的地在哪里,路径跟流量走向有关,可以决定源和目的之间可以走哪条链路。路由系统算出目的地之后,就交给路径系统去找到最佳路径,并准确送到目的地。这个思路,跟我们平时用的互联网实时导航如出一辙。
路由控制系统由于只需要知道目的地,不关心怎么去往目的地,整体逻辑非常简单,所以我们使用传统的BGP来传递路由,这一块不是SDN的,稳定且高效。
· 路径控制系统则相对复杂很多,好比我们使用导航的时候,目的地只需要输入一下,而具体路径则需要根据最短距离、每条路的堵车情况、红绿灯多少、是否有限行限号等诸多因素进行判断并计算出最佳路径。所以路径控制系统也需要“上帝视角”,需要对全局的拓扑、链路负载、时延、甚至链路成本进行统一考虑,并经过合理的计算得出最终的结果,所以这一块就要借助SDN的思路来解决问题了。鹅厂的做法是路径集中控制,控制器将全网需要的信息全部上收,并进行集中计算,最终得出一定数量的点到点Tunnel供路由控制系统使用,并且控制器要实时感知网络故障和流量变化的情况来进行全网最佳路径优化,保证所有的访问流量都可以实时获得最好的网络质量。
· 传统的RSVP-TE也是类似的解决方案,不过稍显重载和复杂,包括跨硬件平台互通性问题、网元设备复杂度高成本高、Tunnel数量太多导致RSVP消息量的压力与风险,这些都给大规模的TE部署带来了一些挑战,但最大的问题是,所有路径都是头端节点计算,不同需求互相抢占资源,达不到全网整体最优,即没有“上帝视角”。
· 除此之外,在这张广域网上还部署了差异化服务,即流量分级,不同等级的流量享受不同级别的服务,在严重故障发生时,高级别流量优先保障最好的网络质量,低级别流量可能会被抢占带宽而进行绕行甚至丢包。这也是广域网的核心技术之一,保障重点流量的同时,可以将整体资源利用率提升至很高的水平,形成可靠性和利用率之间的较好平衡。
总结
构建大型基础网络平台是一个非常需要团队耐心和意志力的复杂系统工程,需要非常强的规划设计能力,但更为重要的是在运营过程中,结合业务规划的变化、产业链的变化、通信环境的变化、主要矛盾的变化、综合成本构成的变化等因素,能够敏捷的跟进和调整。本文涵盖的内容较广,笔者用较小的篇幅来讲实现细节,而较多的内容聚焦在鹅厂在做这些工作时候的一些思路和经验,希望能给大家带来一点点参考价值。
网页名称:鹅厂如何构建大型基础网络平台
URL链接:http://hbruida.cn/article/pecgsg.html