{'fraction_non_alphanumeric': 0.0231809401159047, 'fraction_numerical': 0.0, 'mean_word_length': 5.395061728395062, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A processor-sharing heuristic for multipath congestion control

Protocols are currently being designed where a connection can simultaneously send traffic across multiple routes (or paths) of a communication network; for example, the IETF's MP-TCP protocol. Traditional single-path congestioncontrol protocols, which increase and decrease transmission rates depending on the level of congestion, can be argued to implicitly solve a network-wide utility optimization in a decentralized manner. It is well-known that this optimization implies desirable properties such as fairness. However, it is not really clear in the literature how to achieve such desirable optimization when a connection can use multiple paths. In this case, a connection aims at balancing traffic between the available routes striving a tradeoff between congested and uncongested routes. In this multipath framework, we propose a simple load-balancing heuristic for splitting traffic among multiple routes. Our load-balancer is inspired by the modus operandi of processor-sharing queues and, essentially, operates as follows: every time a packet is acknowledged on a route, increase the congestion window of that route by one and decrease the congestion window of a route selected with probability proportional to the size of its congestion window. In our main result, we argue that this simple end-to-end policy achieves a desirable network-wide utility optimization for multipath routing, when the network is congested. Variants of our heuristic and its implications are discussed.