Currently these timers are hardcoded as TCPTV_PERSMIN TCPTV_PERSMAX with 5 seconds and 60 seconds, respectively. This simple change moves them into sysctls that can be tuned live. The default of 5s and 60s has been retained.
Details
This has been running on production systems within Limelight, and the tuned sysctls value are seen to be used. This can easily be tested as it can be tuned live. The easiest test might be a zero window situation. If you can produce zero window packets from a client, you should see the server now sending the first probe at the specified persmin.
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Cool. I guess I'll do the honors (for slacker wolfe who refuses to commit his own work ;-))
These should be per-VNET changeable really; I see no harm at least why they shouldn't be?
Thanks for the review, I have a build going with these changes. After a bit of burn in I'll push an update.
So all of the current VNET tooling expects compile time constants, it appears this is what may have been holding back the simple transition of everything in tcp_timer.h based on hz. Talking with @bz, this commit is good to go, and we'll circle back and virtualize this and other timers with a revised method.
This is not a firm accept but just saying that if you want to go ahead without the VNET changes and drop me an email after the commit, I'll handle those.
Virtualizing non-constants is completely out of the scope for this change.
I'll go ahead and commit this.