hummingbird: hummbwtester as a PoC application - #67
Open
juagargi wants to merge 37 commits into
Open
Conversation
Add two docker containers, one for Prometheus, one for Grafana. Add a preconfigured dashboard to Grafana.
- Observe only the client, nothing from the server. - The server does not export any Prometheus metric anymore. - Pong responses now contain the number of bytes received at the server side. - Use only the client's clock to derive rates, RTT, etc. - Adapt Grafana board.
Add configurable topology setup, tc bandwidth shaping, and orchestration for Hummingbird and best-effort clients in tester containers. Expose client-only Prometheus metrics and update Grafana monitoring. Use random Hummingbird reservation IDs and add tests and documentation.
Reservation parameters, payload size, pong rate, and renewal fraction are now configurable at the hummbwtester.json file.
Run tc inside the border router namespace, so that it shares buffers with the egress socket. When tc shares buffers, the enqueued packets in tc actually live in the egress socket buffer, creating back pressure (via EAGAIN) on the sending logic. With BatchSize=1, this completely blocks the border router from attempting to enqueue more packets into the socket, which in turn slows down the sending rate.
We want to define small batch sizes for egress, but keep the ingress batch and buffer sizes big enough not to affect performance.
juagargi
force-pushed
the
hummingbird-bwtester
branch
from
July 24, 2026 05:51
3acc7bb to
a472d57
Compare
juagargi
force-pushed
the
hummingbird-bwtester
branch
from
July 24, 2026 06:06
a472d57 to
47df401
Compare
Make explicit the size of the processor queue size. This allows to soften the compute peaks needed by the BR when new packets arrive that cannot be processed currently, without modifying the ingress batch size config parameter.
Increase the read buffer of the underlying UDP socket, allowing to store more packets before the kernel drops them due to border router ingress being slow. Using SO_RXQ_OVFL report the number of dropped packets at the Linux socket level (before reaching the border router).
…t deadline. Server sets the native Linux receive buffer to a configurable amount. Client doesn't send all remaining packets trying to catch up with the nominal rate after a lost deadline, to avoid big bursts. Add more metrics to Grafana, in particular the dropped packet count at native Linux receive sockets.
juagargi
marked this pull request as ready for review
August 3, 2026 11:24
But discard those that are older than the last valid pong response received by the client.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add
hummbwtesteras a PoC application to showcase Hummingbird.Fixes #69
This change is