背景信息
腾讯网络架构伴随腾讯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”的目标。