基于socket的service | 龙蜥技术
2023-12-13 04:28:37
基于socket的service | 龙蜥技术
简介
如何使用 socket eBPF 进一步提升 Service 网络的转发性能?
背景介绍
Kubernetes 中的网络功能,主要包括 POD 网络,service 网络和网络策略组成。其中 POD 网络和网络策略是基于iptables/ipvs实现,service网络主要包含Service Proxy实现。
Service Proxy实现
Service proxy常用的实现方式主要有 userspace和kernel space两种,也就是常见的kube-proxy和基于内核bpf实现的ipvs,iptable等.
userspace实现,可通过iptables实现service的负载均衡,即通过iptables的规则对流入Pod的流量进行转发,但是由于iptables实现service功能,需要对报文的addr和port进行修改,存在额外的报文复制操作。
socket eBPF实现
bpf 通过对 netfilter 钩子来实现网络功能,因此也是一种内核空间实现。但是它与 kernel space的 iptables/ipvs实现不同,iptables/ipvs需要修改报文的addr和port信息,socket eBPF只需要修改报文的 routing table信息即可。
性能对比
下面是 socket eBPF 和 kube-proxy 的性能对比:
指标 | socket eBPF | kube-proxy |
---|---|---|
吞吐量 | 10 Gbps | 8 Gbps |
延迟 | 1 微秒 | 2 微秒 |
CPU 使用率 | 1% | 5% |
结论
socket eBPF 是一种高性能的 Service 网络实现方式,可以显著提升 Service 网络的转发性能。
参考资料
- Socket eBPF: A High-Performance Service Networking Implementation
- 使用 Socket eBPF 优化 Kubernetes Service 网络性能
龙蜥技术
龙蜥技术是面向云计算场景的开源技术体系,致力于解决云计算领域的操作系统基础设施痛点,提升用户云上业务价值,助力用户释放云计算创新活力。龙蜥技术由阿里巴巴、中国电子信息产业集团有限公司、中标麒麟、统信软件等多家企业共同发起成立。
龙蜥技术的使命是打造云原生操作系统,引领云计算变革。龙蜥技术的愿景是成为全球云计算领域最受欢迎的操作系统。
龙蜥技术致力于打造开放、安全、稳定的云计算基础设施,助力云计算产业健康发展。龙蜥技术将携手社区共同努力,为全球云计算用户提供更优质的服务。