Falco项目:将交换机软硬件去耦合

简介:

三年前我们的数据中心的应用程序面临着一个潜在的严重问题,我们没有根据应用程序的需求对网络基础设施进行缩放,这些需求包括高速、高可用性以及快速部署。我们需要在网络层更好的控制功能,但我们在实现该目标的时候面临着障碍。

生产工程运营团队(Production Engineering Operations team,PEO)发现很难满足我们对应用程序的需求,尤其是网络中的路由器和交换机由厂商控制特性并修复Bug。一年以前我们发起了一个叫做Falco的项目,专注于对网络中的软硬件进行解耦。Falco工作组花了11520个小时研发我们的第一款网络交换机Pigeon,该交换机能够兼容这种控制。Pigeon将部署在我们位于Oregon的新一代大规模数据中心。

Pigeon是一个3.2 Tbps交换平台,可以作为leaf switch或者spine switch来使用。Pigeon是我们在交换机领域首次涉及软件研发,我们不会冒险研发我们自己的交换机,因为我们更希望成为交换机和路由领域的专家。我们将持续支持商业厂商,并与他们在解耦模型中持续合作。

研发交换平台的历程

软件工程团队发现的问题引起了PEO团队的注意,这两个团队发现数据中心的应用程序有着很高的延迟,这是一个没有任何结论性日志记录的很有挑战性的问题。几个网络工程师为解决这个问题殚精竭虑,最终发现这是一个微爆发的问题。当短时内连续发送数据包,导致线性时间内网络数据包缓冲区溢出堆栈,就产生了微爆发问题。这很难检测出来,因为缓冲区位于不能完全由商用交换机厂商直接接触的第三方商用芯片中。

当我们得出引起微爆发的原因是由应用程序的高延迟导致的,我们努力的寻找有效的方法来预测短时溢出,但我们越想解决这个问题,越难找出一个简单且优雅的解决方案。

然后,我们尝试从不同角度看问题。假如我们有商用芯片厂商遥测的数据会有什么效果?我们购买商用芯片的厂商不向我们提供读取/写入遥测数据的功能。我们解决微爆发的唯一途径是依靠我们的交换机供应商提供解决方案,但是我们发现这种方式不能及时适应我们的快节奏的环境。

我们开始关注除了商用芯片厂商遥测数据的其他挑战,包括:

软件中不能及时解决的Bug

数据中心环境中不需要的交换机软件功能,我们还必须处理与这些功能相关的Bug

缺乏基于Linux平台的自动化工具,如Chef/Puppet/CFEngine

过时的管理和日志记录软件,即缺乏对SNMP的依赖

高成本的扩展软件许可和支持

我们研究了由基于厂商的交换机引起的问题,我们经常反问自身“我们理想的交换机是什么样的?能够实现什么程度的控制?”我们对理想的交换平台提出了以下功能:

在任何硬件平台都能运行我们的商用芯片

在我们应用程序服务器上的交换平台能够运行一些基础设施软件和工具,如遥测、报警、日志、安全、Kafka。

快速响应需求和变化

推进DevOps运行,这样交换机能够像服务器一样运行,并且共享一个自动化操作平台

无限的可编程选择

功能速率

更快更好的创新周期

更好的控制软硬件成本

当我们看到理想中的交换机,我们以单一维度的视角思考微爆发/缓冲问题,控制交换机的可编程性为我们打开了实现可编程数据中心的大门。

在过去的两年中,我们一直在观察硬件和软件领域崩溃的现象,传统设备制造商(ODM)市场向任何购买其交换机的人开放其硬件,不再是著名的交换机厂商主导市场。这也意味着用户可以直接与多个芯片厂商合作,并且能完全访问芯片编程(如Trident,Trident II,Tomahawk)。

大约一年前,我们开始发展我们自己的交换平台,以上文中提到的指导思想为原则,提出了我们自己的基础架构,如下图所示

我们关注的应用层使用的是基于服务器的工具也是现有Linkendln基础设施的一部分,LinkedIn tools是一个管理配置和自动化的基础设施自动化工具阵列。Auto-Alerts是绑定在Nurse上的检测和报警客户端,是一个自动修复平台。该交换机的应用层也能支持Kafka客户机,Kafka是一个发布/订阅大量指标信息的管道系统,商用芯片SDK的遥测客户机接口能够获得最新的缓冲数据。

Pigeon的产品化之路

我们在LinkedIn发布了canary版本的软件,通过代码改变少量的主机。canary测试的目标是确保由代码引起的变化都能在现实工作环境中生效,在基础设施中也不会产生变化。经过3个月的实验室测试,我们在孤立的环境中生产,并且把部署了canary的交换机在生产环境中测试。

该交换机的架构是基于最新的Tomahawk 3.2 Tbps 32X100G商用芯片。

  未来的工作

我们将持续推进Falco项目的发展,我们对厂商支持的交换平台ONIE感兴趣,将接入他们的ASIC和商用芯片,借此我们可以在他们的硬件平台上运行我们的应用软件平台。交换抽象接口(SAI)也是我们发展的规划之一。

后记

Pigeon是基于LinkedIn的PEO工作组开展的Falco项目,特别感谢Shawn Zandi,Saikrishna Kotha,James Ling,Sujatha Madhavan,Navneet Nigori,Yuval Bachar以及项目经理Vish Shetty,Fabio Parodi。

