loxilb

command module
v0.9.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README ¶

image

Website eBPF Emerging Project Go Report Card OpenSSF Best Practices build workflow sanity workflow
apache Info Slack

What is loxilb

loxilb is an open source cloud-native load-balancer based on GoLang/eBPF with the goal of achieving cross-compatibility across a wide range of on-prem, public-cloud or hybrid K8s environments.

Kubernetes with loxilb

Kubernetes defines many service constructs like cluster-ip, node-port, load-balancer etc for pod to pod, pod to service and service from outside communication.

All these services are provided by load-balancers/proxies operating at Layer4/Layer7. Since Kubernetes's is highly modular, these services can be provided by different software modules. For example, kube-proxy is used by default to provide cluster-ip and node-port services.

Service type load-balancer is usually provided by public cloud-provider(s) as a managed entity. But for on-prem and self-managed clusters, there are only a few good options available. Even for provider-managed K8s like EKS, there are many who would want to bring their own LB to clusters running anywhere. loxilb provides service type load-balancer as its main use-case. loxilb can be run in-cluster or ext-to-cluster as per user need.

Additionally, loxilb can also support cluster-ip and node-port services, thereby providing end-to-end connectivity for Kubernetes.

Why choose loxilb?

  • Performs much better compared to its competitors across various architectures
  • Utitlizes ebpf which makes it flexible as well as customizable
  • Advanced quality of service for workloads (per LB, per end-point or per client)
  • 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 (planned 🚧)
  • Runs in any cloud (public cloud/on-prem) or standalone environments

Overall features of loxilb

  • L4/NAT stateful loadbalancer
    • NAT44, NAT66, NAT64 with One-ARM, FullNAT, DSR etc
    • Support for TCP, UDP, SCTP (w/ multi-homing), QUIC, FTP, TFTP etc
  • High-availability support with BFD detection for hitless/maglev/cgnat clustering
  • Extensive and scalable end-point liveness probes for cloud-native environments
  • Stateful firewalling and IPSEC/Wireguard support
  • Optimized implementation for features like Conntrack, QoS etc
  • Full compatibility for ipvs (ipvs policies can be auto inherited)
  • Policy oriented L7 proxy support - HTTP1.0, 1.1, 2.0 etc (planned 🚧)

Components of loxilb

  • GoLang based control plane components
  • A scalable/efficient eBPF based data-path implementation
  • Integrated goBGP based routing stack
  • A kubernetes agent kube-loxilb written in Go

Layer4 Vs Layer7

loxilb works as a L4 load-balancer/service-mesh by default. Although it provides great performance, at times, L7 load-balancing might become necessary in K8s. There are many good L7 proxies already available for K8s. Still, we are working on providing a great L7 solution natively in eBPF. It is a tough endeavor one which should reap great benefits once completed. Please keep an eye for updates on this.

Telco-Cloud with loxilb

For deploying telco-cloud with cloud-native functions, loxilb can be used as a SCP(service communication proxy). SCP is nothing but a glorified term for Kubernetes load-balancing/proxy. But telco-cloud requires load-balancing across various interfaces/standards like N2, N4, E2(ORAN), S6x, 5GLAN, GTP etc. Each of these interfaces present its own unique challenges(and DPI) for load-balancing which loxilb aims to solve e.g.

  • N4 requires PFCP level session-intelligence
  • N2 requires NGAP parsing capability
  • S6x requires Diameter/SCTP multi-homing LB support
  • MEC use-cases might require UL-CL understanding
  • Hitless failover support might be essential for mission-critical applications
  • E2 might require SCTP-LB with OpenVPN bundled together

How-To Guides

Getting started with different K8s distributions/tools

loxilb as ext-cluster pod
loxilb as in-cluster pod
loxilb as service-proxy

Knowledge-Base

Community

Slack

Join the loxilb Slack channel to chat with loxilb developers and other loxilb users. This is a good place to learn about loxilb, ask questions, and work collaboratively.

General Discussion

Feel free to post your queries in github discussion. If you find any issue/bugs, please raise an issue in github and members from loxilb community will be happy to help.

CICD Workflow Status

Features(Ubuntu20.04) Features(Ubuntu22.04) Features(RedHat9)
build workflow Docker-Multi-Arch SCTP-LB-Sanity-CI-RH9
simple workflow Sanity-CI-Ubuntu-22 Sanity-CI-RH9
tcp-lb-sanity-CI tcp-lb-sanity-CI TCP-LB-Sanity-CI-RH9
udp-lb-sanity-CI udp-lb-sanity-CI UDP-LB-Sanity-CI-RH9
sctp-lb-sanity-CI ipsec-sanity-CI IPsec-Sanity-CI-RH9
extlb workflow nat66-sanity-CI NAT66-LB-Sanity-CI-RH9
ipsec-sanity-CI Scale-Sanity-CI-Ubuntu-22 Adv-LB-Sanity-CI-RH9
scale-sanity-CI perf-CI
liveness-sanity-CI
nat66-sanity-CI
perf-CI
K3s Tests K8s Cluster Tests EKS Test
K3s-Base-Sanity-CI K8s-Calico-Cluster-IPVS-CI EKS
k3s-flannel-CI K8s-Calico-Cluster-IPVS2-CI
k3s-flannel-ubuntu22-CI K8s-Calico-Cluster-IPVS3-CI
k3s-flannel-cluster-CI K8s-Calico-Cluster-IPVS3-HA-CI
k3s-flannel-incluster-CI
k3s-flannel-incluster-l2-CI
k3s-calico-CI
k3s-cilium-cluster-CI
k3s-sctpmh-CI
k3s-sctpmh-ubuntu22-CI
k3s-sctpmh-2-CI

📚 Please check loxilb website for more detailed info.

Documentation ¶

The Go Gopher

There is no documentation for this package.

Directories ¶

Path Synopsis
api
ippool
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
k8s
* Copyright (c) 2023 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
* Copyright (c) 2023 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
loxinlp
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
prometheus
* Copyright (c) 2023 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
* Copyright (c) 2023 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
restapi
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
restapi/handler
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
* Copyright (c) 2022 NetLOX Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
cicd
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL