-
User-space Multipath UDP in Mosh
Authors:
Matthieu Boutier,
Juliusz Chroboczek
Abstract:
In many network topologies, hosts have multiple IP addresses, and may choose among multiple network paths by selecting the source and destination addresses of the packets that they send. This can happen with multihomed hosts (hosts connected to multiple networks), or in multihomed networks using source-specific routing. A number of efforts have been made to dynamically choose between multiple ad…
▽ More
In many network topologies, hosts have multiple IP addresses, and may choose among multiple network paths by selecting the source and destination addresses of the packets that they send. This can happen with multihomed hosts (hosts connected to multiple networks), or in multihomed networks using source-specific routing. A number of efforts have been made to dynamically choose between multiple addresses in order to improve the reliability or the performance of network applications, at the network layer, as in Shim6, or at the transport layer, as in MPTCP. In this paper, we describe our experience of implementing dynamic address selection at the application layer within the Mobile Shell. While our work is specific to Mosh, we hope that it is generic enough to serve as a basis for designing UDP-based multipath applications or even more general APIs.
△ Less
Submitted 9 February, 2015;
originally announced February 2015.
-
A delay-based routing metric
Authors:
Baptiste Jonglez,
Matthieu Boutier,
Juliusz Chroboczek
Abstract:
In overlay networks, both local and long-distance links appear as a single hop to a routing protocol. Traditional routing metrics (based on hop count or packet loss) fail to take the differences between such links into account. In this paper, we study a metric based on packet delay that has been designed to improve routing in overlay networks. We show a lightweight technique for measuring delay as…
▽ More
In overlay networks, both local and long-distance links appear as a single hop to a routing protocol. Traditional routing metrics (based on hop count or packet loss) fail to take the differences between such links into account. In this paper, we study a metric based on packet delay that has been designed to improve routing in overlay networks. We show a lightweight technique for measuring delay asynchronously, and show how to use the data it provides for constructing a routing metric. Using delay naively leads to persistent routing oscillations, so our routing protocol implements a number of features to bound the frequency of oscillations. We show that our protocol causes no oscillations in real-world tests, and has oscillations with a period on the order of minutes in artificially constructed worst-case setups.
△ Less
Submitted 14 March, 2014;
originally announced March 2014.
-
Source-specific routing
Authors:
Matthieu Boutier,
Juliusz Chroboczek
Abstract:
Source-specific routing (not to be confused with source routing) is a routing technique where routing decisions depend on both the source and the destination address of a packet. Source-specific routing solves some difficult problems related to multihoming, notably in edge networks, and is therefore a useful addition to the multihoming toolbox. In this paper, we describe the semantics of source-s…
▽ More
Source-specific routing (not to be confused with source routing) is a routing technique where routing decisions depend on both the source and the destination address of a packet. Source-specific routing solves some difficult problems related to multihoming, notably in edge networks, and is therefore a useful addition to the multihoming toolbox. In this paper, we describe the semantics of source-specific packet forwarding, and describe the design and implementation of a source-specific extension to the Babel routing protocol as well as its implementation - to our knowledge, the first complete implementation of a source-specific dynamic routing protocol, including a disambiguation algorithm that makes our implementation work over widely available networking APIs. We further discuss interoperability between ordinary next-hop and source-specific dynamic routing protocols. Our implementation has seen a moderate amount of deployment, notably as a testbed for the IETF Homenet working group.
△ Less
Submitted 30 March, 2015; v1 submitted 3 March, 2014;
originally announced March 2014.
-
Generating events with style
Authors:
Matthieu Boutier,
Gabriel Kerneis
Abstract:
Threads and events are two common abstractions for writing concurrent programs. Because threads are often more convenient, but events more efficient, it is natural to want to translate the former into the latter. However, whereas there are many different event-driven styles, existing translators often apply ad-hoc rules which do not reflect this diversity. We analyse various control-flow and data-…
▽ More
Threads and events are two common abstractions for writing concurrent programs. Because threads are often more convenient, but events more efficient, it is natural to want to translate the former into the latter. However, whereas there are many different event-driven styles, existing translators often apply ad-hoc rules which do not reflect this diversity. We analyse various control-flow and data-flow encodings in real-world event-driven code, and we observe that it is possible to generate any of these styles automatically from threaded code, by applying certain carefully chosen classical program transformations. In particular, we implement two of these transformations, lambda lifting and environments, in CPC, an extension of the C language for writing concurrent systems. Finally, we find out that, although rarely used in real-world programs because it is tedious to perform manually, lambda lifting yields better performance than environments in most of our benchmarks.
△ Less
Submitted 17 October, 2012; v1 submitted 16 October, 2012;
originally announced October 2012.