Note: This is a fork of the Dropbox LLAMA project. It has been modified to export Prometheus metrics instead of InfluxDB and includes Docker deployment support.
UDProbe (mix of UDP and Probe) is a library for testing and measuring network loss and latency between distributed endpoints.
It does this by sending UDP datagrams/probes from collectors to reflectors and measuring how long it takes for them to return, if they return at all. UDP is used to provide ECMP hashing over multiple paths (a win over ICMP) without the need for setup/teardown and per-packet granularity (a win over TCP).
Black box testing is critical to the successful monitoring and operation of a network. While collection of metrics from network devices can provide greater detail regarding known issues, they don't always provide a complete picture and can provide an overwhelming number of metrics. Black box testing with UDProbe doesn't care how the network is structured, only if it's working. This data can be used for building KPIs, observing big-picture issues, and guiding investigations into issues with unknown causes by quantifying which flows are/aren't working. See this article on probers for a good explanation on how this works.
Network operators often find this useful for gauging the impact of network issues on internal traffic, identifying the scope of impact, and locating issues for which they had no other metrics (internal hardware failures, circuit degradations, etc).
Even if you operate entirely in the cloud UDProbe can help identify reachability and network health issues between and within regions/zones.
- Lightweight: Docker images are ~30MB in size. Directly built binaries are around ~10MB in size.
- Simple Configuration: Collectors require minimal configuration and reflectors require no configuration (ideal for remote site deployments).
- UDP Based Probing: Cycling UDP source ports allows for better coverage over ECMP paths.
- QOS Support: Probes can be sent with different TOS values to monitor different traffic classes.
- Extensible: Written in Go, easily modifiable to support different environments.
- Prometheus Support: Out of the box integration with Prometheus allowing for straightforward alerting and dashboarding.
Jump in with the Getting Started guide and get up in running with a few minutes.
Learn more about the system architecture over on our Architecture page.
This is a fork of the original Dropbox LLAMA project. The original was built during a Dropbox Hack Week. This fork is currently in early development with significant changes including migration to Prometheus metrics and modernized dependencies. The API and config format may continue to evolve.
This is a very early stage project. Contributions are welcome, but please check with the maintainer first before submitting pull requests. We appreciate your interest in improving UDProbe!
- Inspired by: https://www.youtube.com/watch?v=N0lZrJVdI9A
- Concepts borrowed from: https://github.com/facebook/UdpPinger/
- Looking for the legacy Python version of llama?: https://github.com/dropbox/llama-archive