Repository navigation
feat: first-payload start, ms granularity timestamp alignment, and drift log - #218
Lethe10137 wants to merge 0 commit into
Conversation
84ad388 to
944b15d
Compare
BobAnkh
left a comment
There was a problem hiding this comment.
Please split this pr into several ones: one PR to netem-trace, one only containing first-payload codes and one only containing drift log. And what is mahimahi-like delay?
| struct PeekableDelayTrace { | ||
| next: Option<(Delay, Duration)>, | ||
| trace: Box<dyn DelayTrace>, | ||
| } | ||
|
|
||
| impl PeekableDelayTrace { | ||
| fn new(mut trace: Box<dyn DelayTrace>) -> Self { | ||
| let next = trace.next_delay(); | ||
| Self { next, trace } | ||
| } | ||
| fn next_delay(&mut self) -> Option<(Delay, Duration)> { | ||
| if let Some(new) = self.trace.next_delay() { | ||
| self.next.replace(new) | ||
| } else { | ||
| self.next | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
We should move this to netem-trace instead of here. We should form a new trait or a new wrapper struct
Fine. For the "mahimahi-like delay" I meant aligning the packet's timestamp to the next ms at the ingress of a delay cell. So that, if such delay cell is the last cell before the veth, packets will be sent out in per-ms bursts. I changed that to "ms granularity timestamp alignment" -- I'm not sure if that is the correct name for the experimental feature. |
@Lethe10137 Yes, that's good, but then please also split it into another PR please. They are three different things. |
I would split this PR in to several stacked PR, i.e. |
The merge of #30 is done, you can do the PR split now |
3c10d85 to
5a7ad8a
Compare
5a7ad8a to
a0f63c6
Compare
Groups the changes built around the trace start instant (
TRACE_START_INSTANT):first-payload): start traces on the first packet that carries payload, instead of the first packet. Includes fixes so the Bw cell and the token bucket cell honorfirst-packet/first-payloadcorrectly.assets/mimic_mahimahi.tomland a duration serde helper. It is implemented by align the packet's timestamp to the next ms at the ingress of delay cell. So that, if such delay cell is the last cell before the veth, packets will be sent out in per-ms bursts.drift-log,drift-stat): log the trace start time and per-packet time drift in rattan-log, and output drift statistics as.jsonl(addsflowstats). Includes analysis scripts underscripts/and docs inguide/src/ref/packet-log.md.Stack (merge in order, rebase-merge; review the diff against the base branch). This is 2/5:
🤖 Generated with Claude Code