package protocol

Import Path
	github.com/quic-go/quic-go/internal/protocol (on go.dev)

Dependency Relation
	imports 14 packages, and imported by 10 packages


Package-Level Type Names (total 18)
/* sort by: | */
An ArbitraryLenConnectionID is a QUIC Connection ID able to represent Connection IDs according to RFC 8999. Future QUIC versions might allow connection ID lengths up to 255 bytes, while QUIC v1 restricts the length to 20 bytes. ( ArbitraryLenConnectionID) Bytes() []byte ( ArbitraryLenConnectionID) Len() int ( ArbitraryLenConnectionID) String() string ArbitraryLenConnectionID : github.com/apache/arrow-go/v18/internal/hashing.ByteSlice ArbitraryLenConnectionID : expvar.Var ArbitraryLenConnectionID : fmt.Stringer func github.com/quic-go/quic-go/internal/wire.ParseArbitraryLenConnectionIDs(data []byte) (bytesParsed int, dest, src ArbitraryLenConnectionID, _ error) func github.com/quic-go/quic-go/internal/wire.ParseVersionNegotiationPacket(b []byte) (dest, src ArbitraryLenConnectionID, _ []Version, _ error) func github.com/quic-go/quic-go/internal/wire.ComposeVersionNegotiation(destConnID, srcConnID ArbitraryLenConnectionID, versions []Version) []byte
A ByteCount in QUIC func github.com/quic-go/quic-go/internal/congestion.(*Cubic).CongestionWindowAfterAck(ackedBytes ByteCount, currentCongestionWindow ByteCount, delayMin time.Duration, eventTime monotime.Time) ByteCount func github.com/quic-go/quic-go/internal/congestion.(*Cubic).CongestionWindowAfterPacketLoss(currentCongestionWindow ByteCount) ByteCount func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.GetCongestionWindow() ByteCount func github.com/quic-go/quic-go/internal/flowcontrol.ConnectionFlowController.GetWindowUpdate(monotime.Time) ByteCount func github.com/quic-go/quic-go/internal/flowcontrol.ConnectionFlowController.IsNewlyBlocked() (bool, ByteCount) func github.com/quic-go/quic-go/internal/flowcontrol.ConnectionFlowController.SendWindowSize() ByteCount func github.com/quic-go/quic-go/internal/flowcontrol.StreamFlowController.GetWindowUpdate(monotime.Time) ByteCount func github.com/quic-go/quic-go/internal/flowcontrol.StreamFlowController.SendWindowSize() ByteCount func github.com/quic-go/quic-go/internal/wire.ShortHeaderLen(dest ConnectionID, pnLen PacketNumberLen) ByteCount func github.com/quic-go/quic-go/internal/wire.(*AckFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*AckFrequencyFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ConnectionCloseFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*CryptoFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*CryptoFrame).MaxDataLen(maxSize ByteCount) ByteCount func github.com/quic-go/quic-go/internal/wire.(*DataBlockedFrame).Length(version Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*DatagramFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*DatagramFrame).MaxDataLen(maxSize ByteCount, version Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ExtendedHeader).GetLength(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ExtendedHeader).ParsedLen() ByteCount func github.com/quic-go/quic-go/internal/wire.Frame.Length(version Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*HandshakeDoneFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*Header).ParsedLen() ByteCount func github.com/quic-go/quic-go/internal/wire.(*ImmediateAckFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*MaxDataFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*MaxStreamDataFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*MaxStreamsFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*NewConnectionIDFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*NewTokenFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*PathChallengeFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*PathResponseFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*PingFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ResetStreamFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*RetireConnectionIDFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StopSendingFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamDataBlockedFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).DataLen() ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).MaxDataLen(maxSize ByteCount, _ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamsBlockedFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/ackhandler.NewSentPacketHandler(initialPN PacketNumber, initialMaxDatagramSize ByteCount, rttStats *utils.RTTStats, connStats *utils.ConnectionStats, clientAddressValidated bool, enableECN bool, ignorePacketsBelow func(PacketNumber), pers Perspective, qlogger qlogwriter.Recorder, logger utils.Logger) ackhandler.SentPacketHandler func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.MigratedPath(now monotime.Time, initialMaxPacketSize ByteCount) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.ReceivedBytes(_ ByteCount, rcvTime monotime.Time) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.SentPacket(t monotime.Time, pn, largestAcked PacketNumber, streamFrames []ackhandler.StreamFrame, frames []ackhandler.Frame, encLevel EncryptionLevel, ecn ECN, size ByteCount, isPathMTUProbePacket, isPathProbePacket bool) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.SetMaxDatagramSize(count ByteCount) func github.com/quic-go/quic-go/internal/congestion.BandwidthFromDelta(bytes ByteCount, delta time.Duration) congestion.Bandwidth func github.com/quic-go/quic-go/internal/congestion.NewCubicSender(clock congestion.Clock, rttStats *utils.RTTStats, connStats *utils.ConnectionStats, initialMaxDatagramSize ByteCount, reno bool, qlogger qlogwriter.Recorder) *congestion.cubicSender func github.com/quic-go/quic-go/internal/congestion.(*Cubic).CongestionWindowAfterAck(ackedBytes ByteCount, currentCongestionWindow ByteCount, delayMin time.Duration, eventTime monotime.Time) ByteCount func github.com/quic-go/quic-go/internal/congestion.(*Cubic).CongestionWindowAfterAck(ackedBytes ByteCount, currentCongestionWindow ByteCount, delayMin time.Duration, eventTime monotime.Time) ByteCount func github.com/quic-go/quic-go/internal/congestion.(*Cubic).CongestionWindowAfterPacketLoss(currentCongestionWindow ByteCount) ByteCount func github.com/quic-go/quic-go/internal/congestion.(*HybridSlowStart).ShouldExitSlowStart(latestRTT time.Duration, minRTT time.Duration, congestionWindow ByteCount) bool func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.CanSend(bytesInFlight ByteCount) bool func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnCongestionEvent(number PacketNumber, lostBytes ByteCount, priorInFlight ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnCongestionEvent(number PacketNumber, lostBytes ByteCount, priorInFlight ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnPacketAcked(number PacketNumber, ackedBytes ByteCount, priorInFlight ByteCount, eventTime monotime.Time) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnPacketAcked(number PacketNumber, ackedBytes ByteCount, priorInFlight ByteCount, eventTime monotime.Time) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnPacketSent(sentTime monotime.Time, bytesInFlight ByteCount, packetNumber PacketNumber, bytes ByteCount, isRetransmittable bool) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnPacketSent(sentTime monotime.Time, bytesInFlight ByteCount, packetNumber PacketNumber, bytes ByteCount, isRetransmittable bool) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.SetMaxDatagramSize(ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.TimeUntilSend(bytesInFlight ByteCount) monotime.Time func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.CanSend(bytesInFlight ByteCount) bool func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnCongestionEvent(number PacketNumber, lostBytes ByteCount, priorInFlight ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnCongestionEvent(number PacketNumber, lostBytes ByteCount, priorInFlight ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnPacketAcked(number PacketNumber, ackedBytes ByteCount, priorInFlight ByteCount, eventTime monotime.Time) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnPacketAcked(number PacketNumber, ackedBytes ByteCount, priorInFlight ByteCount, eventTime monotime.Time) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnPacketSent(sentTime monotime.Time, bytesInFlight ByteCount, packetNumber PacketNumber, bytes ByteCount, isRetransmittable bool) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnPacketSent(sentTime monotime.Time, bytesInFlight ByteCount, packetNumber PacketNumber, bytes ByteCount, isRetransmittable bool) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.SetMaxDatagramSize(ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.TimeUntilSend(bytesInFlight ByteCount) monotime.Time func github.com/quic-go/quic-go/internal/flowcontrol.NewConnectionFlowController(receiveWindow ByteCount, maxReceiveWindow ByteCount, allowWindowIncrease func(size ByteCount) bool, rttStats *utils.RTTStats, logger utils.Logger) *flowcontrol.connectionFlowController func github.com/quic-go/quic-go/internal/flowcontrol.NewConnectionFlowController(receiveWindow ByteCount, maxReceiveWindow ByteCount, allowWindowIncrease func(size ByteCount) bool, rttStats *utils.RTTStats, logger utils.Logger) *flowcontrol.connectionFlowController func github.com/quic-go/quic-go/internal/flowcontrol.NewStreamFlowController(streamID StreamID, cfc flowcontrol.ConnectionFlowController, receiveWindow ByteCount, maxReceiveWindow ByteCount, initialSendWindow ByteCount, rttStats *utils.RTTStats, logger utils.Logger) flowcontrol.StreamFlowController func github.com/quic-go/quic-go/internal/flowcontrol.NewStreamFlowController(streamID StreamID, cfc flowcontrol.ConnectionFlowController, receiveWindow ByteCount, maxReceiveWindow ByteCount, initialSendWindow ByteCount, rttStats *utils.RTTStats, logger utils.Logger) flowcontrol.StreamFlowController func github.com/quic-go/quic-go/internal/flowcontrol.NewStreamFlowController(streamID StreamID, cfc flowcontrol.ConnectionFlowController, receiveWindow ByteCount, maxReceiveWindow ByteCount, initialSendWindow ByteCount, rttStats *utils.RTTStats, logger utils.Logger) flowcontrol.StreamFlowController func github.com/quic-go/quic-go/internal/flowcontrol.ConnectionFlowController.AddBytesRead(ByteCount) (hasWindowUpdate bool) func github.com/quic-go/quic-go/internal/flowcontrol.ConnectionFlowController.AddBytesSent(ByteCount) func github.com/quic-go/quic-go/internal/flowcontrol.ConnectionFlowController.UpdateSendWindow(ByteCount) (updated bool) func github.com/quic-go/quic-go/internal/flowcontrol.StreamFlowController.AddBytesRead(ByteCount) (hasStreamWindowUpdate, hasConnWindowUpdate bool) func github.com/quic-go/quic-go/internal/flowcontrol.StreamFlowController.AddBytesSent(ByteCount) func github.com/quic-go/quic-go/internal/flowcontrol.StreamFlowController.UpdateHighestReceived(offset ByteCount, final bool, now monotime.Time) error func github.com/quic-go/quic-go/internal/flowcontrol.StreamFlowController.UpdateSendWindow(ByteCount) (updated bool) func github.com/quic-go/quic-go/internal/wire.(*AckFrame).Truncate(maxSize ByteCount, _ Version) func github.com/quic-go/quic-go/internal/wire.(*CryptoFrame).MaxDataLen(maxSize ByteCount) ByteCount func github.com/quic-go/quic-go/internal/wire.(*CryptoFrame).MaybeSplitOffFrame(maxSize ByteCount, version Version) (*wire.CryptoFrame, bool) func github.com/quic-go/quic-go/internal/wire.(*DatagramFrame).MaxDataLen(maxSize ByteCount, version Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).MaxDataLen(maxSize ByteCount, _ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).MaybeSplitOffFrame(maxSize ByteCount, version Version) (*wire.StreamFrame, bool) const InvalidByteCount const MaxByteCount const MinStreamFrameSize var github.com/quic-go/quic-go/internal/wire.MaxDatagramSize
A ConnectionID in QUIC Bytes returns the byte representation Len returns the length of the connection ID in bytes ( ConnectionID) String() string ConnectionID : github.com/apache/arrow-go/v18/internal/hashing.ByteSlice ConnectionID : expvar.Var ConnectionID : fmt.Stringer func GenerateConnectionID(l int) (ConnectionID, error) func GenerateConnectionIDForInitial() (ConnectionID, error) func ParseConnectionID(b []byte) ConnectionID func ReadConnectionID(r io.Reader, l int) (ConnectionID, error) func (*DefaultConnectionIDGenerator).GenerateConnectionID() (ConnectionID, error) func github.com/quic-go/quic-go/internal/wire.ParseConnectionID(data []byte, shortHeaderConnIDLen int) (ConnectionID, error) func github.com/quic-go/quic-go/internal/handshake.GetRetryIntegrityTag(retry []byte, origDestConnID ConnectionID, version Version) *[16]byte func github.com/quic-go/quic-go/internal/handshake.NewCryptoSetupClient(connID ConnectionID, tp *wire.TransportParameters, tlsConf *tls.Config, enable0RTT bool, rttStats *utils.RTTStats, qlogger qlogwriter.Recorder, logger utils.Logger, version Version) handshake.CryptoSetup func github.com/quic-go/quic-go/internal/handshake.NewCryptoSetupServer(connID ConnectionID, localAddr, remoteAddr net.Addr, tp *wire.TransportParameters, tlsConf *tls.Config, allow0RTT bool, rttStats *utils.RTTStats, qlogger qlogwriter.Recorder, logger utils.Logger, version Version) handshake.CryptoSetup func github.com/quic-go/quic-go/internal/handshake.NewInitialAEAD(connID ConnectionID, pers Perspective, v Version) (handshake.LongHeaderSealer, handshake.LongHeaderOpener) func github.com/quic-go/quic-go/internal/handshake.CryptoSetup.ChangeConnectionID(ConnectionID) func github.com/quic-go/quic-go/internal/handshake.(*TokenGenerator).NewRetryToken(raddr net.Addr, origDestConnID ConnectionID, retrySrcConnID ConnectionID) ([]byte, error) func github.com/quic-go/quic-go/internal/handshake.(*TokenGenerator).NewRetryToken(raddr net.Addr, origDestConnID ConnectionID, retrySrcConnID ConnectionID) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.AppendShortHeader(b []byte, connID ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.LogShortHeader(logger utils.Logger, dest ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) func github.com/quic-go/quic-go/internal/wire.ShortHeaderLen(dest ConnectionID, pnLen PacketNumberLen) ByteCount
ConnLen int (*DefaultConnectionIDGenerator) ConnectionIDLen() int (*DefaultConnectionIDGenerator) GenerateConnectionID() (ConnectionID, error) *DefaultConnectionIDGenerator : github.com/quic-go/quic-go.ConnectionIDGenerator
( ECN) String() string ( ECN) ToHeaderBits() byte ECN : expvar.Var ECN : fmt.Stringer func ParseECNHeaderBits(bits byte) ECN func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.ECNMode(isShortHeaderPacket bool) ECN func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).ReceivedPacket(pn PacketNumber, ecn ECN, encLevel EncryptionLevel, rcvTime monotime.Time, ackEliciting bool) error func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.SentPacket(t monotime.Time, pn, largestAcked PacketNumber, streamFrames []ackhandler.StreamFrame, frames []ackhandler.Frame, encLevel EncryptionLevel, ecn ECN, size ByteCount, isPathMTUProbePacket, isPathProbePacket bool) const ECNCE const ECNNon const ECNUnsupported const ECT0 const ECT1
EncryptionLevel is the encryption level Default value is Unencrypted ( EncryptionLevel) String() string ( EncryptionLevel) ToTLSEncryptionLevel() tls.QUICEncryptionLevel EncryptionLevel : expvar.Var EncryptionLevel : fmt.Stringer func FromTLSEncryptionLevel(e tls.QUICEncryptionLevel) EncryptionLevel func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).DropPackets(encLevel EncryptionLevel) func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).GetAckFrame(encLevel EncryptionLevel, now monotime.Time, onlyIfQueued bool) *wire.AckFrame func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).IsPotentiallyDuplicate(pn PacketNumber, encLevel EncryptionLevel) bool func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).ReceivedPacket(pn PacketNumber, ecn ECN, encLevel EncryptionLevel, rcvTime monotime.Time, ackEliciting bool) error func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.DropPackets(_ EncryptionLevel, rcvTime monotime.Time) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.PeekPacketNumber(EncryptionLevel) (PacketNumber, PacketNumberLen) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.PopPacketNumber(EncryptionLevel) PacketNumber func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.QueueProbePacket(EncryptionLevel) bool func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.ReceivedAck(f *wire.AckFrame, encLevel EncryptionLevel, rcvTime monotime.Time) (bool, error) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.ReceivedPacket(EncryptionLevel, monotime.Time) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.SentPacket(t monotime.Time, pn, largestAcked PacketNumber, streamFrames []ackhandler.StreamFrame, frames []ackhandler.Frame, encLevel EncryptionLevel, ecn ECN, size ByteCount, isPathMTUProbePacket, isPathProbePacket bool) func github.com/quic-go/quic-go/internal/handshake.CryptoSetup.HandleMessage([]byte, EncryptionLevel) error func github.com/quic-go/quic-go/internal/wire.(*FrameParser).ParseAckFrame(frameType wire.FrameType, data []byte, encLevel EncryptionLevel, v Version) (*wire.AckFrame, int, error) func github.com/quic-go/quic-go/internal/wire.(*FrameParser).ParseType(b []byte, encLevel EncryptionLevel) (wire.FrameType, int, error) const Encryption0RTT const Encryption1RTT const EncryptionHandshake const EncryptionInitial
KeyPhase is the key phase Bit determines the key phase bit
KeyPhaseBit is the key phase bit ( KeyPhaseBit) String() string KeyPhaseBit : expvar.Var KeyPhaseBit : fmt.Stringer func KeyPhase.Bit() KeyPhaseBit func github.com/quic-go/quic-go/internal/handshake.ShortHeaderSealer.KeyPhase() KeyPhaseBit func github.com/quic-go/quic-go/internal/wire.ParseShortHeader(data []byte, connIDLen int) (length int, _ PacketNumber, _ PacketNumberLen, _ KeyPhaseBit, _ error) func github.com/quic-go/quic-go/internal/handshake.ShortHeaderOpener.Open(dst, src []byte, rcvTime monotime.Time, pn PacketNumber, kp KeyPhaseBit, associatedData []byte) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.AppendShortHeader(b []byte, connID ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.LogShortHeader(logger utils.Logger, dest ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) const KeyPhaseOne const KeyPhaseUndefined const KeyPhaseZero const github.com/quic-go/quic-go/qlog.KeyPhaseOne const github.com/quic-go/quic-go/qlog.KeyPhaseZero
A PacketNumber in QUIC func DecodePacketNumber(length PacketNumberLen, largest PacketNumber, truncated PacketNumber) PacketNumber func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.PeekPacketNumber(EncryptionLevel) (PacketNumber, PacketNumberLen) func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.PopPacketNumber(EncryptionLevel) PacketNumber func github.com/quic-go/quic-go/internal/handshake.LongHeaderOpener.DecodePacketNumber(wirePN PacketNumber, wirePNLen PacketNumberLen) PacketNumber func github.com/quic-go/quic-go/internal/handshake.ShortHeaderOpener.DecodePacketNumber(wirePN PacketNumber, wirePNLen PacketNumberLen) PacketNumber func github.com/quic-go/quic-go/internal/wire.ParseShortHeader(data []byte, connIDLen int) (length int, _ PacketNumber, _ PacketNumberLen, _ KeyPhaseBit, _ error) func github.com/quic-go/quic-go/internal/wire.(*AckFrame).LargestAcked() PacketNumber func github.com/quic-go/quic-go/internal/wire.(*AckFrame).LowestAcked() PacketNumber func github.com/quic-go/quic-go/internal/wire.AckRange.Len() PacketNumber func DecodePacketNumber(length PacketNumberLen, largest PacketNumber, truncated PacketNumber) PacketNumber func DecodePacketNumber(length PacketNumberLen, largest PacketNumber, truncated PacketNumber) PacketNumber func PacketNumberLengthForHeader(pn, largestAcked PacketNumber) PacketNumberLen func github.com/quic-go/quic-go/internal/ackhandler.NewSentPacketHandler(initialPN PacketNumber, initialMaxDatagramSize ByteCount, rttStats *utils.RTTStats, connStats *utils.ConnectionStats, clientAddressValidated bool, enableECN bool, ignorePacketsBelow func(PacketNumber), pers Perspective, qlogger qlogwriter.Recorder, logger utils.Logger) ackhandler.SentPacketHandler func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).IgnorePacketsBelow(pn PacketNumber) func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).IsPotentiallyDuplicate(pn PacketNumber, encLevel EncryptionLevel) bool func github.com/quic-go/quic-go/internal/ackhandler.(*ReceivedPacketHandler).ReceivedPacket(pn PacketNumber, ecn ECN, encLevel EncryptionLevel, rcvTime monotime.Time, ackEliciting bool) error func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.SentPacket(t monotime.Time, pn, largestAcked PacketNumber, streamFrames []ackhandler.StreamFrame, frames []ackhandler.Frame, encLevel EncryptionLevel, ecn ECN, size ByteCount, isPathMTUProbePacket, isPathProbePacket bool) func github.com/quic-go/quic-go/internal/congestion.(*HybridSlowStart).IsEndOfRound(ack PacketNumber) bool func github.com/quic-go/quic-go/internal/congestion.(*HybridSlowStart).OnPacketAcked(ackedPacketNumber PacketNumber) func github.com/quic-go/quic-go/internal/congestion.(*HybridSlowStart).OnPacketSent(packetNumber PacketNumber) func github.com/quic-go/quic-go/internal/congestion.(*HybridSlowStart).StartReceiveRound(lastSent PacketNumber) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnCongestionEvent(number PacketNumber, lostBytes ByteCount, priorInFlight ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnPacketAcked(number PacketNumber, ackedBytes ByteCount, priorInFlight ByteCount, eventTime monotime.Time) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithm.OnPacketSent(sentTime monotime.Time, bytesInFlight ByteCount, packetNumber PacketNumber, bytes ByteCount, isRetransmittable bool) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnCongestionEvent(number PacketNumber, lostBytes ByteCount, priorInFlight ByteCount) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnPacketAcked(number PacketNumber, ackedBytes ByteCount, priorInFlight ByteCount, eventTime monotime.Time) func github.com/quic-go/quic-go/internal/congestion.SendAlgorithmWithDebugInfos.OnPacketSent(sentTime monotime.Time, bytesInFlight ByteCount, packetNumber PacketNumber, bytes ByteCount, isRetransmittable bool) func github.com/quic-go/quic-go/internal/handshake.CryptoSetup.SetLargest1RTTAcked(PacketNumber) error func github.com/quic-go/quic-go/internal/handshake.LongHeaderOpener.DecodePacketNumber(wirePN PacketNumber, wirePNLen PacketNumberLen) PacketNumber func github.com/quic-go/quic-go/internal/handshake.LongHeaderOpener.Open(dst, src []byte, pn PacketNumber, associatedData []byte) ([]byte, error) func github.com/quic-go/quic-go/internal/handshake.LongHeaderSealer.Seal(dst, src []byte, packetNumber PacketNumber, associatedData []byte) []byte func github.com/quic-go/quic-go/internal/handshake.ShortHeaderOpener.DecodePacketNumber(wirePN PacketNumber, wirePNLen PacketNumberLen) PacketNumber func github.com/quic-go/quic-go/internal/handshake.ShortHeaderOpener.Open(dst, src []byte, rcvTime monotime.Time, pn PacketNumber, kp KeyPhaseBit, associatedData []byte) ([]byte, error) func github.com/quic-go/quic-go/internal/handshake.ShortHeaderSealer.Seal(dst, src []byte, packetNumber PacketNumber, associatedData []byte) []byte func github.com/quic-go/quic-go/internal/wire.AppendShortHeader(b []byte, connID ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.LogShortHeader(logger utils.Logger, dest ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) func github.com/quic-go/quic-go/internal/wire.(*AckFrame).AcksPacket(p PacketNumber) bool const InvalidPacketNumber const SkipPacketInitialPeriod const SkipPacketMaxPeriod
PacketNumberLen is the length of the packet number in bytes func PacketNumberLengthForHeader(pn, largestAcked PacketNumber) PacketNumberLen func github.com/quic-go/quic-go/internal/ackhandler.SentPacketHandler.PeekPacketNumber(EncryptionLevel) (PacketNumber, PacketNumberLen) func github.com/quic-go/quic-go/internal/wire.ParseShortHeader(data []byte, connIDLen int) (length int, _ PacketNumber, _ PacketNumberLen, _ KeyPhaseBit, _ error) func DecodePacketNumber(length PacketNumberLen, largest PacketNumber, truncated PacketNumber) PacketNumber func github.com/quic-go/quic-go/internal/handshake.LongHeaderOpener.DecodePacketNumber(wirePN PacketNumber, wirePNLen PacketNumberLen) PacketNumber func github.com/quic-go/quic-go/internal/handshake.ShortHeaderOpener.DecodePacketNumber(wirePN PacketNumber, wirePNLen PacketNumberLen) PacketNumber func github.com/quic-go/quic-go/internal/wire.AppendShortHeader(b []byte, connID ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.LogShortHeader(logger utils.Logger, dest ConnectionID, pn PacketNumber, pnLen PacketNumberLen, kp KeyPhaseBit) func github.com/quic-go/quic-go/internal/wire.ShortHeaderLen(dest ConnectionID, pnLen PacketNumberLen) ByteCount const PacketNumberLen1 const PacketNumberLen2 const PacketNumberLen3 const PacketNumberLen4
The PacketType is the Long Header Type ( PacketType) String() string PacketType : expvar.Var PacketType : fmt.Stringer const PacketType0RTT const PacketTypeHandshake const PacketTypeInitial const PacketTypeRetry
Perspective determines if we're acting as a server or a client Opposite returns the perspective of the peer ( Perspective) String() string Perspective : expvar.Var Perspective : fmt.Stringer func Perspective.Opposite() Perspective func StreamID.InitiatedBy() Perspective func StreamNum.StreamID(stype StreamType, pers Perspective) StreamID func github.com/quic-go/quic-go/internal/ackhandler.NewSentPacketHandler(initialPN PacketNumber, initialMaxDatagramSize ByteCount, rttStats *utils.RTTStats, connStats *utils.ConnectionStats, clientAddressValidated bool, enableECN bool, ignorePacketsBelow func(PacketNumber), pers Perspective, qlogger qlogwriter.Recorder, logger utils.Logger) ackhandler.SentPacketHandler func github.com/quic-go/quic-go/internal/handshake.NewInitialAEAD(connID ConnectionID, pers Perspective, v Version) (handshake.LongHeaderSealer, handshake.LongHeaderOpener) func github.com/quic-go/quic-go/internal/wire.(*TransportParameters).Marshal(pers Perspective) []byte func github.com/quic-go/quic-go/internal/wire.(*TransportParameters).Unmarshal(data []byte, sentBy Perspective) error const PerspectiveClient const PerspectiveServer
A StatelessResetToken is a stateless reset token.
A StreamID in QUIC InitiatedBy says if the stream was initiated by the client or by the server StreamNum returns how many streams in total are below this Example: for stream 9 it returns 3 (i.e. streams 1, 5 and 9) Type says if this is a unidirectional or bidirectional stream func StreamNum.StreamID(stype StreamType, pers Perspective) StreamID func github.com/quic-go/quic-go.(*ReceiveStream).StreamID() StreamID func github.com/quic-go/quic-go.(*Stream).StreamID() StreamID func github.com/quic-go/quic-go/internal/flowcontrol.NewStreamFlowController(streamID StreamID, cfc flowcontrol.ConnectionFlowController, receiveWindow ByteCount, maxReceiveWindow ByteCount, initialSendWindow ByteCount, rttStats *utils.RTTStats, logger utils.Logger) flowcontrol.StreamFlowController const FirstIncomingBidiStreamClient const FirstIncomingBidiStreamServer const FirstIncomingUniStreamClient const FirstIncomingUniStreamServer const FirstOutgoingBidiStreamClient const FirstOutgoingBidiStreamServer const FirstOutgoingUniStreamClient const FirstOutgoingUniStreamServer const InvalidStreamID const MaxStreamID
StreamNum is the stream number StreamID calculates the stream ID. func StreamID.StreamNum() StreamNum const MaxStreamCount
StreamType encodes if this is a unidirectional or bidirectional stream func StreamID.Type() StreamType func StreamNum.StreamID(stype StreamType, pers Perspective) StreamID const StreamTypeBidi const StreamTypeUni
Version is a version number as int ( Version) String() string Version : expvar.Var Version : fmt.Stringer func ChooseSupportedVersion(ours, theirs []Version) (Version, bool) func GetGreasedVersions(supported []Version) []Version func github.com/quic-go/quic-go/internal/wire.ParseVersion(data []byte) (Version, error) func github.com/quic-go/quic-go/internal/wire.ParseVersionNegotiationPacket(b []byte) (dest, src ArbitraryLenConnectionID, _ []Version, _ error) func ChooseSupportedVersion(ours, theirs []Version) (Version, bool) func GetGreasedVersions(supported []Version) []Version func IsSupportedVersion(supported []Version, v Version) bool func IsSupportedVersion(supported []Version, v Version) bool func IsValidVersion(v Version) bool func github.com/quic-go/quic-go/internal/handshake.GetRetryIntegrityTag(retry []byte, origDestConnID ConnectionID, version Version) *[16]byte func github.com/quic-go/quic-go/internal/handshake.NewCryptoSetupClient(connID ConnectionID, tp *wire.TransportParameters, tlsConf *tls.Config, enable0RTT bool, rttStats *utils.RTTStats, qlogger qlogwriter.Recorder, logger utils.Logger, version Version) handshake.CryptoSetup func github.com/quic-go/quic-go/internal/handshake.NewCryptoSetupServer(connID ConnectionID, localAddr, remoteAddr net.Addr, tp *wire.TransportParameters, tlsConf *tls.Config, allow0RTT bool, rttStats *utils.RTTStats, qlogger qlogwriter.Recorder, logger utils.Logger, version Version) handshake.CryptoSetup func github.com/quic-go/quic-go/internal/handshake.NewInitialAEAD(connID ConnectionID, pers Perspective, v Version) (handshake.LongHeaderSealer, handshake.LongHeaderOpener) func github.com/quic-go/quic-go/internal/wire.ComposeVersionNegotiation(destConnID, srcConnID ArbitraryLenConnectionID, versions []Version) []byte func github.com/quic-go/quic-go/internal/wire.ParseStreamFrame(b []byte, typ wire.FrameType, _ Version) (*wire.StreamFrame, int, error) func github.com/quic-go/quic-go/internal/wire.(*AckFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*AckFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*AckFrame).Truncate(maxSize ByteCount, _ Version) func github.com/quic-go/quic-go/internal/wire.(*AckFrequencyFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*AckFrequencyFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ConnectionCloseFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*ConnectionCloseFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*CryptoFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*CryptoFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*CryptoFrame).MaybeSplitOffFrame(maxSize ByteCount, version Version) (*wire.CryptoFrame, bool) func github.com/quic-go/quic-go/internal/wire.(*DataBlockedFrame).Append(b []byte, version Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*DataBlockedFrame).Length(version Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*DatagramFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*DatagramFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*DatagramFrame).MaxDataLen(maxSize ByteCount, version Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ExtendedHeader).Append(b []byte, v Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*ExtendedHeader).GetLength(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.Frame.Append(b []byte, version Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.Frame.Length(version Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*FrameParser).ParseAckFrame(frameType wire.FrameType, data []byte, encLevel EncryptionLevel, v Version) (*wire.AckFrame, int, error) func github.com/quic-go/quic-go/internal/wire.(*FrameParser).ParseDatagramFrame(frameType wire.FrameType, data []byte, v Version) (*wire.DatagramFrame, int, error) func github.com/quic-go/quic-go/internal/wire.(*FrameParser).ParseLessCommonFrame(frameType wire.FrameType, data []byte, v Version) (wire.Frame, int, error) func github.com/quic-go/quic-go/internal/wire.(*FrameParser).ParseStreamFrame(frameType wire.FrameType, data []byte, v Version) (*wire.StreamFrame, int, error) func github.com/quic-go/quic-go/internal/wire.(*HandshakeDoneFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*HandshakeDoneFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ImmediateAckFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*ImmediateAckFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*MaxDataFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*MaxDataFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*MaxStreamDataFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*MaxStreamDataFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*MaxStreamsFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*MaxStreamsFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*NewConnectionIDFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*NewConnectionIDFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*NewTokenFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*NewTokenFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*PathChallengeFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*PathChallengeFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*PathResponseFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*PathResponseFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*PingFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*PingFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*ResetStreamFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*ResetStreamFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*RetireConnectionIDFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*RetireConnectionIDFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StopSendingFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*StopSendingFrame).Length(_ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamDataBlockedFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*StreamDataBlockedFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).Length(Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).MaxDataLen(maxSize ByteCount, _ Version) ByteCount func github.com/quic-go/quic-go/internal/wire.(*StreamFrame).MaybeSplitOffFrame(maxSize ByteCount, version Version) (*wire.StreamFrame, bool) func github.com/quic-go/quic-go/internal/wire.(*StreamsBlockedFrame).Append(b []byte, _ Version) ([]byte, error) func github.com/quic-go/quic-go/internal/wire.(*StreamsBlockedFrame).Length(_ Version) ByteCount const Version1 const Version2 const VersionUnknown const github.com/quic-go/quic-go.Version1 const github.com/quic-go/quic-go.Version2
Package-Level Functions (total 12)
ChooseSupportedVersion finds the best version in the overlap of ours and theirs ours is a slice of versions that we support, sorted by our preference (descending) theirs is a slice of versions offered by the peer. The order does not matter. The bool returned indicates if a matching version was found.
DecodePacketNumber calculates the packet number based its length and the last seen packet number This function is taken from https://www.rfc-editor.org/rfc/rfc9000.html#section-a.3.
GenerateConnectionID generates a connection ID using cryptographic random
GenerateConnectionIDForInitial generates a connection ID for the Initial packet. It uses a length randomly chosen between 8 and 20 bytes.
GetGreasedVersions adds one reserved version number to a slice of version numbers, at a random position. It doesn't modify the supported slice.
IsSupportedVersion returns true if the server supports this version
IsValidVersion says if the version is known to quic-go
PacketNumberLengthForHeader gets the length of the packet number for the public header it never chooses a PacketNumberLen of 1 byte, since this is too short under certain circumstances
ParseConnectionID interprets b as a Connection ID. It panics if b is longer than 20 bytes.
ReadConnectionID reads a connection ID of length len from the given io.Reader. It returns io.EOF if there are not enough bytes to read.
Package-Level Variables (total 2)
SupportedVersions lists the versions that the server supports must be in sorted descending order
Package-Level Constants (total 102)
AckDelayExponent is the ack delay exponent used when sending ACKs.
ConnectionFlowControlMultiplier determines how much larger the connection flow control windows needs to be relative to any stream's flow control window This is the value that Chromium is using
DefaultAckDelayExponent is the default ack delay exponent
DefaultActiveConnectionIDLimit is the default active connection ID limit
DefaultConnectionIDLength is the connection ID length that is used for multiplexed connections if no other value is configured.
DefaultHandshakeIdleTimeout is the default idle timeout used before handshake completion.
DefaultIdleTimeout is the default idle timeout
DefaultInitialMaxData is the connection-level flow control window for receiving data
DefaultInitialMaxStreamData is the default initial stream-level flow control window for receiving data
DefaultMaxAckDelay is the default max_ack_delay
DefaultMaxIncomingStreams is the maximum number of streams that a peer may open
DefaultMaxIncomingUniStreams is the maximum number of unidirectional streams that a peer may open
DefaultMaxReceiveConnectionFlowControlWindow is the default connection-level flow control window for receiving data
DefaultMaxReceiveStreamFlowControlWindow is the default maximum stream-level flow control window for receiving data
DesiredReceiveBufferSize is the kernel UDP receive buffer size that we'd like to use.
DesiredSendBufferSize is the kernel UDP send buffer size that we'd like to use.
const ECNCE ECN = 4 // 11
const ECNNon ECN = 1 // 00
const ECNUnsupported ECN = 0
const ECT0 ECN = 3 // 10
const ECT1 ECN = 2 // 01
Encryption0RTT is the 0-RTT encryption level
Encryption1RTT is the 1-RTT encryption level
EncryptionHandshake is the Handshake encryption level
EncryptionInitial is the Initial encryption level
FirstIncomingBidiStreamClient is the first bidirectional stream accepted by the client
FirstIncomingBidiStreamServer is the first bidirectional stream accepted by the server
FirstIncomingUniStreamClient is the first unidirectional stream accepted by the client
FirstIncomingUniStreamServer is the first unidirectional stream accepted by the server
FirstOutgoingBidiStreamClient is the first bidirectional stream opened by the client
FirstOutgoingBidiStreamServer is the first bidirectional stream opened by the server
FirstOutgoingUniStreamClient is the first unidirectional stream opened by the client
FirstOutgoingUniStreamServer is the first unidirectional stream opened by the server
InitialPacketSize is the initial (before Path MTU discovery) maximum packet size used.
InvalidByteCount is an invalid byte count
InvalidPacketLimitAES is the maximum number of packets that we can fail to decrypt when using AEAD_AES_128_GCM or AEAD_AES_265_GCM.
InvalidPacketLimitChaCha is the maximum number of packets that we can fail to decrypt when using AEAD_CHACHA20_POLY1305.
InvalidPacketNumber is a packet number that is never sent. In QUIC, 0 is a valid packet number.
InvalidPacketNumber is a stream ID that is invalid. The first valid stream ID in QUIC is 0.
InvalidStreamNum is an invalid stream number.
KeyPhaseOne is key phase 1
KeyPhaseUndefined is an undefined key phase
KeyPhaseZero is key phase 0
KeyUpdateInterval is the maximum number of packets we send or receive before initiating a key update.
Max0RTTQueueingDuration is the maximum time that we store 0-RTT packets in order to wait for the corresponding Initial to be received.
Max0RTTQueueLen is the maximum number of 0-RTT packets that we buffer for each connection. When a new connection is created, all buffered packets are passed to the connection immediately. To avoid blocking, this value has to be smaller than MaxConnUnprocessedPackets. To avoid packets being dropped as undecryptable by the connection, this value has to be smaller than MaxUndecryptablePackets.
Max0RTTQueues is the maximum number of connections that we buffer 0-RTT packets for.
MaxAcceptQueueSize is the maximum number of connections that the server queues for accepting. If the queue is full, new connection attempts will be rejected.
MaxAckDelay is the maximum time by which we delay sending ACKs.
MaxAckDelayExponent is the maximum ack delay exponent
MaxAckDelayInclGranularity is the max_ack_delay including the timer granularity. This is the value that should be advertised to the peer.
MaxActiveConnectionIDs is the number of connection IDs that we're storing.
MaxByteCount is the maximum value of a ByteCount
MaxCongestionWindowPackets is the maximum congestion window in packet.
MaxConnIDLen is the maximum length of the connection ID
MaxConnUnprocessedPackets is the max number of packets stored in each connection that are not yet processed.
MaxCryptoStreamOffset is the maximum offset allowed on any of the crypto streams. This limits the size of the ClientHello and Certificates that can be received.
MaxIssuedConnectionIDs is the maximum number of connection IDs that we're issuing at the same time.
MaxLargePacketBufferSize is used when using GSO
MaxMaxAckDelay is the maximum max_ack_delay
MaxNonAckElicitingAcks is the maximum number of packets containing an ACK, but no ack-eliciting frames, that we send in a row
MaxNumAckRanges is the maximum number of ACK ranges that we send in an ACK frame. It also serves as a limit for the packet history. If at any point we keep track of more ranges, old ranges are discarded. This value also guarantees that ACK Range Count value in the ACK frame can be encoded in a single byte varint.
MaxOutstandingSentPackets is maximum number of packets saved for retransmission. When reached, it imposes a soft limit on sending new packets: Sending ACKs and retransmission is still allowed, but now new regular packets can be sent.
MaxPacketBufferSize maximum packet size of any QUIC packet, based on ethernet's max size, minus the IP and UDP headers. IPv6 has a 40 byte header, UDP adds an additional 8 bytes. This is a total overhead of 48 bytes. Ethernet's max packet size is 1500 bytes, 1500 - 48 = 1452.
MaxPostHandshakeCryptoFrameSize is the maximum size of CRYPTO frames we send after the handshake completes.
MaxServerUnprocessedPackets is the max number of packets stored in the server that are not yet processed.
MaxStreamCount is the maximum stream count value that can be sent in MAX_STREAMS frames and as the stream count in the transport parameters
MaxStreamFrameSorterGaps is the maximum number of gaps between received StreamFrames prevents DoS attacks against the streamFrameSorter
MaxStreamID is the maximum stream ID
MaxTrackedSentPackets is maximum number of sent packets saved for retransmission. When reached, no more packets will be sent. This value *must* be larger than MaxOutstandingSentPackets.
MaxUndecryptablePackets limits the number of undecryptable packets that are queued in the connection.
MinCoalescedPacketSize is the minimum size of a coalesced packet that we pack. If a packet has less than this number of bytes, we won't coalesce any more packets onto it.
MinConnectionIDLenInitial is the minimum length of the destination connection ID on an Initial packet.
MinInitialPacketSize is the minimum size an Initial packet is required to have.
MinPacingDelay is the minimum duration that is used for packet pacing If the packet packing frequency is higher, multiple packets might be sent at once. Example: For a packet pacing delay of 200μs, we would send 5 packets at once, wait for 1ms, and so forth.
MinReceivedStatelessResetSize is the minimum size of a received stateless reset, as specified in section 10.3 of RFC 9000.
MinRemoteIdleTimeout is the minimum value that we accept for the remote idle timeout
MinStatelessResetSize is the minimum size of a stateless reset packet that we send
MinStreamFrameBufferSize is the minimum data length of a received STREAM frame that we use the buffer for. This protects against a DoS where an attacker would send us very small STREAM frames to consume a lot of memory.
MinStreamFrameSize is the minimum size that has to be left in a packet, so that we add another STREAM frame. This avoids splitting up STREAM frames into small pieces, which has 2 advantages: 1. it reduces the framing overhead 2. it reduces the head-of-line blocking, when a packet is lost
MinUnknownVersionPacketSize is the minimum size a packet with an unknown version needs to have in order to trigger a Version Negotiation packet.
PacketNumberLen1 is a packet number length of 1 byte
PacketNumberLen2 is a packet number length of 2 bytes
PacketNumberLen3 is a packet number length of 3 bytes
PacketNumberLen4 is a packet number length of 4 bytes
PacketsPerConnectionID is the number of packets we send using one connection ID. If the peer provices us with enough new connection IDs, we switch to a new connection ID.
PacketType0RTT is the packet type of a 0-RTT packet
PacketTypeHandshake is the packet type of a Handshake packet
PacketTypeInitial is the packet type of an Initial packet
PacketTypeRetry is the packet type of a Retry packet
the perspectives
the perspectives
SkipPacketInitialPeriod is the initial period length used for packet number skipping to prevent an Optimistic ACK attack. Every time a packet number is skipped, the period is doubled, up to SkipPacketMaxPeriod.
SkipPacketMaxPeriod is the maximum period length used for packet number skipping.
StreamTypeBidi is a bidirectional stream
StreamTypeUni is a unidirectional stream
Estimated timer granularity. The loss detection timer will not be set to a value smaller than granularity.
TokenValidity is the duration that a (non-retry) token is considered valid
The version numbers, making grepping easier
The version numbers, making grepping easier
The version numbers, making grepping easier
WindowUpdateThreshold is the fraction of the receive window that has to be consumed before an higher offset is advertised to the client