云原生小课堂 | 如何打造一款软硬兼施、多功能、零损耗的云原生网络方案
导读:随着云原生进入越来越多的领域,用户对容器网络的需求也不断增长,对容器网络的功能和性能的要求都在不断的提升。基于软件的容器网络由于无法在提供丰富的功能同时保证优秀的性能,不得不在功能和性能之间进行取舍。有没有一种方案能够在提供丰富的功能情况下依然能提供出色的性能呢?
本文将介绍 Kube-OVN +智能网卡的结合方案,通过软件与硬件的结合,在保持容器网络丰富功能基础上,吞吐量 up300%,让用户获得优于宿主机的性能体验。正所谓,“功能”和“性能”两手都要抓,两手都要硬!
云原生网络使用场景越来越复杂
随着云原生不断在各个场景落地,需求的多样性和复杂度都在不断上升,新的需求也在不断的涌现。基于广大社区用户的真实使用案例下,我们在各场景、各行业中总结出来以下需求:
1、传统应用上云有对固定 IP 和 IP 管理方面的需求
2、数据中心基础设施管理需要有异构设备管理、网络虚拟化、多租户 VPC 的需求
3、跨云多集群有着互联互通的需求
4、边缘场景有着高性能轻量化的需求
5、金融领域有着流量镜像、审计、安全加密的需求
6、运营商有着多网融合、流量编排的需求
……
等等
网络性能瓶颈成企业大规模云原生落地阻碍
Overlay 类型网络由于其对底层依赖少,功能灵活得到了越来越多的使用,但是额外的功能通常会带来额外的性能开销,导致 Overlay 网络的整体资源消耗会有明显的上升。
经过我们的 Profile 各个功能会带来如下开销:
1、安全策略,NAT 规则会使用到 netfilter, conntrack 功能,单个数据包会带来额外 20% CPU 开销
2、流量镜像会带来 5% CPU 开销
3、Overlay 封装解封装会带来 5% CPU 开销
4、由于 Overlay 的 UDP 封装导致网卡 TCP 相关 offload 失效,TCP 大包吞吐量可能会出现数量级的下降
5、veth 额外的网络复制带来 3% CPU 开销
6、网络加密会带来延迟和 CPU 使用率的大幅提升
我们简单通过 qperf 来测试在不同包大小情况下的 UDP 传输吞吐量,可见随着包大小的增加,容器网络吞吐量相比宿主机网络出现显著下降,在数据包为 16KB 的情况下,容器网络带宽仅为宿主机网络的 40%。
注:该性能测试数据在 Kube-OVN 默认模式下未经优化测试而得
在大规模的部署中,这些额外的性能开销通常会带来数据中心宝贵 CPU 资源的浪费。
在网关这种南北流量集中的关键节点,由于纯软件方案性能的瓶颈,会导致关键链路延迟大幅上升,QPS 下降,这种业务感知明显的性能问题。因此,也会让整个业务团队对网络模块信心不足,导致企业大规模云原生化的一个阻碍。
高性能网络方案功能欠缺无法满足需求
那么是否选择高性能网络方案就可以解决问题了呢?
Macvlan/SR-IOV 等网络方案,通过绕过主机网络内核栈直通容器等手段提供了高性能的容器网络,但是这类方案通常存在着灵活性和功能性的欠缺:
1、这类技术通常使用了 Underlay 的方案,容器网络和底层网络直接打通,需要底层网络进行配合,通常会涉及到跨部门的协作管理,故障责任区分变得困难 2、由于该类方案绕过了主机网络栈,只提供了基本的网络连通能力,高级功能的开发变得困难或不可行
3、网络的灵活度下降,无法根据需求快速的变化
那么是否存在着一种能同时满足功能丰富灵活而又高性能的云原生网络方案呢?
“功能、性能”两全其美的选择:Kube-OVN+智能网卡
面对不断变化的用户需求,最初为微服务应用平台设计的云原生网络插件 Kube-OVN,需要不断变化调整,扩充自己的能力和实力。
一方面我们希望 Overlay 网络带来的灵活性和丰富的功能,另一方面我们又不希望网络成为性能瓶颈,消耗宝贵的 CPU 资源。具备 OVS 卸载能力的智能网卡和提供丰富网络功能的 Kube-OVN 就成为了一个能很好平衡功能和性能的解决方案。
Kube-OVN 通过将 OVN 和 Kubernetes 结合,将传统 SDN 的网络能力引入 Kubernetes 中,为 Kubernetes 提供灵活功能丰富的容器网络,极大地强化了容器网络的能力。
智能网卡提供的 OVS Offload 能力能够将 Overlay 网络中复杂的 CPU 计算密集型任务卸载到网卡上进行,极大降低网络对 CPU 的消耗,此外由于网络的处理离数据包更近,延迟和吞吐量都能得到大幅改善。
在智能网卡的选择上,芯启源 Agilio 系列网卡,NVIDIA Mellanox CX5 CX6 Bluefield 系列网卡等主流网卡,均可适配。
相关操作手册:
Kube-OVN+芯启源 Agilio 系列网卡方案
Kube-OVN+NVIDIA Mellanox CX5 CX6 Bluefield 系列网卡
经过优化后,我们再次通过 qperf 来测试在不同包大小情况下的 UDP 传输吞吐量,可见随着包大小的增加,容器网络吞吐量相对宿主机网络并没有出现下降。由于使用 Offload 后,容器网络的路径相比宿主机更短,甚至出现了容器网络性能由于宿主机网络的情况。在 16KB 包大小的情况下,容器网络吞吐量是宿主机网络的 1.2 倍,是原始未经优化容器网络吞吐量的 3 倍。
总结
通过 Kube-OVN 和智能网卡的结合,我们可以在提供丰富容器网络的基础上保持了良好的性能,在硬件的加持下,容器网络的性能在一些场景下表现还会优于宿主机网络。
优化后的云原生网络解决方案,可以很好的适应,企业数据中心基础设施管理;跨云多集群有着互联互通;边缘高性能轻量化等场景,以及在金融行业流量镜像、审计、安全加密;运营商多网融合、流量编排等复杂需求。这套方案已无缝融入灵雀云云原生生态体系中,以及灵雀云 ACP 产品中,为金融、制造、运营商等中国 IT 支出最大的头部企业,提供提供高标准、高性能的云原生网络产品和服务。
与此同时,这套云原生网络方案,也为未来的云原生网络方案设计思路提供了新的启示。“软硬件结合”,我们可以在同功能和性能两个方向,同时达到更高的水平。
关于【云原生小课堂】
【云原生小课堂】是由灵雀云、Kube-OVN 社区、云原生技术社区联合开设的公益性技术分享类专题,将以丰富详实的精品内容和灵活多样的呈现形式,持续为您分享云原生前沿技术,带您了解更多云原生实践干货。
在数字化转型的背景下,云原生已经成为企业创新发展的核心驱动力。作为国内最早将 Kubernetes 产品化的厂商之一,灵雀云从出生便携带“云原生基因”,致力于通过革命性的技术帮助企业完成数字化转型,我们期待着云原生给这个世界带来更多改变。
关注我们,学习更多云原生知识,一起让改变发生。
版权声明: 本文为 InfoQ 作者【York】的原创文章。
原文链接:【http://xie.infoq.cn/article/744af8a823b08963ffbad06cc】。文章转载请联系作者。
评论