I’m testing digest behavior in P4 and I’m seeing results that I don’t quite understand.
For testing purposes, the digest is triggered on almost every packet and it is configured with:
-
max_list_size = 1 -
max_timeout_ns ≈ 1 ms -
ACKs disabled (apparently)
Based on this, I would expect each packet to generate a digest that is sent almost immediately and containing a single entry.
However, what I observe is:
-
Digests are sent 100–200 ms later, not after ~1 ms.
-
In the switch logs, it appears as if the digest is transmitted ~1 ms after being generated, but actually it is sent 100–200 ms later.
-
Some digests contain two entries even though
max_list_size = 1. -
Only two digests per switch reach the controller, after which it seems like some internal buffer becomes full and no more digests are sent.
Has anyone seen similar behavior or knows how digest batching/timing is actually handled internally in BMv2?