https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238478
Bug ID: 238478
Summary: TCP Cubic code bug in cubic_ack_received
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Many People
Priority: ---
Component: kern
Assignee: [email protected]
Reporter: [email protected]
I am not sure if this is the right way to file a code audit issue. Recently I
was referring to TCP Cubic source code and found one problem in function
cubic_ack_received.
1. The first condition checks whether the computed cubic window is less than
TCP friendly window and sets accordingly
2. Else, it checks whether the current cwnd is less than the computed cubic
window. This is the concave region but the freebsd code considers this as
concave or convex.
This is incorrect as it would fail to set cwnd when (cwnd > w_cubic_next)
According to the draft, cwnd should be set to (W_cubic_next - cwnd)/cwnd in
both concave and convex region. So the code should look like this:
if (w_cubic_next < w_tf) {
set cwnd <- w_tf
} else if (cwnd < w_cubic_next) {
// This is concave region
set cwnd <- (W_cubic_next - cwnd)/cwnd
} else {
// This is convex region
set cwnd <- (W_cubic_next - cwnd)/cwnd
}
Or
if (w_cubic_next < w_tf) {
set cwnd <- w_tf
} else {
set cwnd <- (W_cubic_next - cwnd)/cwnd
}
--
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"