fix several bugs, add tcp_nack CC, remove prints#10
Open
vali0901 wants to merge 3 commits into
Open
Conversation
- skip PAWS check for TRIMMED & NACKs - deactivate any loss-inferring mechanisms when trimming_ok (sack scoreboard, TLP, newreno_mark_lost) - fix NACK processing - remove cwnd_undo capability - add TCPCB_NACK_FORCED retransmit (disabled by default)
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.
removed trimming-related prints
fix old_ack NACK discarding bug
add initial tcp_nack implementation + integration in menuconfig
skip PAWS check for TRIMMED & NACKs: packets fail PAWS check because of reordering (healthy packets are dropped too); i think it should be best to enforce PAWS-bypass for TRIMMED & NACK packets, to make sure congestion notifiers dont get lost; healthy data packets still get lost, but this is not Trimming TCP related (as a workaround, for our testbed i have disabled timestamp option, in order to ensure no RTO in our results)
deactivate any loss-inferring mechanisms when trimming_ok (sack scoreboard, TLP, newreno_mark_lost): this was our purpose, initially, to have a NACK-only loss detection. I still stand by it, and now we are sure no loss-inferred retransmissions are firing
fix NACK processing: in fast_retrans_alert, there were some checks that would make a NACK not reach the identify_packet_loss call. now, the NACK is handled at the function entry, to ensure retransmission
remove cwnd_undo capability: loss-inferring mechanisms also want to detect if a retransmit was wrongfully sent. this would reset some internal variables that woudl interfere with trimming
add TCPCB_NACK_FORCED retransmit (disabled by default): a method to bypass the cwnd > packets_in_flight verification when retransmitting, so the retransmission happens now. deactivated by default
when receiving a NACK, i have decided to rearm the RTO timer (receiving NACK = connection is still alive, recoverable)
congestion states were all over the place because of NACKs; At the begining of Recovery, TCP remembers what is the seq_num it has to recover to (tp.high_seq). this is usually not updated when in Recovery. what was happening was that there were NACKs (lost packets) coming from outside the recovery registered window (nack_seq > tp.high_seq). this caused a lot of warnings being printed. as a mitigation, now, for every NACK received, we also update the recovery window (tp.high_seq = nack_seq) so we keep staying in Recovery if we register multiple losses.