trace and qlog the ECN marking on sent and received packets

This commit is contained in:
Marten Seemann
2023-09-01 11:47:05 +07:00
parent bed8ebbd4c
commit ad63e2a40a
15 changed files with 212 additions and 120 deletions

View File

@@ -253,15 +253,33 @@ func (t *connectionTracer) toTransportParameters(tp *wire.TransportParameters) *
}
}
func (t *connectionTracer) SentLongHeaderPacket(hdr *logging.ExtendedHeader, packetSize logging.ByteCount, ack *logging.AckFrame, frames []logging.Frame) {
t.sentPacket(*transformLongHeader(hdr), packetSize, hdr.Length, ack, frames)
func (t *connectionTracer) SentLongHeaderPacket(
hdr *logging.ExtendedHeader,
size logging.ByteCount,
ecn logging.ECN,
ack *logging.AckFrame,
frames []logging.Frame,
) {
t.sentPacket(*transformLongHeader(hdr), size, hdr.Length, ecn, ack, frames)
}
func (t *connectionTracer) SentShortHeaderPacket(hdr *logging.ShortHeader, packetSize logging.ByteCount, ack *logging.AckFrame, frames []logging.Frame) {
t.sentPacket(*transformShortHeader(hdr), packetSize, 0, ack, frames)
func (t *connectionTracer) SentShortHeaderPacket(
hdr *logging.ShortHeader,
size logging.ByteCount,
ecn logging.ECN,
ack *logging.AckFrame,
frames []logging.Frame,
) {
t.sentPacket(*transformShortHeader(hdr), size, 0, ecn, ack, frames)
}
func (t *connectionTracer) sentPacket(hdr gojay.MarshalerJSONObject, packetSize, payloadLen logging.ByteCount, ack *logging.AckFrame, frames []logging.Frame) {
func (t *connectionTracer) sentPacket(
hdr gojay.MarshalerJSONObject,
size, payloadLen logging.ByteCount,
ecn logging.ECN,
ack *logging.AckFrame,
frames []logging.Frame,
) {
numFrames := len(frames)
if ack != nil {
numFrames++
@@ -276,14 +294,15 @@ func (t *connectionTracer) sentPacket(hdr gojay.MarshalerJSONObject, packetSize,
t.mutex.Lock()
t.recordEvent(time.Now(), &eventPacketSent{
Header: hdr,
Length: packetSize,
Length: size,
PayloadLength: payloadLen,
ECN: ecn,
Frames: fs,
})
t.mutex.Unlock()
}
func (t *connectionTracer) ReceivedLongHeaderPacket(hdr *logging.ExtendedHeader, packetSize logging.ByteCount, frames []logging.Frame) {
func (t *connectionTracer) ReceivedLongHeaderPacket(hdr *logging.ExtendedHeader, size logging.ByteCount, ecn logging.ECN, frames []logging.Frame) {
fs := make([]frame, len(frames))
for i, f := range frames {
fs[i] = frame{Frame: f}
@@ -292,14 +311,15 @@ func (t *connectionTracer) ReceivedLongHeaderPacket(hdr *logging.ExtendedHeader,
t.mutex.Lock()
t.recordEvent(time.Now(), &eventPacketReceived{
Header: header,
Length: packetSize,
Length: size,
PayloadLength: hdr.Length,
ECN: ecn,
Frames: fs,
})
t.mutex.Unlock()
}
func (t *connectionTracer) ReceivedShortHeaderPacket(hdr *logging.ShortHeader, packetSize logging.ByteCount, frames []logging.Frame) {
func (t *connectionTracer) ReceivedShortHeaderPacket(hdr *logging.ShortHeader, size logging.ByteCount, ecn logging.ECN, frames []logging.Frame) {
fs := make([]frame, len(frames))
for i, f := range frames {
fs[i] = frame{Frame: f}
@@ -308,8 +328,9 @@ func (t *connectionTracer) ReceivedShortHeaderPacket(hdr *logging.ShortHeader, p
t.mutex.Lock()
t.recordEvent(time.Now(), &eventPacketReceived{
Header: header,
Length: packetSize,
PayloadLength: packetSize - wire.ShortHeaderLen(hdr.DestConnectionID, hdr.PacketNumberLen),
Length: size,
PayloadLength: size - wire.ShortHeaderLen(hdr.DestConnectionID, hdr.PacketNumberLen),
ECN: ecn,
Frames: fs,
})
t.mutex.Unlock()