Welcome to loxilb-docs
Background
loxilb started as a project to ease deployments of cloud-native/kubernetes workloads for the edge. When we deploy services in public clouds like AWS/GCP, the services becomes easily accessible or exported to the outside world. The public cloud providers, usually by default, associate load-balancer instances for incoming requests to these services to ensure everything is quite smooth.
However, for on-prem and edge deployments, there is no service type - external load balancer provider by default. For a long time, MetalLB originating from Google was the only choice for the needy. But edge services are a different ball game altogether due to the fact that there are so many exotic protocols in play like GTP, SCTP, SRv6 etc and integrating everything into a seamlessly working solution has been quite difficult.
loxilb dev team was approached by many people who wanted to solve this problem. As a first step to solve the problem, it became apparent that networking stack provided by Linux kernel, although very solid, really lacked the development process agility to quickly provide support for a wide variety of permutations and combinations of protocols and stateful load-balancing on them. Our search led us to the awesome tech developed by the Linux community - eBPF. The flexibility to introduce new functionality into the OS Kernel as a safe sandbox program was a complete fit to our design philosophy. It also does not need any dedicated CPU cores which makes it perfect for designing energy-efficient edge architectures.
What is loxilb
loxilb is an open source hyper-scale software load-balancer for cloud-native workloads. It uses eBPF as its core-engine and is based on Golang. It is designed to power on-premise, edge and public-cloud Kubernetes cluster deployments.
🚀 loxilb aims to provide the following :
- Service type load-balancer for kubernetes
- L4/NAT stateful loadbalancer
- NAT44, NAT66, NAT64 with One-ARM, FullNAT, DSR etc
- Support for TCP, UDP, SCTP (w/ multi-homing), FTP, TFTP etc
- High-availability support with hitless/maglev clustering
- Full compliance for K8s loadbalancer Spec
- Multi-cluster support
- Extensive and scalable liveness probes for cloud-native environments
- High-perf replacement for the aging iptables/ipvs
- L7 proxy support
- Telco/5G/6G friendly features
- GTP tunnels as first class citizens
- Optimized SRv6 implementation
- Support for UL-CL with LB, QFI and other utility extensions
🧿 loxilb is composed of:
- Bespoke GoLang based control plane components
- eBPF based data-path forwarding
- Home-grown stack with advanced features like Conntrack, QoS etc
- Complete kernel networking bypass
- Highly scalable with low-latency & high-throughput
- GoLang powered easy to use APIs/Interfaces/CLI infra
- Seamless integration with goBGP based routing stack
📦 Why choose loxilb?
Performs
much better compared to its competitors across various architectures- ebpf makes it
flexible
andfuture-proof
(kernel version agnostic and in future OS agnostic 🚧) - Advanced quality of service for workloads (per LB, per end-point or per client)
- Includes powerful NG
stateful firewalling
andIPSEC/Wireguard
support - Optimized/Custom end-point
liveness checks at scale
- Support for
5G/Edge
cloud-native workloads - Works with
any
Kubernetes distribution/CNI - k8s/k3s/k0s/kind/OpenShift + Calico/Flannel/Cilium/Weave/Multus etc - Extensive support for
SCTP workloads
(with multi-homing) on k8s - Dual stack with
NAT66, NAT64
support for k8s - k8s
multi-cluster
support 🚧 - Runs in
any
cloud : public cloud (EKS), on-prem or multi-cloud environments
(🚧: Work in progress*)
How-To Guides
- How-To : build/run
- How-To : configuration
- How-To : kube-loxilb
- How-To : debug
- How-To : loxilb with calico bgp
- How-To : loxilb in standalone mode
- How-To : loxilb Web-APIs
Knowledge-Base
- What is eBPF
- What is k8s service - load-balancer
- Architecture in brief
- Code organization
- eBPF internals of loxilb
- What are loxilb NAT Modes
- Developer's guide to loxicmd
- Developer's guide to loxilb API
- Performance Reports
- Development Roadmap
- Contribute
- System Requirements
- Frequenctly Asked Questions- FAQs
Blogs
- eBPF - Map sync using Go
- K8s in-cluster service LB with LoxiLB
- K8s - Introducing SCTP Multihoming with LoxiLB
- Load-balancer performance comparison on Amazon Graviton2
- Hyperscale anycast load balancing with HA
- Getting started with loxilb on Amazon EKS
- K8s - Deploying "hitless" Load-balancing
- Ipv6 migration in Kubernetes made easy