Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions doc/admin-guide/files/records.config.en.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4092,13 +4092,13 @@ removed in the future without prior notice.
This is just for debugging. Do not change it from the default value unless
you really understand what this is.

.. ts:cv:: CONFIG proxy.config.quic.congestion_control.initial_window_scale INT 10
.. ts:cv:: CONFIG proxy.config.quic.congestion_control.initial_window INT 12000
:reloadable:

This is just for debugging. Do not change it from the default value unless
you really understand what this is.

.. ts:cv:: CONFIG proxy.config.quic.congestion_control.minimum_window_scale INT 2
.. ts:cv:: CONFIG proxy.config.quic.congestion_control.minimum_window INT 2400
:reloadable:

This is just for debugging. Do not change it from the default value unless
Expand Down
2 changes: 2 additions & 0 deletions include/ts/apidefs.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -1232,7 +1232,9 @@ extern tsapi const char *const TS_ALPN_PROTOCOL_HTTP_1_0;
extern tsapi const char *const TS_ALPN_PROTOCOL_HTTP_1_1;
extern tsapi const char *const TS_ALPN_PROTOCOL_HTTP_2_0;
extern tsapi const char *const TS_ALPN_PROTOCOL_HTTP_3;
extern tsapi const char *const TS_ALPN_PROTOCOL_HTTP_3_D27;
extern tsapi const char *const TS_ALPN_PROTOCOL_HTTP_QUIC;
extern tsapi const char *const TS_ALPN_PROTOCOL_HTTP_QUIC_D27;

extern tsapi int TS_ALPN_PROTOCOL_INDEX_HTTP_0_9;
extern tsapi int TS_ALPN_PROTOCOL_INDEX_HTTP_1_0;
Expand Down
2 changes: 2 additions & 0 deletions include/tscore/ink_inet.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ extern const std::string_view IP_PROTO_TAG_HTTP_1_1;
extern const std::string_view IP_PROTO_TAG_HTTP_2_0;
extern const std::string_view IP_PROTO_TAG_HTTP_QUIC;
extern const std::string_view IP_PROTO_TAG_HTTP_3;
extern const std::string_view IP_PROTO_TAG_HTTP_QUIC_D27;
extern const std::string_view IP_PROTO_TAG_HTTP_3_D27;

struct IpAddr; // forward declare.

