qlog the packet size in the newly introduced RawInfo

This commit is contained in:
Marten Seemann
2021-01-07 10:40:14 +08:00
parent d1c5297c0b
commit 84af90f2f8
4 changed files with 24 additions and 12 deletions

View File

@@ -44,6 +44,15 @@ func (v versions) MarshalJSONArray(enc *gojay.Encoder) {
}
}
type rawInfo struct {
Length logging.ByteCount
}
func (i rawInfo) IsNil() bool { return false }
func (i rawInfo) MarshalJSONObject(enc *gojay.Encoder) {
enc.Uint64Key("length", uint64(i.Length))
}
type eventConnectionStarted struct {
SrcAddr *net.UDPAddr
DestAddr *net.UDPAddr
@@ -117,6 +126,7 @@ func (e eventConnectionClosed) MarshalJSONObject(enc *gojay.Encoder) {
type eventPacketSent struct {
Header packetHeader
Length logging.ByteCount
Frames frames
IsCoalesced bool
Trigger string
@@ -130,6 +140,7 @@ func (e eventPacketSent) IsNil() bool { return false }
func (e eventPacketSent) MarshalJSONObject(enc *gojay.Encoder) {
enc.ObjectKey("header", e.Header)
enc.ObjectKey("raw", rawInfo{Length: e.Length})
enc.ArrayKeyOmitEmpty("frames", e.Frames)
enc.BoolKeyOmitEmpty("is_coalesced", e.IsCoalesced)
enc.StringKeyOmitEmpty("trigger", e.Trigger)
@@ -137,6 +148,7 @@ func (e eventPacketSent) MarshalJSONObject(enc *gojay.Encoder) {
type eventPacketReceived struct {
Header packetHeader
Length logging.ByteCount
Frames frames
IsCoalesced bool
Trigger string
@@ -150,6 +162,7 @@ func (e eventPacketReceived) IsNil() bool { return false }
func (e eventPacketReceived) MarshalJSONObject(enc *gojay.Encoder) {
enc.ObjectKey("header", e.Header)
enc.ObjectKey("raw", rawInfo{Length: e.Length})
enc.ArrayKeyOmitEmpty("frames", e.Frames)
enc.BoolKeyOmitEmpty("is_coalesced", e.IsCoalesced)
enc.StringKeyOmitEmpty("trigger", e.Trigger)
@@ -206,7 +219,7 @@ func (e eventPacketDropped) IsNil() bool { return false }
func (e eventPacketDropped) MarshalJSONObject(enc *gojay.Encoder) {
enc.StringKeyOmitEmpty("packet_type", e.PacketType.String())
enc.Uint64Key("packet_size", uint64(e.PacketSize))
enc.ObjectKey("raw", rawInfo{Length: e.PacketSize})
enc.StringKey("trigger", e.Trigger.String())
}

View File

@@ -45,9 +45,6 @@ type packetHeader struct {
KeyPhaseBit logging.KeyPhaseBit
PacketNumber logging.PacketNumber
PayloadLength logging.ByteCount
// Size of the QUIC packet (QUIC header + payload).
// See https://github.com/quiclog/internet-drafts/issues/40.
PacketSize logging.ByteCount
Version logging.VersionNumber
SrcConnectionID logging.ConnectionID
@@ -83,7 +80,6 @@ func (h packetHeader) MarshalJSONObject(enc *gojay.Encoder) {
enc.Int64Key("packet_number", int64(h.PacketNumber))
}
enc.Int64KeyOmitEmpty("payload_length", int64(h.PayloadLength))
enc.Int64KeyOmitEmpty("packet_size", int64(h.PacketSize))
if h.Version != 0 {
enc.StringKey("version", versionNumber(h.Version).String())
}

View File

@@ -209,7 +209,7 @@ func (t *connectionTracer) recordTransportParameters(sentBy protocol.Perspective
t.mutex.Unlock()
}
func (t *connectionTracer) SentPacket(hdr *wire.ExtendedHeader, packetSize protocol.ByteCount, ack *logging.AckFrame, frames []logging.Frame) {
func (t *connectionTracer) SentPacket(hdr *wire.ExtendedHeader, packetSize logging.ByteCount, ack *logging.AckFrame, frames []logging.Frame) {
numFrames := len(frames)
if ack != nil {
numFrames++
@@ -222,25 +222,25 @@ func (t *connectionTracer) SentPacket(hdr *wire.ExtendedHeader, packetSize proto
fs = append(fs, frame{Frame: f})
}
header := *transformExtendedHeader(hdr)
header.PacketSize = packetSize
t.mutex.Lock()
t.recordEvent(time.Now(), &eventPacketSent{
Header: header,
Length: packetSize,
Frames: fs,
})
t.mutex.Unlock()
}
func (t *connectionTracer) ReceivedPacket(hdr *wire.ExtendedHeader, packetSize protocol.ByteCount, frames []logging.Frame) {
func (t *connectionTracer) ReceivedPacket(hdr *wire.ExtendedHeader, packetSize logging.ByteCount, frames []logging.Frame) {
fs := make([]frame, len(frames))
for i, f := range frames {
fs[i] = frame{Frame: f}
}
header := *transformExtendedHeader(hdr)
header.PacketSize = packetSize
t.mutex.Lock()
t.recordEvent(time.Now(), &eventPacketReceived{
Header: header,
Length: packetSize,
Frames: fs,
})
t.mutex.Unlock()

View File

@@ -351,9 +351,10 @@ var _ = Describe("Tracing", func() {
Expect(entry.Name).To(Equal("transport:packet_sent"))
ev := entry.Event
Expect(ev).To(HaveKey("header"))
Expect(ev).To(HaveKey("raw"))
Expect(ev["raw"].(map[string]interface{})).To(HaveKeyWithValue("length", float64(987)))
hdr := ev["header"].(map[string]interface{})
Expect(hdr).To(HaveKeyWithValue("packet_type", "handshake"))
Expect(hdr).To(HaveKeyWithValue("packet_size", float64(987)))
Expect(hdr).To(HaveKeyWithValue("packet_number", float64(1337)))
Expect(hdr).To(HaveKeyWithValue("scid", "04030201"))
Expect(ev).To(HaveKey("frames"))
@@ -410,9 +411,10 @@ var _ = Describe("Tracing", func() {
Expect(entry.Name).To(Equal("transport:packet_received"))
ev := entry.Event
Expect(ev).To(HaveKey("header"))
Expect(ev).To(HaveKey("raw"))
Expect(ev["raw"].(map[string]interface{})).To(HaveKeyWithValue("length", float64(789)))
hdr := ev["header"].(map[string]interface{})
Expect(hdr).To(HaveKeyWithValue("packet_type", "initial"))
Expect(hdr).To(HaveKeyWithValue("packet_size", float64(789)))
Expect(hdr).To(HaveKeyWithValue("packet_number", float64(1337)))
Expect(hdr).To(HaveKeyWithValue("scid", "04030201"))
Expect(hdr).To(HaveKey("token"))
@@ -493,7 +495,8 @@ var _ = Describe("Tracing", func() {
Expect(entry.Name).To(Equal("transport:packet_dropped"))
ev := entry.Event
Expect(ev).To(HaveKeyWithValue("packet_type", "handshake"))
Expect(ev).To(HaveKeyWithValue("packet_size", float64(1337)))
Expect(ev).To(HaveKey("raw"))
Expect(ev["raw"].(map[string]interface{})).To(HaveKeyWithValue("length", float64(1337)))
Expect(ev).To(HaveKeyWithValue("trigger", "payload_decrypt_error"))
})