网络开源时代刚刚开始:eBPF和Cilium如何重塑云原生网络

本文探讨了开源技术如何改变传统网络领域,重点分析了eBPF和Cilium在Kubernetes环境中的革命性作用,以及它们如何推动网络从标准驱动向软件定义转型,实现可编程、可观测的云原生网络基础设施。

网络的开源时代刚刚开始

开源正在将网络从缓慢的、标准驱动的协议转变为敏捷的、可编程的、支持Kubernetes的基础设施。

在其大部分历史中,网络一直是一个标准优先、协议治理的领域。从OSI模型到TCP/IP堆栈,进展是通过工作组和RFC来衡量的,而不是GitHub提交。但这种情况正在迅速改变。像eBPF和Cilium这样的项目,以及Kubernetes的架构需求,正在将网络从一个受规范约束的世界转移到一个软件驱动的开源生态系统。发生在服务器、开发者工具和CI/CD流水线中的事情,现在正发生在网络层。开源的未来已经到来,并终于赶上了数据包路径。

开源赢得了堆栈的其他部分

开源作为企业技术主要创新引擎的角色已经如此确立,以至于指出它几乎感觉多余。Linux重新平台化了服务器世界。容器,源自Linux核心原语,催生了DevOps、分布式系统和现代部署方法。Kubernetes成为了云原生计算的主导控制平面。所有这些都来自开源社区。

但是,当开源重新定义了计算、构建流水线和应用架构时,它在网络领域尚未全面发力。考虑一下Python、JavaScript和Kubernetes等生态系统成熟的速度有多快。

这导致了开源作为颠覆性代理在服务器基础设施、编程语言、开发者工具和框架中的完全统治。仅在CNCF内,就有超过22万贡献者参与近200个已成为云原生基础设施基石的CNCF项目。JavaScript生态系统的npm注册表有超过200万个包。有超过10万个Python库和超过20万个Python包。在软件开发、语言原语或从构建到 staging 到生产的任何阶段,确实没有多少重要层次没有将用户期望转向开源节奏的创新。

然而,网络仍然以标准为基础。可以理解的是,它必须跨供应商和大陆工作,在光纤和固件之间。但在当今动态基础设施和开发者优先平台的时代,这种保守主义开始阻碍发展。

为什么网络保持保守

网络从来不是为了快速行动和打破事物而构建的。它必须跨组织和地理边界互操作,容忍硬件故障,并支持性能密集型工作负载,任何失误都可能破坏关键业务运营。

当出现问题时,网络往往被错误地指责。这建立了一种风险规避文化和最小变更的精神。因此,像采用IPv6这样的重大过渡花费了几十年也就不足为奇了。

IPv6最初在近30年前的RFC1883中定义。那时,它只被称为IP下一代或IPng。直到2017年7月批准的RFC8200,IPv6才成为今天的样子。顺便说一句,这不是对IETF和IEEE等标准机构的批评。IPv6采用缓慢不应归咎于它们。对人类不友好的IPv6寻址方案和网络设备缺乏IPv6支持将是替罪羊。但很明显,虽然基于标准的方法对于保持竞争公司的网络设备互操作是必要的,但它阻碍了我们在堆栈其他部分看到的进展。

结果是一个基础设施层的进化速度远远慢于生态系统的其他部分。

可靠性胜过敏捷性……直到现在

Linux内核的开发哲学反映了类似的模式。内核开发者遵循严格的"永不破坏用户空间"规则,优先考虑兼容性而非创新。核心接口的更改需要永久支持,并受到缓慢而仔细的考虑,尤其是在网络方面。

这就是为什么eBPF(扩展伯克利数据包过滤器)成为这样一个转折点。它允许开发者在内核内安全地运行沙盒程序,解锁实时可见性、强制和可观测性,而无需更改内核源或加载自定义模块。它在保持稳定性的同时实现了灵活性。

这就是使由eBPF驱动的网络平台Cilium如此具有变革性的原因。Cilium不依赖静态的、受标准约束的行为,而是提供为Kubernetes和其他动态环境设计的可编程网络、零信任策略和高级可观测性。Cilium和eBPF的组合将网络重新定义为软件。它是可组合的、策略驱动的,并不断改进。

