[Bug 238478] TCP Cubic code bug in cubic_ack_received
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Mon Jun 10 22:21:12 UTC 2019
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: bugs at FreeBSD.org
Reporter: Goel.vidhi07 at gmail.com
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.
More information about the freebsd-bugs
mailing list