Get started

Evaluate before adoption

The repository includes benchmark tooling, but a loopback result is a development signal—not a production capacity promise.

Use the included harness carefully

# Build the candidate first, then run only the scenarios you need.
cargo build --release -p omlb
python3 bench/bench.py l7 security

# Optional environment controls accepted by the runner.
CONC=128 DUR=15 RUNS=5 python3 bench/bench.py

The benchmark tooling compares proxy overhead under its own controlled setup. Read its assumptions before interpreting a number: origin behavior, CPU allocation, request concurrency, logging, transport security, and cache state all move results. Do not copy a historical throughput figure into a capacity plan.

Production-representative test plan

1. Run direct-to-origin and proxy-to-origin tests on the same network path.
2. Use the intended TLS, HTTP version, request sizes, and keep-alive behavior.
3. Include an unhealthy backend, a drained backend, and a backend recovery.
4. Measure p50/p95/p99 latency, errors, CPU, memory, and connection behavior.
5. Repeat with production logging, plugins, caching, and security policy enabled.
6. Test a controlled HA failover separately on the real L2 network.

Separate throughput testing from correctness testing. A backend may look healthy at a TCP layer while returning application errors; a cache may improve a synthetic GET test while being unsafe for user-specific responses; and plugin isolation can change both overhead and state behavior.

HA is a separate experiment

Test the custom authenticated UDP/VIP failover mechanism on the same L2 topology, switch path, and client network you intend to use. It is not standards-compliant or interoperable VRRP, so do not use generic VRRP timing or interoperability assumptions as an acceptance test. Measure client-visible recovery and confirm that exactly one node owns the VIP throughout the exercise.

Adoption decision

Accept OMLB only after it meets your own error budget and operational requirements under a load profile that includes failure. Evaluate its configuration/reload boundary, local-only control-plane model, upstream discovery source, certificate lifecycle, and rollback procedure alongside performance.