Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[+] Add support for multipath draft-11 and 12 #466

Open
wants to merge 36 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b7d04fa
[+] enable draft-11 transport parameter
Yanmei-Liu Oct 29, 2024
e0484f9
[+] add default parameter value
Yanmei-Liu Oct 29, 2024
8d1931c
[+] update draft-11 path abandon encoding / decoding
Yanmei-Liu Oct 29, 2024
c2727df
[+] Add PATH_BLOCKED frame
Yanmei-Liu Oct 29, 2024
ca0f6b8
[=] 参数调整
Yanmei-Liu Oct 29, 2024
95ce836
[+] add path blocked trigger
Yanmei-Liu Oct 29, 2024
0dae7ac
[~] fix remote_max_path_id update
Yanmei-Liu Oct 29, 2024
4cbb87a
[+] update for remote_max_path_id and local_max_path_id
Yanmei-Liu Oct 29, 2024
ea5184d
[+] limit that the path blocked could only sent by client side
Yanmei-Liu Nov 2, 2024
3889531
[~] 调整固定路径限制为当前remote和local最小值
Yanmei-Liu Nov 2, 2024
416c981
[+] raise up the limit for max paths
Yanmei-Liu Nov 2, 2024
25dd73d
[~] bug fix for xqc_cid_set_get_largest_seq_or_rpt
Yanmei-Liu Nov 2, 2024
d3b3dab
[~] bugfix for xqc_cid_set_get_largest_seq_or_rpt
Yanmei-Liu Nov 2, 2024
d095a17
[=] add more logs
Yanmei-Liu Nov 2, 2024
22e2ddb
[+] fix path block trigger xqc_conn_add_path_cid_sets
Yanmei-Liu Nov 3, 2024
3d68c71
[+] add support for draft-11 error codes and cid rotation
Yanmei-Liu Dec 4, 2024
0ae0a78
[=] remove unused code
Yanmei-Liu Dec 4, 2024
e7935eb
[=] remove unused code
Yanmei-Liu Dec 4, 2024
2fd8e79
[+] add resource limit for max path id update
Yanmei-Liu Dec 4, 2024
f16e252
[~] adjust return value and fix old bug of casting
Yanmei-Liu Dec 4, 2024
36b7cc5
[=] delete unused comments
Yanmei-Liu Dec 4, 2024
3e6ca43
[=] revert unused code
Yanmei-Liu Dec 4, 2024
5d89d8b
[=] add comments for new APIs.
Yanmei-Liu Dec 4, 2024
666d3c2
[~] adjust resource limit
Yanmei-Liu Dec 4, 2024
7dbb547
[=] add log
Yanmei-Liu Dec 4, 2024
f9a1eab
[~] changing to uint64_t
Yanmei-Liu Dec 4, 2024
d0abe05
[+] changing log
Yanmei-Liu Dec 4, 2024
aaf82bb
[+] adjust check for max path ids
Yanmei-Liu Dec 4, 2024
167bf7a
[+] add support for draft-12 transport param and new frame type
Yanmei-Liu Jan 28, 2025
146b53b
[+] add path cids blocked trigger logic.
Yanmei-Liu Jan 28, 2025
fc7ca66
[+] add version restriction
Yanmei-Liu Jan 28, 2025
85f79d9
[+] add transport param decode type
Yanmei-Liu Jan 28, 2025
d6dfe4f
[+] add handshake complete check for sending frame
Yanmei-Liu Jan 28, 2025
38ce8e6
[+] add path_cids_blocked frame process
Yanmei-Liu Jan 28, 2025
0c381d4
[+] add logs for new frames
Yanmei-Liu Jan 28, 2025
1980c17
[+] add flag for state cids_blocked has been sent
Yanmei-Liu Jan 28, 2025
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
Prev Previous commit
Next Next commit
[+] add logs for new frames
Yanmei-Liu committed Jan 28, 2025

Verified

This commit was signed with the committer’s verified signature.
commit 0c381d4fd96dc8ce3587ca38226a312391e69223
12 changes: 9 additions & 3 deletions src/transport/xqc_frame.c
Original file line number Diff line number Diff line change
@@ -2108,10 +2108,17 @@ xqc_process_path_cids_blocked_frame(xqc_connection_t *conn, xqc_packet_in_t *pac
return ret;
}

xqc_cid_set_inner_t* inner_set = xqc_get_path_cid_set(&conn->scid_set, path_id);
uint64_t scid_unused_count = 0;
if (inner_set) {
scid_unused_count = inner_set->unused_cnt;
}

xqc_log(conn->log, XQC_LOG_DEBUG,
"|path_id:%ui|pre_local_max_path_id:%ui|create_path_count:%ui|max_paths_count:%ui|",
"|path_id:%ui|local_max_path_id:%ui|create_path_count:%ui|max_paths_count:%ui|scid_unused_count:%ui|",
path_id, conn->local_max_path_id,
conn->create_path_count, conn->max_paths_count);
conn->create_path_count, conn->max_paths_count,
scid_unused_count);

if (conn->local_max_path_id < path_id) {
xqc_log(conn->log, XQC_LOG_ERROR,
@@ -2121,7 +2128,6 @@ xqc_process_path_cids_blocked_frame(xqc_connection_t *conn, xqc_packet_in_t *pac

/* try to add one new cid for the path id */
uint64_t unused_limit = 2;
xqc_cid_set_inner_t* inner_set = xqc_get_path_cid_set(&conn->scid_set, path_id);
if (inner_set
&& (inner_set->unused_cnt + inner_set->used_cnt) < conn->remote_settings.active_connection_id_limit
&& inner_set->unused_cnt < unused_limit)
2 changes: 1 addition & 1 deletion src/transport/xqc_packet_out.c
Original file line number Diff line number Diff line change
@@ -1857,7 +1857,7 @@ xqc_write_path_cids_blocked_to_packet(xqc_connection_t *conn, uint64_t path_id)

ssize_t ret = XQC_ERROR;
xqc_packet_out_t *packet_out;
xqc_log(conn->log, XQC_LOG_DEBUG, "|path blocked max_path_id:%ui|", path_id);
xqc_log(conn->log, XQC_LOG_DEBUG, "|path_id:%ui|", path_id);

packet_out = xqc_write_new_packet(conn, XQC_PTYPE_SHORT_HEADER);
if (packet_out == NULL) {