Mercurial > hg > nginx
comparison src/event/quic/ngx_event_quic_connection.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 | 2880f60a80c3 |
comparison
equal
deleted
inserted
replaced
9146:f3412ec3b6d1 | 9147:58afcd72446f |
---|---|
64 (((c)->udp) ? (((ngx_quic_socket_t *)((c)->udp))->quic) : NULL) | 64 (((c)->udp) ? (((ngx_quic_socket_t *)((c)->udp))->quic) : NULL) |
65 | 65 |
66 #define ngx_quic_get_socket(c) ((ngx_quic_socket_t *)((c)->udp)) | 66 #define ngx_quic_get_socket(c) ((ngx_quic_socket_t *)((c)->udp)) |
67 | 67 |
68 | 68 |
69 typedef enum { | |
70 NGX_QUIC_PATH_IDLE = 0, | |
71 NGX_QUIC_PATH_VALIDATING, | |
72 NGX_QUIC_PATH_WAITING, | |
73 NGX_QUIC_PATH_MTUD | |
74 } ngx_quic_path_state_e; | |
75 | |
76 | |
69 struct ngx_quic_client_id_s { | 77 struct ngx_quic_client_id_s { |
70 ngx_queue_t queue; | 78 ngx_queue_t queue; |
71 uint64_t seqnum; | 79 uint64_t seqnum; |
72 size_t len; | 80 size_t len; |
73 u_char id[NGX_QUIC_CID_LEN_MAX]; | 81 u_char id[NGX_QUIC_CID_LEN_MAX]; |
87 ngx_queue_t queue; | 95 ngx_queue_t queue; |
88 struct sockaddr *sockaddr; | 96 struct sockaddr *sockaddr; |
89 ngx_sockaddr_t sa; | 97 ngx_sockaddr_t sa; |
90 socklen_t socklen; | 98 socklen_t socklen; |
91 ngx_quic_client_id_t *cid; | 99 ngx_quic_client_id_t *cid; |
100 ngx_quic_path_state_e state; | |
92 ngx_msec_t expires; | 101 ngx_msec_t expires; |
93 ngx_uint_t tries; | 102 ngx_uint_t tries; |
94 ngx_uint_t tag; | 103 ngx_uint_t tag; |
104 size_t mtu; | |
105 size_t mtud; | |
106 size_t max_mtu; | |
95 off_t sent; | 107 off_t sent; |
96 off_t received; | 108 off_t received; |
97 u_char challenge1[8]; | 109 u_char challenge1[8]; |
98 u_char challenge2[8]; | 110 u_char challenge2[8]; |
99 uint64_t seqnum; | 111 uint64_t seqnum; |
112 uint64_t mtu_pnum[NGX_QUIC_PATH_RETRIES]; | |
100 ngx_str_t addr_text; | 113 ngx_str_t addr_text; |
101 u_char text[NGX_SOCKADDR_STRLEN]; | 114 u_char text[NGX_SOCKADDR_STRLEN]; |
102 unsigned validated:1; | 115 ngx_uint_t validated; /* unsigned validated:1; */ |
103 unsigned validating:1; | |
104 }; | 116 }; |
105 | 117 |
106 | 118 |
107 struct ngx_quic_socket_s { | 119 struct ngx_quic_socket_s { |
108 ngx_udp_connection_t udp; | 120 ngx_udp_connection_t udp; |