comparison src/event/quic/ngx_event_quic_migration.h @ 9147:58afcd72446f

QUIC: path MTU discovery. MTU selection starts by doubling the initial MTU until the first failure. Then binary search is used to find the path MTU.
author Roman Arutyunyan <arut@nginx.com>
date Mon, 14 Aug 2023 09:21:27 +0400
parents bba136612fe4
children cc16989c6d61
comparison
equal deleted inserted replaced
9146:f3412ec3b6d1 9147:58afcd72446f
16 #define NGX_QUIC_PATH_PROBE 0 16 #define NGX_QUIC_PATH_PROBE 0
17 #define NGX_QUIC_PATH_ACTIVE 1 17 #define NGX_QUIC_PATH_ACTIVE 1
18 #define NGX_QUIC_PATH_BACKUP 2 18 #define NGX_QUIC_PATH_BACKUP 2
19 19
20 #define ngx_quic_path_dbg(c, msg, path) \ 20 #define ngx_quic_path_dbg(c, msg, path) \
21 ngx_log_debug6(NGX_LOG_DEBUG_EVENT, c->log, 0, \ 21 ngx_log_debug7(NGX_LOG_DEBUG_EVENT, c->log, 0, \
22 "quic path seq:%uL %s sent:%O recvd:%O state:%s%s", \ 22 "quic path seq:%uL %s tx:%O rx:%O valid:%ui st:%d mtu:%uz",\
23 path->seqnum, msg, path->sent, path->received, \ 23 path->seqnum, msg, path->sent, path->received, \
24 path->validated ? "V": "N", path->validating ? "R": ""); 24 path->validated, path->state, path->mtu);
25 25
26 ngx_int_t ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, 26 ngx_int_t ngx_quic_handle_path_challenge_frame(ngx_connection_t *c,
27 ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f); 27 ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f);
28 ngx_int_t ngx_quic_handle_path_response_frame(ngx_connection_t *c, 28 ngx_int_t ngx_quic_handle_path_response_frame(ngx_connection_t *c,
29 ngx_quic_path_challenge_frame_t *f); 29 ngx_quic_path_challenge_frame_t *f);
34 34
35 ngx_int_t ngx_quic_set_path(ngx_connection_t *c, ngx_quic_header_t *pkt); 35 ngx_int_t ngx_quic_set_path(ngx_connection_t *c, ngx_quic_header_t *pkt);
36 ngx_int_t ngx_quic_handle_migration(ngx_connection_t *c, 36 ngx_int_t ngx_quic_handle_migration(ngx_connection_t *c,
37 ngx_quic_header_t *pkt); 37 ngx_quic_header_t *pkt);
38 38
39 void ngx_quic_path_validation_handler(ngx_event_t *ev); 39 void ngx_quic_path_handler(ngx_event_t *ev);
40
41 void ngx_quic_discover_path_mtu(ngx_connection_t *c, ngx_quic_path_t *path);
42 ngx_int_t ngx_quic_handle_path_mtu(ngx_connection_t *c,
43 ngx_quic_path_t *path, uint64_t min, uint64_t max);
40 44
41 #endif /* _NGX_EVENT_QUIC_MIGRATION_H_INCLUDED_ */ 45 #endif /* _NGX_EVENT_QUIC_MIGRATION_H_INCLUDED_ */