【DOCA征文活动】基于BlueField和DOCA的业务可观测性实践

作者:胡效赫
1、业务可观测性
业务可观测性是指能够收集到业务运行和访问过程中的数据。可观测性数据是分析并提升业务安全性和敏捷性的基础。从互联网发展普及至今,随着不同时期的技术创新,每个阶段都会有相对应的业务可观测性的产品和解决方案出现。如图1所示,从最早广域网路由交换的统计抽样可观测性、到企业网和数据中心网络物理链路的可观测性,再到云原生应用性能的可观测性。BlueField DPU推动了数据中心基础设施的底层架构革新,原运行于服务器CPU上的计算、网络、安全、存储相关的基础设施功能被卸载到DPU上,CPU的算力得以解放从而专注于业务应用。新的可观测性方案也会出现在DPU驱动的数据中心基础设施之上。External Media
图 1 不同时期的业务可观测性

2、使用BlueField提升可观测性
BlueField提供了硬件加速的流量解析、分类和转发能力,以及基于ARM核心的控制平面编程能力。相较于传统的粗粒度NetFlow网流可观测性和基于统计的非全量sFlow网包可观测性,我们利用BlueField的硬件加速能力实现细粒度全量网包级可观测性。同时,我们利用BlueField的软硬件可编程性打开基础设施处理的“黑盒”,将可观测性提升至函数功能粒度。整体上,实践方案可以提供面向DPU驱动的基础设施的网包级函数粒度业务可观测性。

3、使用DOCA实现可观测性
实践方案的基本思路是,以DOCA提供的网流级粗粒度的可观测性为基础,对应的是DOCA中的NetFlow API库,结合DPU的高性能网络处理功能,对应的是DPU的ASAP2网包分类引擎和DOCA中的Flow API库,以及数据平面和控制平面的可编程能力,将可观测性的粒度提升至网包级,并精确到每个函数功能,同时做到几乎可忽略不计的性能损耗。
实践方案的系统架构如图2所示。业务流量首先经过预选器,再经由原始DPU程序处理。在DPU程序中会调用触发器来实现相应点位的观测。而后,被观测的数据会收集至分析器,通过数据的重组和分析得到相应结果,比如进行异常流量检测、问题定位等。基于DOCA开发的整体编程模式与在CPU上进行DPDK网络功能开发类似,这种模式提高了开发效率。
External Media
图 2 方案系统架构
具体地,触发器部分的挑战是,如何以最小的代价收集链式函数和网包的信息。实践方案以统一化轻量化的函数内触发器实现,在开发中通过将DOCA NetFlow库修改为网包粒度实现。原始DPU程序中需要观测的函数以API的形式调用触发器即可。这部分的设计是实现细粒度应用系统观测的关键。
预选器部分的挑战是,如何处理大规模原始流量并在函数链中记录网包。实践方案通过硬件卸载的预选器进行标记和过滤。在开发中通过调用DOCA Flow库,配置所需的预选过滤规则实现。因为预选功能实际由硬件卸载完成,所以方案带来的性能损耗几乎可以忽略不计。这部分的设计是实现高性能处理的关键。
分析器部分,则由运行在ARM控制平面的开源Python工程实现,实践方案通过修改开源工程,根据前置网包标记,重组函数信息得到细粒度数据,并进一步做关联数据分析。这部分的设计可以支持后续的数据挖掘,提升业务的安全性和敏捷性。
4、实践方案示例
图3是触发器的调用示例,在原始的DPU DOCA程序中调用deeptrace_pkt触发器API即可在所需观测的函数内收集相关信息。
External Media
图 3 触发器调用示例
图4是实践方案运行时分析器部分收集的原始数据的示例。
External Media
图 4 分析器收集的原始数据示例