loxilb-io/loxilb
GitHub: loxilb-io/loxilb
loxilb 是一个基于 Go 和 eBPF 的开源云原生负载均衡器,为 Kubernetes、电信和边缘计算场景提供高性能的 L4/L7 流量调度、NAT 和服务代理能力。
Stars: 1865 | Forks: 144

[](https://www.loxilb.io) [](https://ebpf.io/projects#loxilb) [](https://goreportcard.com/report/github.com/loxilb-io/loxilb) [](https://www.bestpractices.dev/projects/8472)  
 [][docs-url] [](https://join.slack.com/t/loxilb/shared_invite/zt-2b3xx14wg-P7WHj5C~OEON_jviF0ghcQ)
## 什么是 loxilb
loxilb 是一个基于 GoLang/eBPF 的开源云原生负载均衡器,旨在实现跨本地、公有云或混合 K8s 环境的广泛兼容性。开发 loxilb 的目的是支持在电信、移动和边缘计算中采用云原生技术。
## Kubernetes 与 loxilb
Kubernetes 定义了许多服务构造,如 cluster-ip、node-port、load-balancer、ingress 等,用于 pod 到 pod、pod 到 service 以及外部到 service 的通信。

所有这些服务均由运行在 Layer4/Layer7 的负载均衡器/代理提供。由于 Kubernetes 具有高度模块化的特性,这些服务可以由不同的软件模块提供。例如,默认使用 kube-proxy 来提供 cluster-ip 和 node-port 服务。对于 LB 和 Ingress 等某些服务,通常没有提供默认实现。
Load-balancer 类型的服务通常由公有云提供商作为托管实体提供。但对于本地和自管理的集群,只有少数几个不错的选择。即使是对于像 EKS 这样的提供商托管的 K8s,也有许多人希望将自带的 LB 引入到运行在任何地方的集群中。此外,由于涉及各种特殊协议,包括 GTP、SCTP、SRv6、SEPP 和 DTLS,电信 5G 和边缘服务引入了独特的挑战,使得无缝集成变得尤为困难。loxilb 将提供 load-balancer 类型的服务作为其主要用例。loxilb 可以根据用户需求在集群内部或集群外部运行。
默认情况下,loxilb 作为 L4 负载均衡器/服务代理运行。虽然 L4 负载均衡提供了出色的性能和功能,但在 K8s 中,为了满足各种用例,同样需要一个高性能的 L7 负载均衡器。loxilb 还以 Kubernetes Ingress 实现的形式支持 L7 负载均衡,并通过 eBPF sockmap helper 进行了增强。这也使需要同时使用 L4 和 L7 负载均衡的用户受益。
此外,loxilb 还支持:
- [x] 使用 eBPF 替换 kube-proxy(支持 Kubernetes 的完整 cluster-mesh 实现)
- [x] Ingress 支持
- [x] Kubernetes Gateway API
- [x] 支持 HA 的 Kubernetes Egress
- [ ] Kubernetes Network Policies
## 与 loxilb 结合的电信云
为了部署包含云原生功能的电信云,loxilb 可以用作增强型 SCP(服务通信代理)。SCP 是由 [3GPP](https://www.etsi.org/deliver/etsi_ts/129500_129599/129500/16.04.00_60/ts_129500v160400p.pdf) 定义的一种通信代理,面向在云原生环境中运行的电信微服务。详情请阅读此[博客](https://dev.to/nikhilmalik/5g-service-communication-proxy-with-loxilb-4242)。

电信云需要在各种接口/标准(如 N2、N4、E2(ORAN)、S6x、5GLAN、GTP 等)之间进行负载均衡和通信。每一项都有其独特的挑战,而 loxilb 旨在解决这些问题,例如:
- N4 需要 PFCP 级别的会话智能
- N2 需要 NGAP 解析能力(相关博客 - [Blog-1](https://www.loxilb.io/post/ngap-load-balancing-with-loxilb), [Blog-2](https://futuredon.medium.com/5g-sctp-loadbalancer-using-loxilb-b525198a9103), [Blog-3](https://medium.com/@ben0978327139/5g-sctp-loadbalancer-using-loxilb-applying-on-free5gc-b5c05bb723f0))
- S6x 需要 Diameter/SCTP multi-homing LB 支持(相关[博客](https://www.loxilb.io/post/k8s-introducing-sctp-multihoming-functionality-with-loxilb))
- MEC 用例可能需要理解 UL-CL(相关[博客](https://futuredon.medium.com/5g-uplink-classifier-using-loxilb-7593a4d66f4c))
- 对于关键任务应用,无缝故障转移支持可能是必不可少的
- E2 可能需要将 SCTP-LB 与 OpenVPN 捆绑在一起
- 需要 SIP 支持来启用云原生 VOIP
- N32 需要支持 Security Edge Protection Proxy(SEPP)
## 为什么选择 loxilb?
- 与其在各种架构上的竞争对手相比,```性能```好得多
* [单节点性能](https://loxilb-io.github.io/loxilbdocs/perf-single/)
* [多节点性能](https://loxilb-io.github.io/loxilbdocs/perf-multi/)
* [ARM 上的性能](https://www.loxilb.io/post/running-loxilb-on-aws-graviton2-based-ec2-instance)
* [关于性能的简短 Demo](https://www.youtube.com/watch?v=MJXcM0x6IeQ)
- 利用 eBPF,使其具有```灵活性```和```可定制性```
- 为工作负载提供高级```服务质量```(基于每个 LB、每个 endpoint 或每个客户端)
- 与```任何``` Kubernetes 发行版/CNI 协同工作
(k8s / k3s / k0s / kind / OpenShift + Calico, Flannel, Cilium, Weave, Multus 等)
- 用 loxilb 替代 kube-proxy 允许```简单插入```任何已部署的 pod 网络软件
- 在 K8s 上对 ```SCTP 工作负载```(带有多宿主)提供广泛支持
- 支持 K8s 的双栈 ```NAT66, NAT64```
- K8s ```多集群```支持 *(计划中 🚧)*
- 运行在```任何```云(公有云/本地)或```独立```环境中
## loxilb 的整体特性
- L4/NAT 有状态的负载均衡器
* NAT44, NAT66, NAT64,支持 One-ARM, FullNAT, DSR 等
* 支持 TCP, UDP, SCTP(带有多宿主), QUIC, FTP, TFTP 等
- 通过 BFD 检测实现高可用性支持,适用于 hitless/maglev/cgnat 集群
- 针对云原生环境的可扩展且全面的 endpoint 存活探测
- 有状态防火墙以及 IPSEC/Wireguard 支持
- 对 [Conntrack](https://thermalcircle.de/doku.php?id=blog:linux:connection_tracking_1_modules_and_hooks)、QoS 等功能进行了优化实现
- 完全兼容 ipvs(可自动继承 ipvs 策略)
- 面向策略的 L7 代理支持 - HTTP1.0, 1.1, 2.0, 3.0
## loxilb 的组件
- 基于 GoLang 的控制平面组件
- 基于 [eBPF](https://ebpf.io/) 的可扩展且高效的数据面实现
- 集成的基于 goBGP 的路由栈
- 用 Go 语言编写的 kubernetes operator [kube-loxilb](https://github.com/loxilb-io/kube-loxilb)
- 一个 kubernetes ingress [实现](https://github.com/loxilb-io/loxilb-ingress)
## 架构考量
- [了解 loxilb 模式以及如何使用 kube-loxilb 在 K8s 中进行部署](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/kube-loxilb.md)
- [了解 loxilb 的高可用性](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/ha-deploy.md)
## 快速入门
#### loxilb 作为集群外 pod
- [K8s : loxilb ext-mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k8s-flannel-ext.md)
- [K3s : 带有默认 flannel 的 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k3s_quick_start_flannel.md)
- [K3s : 带有 calico 的 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k3s_quick_start_calico.md)
- [K3s : 带有 cilium 的 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/quick_start_with_cilium.md)
- [K0s : 带有默认 kube-router 网络的 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k0s_quick_start.md)
- [EKS : loxilb ext-mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/eks-external.md)
#### loxilb 作为集群内 pod
- [K8s : loxilb in-cluster mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k8s-flannel-incluster.md)
- [K3s : loxilb in-cluster mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k3s_quick_start_incluster.md)
- [K0s : loxilb in-cluster mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k0s_quick_start_incluster.md)
- [MicroK8s : loxilb in-cluster mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/microk8s_quick_start_incluster.md)
- [EKS : loxilb in-cluster mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/eks-incluster.md)
- [RedHat OCP : loxilb in-cluster mode](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/rhocp-quickstart-incluster.md)
#### loxilb 作为 service-proxy(kube-proxy 替代品)
- [K3s : 带有 flannel 的 loxilb service-proxy](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/service-proxy-flannel.md)
- [K3s : 带有 calico 的 loxilb service-proxy](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/service-proxy-calico.md)
#### loxilb 作为 Kubernetes Ingress
- [K3s: 如何运行 loxilb-ingress](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/loxilb-ingress.md)
#### loxilb 在 standalone 模式下
- [以 standalone 模式运行 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/standalone.md)
## 进阶指南
- [操作指南 : 使用 loxilb 的 Service-group zones](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/service-zones.md)
- [操作指南 : 访问 K8s 外部的 endpoint](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/ext-ep.md)
- [操作指南 : 使用 loxilb 部署多服务器 K3s HA](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/k3s-multi-master.md)
- [操作指南 : 在 AWS 中部署带有 multi-AZ HA 支持的 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/aws-multi-az.md)
- [操作指南 : 部署带有多云 HA 支持的 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/multi-cloud-ha.md)
- [操作指南 : 将 loxilb 与 ingress-nginx 配合使用](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/loxilb-nginx-ingress.md)
- [操作指南 : 使用辅助网络在集群内运行 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/loxilb-incluster-multus.md)
- [操作指南 : 使用 loxilb 进行 Kubernetes service sharding](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/service-sharding.md)
- [操作指南 : 使用 Kubernetes Gateway API 进行 loxilb L4/L7 负载均衡](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/gw-api.md)
## 知识库
- [什么是 eBPF](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/ebpf.md)
- [什么是 k8s service - load-balancer](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/lb.md)
- [架构简介](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/arch.md)
- [代码组织](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/code.md)
- [loxilb 的 eBPF 内部机制](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/loxilbebpf.md)
- [什么是 loxilb NAT 模式](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/nat.md)
- [loxilb 负载均衡算法](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/lb-algo.md)
- [构建/运行的手动步骤](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/run.md)
- [调试 loxilb](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/debugging.md)
- [loxicmd 命令行工具使用方法](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/cmd.md)
- [loxicmd 开发者指南](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/cmd-dev.md)
- [loxilb API 开发者指南](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/api-dev.md)
- [loxilb API 的 HTTPS 指南](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/https.md)
- [API 参考 - loxilb web-Api](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/api.md)
- [性能报告](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/perf.md)
- [开发路线图](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/roadmap.md)
- [贡献](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/contribute.md)
- [系统要求](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/requirements.md)
- [常见问题解答 - FAQs](https://github.com/loxilb-io/loxilbdocs/blob/main/docs/faq.md)
- [博客](https://www.loxilb.io/blog)
- [演示视频](https://www.youtube.com/@loxilb697)
## CI/CD 工作流状态
| Features(Ubuntu20.04) | Features(Ubuntu22.04)| Features(Ubuntu24.04)| Features(RedHat9)|
|:----------|:-------------|:-------------|:-------------|
| [](https://github.com/loxilb-io/loxilb/actions/workflows/docker-image.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/docker-multiarch.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/docker-multiarch.yml) | [](https://github.com/loxilb-io/loxilb/workflows/docker-multiarch.yml) |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/basic-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/basic-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/basic-sanity-ubuntu-24.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/basic-sanity-rh9.yml) |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/tcp-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/tcp-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/tcp-sanity-ubuntu-24.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/tcp-sanity-rh9.yml) |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/udp-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/udp-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/udp-sanity-ubuntu-24.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/udp-sanity-rh9.yml) |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/sctp-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/sctp-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/sctp-sanity-ubuntu-24.yml) |[](https://github.com/loxilb-io/loxilb/actions/workflows/sctp-sanity-rh9.yml) |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/advanced-lb-sanity.yml)| [](https://github.com/loxilb-io/loxilb/actions/workflows/advanced-lb-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/advanced-lb-sanity-ubuntu-24.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/advanced-lb-sanity-rh9.yml)|
| [](https://github.com/loxilb-io/loxilb/actions/workflows/nat66-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/nat66-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/nat66-sanity-ubuntu-24.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/nat66-sanity-rh9.yml) |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/ipsec-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/ipsec-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/ipsec-sanity-ubuntu-24.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/ipsec-sanity-rh9.yml) |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/liveness-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/liveness-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/liveness-sanity-ubuntu-24.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/liveness-sanity-rh9.yml) |
| | [](https://github.com/loxilb-io/loxilb/actions/workflows/scale-sanity-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/scale-sanity-ubuntu-24.yml) | |
|[](https://github.com/loxilb-io/loxilb/actions/workflows/perf.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/perf.yml) |[](https://github.com/loxilb-io/loxilb/actions/workflows/perf.yml) | |
| K8s Base Tests | K8s Adv Tests | EKS Test |
|:-------------|:-------------|:-------------|
|[](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-base-sanity.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k8s-calico-ipvs.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/eks.yaml)|
| [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-flannel.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k8s-calico-ipvs2.yml) | |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-flannel-ubuntu-22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k8s-calico-ipvs3.yml) | |
|[](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-flannel-cluster.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k8s-calico-ipvs3-ha.yml) | |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-calico.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-flannel-incluster.yml) | |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-cilium-cluster.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-flannel-incluster-l2.yml) | |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-sctpmh.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/dual-stack.yml) | |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-sctpmh-ubuntu22.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-loxi-gwapi.yml) | |
| [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-sctpmh-2.yml) | [](https://github.com/loxilb-io/loxilb/actions/workflows/k3s-loxi-ingress.yml) | |
## 📚 请查看 loxilb [官方网站](https://www.loxilb.io) 获取更详细的信息。
标签:Docker镜像, EVTX分析, Go语言, 子域名突变, 日志审计, 程序破解, 网络, 请求拦截, 负载均衡