Adds support to dump out cubic internal state.
PiperOrigin-RevId: 207754087 Change-Id: I83abce64348ea93f8692da81a881b364dae2158b
This commit is contained in:
parent
a38f41b464
commit
7d3684aadf
|
@ -56,6 +56,20 @@ type transportProtocolState struct {
|
||||||
// passed to stack.AddTCPProbe.
|
// passed to stack.AddTCPProbe.
|
||||||
type TCPProbeFunc func(s TCPEndpointState)
|
type TCPProbeFunc func(s TCPEndpointState)
|
||||||
|
|
||||||
|
// TCPCubicState is used to hold a copy of the internal cubic state when the
|
||||||
|
// TCPProbeFunc is invoked.
|
||||||
|
type TCPCubicState struct {
|
||||||
|
WLastMax float64
|
||||||
|
WMax float64
|
||||||
|
T time.Time
|
||||||
|
TimeSinceLastCongestion time.Duration
|
||||||
|
C float64
|
||||||
|
K float64
|
||||||
|
Beta float64
|
||||||
|
WC float64
|
||||||
|
WEst float64
|
||||||
|
}
|
||||||
|
|
||||||
// TCPEndpointID is the unique 4 tuple that identifies a given endpoint.
|
// TCPEndpointID is the unique 4 tuple that identifies a given endpoint.
|
||||||
type TCPEndpointID struct {
|
type TCPEndpointID struct {
|
||||||
// LocalPort is the local port associated with the endpoint.
|
// LocalPort is the local port associated with the endpoint.
|
||||||
|
@ -180,6 +194,9 @@ type TCPSenderState struct {
|
||||||
|
|
||||||
// FastRecovery holds the fast recovery state for the endpoint.
|
// FastRecovery holds the fast recovery state for the endpoint.
|
||||||
FastRecovery TCPFastRecoveryState
|
FastRecovery TCPFastRecoveryState
|
||||||
|
|
||||||
|
// Cubic holds the state related to CUBIC congestion control.
|
||||||
|
Cubic TCPCubicState
|
||||||
}
|
}
|
||||||
|
|
||||||
// TCPSACKInfo holds TCP SACK related information for a given TCP endpoint.
|
// TCPSACKInfo holds TCP SACK related information for a given TCP endpoint.
|
||||||
|
|
|
@ -1452,5 +1452,19 @@ func (e *endpoint) completeState() stack.TCPEndpointState {
|
||||||
SndWndScale: e.snd.sndWndScale,
|
SndWndScale: e.snd.sndWndScale,
|
||||||
MaxSentAck: e.snd.maxSentAck,
|
MaxSentAck: e.snd.maxSentAck,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cubic, ok := e.snd.cc.(*cubicState); ok {
|
||||||
|
s.Sender.Cubic = stack.TCPCubicState{
|
||||||
|
WMax: cubic.wMax,
|
||||||
|
WLastMax: cubic.wLastMax,
|
||||||
|
T: cubic.t,
|
||||||
|
TimeSinceLastCongestion: time.Since(cubic.t),
|
||||||
|
C: cubic.c,
|
||||||
|
K: cubic.k,
|
||||||
|
Beta: cubic.beta,
|
||||||
|
WC: cubic.wC,
|
||||||
|
WEst: cubic.wEst,
|
||||||
|
}
|
||||||
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue