背景信息
腾讯网络架构伴随腾讯15年的发展,几乎承载了全互联网业务产品,包括即时通讯(QQ/微信)、SNS(QZONE)、网络媒体(腾讯网/微博)、游戏(QQGAME)等,为了给广大互联网用户提供更好的接入体验,数十万服务器分布在全球10多个城市、数十个数据中心,产生的跨城数据中心间流量达到数百G规模。在业务类型多样及流量需求规模巨大的情况下,腾讯数据中心间网络主要存在如下挑战:
首先,从响应业务的角度来看,数据中心间网络链路带宽资源有限,难以满足业务临时性的大容量传输需求,通常需要业务部门自行搭建VPN平台并通过公网传输;对重点业务流量的QoS保障也需要较长的时间扩容来满足,业务部门通常抱怨基础架构侧行动缓慢、缺乏灵活性、响应速度慢;
其次,从链路利用率角度分析,为确保数据中心间专线可靠性需要做到业务专线1:1 备份,所以正常的情况下网络链路利用率低于50%。昂贵的数据中心间网络专线带宽浪费过半,而业务部门又苦于数据中心间专线带宽不够,如何提高DCI(Data Center Interconnect,数据中心互联)链路利用率成为一个难题。
第三,从网络管理的角度分析,在大型骨干网中,由于地理分布较广和业务类型众多等原因,一个管理域中设备数量往往接近1000台(例如CN2,800多台设备;Google backbone, 600多台设备)。面对如此大型的网络,完全通过人工方式管理这些分布式的系统需要一个非常复杂的管理体系和风险控制流程。据统计,中国互联网规模每18个月会增加一倍,由此可见设备数量将会持续不断地快速增加,针对未来的网络规模,完全通过传统的方式管理将是不可想象的。同时业务模式的多样性,意味着需要为不同的业务类型提供差异化服务,也就是当需要管理一个容纳1000台设备的网络的同时,还要求在每台设备上为不同的业务类型提供实时变化的差异化服务,其复杂程度可想而知。
SDN(Software Defined Networking,软件定义网络)将网络配置从单台设备迁移到软件平台,设备本身变得更加简单。网络配置由中央控制器管理,控制器是一个包含算法、分析和规则的软件,它来自一组规则,并使用OpenFlow或其他协议将配置下发到网络设备。SDN允许网络工程师更为灵活地控制和管理网络,以便最好地服务需求,从而达到增加功能和降低运营成本的目的。
为了更好地满足业务的带宽需求、提升专线利用率以及降低运营复杂度,腾讯逐步实践数据中心间网络SDN解决方案。在这里我们提出一个全新的概念:“Network as a Router”,假设整个网络只有一台路由器,所有功能和配置都在这台路由器实现,试想一下,管理这样的网络将会是一件多么轻松愉悦的事情,我们甚至可以做到通过这台路由器提供的标准API,让每个用户对自己在网络上使用的资源进行管理。可以看到,Google全球数据中心拥有超过100万台服务器,数据中心之间有着频繁、高带宽的通信需求。据统计,在2011年Google为数据中心之间建设DWDM高达15T。正因为贯彻了采用TE技术结合SDN的理念,面对数量庞大的设备和链路,Google才能做到从容不迫,链路利用率达到90%。下面主要介绍腾讯数据中心间网络如何从传统的网络架构演变为“Network as a Router”,并且在SDN解决方案下怎样实现智能的流量调度、网络管理。
解决思路
规划和构建一个网络就好比建设一座城市,罗马不是一天建成的,网络架构的改变也是一项长期且重大的工程,需要在一个总体的蓝图下分阶段逐步演进。
a.道路建设
任何一座智能城市,都是需要建立在稳固的基础架构设施之上,没有好的公路更谈不上城市的智能。网络也是一样,任何智能网络都是建立在稳定、可靠的基础设施之上的。
在数据中心间网络上,需要选择稳定、可靠的网络设备和主备链路,选择设备节点的异地备份,选择具备良好扩展性的路由协议。物理硬件设施的基础特性跟传统的网络理念是一致的。
b.BRT工程
当一个城市把公路修好之后是否可以高枕无忧呢?,答案是否定的,随着车辆的增多、城市人口的增长,逐步会发现宽敞的马路在高峰期还是会发生大面积拥堵,为了应对这一问题,国内各大城市开始建设BRT(Bus Rapid Transit,快速公交系统)工程,公交车专用车道,提前预留专用道路给公交车,让优先级别高的公交车可以畅通无阻地通行。
在网络上也需要相应的技术手段预留带宽,让专用的流量在专用的带宽上转发,例如MPLS-TE,不同优先级别的TE,可以为不同的业务类型保障承诺不同等级的服务(如下图)。
c.智能交通
现在驾车为了更快地到达目的地,通常会选择导航工具,因为导航工具会提供到达目的地所有路径的交通信息,推荐给你的选择可能不是物理距离最短路径,但却是一条交通畅通,让你花费时间最短的路径,这里体现了道路交通的一部分智能化。
在我们网络上也可以实现类似的功能,和过去不同的是,现在我们可以把全网的所有链路和设备都看作一个资源池,从A点到B点,使用者不需要知道直连的物理链路有多少,只需能够调配资源池里面的所有资源即可,因为从A到B的路径不仅仅只有A->B直连的,也有可能有A->C->B或者A->D->B的。到底使用哪个路径到达目的地,使用者也许不必关心。
如何把不同的流量放到不同的路径上,从而避免网络发生拥塞的情况呢?这就要完全依赖网络控制器了(controller)。Controller不仅仅能看到某条物理专线的带宽,还能看到整个资源池,总体调度是池里的资源,可以判断哪里有网络带宽资源,甚至联动业务应用的计算按照网络资源情况把计算放到有资源的节点进行处理。
就如下图所示Network Controller有面对用户的接口,它能够获取到网管工具传递给它的信息,通过用户信息和网管信息等,有效控制网络设备和网络资源。根据实时需求,把不同的flow在不同的路径上实施添加、删除、修改等操作,让全网资源得到合理的共享。相当于把全网看作为一台路由器进行管理和维护,我们只需要维护和管理Controller就可以管理整个网络了,从而实现“Network as a Router”的目标。
1 技术实现
1.1 概述
腾讯下一代数据中心间网络将会实现资源自动池化、业务应用自动化管理网络资源、业务应用自动感知网络资源等特征。业务系统直接通过网络系统提供的北向API接口实现自动化地申请网络资源、使用网络资源、释放网络资源,利用集中式的调度系统无须人工管理,自动化地完成网络资源合理分配和使用。为了实现以上智能调度工作,PCEP(Path Computation Element Protocol)协议给了我们控制器和路由器一个非常好的交互接口(如图)。
1.2 传统网络设备工作角色
从80年代IP网络刚刚起步至今,已经经历了将近30年,在这30年里,IP网络设备一直担负着计算路由、转发报文的工作。从上面探讨到的智能交通城市里,不能再由汽车或者驾驶员决定使用哪条道路到达目的地了。在我们未来的网络世界也一样,不能再由每个独立的路由器决定每个报文的转发路径。原因很简单,因为网络中每个独立的路由器就像城市中的小汽车一样,它只知道自己怎样走,它不会去考虑会不会给整个城市带来了交通拥堵。
因此,我们未来的数据中心间网络中的路由器角色将会发生变化,由原来的计算路径、转发报文两个功能减少为只有转发报文的能力,而计算路径将会交给集中式智能管理系统统一计算和调度。在PCEP(Path Computation Element Protocol)协议中,传统路由器当了PCC(Path Computation Client)的角色,在整套控制系统中成为了控制系统的Client端。
1.3 集中控制系统工作角色
集中控制系统就是一个交通枢纽中心,它知道每一条道路的容量、当前流量、在路上的每一辆汽车将要到达的目的地。当它知道所有信息后,它可以通过智能的算法为每一个业务flow计算出最合适的路径。所以集中控制器就成为了在PCEP(Path Computation Element Protocol)协议中的Server端。但在整个控制系统中核心部分是控制系统的逻辑算法,而不是PCEP协议,PCEP(Path Computation Element Protocol)协议只是为传统网络设备提供了北向接口,为控制器提供了南向接口。
为什么说控制系统中最重要的是逻辑算法呢。因为不同的网络、不同的业务系统、不同的业务类型有对网络资源不同的要求,在传统的网络中只能按照一种硬件网络设备设计好的路径转发,不能灵活地为不同的业务类型提供不同的选路方案。从以下例子说明:
1)如下图所示,当第一个业务1优先级一占用了A->B->E路径后,业务2和业务3再也没有办法申请到路径了。但是如果可以从全局的视图分析当前的业务需求的时候,你很容易会发现只要把业务1放到A->D->E路径后,业务2和业务3都可以申请到路径转发流量。
2)下图所示,当你希望最高优先级别的业务必须选择最短路径的时候,优先级二和优先级三的业务都不能通行了,或许你的优先级一业务真的必须选择A->B->E。但如果你的优先级一的业务可以选择A->C->D->E的时候,就可以让优先级二和优先级三的业务有路可用了。
这种方案的选择在传统网络中是硬件设备提供商或者IETF(Internet Engineering Task Force)的协议已经把规则固化在硬件设备中,给到用户调整的空间很少,作为用户的我们只能按照固化的规则进行业务的部署。这时候可能我们需要询问我们自己,这是不是我们想要的呢。从众多的业务部署场景中告诉我们,网络的路径选择并不是最贴合业务需求的,这些方案的选择应该交给网络的使用者进行选择,甚至应该交由上层的业务应用层进行选择。
因此,我们作为网络的使用者,应当更多地控制路径选择的逻辑算法,甚至可以为每种不同类型的业务应用提供不同的网络选路算法。
1.4 业务应用系统工作角色
上面所说的网络控制系统是为业务应用系统提供服务的,业务应用系统通过调用网络控制系统提供的北向API接口来申请、使用、释放网络资源,通过API接口通知网络控制系统业务的真实需求(包括需求带宽、延时、使用时长等信息)。
2 总结
为了不断提高广大互联网用户体验,为了满足不断发展的业务需求,我们正在尝试利用SDN的思路研究下一代数据中心间网络。
在过去一个阶段,我们按照业务带宽需求构建一个高速、稳定、可靠的数据中心间网络,并且全面承载腾讯所有类型的业务,实现网络资源的灵活共享。在现阶段,我们正在进行BRT(Bus Rapid Transit,快速公交系统)工程的建设,使用SDN的初级理念实现QOS的集中管理和控制,使用MPLS-TE提供业务差异化服务能力,为业务的快速部署提供了坚实基础。在未来一个阶段,我们将进一步引入SDN的理念,采用Controller控制全网flow的转发,让特定的flow转发到特定的路径上。实现集中控制的智能调度网络,简化网络管理。
可以预计的是,基于SDN的理念网络正向着更加简单、更智能化的方向发展,未来将会衍生出一系列相对于现有路由协议更加轻量级、更易于管理的协议。千里之行始于足下,今天我们研究SDN,应该着眼于如何协调网络的能力,增加网络的可视化,提升网络的差异化服务,从而为今后提供更智能更便捷的服务夯实基础。
好的,今天我们探讨了数据中心之间网络流量调度的思路,通过这个思路可以解决我们长期以来在DCI流量模型的困惑,指导我们未来DCI流量调度发展方向。
但是否所有问题都解决了呢。在Internet大型网络中,大量的路由条目,运行了20多年的BGP协议,每个AS各自管理着各自的路由条目接收发送,经常由于某些运营商不正确的操作导致大规模故障事件,这种运营了20多年的Internet协议和模式是否还适合今天我们的运营环境呢。这都引发了我们更多的思考。
转载自:鹅场往事