腾讯汤桢乾:腾讯自研交换机成长之路

2020-09-27 09:47:04 浏览数 (1)

2020 SONiC产业生态研讨会回顾

“2020 SONiC产业生态研讨会”于9月19日圆满落幕,腾讯网络平台部汤桢乾带来了主题演讲《腾讯自研交换机成长之路》。

腾讯为什么要做自研?

众所周知,传统交换机的源码是不对外开放的,同时有很多的私有协议,其中某些协议虽然很有特色,但缺乏其他厂商的支持,很难做到整网推广。另外由于要满足来自不同客户的不同需求,传统交换机的特性往往会变得非常复杂,而正是由于这些复杂的特性,企业需要投入大量的精力来保证通用性和质量,很难做到高频率的版本发布。

相较而言,自研交换机使用标准化的硬件,通过开源协同的方式,企业可以和社区一起打造基础能力,然后根据各自的业务,按需开发想要的特性并进行快速迭代。通过这种方式,可以打造一个智能化、自动化、高性能、高可靠的自主可控的网络业务系统。

Tecent NOS

腾讯自研的NOS继承了SONiC的主要架构优点,使用的是Linux内核,相比传统交换机使用的嵌入式系统专用内核,其成熟的工具和良好的生态,给交换机的开发和维护工作带来了很多的便利。其次,腾讯使用Redis数据库作为系统的数据总线,应用之间通过对数据库的发布和订阅进行消息通信,有效的避免了组件之间的耦合。另外,系统中的网络应用都采用容器化部署,功能可以独立的开发、测试、升级和部署,避免相互影响。

在良好系统架构的基础上,腾讯的工作主要围绕三个方面来展开。

对于监控平面,随着数据中心流量持续快速的增长,业务对网络质量其实是越来越敏感的。例如RDMA要求无损和低时延,对网络的运营能力提出了很大的挑战,在这种情况下,希望监控平面能够准确的评估网络质量,快速定位网络故障。

对于管理平面,在2019年腾讯的基础设施服务能力已经进入了“双百时代”,腾讯的服务器数量超过了100万台,与此同时腾讯云的峰值带宽已经突破了100T。海量规模下设备的管理方式势必要向智能化/自动化去演进。

对于控制平面和转发平面,腾讯的要求是高性能、高可靠。基于这些目标,腾讯对系统做了很多重要的优化。

在大型网络中网络故障几乎是无法避免的,数据中心通常会采用Pingmesh等方式进行故障定位,但这种方式会存在一定限制。首先Pingmesh只能检测两个网源之间是否可达,无法准确定位故障设备和链路。我们知道由于ECMP的存在,两个设备之间互相能Ping通,但这并不代表所有链路都是可行的。另外Pingmesh的算法效率不够高,对全网拓扑的覆盖性能难以满足。

Netsense

为了解决这些问题,腾讯开发了Netsense功能。有一个控制器,会在接入设备上部署Agent,和其他网络应用一样,Netsense的Agent在交换机上是作为独立的Docker运行的。

  • 当控制器发起探测的时候,会根据算法生成一个探测目标节点的list,并向Agent通告探测报文信息。
  • 源节点接收到控制器通告的探测信息之后,会构造探测报文发往目标节点,探测报文在首跳就会通过芯片的流水线进行转发。然后探测报文会覆盖业务报文可能经过的所有链路和队列,这些报文在网络中转发最终会回到源节点。
  • 回收探测报文之后送Agent处理,对于丢包率高或者延迟大的,会把探测流信息上报给控制器。
  • 控制器根据异常探测流经过的设备,可以交叉匹配定位出故障设备或者链路。

根据腾讯实际部署的情况来看,Netsense可以有效的改善网络的故障定位效率:

  • 快速精准:1秒内发现故障,并精确定位故障节点或故障链路
  • 方式灵活:可自由调整监控覆盖范围,支持高精度背景流实时探测和指定节点间的探测
  • 全面覆盖:可检出包括路由黑洞,表项翻转,ACL过滤,端口单通,转发时延高等多种异常

INT & MOD

INT和MOD其实大家已经比较熟悉了,目前主流的芯片也都已经提供了这样的能力。通过部署INT,可以对业务报文在网络中的转发路径和端到端的转发时延做到可视化。然后对于丢包的情况,通过MOD可以实时的做丢包镜像,常见的丢包可以通过采样报文上送到监控服务器。对于无法支持报文上送的,通过Telemetry可以实时的采集丢包统计,并且上报给监控服务器。

立体监控方案

除了前面提到的Netsense、INT&MOD,还支持高精度的BFD和Telemetry,通过对这些功能的有机组合,腾讯跟网管系统一起打造了一个立体监控方案,监控方案可以覆盖网络丢包的三大关键要素:谁丢包了?丢在哪里?为什么丢?基于立体监控方案平台提供的能力,可以准确的评估网络质量,快速定位网络故障。此外我们基于此监控方案还可以打造一个具备故障快速自愈和精确调度能力的智能化网络业务系统。

统一管理平台

前面提到,现在进入海量设备的时代,传统的CLI SNMP 的管理方式,经过长期实践已经被证明是不够有效的。主要存在的问题是性能差,SNMP的信息采集频率是1~5分钟,而RDMA要求的是秒级甚至是毫秒级,另外它的效率不够高,一条CLI命令的执行通常需要100~200毫秒,并且它不支持批量的配置下发。

