1 /*
2  * Copyright (c) Facebook, Inc. and its affiliates.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  *
7  */
8 
9 #pragma once
10 
11 #include <folly/String.h>
12 #include <quic/codec/Types.h>
13 #include "quic/QuicConstants.h"
14 
15 namespace quic {
16 constexpr folly::StringPiece kShortHeaderPacketType = "1RTT";
17 constexpr auto kVersionNegotiationPacketType = "version_negotiation";
18 constexpr auto kHTTP3ProtocolType = "QUIC_HTTP3";
19 constexpr auto kNoError = "no error";
20 constexpr auto kGracefulExit = "graceful exit";
21 constexpr auto kPersistentCongestion = "persistent congestion";
22 constexpr auto kRemoveInflight = "remove bytes in flight";
23 constexpr auto kCubicSkipLoss = "cubic skip loss";
24 constexpr auto kCubicLoss = "cubic loss";
25 constexpr auto kCubicSteadyCwnd = "cubic steady cwnd";
26 constexpr auto kCubicSkipAck = "cubic skip ack";
27 constexpr auto kCubicInit = "cubic init";
28 constexpr auto kCongestionPacketAck = "congestion packet ack";
29 constexpr auto kCwndNoChange = "cwnd no change";
30 constexpr auto kAckInQuiescence = "ack in quiescence";
31 constexpr auto kResetTimeToOrigin = "reset time to origin";
32 constexpr auto kResetLastReductionTime = "reset last reduction time";
33 constexpr auto kRenoCwndEstimation = "reno cwnd estimation";
34 constexpr auto kPacketAckedInRecovery = "packet acked in recovery";
35 constexpr auto kCopaInit = "copa init";
36 constexpr auto kCongestionPacketSent = "congestion on packet sent";
37 constexpr auto kCopaCheckAndUpdateDirection = "copa check and update direction";
38 constexpr auto kCongestionPacketLoss = "congestion packet loss";
39 constexpr auto kAppLimited = "app limited";
40 constexpr auto kAppUnlimited = "app unlimited";
41 constexpr uint64_t kDefaultCwnd = 12320;
42 constexpr auto kAppIdle = "app idle";
43 constexpr auto kMaxBuffered = "max buffered";
44 constexpr auto kCipherUnavailable = "cipher unavailable";
45 constexpr auto kParse = "parse";
46 constexpr auto kNonRegular = "non regular";
47 constexpr auto kAlreadyClosed = "already closed";
48 constexpr auto kUdpTruncated = "udp truncated";
49 constexpr auto kNoData = "no data";
50 constexpr auto kUnexpectedProtectionLevel = "unexpected protection level";
51 constexpr auto kBufferUnavailable = "buffer unavailable";
52 constexpr auto kReset = "reset";
53 constexpr auto kRetry = "retry";
54 constexpr auto kPtoAlarm = "pto alarm";
55 constexpr auto kHandshakeAlarm = "handshake alarm";
56 constexpr auto kLossTimeoutExpired = "loss timeout expired";
57 constexpr auto kStart = "start";
58 constexpr auto kWriteNst = "write nst";
59 constexpr auto kTransportReady = "transport ready";
60 constexpr auto kDerivedZeroRttReadCipher = "derived 0-rtt read cipher";
61 constexpr auto kDerivedOneRttReadCipher = "derived 1-rtt read cipher";
62 constexpr auto kDerivedOneRttWriteCipher = "derived 1-rtt write cipher";
63 constexpr auto kZeroRttRejected = "zerortt rejected";
64 constexpr auto kZeroRttAccepted = "zerortt accepted";
65 constexpr auto kZeroRttAttempted = "zerortt attempted";
66 constexpr auto kRecalculateTimeToOrigin = "recalculate time to origin";
67 constexpr auto kAbort = "abort";
68 constexpr auto kQLogVersion = "draft-00";
69 constexpr auto kQLogTitle = "mvfst qlog";
70 constexpr auto kQLogDescription = "Converted from file";
71 constexpr auto kQLogTraceTitle = "mvfst qlog from single connection";
72 constexpr auto kQLogTraceDescription = "Generated qlog from connection";
73 constexpr auto kQLogTimeUnits = "us";
74 constexpr auto kQLogVersionField = "qlog_version";
75 constexpr auto kQLogTitleField = "title";
76 constexpr auto kQLogDescriptionField = "description";
77 constexpr auto kQLogTraceCountField = "trace_count";
78 constexpr auto kEOM = "eom";
79 constexpr auto kOnEOM = "on eom";
80 constexpr auto kStreamBlocked = "stream blocked";
81 constexpr auto kHeaders = "headers";
82 constexpr auto kOnHeaders = "on headers";
83 constexpr auto kOnError = "on error";
84 constexpr auto kPushPromise = "push promise";
85 constexpr auto kBody = "body";
86 
87 constexpr folly::StringPiece kQLogServerVantagePoint = "server";
88 constexpr folly::StringPiece kQLogClientVantagePoint = "client";
89 
90 using VantagePoint = QuicNodeType;
91 
92 folly::StringPiece vantagePointString(VantagePoint vantagePoint) noexcept;
93 
94 folly::StringPiece toQlogString(FrameType frame);
95 
96 folly::StringPiece toQlogString(LongHeader::Types type);
97 
98 } // namespace quic
99