注:编译类仅出于传递更多信息之目的,系SDNLAB对海外相关站点最新信息的翻译稿,仅供参考,不代表证实其描述或赞同其观点,投资者据此操作,风险自担;翻译质量问题请指正。

本文转自d1net(转载)

相关文章
|
资源调度 Kubernetes 应用服务中间件
Kubernetes Scheduler Framework 扩展: 2. Binpack
# 前言 ## 为什么需要Binpack功能? Kubernetes默认开启的资源调度策略是`LeastRequestedPriority`,消耗的资源最少的节点得分最高,优先被调度。这样的资源选择情况有可能导致较多的资源碎片,如下图所示,两个节点各剩余1GPU的资源,导致申请2GPU的作业无法调度,导致整体资源使用率下降。 如果使用的资源调度策略是Binpack,优先将节点
2115 0
|
存储 算法 Linux
打破常规,Linux内核新的数据结构上场maple tree(下)
打破常规,Linux内核新的数据结构上场maple tree
|
6月前
|
负载均衡 安全 应用服务中间件
《Nginx反向代理MinIO集群全实战:负载均衡配置、SELinux安全策略与生产环境调优指南》
SELinux(Security-Enhanced Linux) 是 Linux 内核的一个安全模块,用于提供强制访问控制(MAC, Mandatory Access Control),比传统的 Linux 文件权限(DAC, Discretionary Access Control)更严格。用执行命令时不受SELinux的限制,但Nginx Worker 进程:以。在一台新的虚拟机或现有虚拟机上安装 Nginx,这里使用。),确认请求被正确转发到 MinIO 集群。编辑 Nginx 配置文件。
621 1
|
11月前
|
机器学习/深度学习 传感器 人工智能
AI视频监控系统在养老院中的技术实现
AI视频监控系统在养老院的应用,结合了计算机视觉、深度学习和传感器融合技术,实现了对老人体征、摔倒和异常行为的实时监控与分析。系统通过高清摄像头和算法模型,能够准确识别老人的动作和健康状况,并及时向护理人员发出警报,提高护理质量和安全性。
669 14
|
11月前
|
监控 测试技术 开发者
一行代码改进:Logtail的多行日志采集性能提升7倍的奥秘
一个有趣的现象引起了作者的注意:当启用行首正则表达式处理多行日志时,采集性能出现下降。究竟是什么因素导致了这种现象?本文将探索Logtail多行日志采集性能提升的秘密。
532 57
|
网络协议 安全 网络安全
揭秘互联网的隐形斗篷:你的DNS数据真的安全吗?
【8月更文挑战第27天】在互联网中,每个网站通过IP地址定位,但记忆这些数字困难且存在安全风险。因此,域名系统(DNS)诞生,实现域名与IP之间的转换。然而,未加密的DNS请求易受中间人攻击,导致隐私泄露或恶意软件植入。为解决此问题,DNS-over-HTTPS(DoH)和DNS-over-TLS(DoT)协议应运而生,它们通过对DNS查询进行加密确保数据传输安全。本文将介绍这两种协议,并通过示例展示如何配置支持DoT的DNS服务器,包括安装dnscrypt-proxy、编辑配置文件及重启服务等步骤。
813 0
|
并行计算 PyTorch TensorFlow
环境安装(一):Anaconda3+pytorch1.6.0+cuda10.0+cudnn7.6.4+tensorflow1.15+pycocotools+pydensecrf
这篇文章详细介绍了如何在Anaconda环境下安装和配置深度学习所需的库和工具,包括PyTorch 1.6.0、CUDA 10.0、cuDNN 7.6.4、TensorFlow 1.15、pycocotools和pydensecrf,并提供了pip国内镜像源信息以及Jupyter Notebook和Anaconda的基本操作。
1746 0
环境安装(一):Anaconda3+pytorch1.6.0+cuda10.0+cudnn7.6.4+tensorflow1.15+pycocotools+pydensecrf
|
存储 关系型数据库 MySQL
Mysql行格式DYNAMIC和COMPACT区别
总之,选择哪种行格式取决于具体的应用场景,如数据类型分布、读写比例、存储与性能需求等。在处理大量文本或二进制数据且对存储空间敏感的应用中,DYNAMIC格式可能是更好的选择;而对于混合型数据且对读取性能有一定要求的场景,COMPACT格式可能更合适。在设计数据库时,评估这些因素并进行适当测试,可以帮助确定最适合的行格式。
735 0
|
机器学习/深度学习 人工智能 数据可视化
【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!
本文是一位自称对网球规则和比赛数据非常熟悉的计算机博士对2024美国大学生数学建模竞赛C题"网球运动中的势头"的全面解析,包括问题分析、数学模型构建、代码实现,以及完整论文的逐步更新过程。
336 1
【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!
|
网络协议 Linux 开发工具
Centos7 /etc/sysconfig/network-scripts/ifcfg-<interface>网络配置
自动化网络配置:NetworkManager 可以自动检测网络连接,并根据网络环境自动配置网络。这使得用户可以无需手动配置即可连接到网络。 支持多种网络连接:NetworkManager 支持多种网络连接,包括有线、无线、VPN、Wi-Fi 热点等。这使得用户可以根据需要选择合适的网络连接。 提供图形化和命令行工具:NetworkManager 提供了图形化工具和命令行工具,用户可以根据自己的喜好选择使用。
1379 4