We should now have a timeline of when retransmits happened.

This commit is contained in:
Herbert Wolverson 2024-07-26 10:18:05 -05:00
parent b9ad794dc5
commit 403a0e0dcd
2 changed files with 13 additions and 0 deletions

View File

@ -43,6 +43,10 @@ pub struct FlowbeeLocalData {
pub rtt: [RttData; 2],
/// Throughput Buffer
pub throughput_buffer: Vec<DownUpOrder<u64>>,
/// When did the retries happen? In nanoseconds since kernel boot
pub retry_times_down: Vec<u64>,
/// When did the retries happen? In nanoseconds since kernel boot
pub retry_times_up: Vec<u64>,
}
impl From<&FlowbeeData> for FlowbeeLocalData {
@ -59,6 +63,8 @@ impl From<&FlowbeeData> for FlowbeeLocalData {
flags: data.flags,
rtt: [RttData::from_nanos(0); 2],
throughput_buffer: vec![ data.bytes_sent ],
retry_times_down: Vec::new(),
retry_times_up: Vec::new(),
}
}
}

View File

@ -227,6 +227,13 @@ impl ThroughputTracker {
} else {
// We have a valid flow, so it needs to be tracked
if let Some(this_flow) = all_flows_lock.get_mut(&key) {
// If retransmits have changed, add the time to the retry list
if data.tcp_retransmits.down != this_flow.0.tcp_retransmits.down {
this_flow.0.retry_times_down.push(data.last_seen);
}
if data.tcp_retransmits.up != this_flow.0.tcp_retransmits.up {
this_flow.0.retry_times_up.push(data.last_seen);
}
this_flow.0.last_seen = data.last_seen;
this_flow.0.bytes_sent = data.bytes_sent;
this_flow.0.packets_sent = data.packets_sent;