{'fraction_non_alphanumeric': 0.014267185473411154, 'fraction_numerical': 0.0, 'mean_word_length': 5.510548523206751, '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}}
Optimizing Performance On Unreliable, Dynamic Networks

This paper discusses link-assignment and adaptive routing algorithms that have been developed for networks consisting of a large number of mobile nodes having directive links. We focus on the special case where data rates are large (tens of Mbits/sec) and the propagation delay between nodes may be large compared to packet transmission delay. In such circumstances, queue sizes at store-and-forward nodes can become extravagant if retransmissions are required because of lost or damaged packets. The algorithms employ techniques that provide a high probability of successful message delivery on the first transmission attempt in the unreliable network. The link-assignment algorithm builds and maintains a link topology that provides multiple node-disjoint paths between each source and destination. Decisions regarding topology changes are also based on link permanency and ability to carry the anticipated traffic load. The adaptive routing algorithm establishes routing tables for multiple independent paths that are maximally node-disjoint between all sources and destinations. Load splitting techniques are used to achieve better load balancing and also to provide a mechanism for rapid adaptation around failed links. All algorithms are distributed in the sense that each node makes independent decisions. Heuristic optimization techniques are used to reduce computation time to within affordable limits. The routing algorithm also responds well to transients in traffic loading.