Calico是一款广受欢迎的开源网络和网络安全解决方案,专为容器、虚拟机以及宿主机之间的网络连接设计,适用于Kubernetes、OpenShift、Docker EE等多种云原生平台。Calico的核心优势在于其基于边界网关协议(BGP)的纯三层网络架构,能够提供精细的网络策略控制、IP地址管理以及高效的网络通信。
Calico VPP 是Calico项目中的一个重要创新,它将Vector Packet Processor (VPP) 引入到Calico的可插拔数据平面选项中,为Kubernetes集群提供了一种高性能、灵活且具备深度可观测性的网络解决方案。通过将网络数据包的处理移至用户空间,绕过了内核网络堆栈,降低了上下文切换开销,显著提升了数据包处理速度,特别适合对网络延迟敏感或网络流量密集的工作负载,彻底改变了 Kubernetes 网络。凭借服务负载平衡、封装、策略执行和加密等功能,Calico VPP为 Kubernetes 网络带来了VPP的性能、灵活性和可观察性。在 3.27 版本中,Calico VPP 现已全面可用,使用户能够在 Kubernetes 上解锁新的工作负载类别。
主要亮点有以下几个方面:
共享内存接口--memif,VPP数据平面集成不仅支持常规Linux网络设备(如Veth或TunTap),还引入了对共享内存接口memif的支持。这是一种面向数据包的高性能接口类型,对于通常处理大量数据包的容器化网络功能(CNF)而言尤为实用。目前,已提供了C/C++和Golang的绑定,并且在DPDK中也得到了支持。
最后,此数据平面选项为多个Kubernetes Pod网络提供了支持。这是一个高级配置选项,允许Pod请求连接到独立隔离Pod网络的多个接口。这使得能够设计充当Pod网络(如WAN与LAN接口)之间网关的容器化网络功能,同时利用Kubernetes构造(如Services)、Calico构造(如BGP广告与策略),以及VPP特性(如内存接口)。
总结来说,Calico VPP通过整合VPP的强大能力与Calico的网络管理框架,为Kubernetes用户带来了显著的性能提升、增强的功能集以及卓越的网络可见性与可控性,是构建和优化大规模、高性能Kubernetes网络环境的理想选择。
参考文章:
1、Calico VPP github仓库地址:https://github.com/projectcalico/vpp-dataplane/ 2、Calico VPP主机协议栈文档: https://docs.tigera.io/calico/latest/reference/vpp/host-network 3 https://www.tigera.io/blog/deep-dive/calico-vpp-empowering-high-performance-kubernetes-networking-with-userspace-packet-processing/