Kubernetes正在施加压力

云原生工作负载已经改变了局面。向微服务和编排基础设施的移动引入了一种传统网络工具未曾设计应对的动态水平。Pod在几秒钟内来来去去。服务发现必须即时适应。IP地址失去意义。策略执行需要远超源和目的地的上下文。

传统网络堆栈不是为这个世界构建的。容器编排下的原语是几十年前开发的。它们难以提供平台团队现在期望的可观测性、安全性和敏捷性。改造这些系统以满足现代要求已经达到了极限。

这正是eBPF和Cilium大放异彩的地方。

eBPF为开发者提供了他们需要的钩子,以在不破坏系统其余部分的情况下提取指标、执行规则和重定向内核内的流量。Cilium通过Kubernetes原生构造(如网络策略、服务网格和单一控制平面下的加密连接)将这种能力操作化。

与封闭和不透明的解决方案不同,这些开源工具允许操作员随时间审计、扩展和改进它们。而且由于它们是为开放协作构建的,平台团队可以在容器化应用、虚拟机甚至Windows环境中逐步采用它们,而不会分散其策略模型或重复执行逻辑。

开放网络模型正在扩展

现在发生的事情不仅仅是一个工具升级。这是一个平台转变。组织越来越多地围绕开放和可编程的网络层统一其基础设施。这些团队不仅是在Kubernetes中使用eBPF和Cilium。他们正在将这些能力扩展到虚拟机、裸机和混合环境。他们希望有一种方式来定义、保护和观察他们的网络,无论工作负载在哪里运行。

正如开发者不再犹豫使用Git、Docker或Helm一样,基础设施和安全团队开始将eBPF和Cilium视为基础性的。网络和平台之间的界限正在模糊。网络不再只是电缆和交换机。它是代码的延伸。

这正在推动真正的架构变革。平台团队希望减少孤岛。安全团队希望微分割而没有硬件蔓延。可观测性团队希望访问实时数据而没有开销。

Hubble,Cilium的可观测性层,提供了对容器化应用如何跨网络通信的实时可见性。构建在eBPF上,它直接从Linux内核表面丰富的流数据,而无需修改应用或容器。

1
2
3
4
$ hubble observe -t policy-verdict
Mar 21 11:18:51.917: default/netshoot-client:34898 (ID:11661) -> default/nginx-deployment-979f5455f-bnxh7:80 (ID:5834) policy-verdict:L3-L4 INGRESS ALLOWED (TCP Flags: SYN)
Mar 21 12:12:27.525: default/netshoot-client-worker2:48768 (ID:11661) -> default/nginx-deployment-979f5455f-bnxh7:80 (ID:5834) policy-verdict:L3-L4 INGRESS ALLOWED (TCP Flags: SYN)
Mar 21 12:15:40.016: default/unauthorized-client:41212 (ID:8087) <> default/nginx-deployment-979f5455f-bnxh7:80 (ID:5834) policy-verdict:none INGRESS DENIED (TCP Flags: SYN)

网络开放时代已经到来

网络中的开源不是一个边缘运动。它正迅速成为现代基础设施的默认方法。随着企业现代化其平台,他们不再满足于缓慢的标准周期或孤岛系统。他们想要本质上可编程、可观测和安全的设计网络。这适用于Kubernetes、虚拟机、云环境和数据中心。

eBPF和Cilium在正确的时间到来。它们允许网络团队满足当今分布式应用的敏捷性和安全需求,而不会放弃性能或控制。随着组织扩展其对微分割、运行时安全和服务感知网络的使用,这些开放技术正成为现代基础设施运营模式的核心。

正在进行的转变不仅仅是技术上的。它是文化上的。开发者期望基础设施像他们的代码一样动态和软件定义。平台团队需要跨容器和虚拟机的统一策略模型。安全和可观测性必须内置,而不是附加。

网络,长期以来堆栈中最保守的层,现在正被重塑计算和应用交付的相同力量所重塑。网络的开源时代不是一个未来愿景。它已经到来并 gaining momentum。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计