package
0.0.0-20240605145135-70feac92938f
Repository: https://github.com/getstream/quic-go.git
Documentation: pkg.go.dev
# Functions
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.
DecodePacketNumber calculates the packet number based on the received packet number, its length and the last seen packet number.
GenerateConnectionID generates a connection ID using cryptographic random.
GenerateConnectionIDForInitial generates a connection ID for the Initial packet.
GetGreasedVersions adds one reserved version number to a slice of version numbers, at a random position.
GetPacketNumberLengthForHeader 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.
IsSupportedVersion returns true if the server supports this version.
IsValidVersion says if the version is known to quic-go.
ParseConnectionID interprets b as a Connection ID.
No description provided by the author
ReadConnectionID reads a connection ID of length len from the given io.Reader.
# Constants
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.
512 kb.
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.
15 MB.
6 MB.
7 MB.
7 MB.
11.
00.
No description provided by the author
10.
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.
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.
InvalidPacketNumber is a stream ID that is invalid.
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.
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.
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.
MaxAckFrameSize is the maximum size for an ACK frame that we write Due to the varint encoding, ACK frames can grow (almost) indefinitely large.
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.
MaxIssuedConnectionIDs is the maximum number of connection IDs that we're issuing at the same time.
MaxKeepAliveInterval is the maximum time until we send a packet to keep a connection alive.
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.
MaxOutstandingSentPackets is maximum number of packets saved for retransmission.
MaxPacketBufferSize maximum packet size of any QUIC packet, based on ethernet's max size, minus the IP and UDP headers.
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.
MaxTrackedSentPackets is maximum number of sent packets saved for retransmission.
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.
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.
MinRemoteIdleTimeout is the minimum value that we accept for the remote idle timeout.
token */.
MinStreamFrameBufferSize is the minimum data length of a received STREAM frame that we use the buffer for.
MinStreamFrameSize is the minimum size that has to be left in a packet, so that we add another STREAM frame.
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.
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.
RetiredConnectionIDDeleteTimeout is the time we keep closed connections around in order to retransmit the CONNECTION_CLOSE.
SkipPacketInitialPeriod is the initial period length used for packet number skipping to prevent an Optimistic ACK attack.
SkipPacketMaxPeriod is the maximum period length used for packet number skipping.
StreamTypeBidi is a bidirectional stream.
StreamTypeUni is a unidirectional stream.
Estimated timer 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.
# Variables
No description provided by the author
SupportedVersions lists the versions that the server supports must be in sorted descending order.
# Structs
A ConnectionID in QUIC.
No description provided by the author
# Type aliases
An ArbitraryLenConnectionID is a QUIC Connection ID able to represent Connection IDs according to RFC 8999.
A ByteCount in QUIC.
No description provided by the author
EncryptionLevel is the encryption level Default value is Unencrypted.
KeyPhase is the key phase.
KeyPhaseBit is the key phase bit.
A PacketNumber in QUIC.
PacketNumberLen is the length of the packet number in bytes.
The PacketType is the Long Header Type.
Perspective determines if we're acting as a server or a client.
A StatelessResetToken is a stateless reset token.
A StreamID in QUIC.
StreamNum is the stream number.
StreamType encodes if this is a unidirectional or bidirectional stream.
Version is a version number as int.