qlog loss recovery metrics

This commit is contained in:
Marten Seemann
2020-01-27 15:26:59 +07:00
parent a58bcb747b
commit f13ca7e791
6 changed files with 101 additions and 4 deletions

View File

@@ -10,6 +10,7 @@ import (
"github.com/lucas-clemente/quic-go/internal/qerr"
"github.com/lucas-clemente/quic-go/internal/utils"
"github.com/lucas-clemente/quic-go/internal/wire"
"github.com/lucas-clemente/quic-go/qlog"
"github.com/lucas-clemente/quic-go/quictrace"
)
@@ -73,7 +74,8 @@ type sentPacketHandler struct {
traceCallback func(quictrace.Event)
logger utils.Logger
qlogger qlog.Tracer
logger utils.Logger
}
// NewSentPacketHandler creates a new sentPacketHandler
@@ -81,6 +83,7 @@ func NewSentPacketHandler(
initialPacketNumber protocol.PacketNumber,
rttStats *congestion.RTTStats,
traceCallback func(quictrace.Event),
qlogger qlog.Tracer,
logger utils.Logger,
) SentPacketHandler {
congestion := congestion.NewCubicSender(
@@ -96,6 +99,7 @@ func NewSentPacketHandler(
rttStats: rttStats,
congestion: congestion,
traceCallback: traceCallback,
qlogger: qlogger,
logger: logger,
}
}
@@ -209,6 +213,16 @@ func (h *sentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumbe
h.logger.Debugf("\tupdated RTT: %s (σ: %s)", h.rttStats.SmoothedRTT(), h.rttStats.MeanDeviation())
}
h.congestion.MaybeExitSlowStart()
if h.qlogger != nil {
packetsInFlight := h.appDataPackets.history.Len()
if h.handshakePackets != nil {
packetsInFlight += h.handshakePackets.history.Len()
}
if h.initialPackets != nil {
packetsInFlight += h.initialPackets.history.Len()
}
h.qlogger.UpdatedMetrics(rcvTime, h.rttStats, h.congestion.GetCongestionWindow(), h.bytesInFlight, packetsInFlight)
}
}
ackedPackets, err := h.determineNewlyAckedPackets(ackFrame, encLevel)

View File

@@ -24,7 +24,7 @@ var _ = Describe("SentPacketHandler", func() {
BeforeEach(func() {
lostPackets = nil
rttStats := &congestion.RTTStats{}
handler = NewSentPacketHandler(42, rttStats, nil, utils.DefaultLogger).(*sentPacketHandler)
handler = NewSentPacketHandler(42, rttStats, nil, nil, utils.DefaultLogger).(*sentPacketHandler)
streamFrame = wire.StreamFrame{
StreamID: 5,
Data: []byte{0x13, 0x37},