Skip to content

Secenario Discussion: multipath transportation on industrial routers with 4G and 5G modems #1999

@alex-cheung92

Description

@alex-cheung92

My program mainly depends on quic multipath extension.
I read the source code methods such as picoquic_prepare_next_packet_ex ,picoquic_prepare_packet_ex, picoquic_handle_send_paths and picoquic_select_next_path_tuple It seems when multipath works in round robin order as the comment says

* For each path:
*    - For each tuple:
*         - if a first challenge is required now, the path/tuple is selected immediately.
*         - if a response is required now, the path/tuple is selected immediately.
*         - if a challenge or a response is required after the current time:
*               - the next time is update.
* If there is not an immediate selection:
*    for each path in available mode. in round robin order:
*       - if there is data or ACK to send:
*           the path is selected, with first tuple.
* If no path selected:
*    select the default path or tuple.
 */

Months before I was testing my code in two 4G modems , two paths works round robin It's fine.

But when different path with different bandwith, 4G modem maybe 10-20Mbps, and 5G modem about 70-100Mbps, I want to give diffrent weight to diffrent path according to their bandwitdth.
picoquic_set_stream_path_affinity can't help because I don't known how many packets a TCP 4 tuples will send, and don't known how may streams concurrent , So I can't divide streams into different path by number of streams.

So is there any plan to support packet scheduler to decide which path to send. Or maybe I fork the source code and do some modifications in method picoquic_select_next_path_tuple, will it affect some where else in the whole picoquic stack ? Can you give me some ideas or suggestions ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions