loxilb logo Welcome to loxilb-docs

eBPF Emerging App Go Report Card build workflow sanity workflow
apache gpl Stargazers

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 and future-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 and IPSEC/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

Knowledge-Base

Blogs

Community Posts