Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Jun 2019 22:21:09 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 238478] TCP Cubic code bug in cubic_ack_received
Message-ID:  <bug-238478-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D238478

            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@FreeBSD.org
          Reporter: Goel.vidhi07@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=20
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
}

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-238478-227>