针对这些问题,腾讯基于高性能框架打造了一个统一管理平台,在这个系统中FabricOS会去承担网络的调度策略、管理运营、状态监控等职责。Tencent YANG Model会向上为应用提供面向对象的可编程结构化模型。例如如果A设备的端口b出现错包就关闭这个端口,想要实现这个功能的话,通过编程的方式会是非常简单的两行代码。Tencent YANG Model还会向下为gRPC提供统一的结构化的JSON。

业界gRPC通道也已经比较成熟了,其性能高,安全性和可靠性也有一定的保证。自研交换机支持gRPC的Set/Get/Push,可以高效读写数据库,支持批量配置下发。基于高性能框架打造的统一管理平台,实现了海量设备管理的自动化、智能化,真正做到了对人友好,对机器更友好。

管控分离的硬件设计

传统交换机可以看到它的控制平面和管理平面是运行在同一个CPU上的,这会带来什么问题呢?一个典型的案例是传统的交换机在设备异常无法登录的情况下,只能通过管理人员进入机房,执行下电操作来进行恢复/隔离,这会带来长时间的业务中断。对于腾讯自研交换机来说,在硬件设计阶段引入了 BMC,可以在硬件层面做到管控分离。同时腾讯自研交换机可以跟服务器共享运营生态,真正的做到Switch as a Server。

全方位无损升级

对于传统交换机来说,其版本发布通常会包含很多的新特性或者变更,是风险很高的一个活动。对腾讯而言,希望网络能够具备持续交付和部署的能力,想要做到这一点,一个很重要的技术就是无损升级。腾讯为了提升系统的可用性,在无损升级方面做了大量的工作,通过Hotfix技术可以在进程不重启的情况下完成函数级别的替换,到热补丁实现的进程级替换,再到warm restart实现无损的Docker升级和系统级别的warm reboot。现在腾讯还可以在控制面和转发面不中断的情况下,完成SDK和SAI的升级。这样一来,整个网络业务系统的升级就变得像手机上的APP升级一样容易,可以通过更频繁的发布来减少变更范围。由于每次部署不会对生产系统造成巨大的影响,所以各项网络应用程序可以快速迭代,以平滑的速率逐渐生长。

集中式路由

BGP目前已经是构建数据中心underlay网络的首选路由协议,在可靠性性能、横向扩展能力等诸多方面都有明显的优势,但是由于协议天然的局限性,BGP在跨跳故障的收敛性能方面一直表现不佳。比如对于连续双点、交叉的链路故障的情况,在有一定规模的路由容量的情况下,其收敛性能通常达到了秒级,这对业务而言是不可接受的。为了解决这样的问题,腾讯跟湖南大学一起推出了集中式路由算法,基于已经明确的网络架构,可以有规律的组织它的链路和路径,建立一个链路到路径的映射关系,然后可以在链路中记录会影响的路径范围。当链路状态发生变化的时候,通过映射关系,可以快速的找到受影响的路径,并且更新相关的路由信息,这样一来它的收敛过程会非常的快。

根据实际部署集中式路由算法的情况来看,在对现有网络架构不做任何修改的情况下,腾讯成功的将跨跳BGP的收敛性能从秒级提升到了200毫秒以内。在未来,基于集中式路由算法对拓扑的感知能力,结合立体监控平台,可以做到更为精细化的基于流的调度。

高精度BFD

作为SONiC默认使用的路由协议组件包,FRR从6.0版本开始就支持了BFD特性,但是一直以来在大量绘画的场景下,软件实现的BFD性能往往是不够理想的,只能通过降低检测精度的方式来妥协,而硬件BFD又过于依赖芯片实现,跨产品的迁移能力会存在很大的限制。

针对此问题,腾讯开发了一个 kernel bypass的内核旁路通道,芯片收包时直接绕过内核,将BFD报文直接通过旁路通道送到应用,配合性能强大的x86 CPU,在BFD应用与 Linux 内核解耦情况下,软件BFD的检测精度堪比硬件BFD。Linux内核旁路通道不仅仅在高精度BFD的场景可以带来帮助,在未来的很多场景中,强大的系统控制面的帧收发能力也会让我们持续受益。

网关硬件卸载

腾讯在网关硬件卸载场景也做了一些工作。由于腾讯云的快速发展,未来单个region需要支持的VPC接入会达到千万级别,全网的规格会过亿,与此同时出口带宽会达到百T级别。如此大的路由规格和转发性能的要求,需要通过软硬结合的方式来满足业务的灵活性、网络的扩展性和成本之间的平衡。腾讯自研交换机扩展支持了VXLAN IPv4/IPv6策略路由等多种转发行为,通过将大象留卸载到硬件上的方式,有效地提升了整个系统的转发性能和吞吐能力。

目前腾讯自研交换机已经在数据中心实现了大规模部署,稳定运行近一年,显著提升了网络系统的可靠性和运营效率。最近也发布了基于新一代可编程芯片开发的 200G/400G 交换机,可以更好服务网关和 DCI 场景。随着腾讯网络端到端自研计划的推进,已经逐步打造了一个自主可控的网络业务系统,相信未来腾讯自研交换机会给行业带来更多惊喜。

0 人点赞