| 功能 | cilium | kube-ovn |
|---|---|---|
| 基础容器网络转发 | 支持 | 支持 |
| L4 Loadbalancer | 支持 | 不支持,替代方案 metallb |
| Cluster Mesh | 支持 | 支持 |
| 带宽管理器 | 支持 | 支持 |
| kube-proxy替代,替代kube-proxy的 iptables或ipvs方案,提升数据面性能。 | 支持 | 不支持 |
| BGP | 支持 | 支持 |
| Egress Gateway | 支持 | 支持 |
| Service Mesh | 支持 | 不支持,替代方案istio |
| Ingress | 支持 | 不支持,替代方案Ingress nginx controller |
| underlay | 不支持 | 支持 |
| sdn | 不支持 | 支持 |
| sriov网卡 offload | 不支持 | 支持 |
| Service Map (显示服务之间的流量) | 支持 | 不支持,替代方案 DeepFlow |
| metrics export | 支持 | 支持 |
| 网络跟踪(捕获请求,传播路径,记录通信流量,延迟等) | 支持 | 不支持, 替代方案 DeepFlow |
| Identity-aware L3/L4/DNS Network Flow Logs (指的是带有身份识别功能的网络流量日志,可以在第三层(L3)、第四层(L4)和DNS层面提供详细的流量信息) | 支持 | 不支持, 替代方案 DeepFlow |
| Cilium的协议感知可见性为应用程序所有者提供了对其工作负载在协议(TLS, gRPC, Kafka, DNS, and HTTP, and other ones like SCTP)级别的通信深入洞察力。 | 支持 | 不支持, 替代方案 DeepFlow |
| 提供节点间的加密Ipsec或者wireGuard | 支持 | 支持 |
| l3 l4 networkpolicy | 支持 | 支持 |
| networkpolicy 编辑可视化 | 支持 | 不支持 |
| 集群互联, 多集群之间的policies | 支持 | 不支持 |
| 集群范围内的policy (CiliumClusterwideNetworkPolicy ) | 支持 | 不支持 |
cilium 相比 kube-ovn 优势:
- cilium 提供了功能很齐全,但是kube-ovn大部分只提供了cni层面的功能。 然而如上表kube-ovn也可以和其他组件共同使用来弥补。 可观测性上,由于cilium使用ebpf转发,更方便做流量监控,ovn 使用openflow转发,可能存在和deepflow兼容的问题(可能得单独调研cilium和 kube-ovn+deepflow 两套方案的差别),这里有云杉自己做的一套对比 deepflow.io/blog/025-ne…。
- 由于替代了 kube-proxy, service 相关的转发效率提高5倍,同时大大减少了cpu消耗 cilium.io/blog/2020/0…
- cilium 1.13 提供veth替代方案,使用meta设备将pod的流量直通到了物理网卡,将Pod性能提升到了hostnetwork水平,该功能类似sriov vf offload,但是相比sriov好处是不需要特定网卡支持,目前该功能处于实验阶段。
- cilium 提供big TCP 功能,在数据密集场景会对带宽提高到50%(理论上内核满足条件,kube-ovn也能实现).
- cilium 提供了TCP BBR 拥塞算法,大大提升了在有中度丢包的链路下的网络性能(理论上内核满足条件,kube-ovn也能实现)
- cilium 和 kube-ovn 都支持集群互联, 但cilium不需要额外部署控制器,使用的bgp同步路由。kube-ovn的同步路由使用ovn-ic控制器完成。
- 其他细化功能:
cilium提供流量重定向的功能。CRD ciliumLocalRedirectPolicy。
cilium支持nat46, nat64
cilium 支持集群互联场景下,集群之间的networkpolicy
cilium 相比 kube-ovn 劣势:
- kube-ovn提供了underlay的功能,适合客户的overlay underlay混合部署。
- kube-ovn提供iaas网络的功能,参考了openstack neutron (vpc, subnet, eip ,lb, nat等等)。
- cilium对内核要求比较高。至少是5.x以上,尤其是一些比较新的功能,像big tcp,用的内核版本到了6.3 以上。而kube-ovn kernel 3.x以上就可以了
- kube-ovn 更适合做硬件加速,智能网卡,dpu offload,支持DPDK驱动。
个人小结:
service mesh, gateway IP, ingress 这些功能排开。在cni 功能层面来说,cilium最大的优势在于流量可观测,如果deepflow + kube-ovn方案不存在太多兼容性上的问题,并且能够和cilium达到大致一样的效果,cilium 的优势就不会太明显。
cilium 性能上的优势主要就在替代kube-proxy的性能提升,还有使用meta device替代veth的(cilium 1.13 release note 提出这个功能处于实验阶段)。
cilium 劣势也比较明显就是内核要求比较新。