前言
随着云计算业务的蓬勃发展,全球资源的持续布局,对基础网络带来了极大的挑战。腾讯DCI超过千级节点中有数百台核心设备,庞大的骨干域带来的软硬件资源压力,网络质量无法很好的保障,多厂商互通、分布式协议严重影响了运营效率。
在这个背景下,我们结合腾讯“海量之道”的设计理念,在2018年上线了基于SDN集中控制和SR-TE技术实现的新一代DCI网络——B2,网络系统由自研SDN控制器和商用交换机搭建而成。随着不断的运营优化和资源布局,B2网络今天已经具备了集中控制、多平面、自动化运营、代码化架构设计等特点,实现了弹性扩展、高可用、自动化变更等能力,当前B2网络已承载了腾讯绝大部分骨干网流量。本文将重点阐述B2网络的设计理念、关键实现以及后续演进方向。
01
外练身法,网络简化
在做网络系统架构设计时并不是一味地将网络复杂化,而是让网络保持足够的简洁,具备海量规模的平滑扩展能力,保证系统最优,大道至简。
1.1 转控分离,协议简化
控制面。融软件集中控制之所擅,我们选用了SDN集中控制模式,将复杂的控制面交由自主研发的SDN控制器来完成,并根据实时网络状态和业务需求,实现流量智能调度。
转发面。汇设备高速转发之所长,网络设备只需最简单、稳定、成熟的基础特性,在提升网络能力的同时,最大限度降低网络设备的实现复杂性,网络协议做减法,去掉了相对复杂的L3VPN/LDP/RSVP-TE等协议,让设备做自己更擅长的事情(高速转发)。也基于此,该方案通过基于ASIC芯片的通用交换机来实现,通过横向可扩展的方式替换掉价格昂贵的大型路由器,DCI网络设备每100G端口建设成本得到大幅度的下降。
1.2 网络分域,多平面设计
B2采用了网络分域设计,每一个网络域都是独立的自治域,采用相同的设计理念和技术架构,减少了单域的设备数量,极大降低了设备资源表项(LSP FEC ECMP)压力。
同时遵循大系统小做原则,完成网络多平面、SET化的设计和部署,不同平面之间没有任何的协议与状态信息同步,每个平面采用不同的技术方案,相互独立性很强,保证网络高可用之外同时支持平滑扩展和快速迭代。
02
内修心性,融会贯通
身法的修炼赋予了网络强健的体魄,但网络的快速发展同样离不开心性的陶冶。随着自研SDN控制器的持续迭代升级、架构设计代码化的全面铺开,B2网络也逐步走向成熟。
2.1 SDN+集中控制
最初,我们的选择跟大多数厂商一样,把ODL做为SDN控制器的首选。随着网络规模的扩大、业务流量的“暴涨”,ODL过于“笨重”、主备模型、数据强一致性等缺点愈发凸显。
随着docker容器化技术、微服务架构的快速发展,我们的SDN控制器也不断地向前迭代和持续演进,去年,我们重新定义了B2网络,并称之为“SDN+”。
腾讯SDN+的设计精髓包括以下几点:
2.2 架构设计代码化
网络设计及网络运营中,配置完全一致化管理十分困难,网络规模越大,配置更容易出现差错,犹如黑盒。在配置设计时,结合应用场景使用业界统一的Yang Model加上自研的Tencent Yang构建了抽象的配置模型,使用模块化、抽象化的逻辑屏蔽底层厂商的差异,通过将配置代码化,实现线上的配置管理;对于动态的参数,创造性的使用了嵌入式的Python代码实现函数规则,实时地生成每台设备的规划实例,实现设计代码化、配置线上模型化。
03
内外兼修,打造弹性智能骨干网
通过内外兼修的方式,B2具备了弹性扩展、高可用、自动化等特点,把腾讯基础网络带入了一个全新的高度。
3.1 弹性灵活,支持大规模扩展
网络简化,灵活扩展
结合网络分域的设计原则,B2采用了骨干和城域的分域模式,实现了网络简化,每个域采用相同的技术方案可实现架构快速复制。每个网络域通过多平面、SET化的理念完成设计和部署,同时结合现网的运营经验,可以带来显而易见的好处:
标准互联,精细调度
这里可能会有几个疑问,多域之间如何互联,流量如何调度,拥塞问题如何解决?不同域之间我们采用了平面级full mesh、设备级partial mesh的互联方式,既保证了架构规范的标准和对称性,又做到了以灵活平滑的大规模scale out扩展。流量调度方面,控制器基于流量分析平台的数据输入,可实现域间的流量精细化调度以及平面间的流量非等价负载分担,满足不同类型业务需求的同时,有效提升全网的链路利用率。
3.2 智能化,保证网络高可用
集中调度
基于腾讯自主研发的CSPF算法,以集中控制的模式进行全网流量调度,已经做到实时的流量调度以及分钟级的流量拥塞控制,比过去完全依赖设备TE的效率提升5倍以上,骨干网链路的带宽利用率提升25%以上。
差异化服务
根据业务对网络质量的不同诉求,控制器定义不同的SLA等级,并在设备上创建与之对应的隧道;转发流量时联动各业务的服务标识,轻松将业务报文“装”到不同等级的隧道里,进而实现业务流量的差异化服务。在网络出现拥塞时,可保证核心业务优先转发,做到核心业务不绕路,低优先业务不丢包。
柔性可用
网络故障具有一定的突发性和不确定性,尤其现网承载流量的设备或链路出现突发性故障时,结果很可能是灾难级的;为最大化保证业务的高可用,B2网络提供了几个关键能力:
3.3 自动化,告别人工变更
配置线上化,配置自动审计
底层配置通过转译层实现了CLI命令的原子化,而上层的配置设计实现了标准化、模型化、代码化,两者一拍即合。通过代码化的配置模型,加上转译层的鲁班模版,实时生成运营变更所需的动态变化配置,保证设备上的配置由配置模型直接生成;同时直接通过设备上的反译,将现网配置转义成代码化实例并在软件层实现配置的审计对账,双重保障确保了每一行配置与规划定义的一致,实现配置自动审计,解决了大规模网络中配置一致化的难题。
变更离线化+自动化,实现安全高效操作
控制器通过精准控制路由的撤销并逐步将业务流量“排干”的方式实现优雅隔离,确保业务对网络变更零感知;同时精准控制路由的灰度发布过程,逐步把业务流量“引回来”,大大减小了变更异常可能带来的影响。
在SDN+精细化控制能力、多平面的基础上,网络变更平台将多个系统平台串联起来,实现了从优雅隔离、灰度启用、业务恢复、状态检查、自动回滚等全流程自动化变更,可以做到一个变更窗口内安全的完成平面内所有设备升级,全网升级周期由原来的年记缩短至周记,架构迭代效率大幅提升。
故障自愈,实现极简运维
立体监控。基于管理面的fullmesh监控,通过控制器实现软件定义探测流、编排探测路由的方式覆盖到每一个网络平面、每一台设备甚至每一条链路,实现了端到端全方位的立体监控,当网络出现丢包或时延变大等异常时,立体监控会立刻感知并上报告警,实现秒级的故障发现与精准的故障定位;
故障自愈。控制器根据告警上报自动定位故障点,触发故障自愈操作,自动且优雅地隔离掉某个平面、某台设备或某条链路,实现故障自愈。为确保隔离动作安全有效,控制器通过自定义的逻辑判断,如判断剩余带宽容量、路由一致性、多点故障等,保证隔离不会带来其他影响或恶化。待立体监控判断故障彻底解除后,可自动解除隔离,恢复流量。
结语
B2网络通过弹性灵活的扩展能力满足海量的业务需求,并构建了完善的自动化运营能力,但是在不断的迭代优化过程中,我们意识到商用交换机系统逐渐成了“阻碍”B2网络快速演进的瓶颈。
过去几年腾讯在骨干网领域通过深度自研和架构的不断迭代,已经实现了网络控制面和管理面的全面自研。后续将逐步把自研交换机在骨干网上进行试点,构建管理面、控制面、转发面的端到端全系统自研。
欢迎关注公众帐号“鹅厂网事”,我们给你提供最新的行业动态信息、腾讯网络最接地气的干货分享。
注1:凡注明来自“鹅厂网事”的文字和图片等作品,版权均属于“深圳市腾讯计算机系统有限公司”所有,未经官方授权,不得使用,如有违反,一经查实,将保留追究权利;
注2:本文图片部分来自互联网,如涉及相关版权问题,请联系sandyshuang@tencent.com;
/
关
注
我
们
/
/ 鹅厂网事/
分享鹅厂网络的那些事