Expand Down
35 changes: 25 additions & 10 deletions iocore/net/P_QUICNetVConnection.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,10 +147,11 @@ class QUICNetVConnection : public UnixNetVConnection,
public:
QUICNetVConnection();
~QUICNetVConnection();
void init(QUICConnectionId peer_cid, QUICConnectionId original_cid, UDPConnection *, QUICPacketHandler *,
void init(QUICVersion version, QUICConnectionId peer_cid, QUICConnectionId original_cid, UDPConnection *, QUICPacketHandler *,
QUICResetTokenTable *rtable);
void init(QUICConnectionId peer_cid, QUICConnectionId original_cid, QUICConnectionId first_cid, UDPConnection *,
QUICPacketHandler *, QUICResetTokenTable *rtable, QUICConnectionTable *ctable);
void init(QUICVersion version, QUICConnectionId peer_cid, QUICConnectionId original_cid, QUICConnectionId first_cid,
QUICConnectionId retry_cid, UDPConnection *, QUICPacketHandler *, QUICResetTokenTable *rtable,
QUICConnectionTable *ctable);

// accept new conn_id
int acceptEvent(int event, Event *e);
Expand Down Expand Up @@ -199,13 +200,20 @@ class QUICNetVConnection : public UnixNetVConnection,
QUICConnectionId peer_connection_id() const override;
QUICConnectionId original_connection_id() const override;
QUICConnectionId first_connection_id() const override;
QUICConnectionId retry_source_connection_id() const override;
QUICConnectionId initial_source_connection_id() const override;
QUICConnectionId connection_id() const override;
std::string_view cids() const override;
const QUICFiveTuple five_tuple() const override;
uint32_t pmtu() const override;
NetVConnectionContext_t direction() const override;
QUICVersion negotiated_version() const override;
std::string_view negotiated_application_name() const override;
bool is_closed() const override;
bool is_at_anti_amplification_limit() const override;
bool is_address_validation_completed() const override;
bool is_handshake_completed() const override;
bool has_keys_for(QUICPacketNumberSpace space) const override;

// QUICConnection (QUICFrameHandler)
std::vector<QUICFrameType> interests() override;
Expand All @@ -226,17 +234,20 @@ class QUICNetVConnection : public UnixNetVConnection,

QUICConfig::scoped_config _quic_config;

QUICConnectionId _peer_quic_connection_id; // dst cid in local
QUICConnectionId _peer_old_quic_connection_id; // dst previous cid in local
QUICConnectionId _original_quic_connection_id; // dst cid of initial packet from client
QUICConnectionId _first_quic_connection_id; // dst cid of initial packet from client that doesn't have retry token
QUICConnectionId _quic_connection_id; // src cid in local
QUICConnectionId _peer_quic_connection_id; // dst cid in local
QUICConnectionId _peer_old_quic_connection_id; // dst previous cid in local
QUICConnectionId _original_quic_connection_id; // dst cid of initial packet from client
QUICConnectionId _first_quic_connection_id; // dst cid of initial packet from client that doesn't have retry token
QUICConnectionId _retry_source_connection_id; // src cid used for sending Retry packet
QUICConnectionId _initial_source_connection_id; // src cid used for Initial packet
QUICConnectionId _quic_connection_id; // src cid in local
QUICFiveTuple _five_tuple;
bool _connection_migration_initiated = false;

char _cids_data[MAX_CIDS_SIZE] = {0};
std::string_view _cids;

QUICVersion _initial_version;
UDPConnection *_udp_con = nullptr;
QUICPacketProtectionKeyInfo _pp_key_info;
QUICPacketHandler *_packet_handler = nullptr;
Expand Down Expand Up @@ -277,6 +288,8 @@ class QUICNetVConnection : public UnixNetVConnection,
uint32_t _state_closing_recv_packet_window = 1;
uint64_t _flow_control_buffer_size = 1024;

void _init_submodules();

void _schedule_packet_write_ready(bool delay = false);
void _unschedule_packet_write_ready();
void _close_packet_write_ready(Event *data);
Expand Down Expand Up @@ -304,9 +317,9 @@ class QUICNetVConnection : public UnixNetVConnection,
uint64_t _maximum_stream_frame_data_size();

Ptr<IOBufferBlock> _store_frame(Ptr<IOBufferBlock> parent_block, size_t &size_added, uint64_t &max_frame_size, QUICFrame &frame,
std::vector<QUICFrameInfo> &frames);
std::vector<QUICSentPacketInfo::FrameInfo> &frames);
QUICPacketUPtr _packetize_frames(uint8_t *packet_buf, QUICEncryptionLevel level, uint64_t max_packet_size,
std::vector<QUICFrameInfo> &frames);
std::vector<QUICSentPacketInfo::FrameInfo> &frames);
void _packetize_closing_frame();
QUICPacketUPtr _build_packet(uint8_t *packet_buf, QUICEncryptionLevel level, const Ptr<IOBufferBlock> &parent_block,
bool retransmittable, bool probing, bool crypto);
Expand Down Expand Up @@ -337,7 +350,9 @@ class QUICNetVConnection : public UnixNetVConnection,
QUICPacketUPtr _dequeue_recv_packet(uint8_t *packet_buf, QUICPacketCreationResult &result);
void _validate_new_path(const QUICPath &path);

bool _handshake_completed = false;
int _complete_handshake_if_possible();

void _switch_to_handshake_state();
void _switch_to_established_state();
void _switch_to_closing_state(QUICConnectionErrorUPtr error);
Expand Down
2 changes: 1 addition & 1 deletion iocore/net/P_QUICPacketHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class QUICPacketHandlerIn : public NetAccept, public QUICPacketHandler
private:
void _recv_packet(int event, UDPPacket *udp_packet) override;
int _stateless_retry(const uint8_t *buf, uint64_t buf_len, UDPConnection *connection, IpEndpoint from, QUICConnectionId dcid,
QUICConnectionId scid, QUICConnectionId *original_cid);
QUICConnectionId scid, QUICConnectionId *original_cid, QUICConnectionId *retry_cid, QUICVersion version);
bool _send_stateless_reset(QUICConnectionId dcid, uint32_t instance_id, UDPConnection *udp_con, IpEndpoint &addr,
size_t maximum_size);
void _send_invalid_token_error(const uint8_t *initial_packet, uint64_t initial_packet_len, UDPConnection *connection,
Expand Down
2 changes: 1 addition & 1 deletion iocore/net/QUICNetProcessor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ QUICNetProcessor::connect_re(Continuation *cont, sockaddr const *remote_addr, Ne
QUICConnectionId client_dst_cid;
client_dst_cid.randomize();
// vc->init set handler of vc `QUICNetVConnection::startEvent`
vc->init(client_dst_cid, client_dst_cid, con, packet_handler, this->_rtable);
vc->init(QUIC_SUPPORTED_VERSIONS[0], client_dst_cid, client_dst_cid, con, packet_handler, this->_rtable);
packet_handler->init(vc);

// Connection ID will be changed
Expand Down
Loading