BSD-like Silly Window Syndrome Avoidance#1111
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1111 +/- ##
==========================================
+ Coverage 80.45% 81.25% +0.79%
==========================================
Files 81 81
Lines 24461 25002 +541
==========================================
+ Hits 19681 20315 +634
+ Misses 4780 4687 -93 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Not sure about the |
6ba9559 to
55e8528
Compare
2e30539 to
b77c147
Compare
|
Obviously need to fix the tests. More difficult is the approach to take with the override timeout that RFC 9293 requires. It says it can be combined with the ZWP timer but it's clearer to do it as a seperate timer I guess. Issue is where to do the setting of the timer, could do it by letting |
a169c14 to
42b5dd8
Compare
|
Need to add additional tests for the SWS behaviour. Should SWS avoidance be toggle-able like nagles? Edit: Now that I've finally got the netsim test working and see the throughput numbers, it would make sense to make SWS optional. |
4941f8a to
37c1e0d
Compare
why? it shouldn't hurt throughput much |
If you know the network you're on and the hosts you're communicating with, SWS avoidance perhaps isn't necessary. Especially in an embedded context where the window is always "silly" (i.e. tiny buffers). TBF, I know nothing about embedded use-cases so if you're telling me it's not needed then that's cool. Probably worth playing with the thresholds in Also going to test if window updates need to be blocked by delayed ACKs. SWS means we'd only ever announce an update if it was significant, so delaying it to piggyback on a delayed ACK might not be optimal for throughput. EDIT: All green if I never delay window updates to piggyback on the delayed ACK. The BSD implementation that I'm kinda copying is very explicit about not doing this so need to see how it affects number of segments sent/average segment size/etc to decide if it's worth it. |
0b61a82 to
ad83bee
Compare
|
Pretty happy with it as it is. Sending the immediate window update (even when delayed ACK is pending) seems to give much nicer performance on the netsim and I didn't notice anything significant in terms of small segments, etc.... Need to write some SWS specific tests and refactor |
ad83bee to
08f30be
Compare
08f30be to
fd13b93
Compare
Implementing SWS avoidance using the BSD approach (also copied by Linux).
seq_to_transmit()andsend_is_blocked()SWSOverrideTimerbased on RTT?