-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dedupe acked packets from TwccSendRegister::apply_report() #601
Conversation
ack @k0nserv |
Under the current code this would break some stats reporting, which relies these records too; egress packet loss would falsely report packets lost when they were in fact delivered. |
@alexlapa thanks! I just had a phone call with @k0nserv to discuss this. We're coming down on the side that we should fix this in The code in question from session.rs is this: let range = self.twcc_tx_register.apply_report(twcc, now);
if let Some(bwe) = &mut self.bwe {
let records = range.and_then(|range| self.twcc_tx_register.send_records(range));
if let Some(records) = records {
bwe.update(records, now);
}
} The range returned from We sugggest that we instead change One way to solve that would be to have a counter that is increased by one for every |
I'm sorry we're only talking about this now, after you made efforts going down the route in this PR. I didn't have my mind up-to-date on what was going on, and only saw the issues by talking it through. |
Not really. And from what I see this ( We can definitely make it work, but only after packet loss calculation is moved somewhere else. And this will actually make current PR much more simple, cause then we will just remove |
Ah of course. Thanks! |
Thanks for all the hard work and sorry again for the mix up earlier. Appreciate it! |
Fixes #599
So here is a deduplicating adapter between
TwccSendRegister
and the insides ofSendSideBandwithEstimator
. It should do the job but looks kinda awkward to me. I would probably prefer encapsulating this inside ofTwccSendRegister
by simply removingTwccSendRecord
s from the storage like libwebrtc does. But anyway, if that works for you then it works for me too.I've also added a test from libwebrtc captured data. It fails right now to demonstrate whats wrong, I'l fix it before merge.