Netflix开发了一种网络可观察性Sidecar称为流量出口商,该出口商使用EBPF TRACePoints来捕获TCP在近实时流动。实例上的CPU和内存的低于1%,这一高度性能的Sidecar在网络洞察中以规模提供流量数据。
NetFlix今天利用的云网络基础设施包括AWS服务,例如VPC,DirectConnect,VPC窥视,过境网关,NAT网关等和Netflix拥有的设备。 Netflix软件基础架构是一个大型分布式生态系统,包括在AWS和Netflix拥有的服务上运营的专用功能层。虽然我们努力保持生态系统简单,但利用各种技术的固有性质将导致我们面临挑战:
应用程序依赖关系和数据流映射:在没有理解的情况下生长的微型服务数量,并且具有应用程序的依赖关系和数据流的可见性,这两个服务所有者和集中团队都很难识别系统问题。
途径验证:生产流和工作室环境中的更改的Netflix速度可能导致与其他资源进行通信的服务无法实现。
服务分割:云部署的易于导致多个AWS帐户,部署实践,互连实践等的有机增长。没有网络可见性,难以提高我们的可靠性,安全性和容量姿势。
网络可用性:我们生态系统的预期持续增长使得难以理解我们可能达到的网络瓶颈和潜在限制。
云网络Insight是一套解决方案,可在云网络基础架构中提供运营和分析洞察,以解决所识别的问题。通过收集,访问和分析来自VPC流日志等各种来源的网络数据,ELB Access Logs,EBPF流程日志在实例等,我们可以通过像Lumen,Atlas这样的多个数据可视化技术为用户和中央团队提供网络洞察力, 等等。
Flow Exporter是一个Sidecar,它使用EBPF TRACePoints在电源电源的实例上捕获TCP流量,该实例可以为Netflix微恒星架构提供电源。
Berkeley Packet Filter(BPF)是一个过程中的内核执行引擎,用于处理虚拟指令集,并已作为EBPF扩展,以提供扩展内核功能的安全方法。在某些方面,EBPF对内核为网站做了什么:它允许创建各种新的应用程序。
EBPF流日志记录表示一个包含在可变聚合间隔内的TCP / IP统计信息的一个或多个网络流。
通过利用高度性能的EBPF以及仔细选择的传输协议来实现Sidecar来实现,以在我们的船队中的任何实例上消耗少于1%的CPU和内存。单击GRPC,HTTPS&amp等传输协议的选择; UDP是依赖于实例放置的特征的运行时。
可以通过快速属性通过配置更改动态管理流量导出器的运行时行为。流量出口商还向地图集发布各种操作指标。这些度量标准使用流明,自助仪表板基础设施可视化。
流量收集器是一种摄取和丰富流动的区域服务。云中的IP地址可以随时间从一个EC2实例或TITUS容器移动到另一个EC2实例或TITUS容器。我们使用声纳将IP地址归因于特定时间的特定应用程序。 SONAR是IPv6和IPv4地址标识跟踪服务。
流量收集器消耗了两个数据流,从流量出口商Sidecars通过Kafka和EBPF流日志数据的Sonar的IP地址更改事件。它使用Sonar使用应用程序元数据执行流数据的实时归属。归属流被推送到梯形通石,将它们路由到Hive和DruID数据存储。
该归属流数据在NetFlix中驱动各种用例,如网络监视和网络使用预测通过Lumen仪表板和基于机器学习的网络分段。 数据也用于安全性和其他合作伙伴团队进行洞察力和事件分析。 通过EBPF和高度可扩展和高效的流量流水线,可以提供对云网络基础设施的网络洞察云网络基础架构。 经过几次架构和一些调谐的迭代后,解决方案已被证明能够扩展。 我们目前每小时摄取和丰富数十亿的EBPF流日志,并为我们的云生态系统提供可见性。 丰富的数据允许我们分析各种维度(例如可用性,性能和安全性)的网络,以确保应用程序可以在全球分散的基于云的生态系统上有效地提供其数据有效载荷。