Maurizio Casoni, Software Tools
Congestion Control Middleware Layer (C2ML)
C2ML is a cooperative transmission control protocol (C2ML-TCP) developed in the ELECOM Lab at the Department of Engineering "Enzo Ferrari".
The goal of this solution is to reduce latency and buffer usage in satellite networks, while boosting the throughput and improving the fairness.
Congestion Control Middleware Layer is composed by a new network layer which manage the flows’ congestion control and a protocol that distribute information about status of the network
- C2ML Design: In our reference scenario (Fig.1) a gateway provides the access over the bottleneck link and is aware of its characteristics (e.g. channel bandwidth). In such an environment, a practical and effective way to reduce queuing delay and improve fairness and throughput is to use a cooperative adjustment of the transmission rate in order to match the bottleneck link’s capacity. To distribute the congestion control management to the set of nodes and gateway, the addition of a layer (that we call Congestion Control Layer, C2L) in the network stack of nodes and gateway is required. As a key principle, we allow only sender-side modifications, in order to allow remote hosts and routers to be ran without any modification. C2L, which act as middleware between the application and the transport layer, should intercept all socket creations and can be seen as a logical channel between gateway and nodes. Therefore, in order to cooperatively adjust the transmission rate, a protocol is also required to regulate communications. Its focal point is the update of the active nodes’ rate when another node enter or exit the network. In fact, informing all other nodes about a new entry permits to avoid channel congestion, leading to an improved fairness (as flows know their maximum allowed rate avoiding to compete with each other in a cooperative environment) and to a reduced buffer usage, as we will show. On the other hand, informing all other nodes about a leaving permit the increase of remaining nodes’ maximum allowed rate, thus obtaining a higher throughput for each one. We call the protocol C2LP, Congestion Control Layer Protocol.
- C2ML Protocol: Nodes establish a session with the gateway, where the following control messages can be exchanged:
- CLIENT_HELLO, used by a node to inform the gateway it wants to send data;
- CLIENT_BYE, used by a node to inform the gateway it has finished the transmission;
- AVAIL_BW, used by the gateway to inform nodes about their available bandwidth.
- C2ML Implementation: When a node joins the network, it opens a control connection with the gateway. It waits to send the CLIENT_HELLO packet until the first application socket is created, and sends the CLIENT_BYE packet only when the last application socked is closed. In this way, the bandwidth’s subdivision between the same node’s flows is relegated to the node itself, triggered the first time when an AVAIL_BW packet is received. Such packet contains a parameter with the node’s maximum allowed bandwidth; the node itself is responsible to subdivide the value between its sockets and to not over-exceed it. The gateway knows the total bandwidth (BW) of the bottleneck link. When it receives a CLIENT_HELLO packet (or a CLIENT_BYE), it increments (or decrements) the number of active clients, recalculates the bandwidth allowed for each node and then sends n AVAIL_BW packets to the n connected nodes. A simple but effective algorithm for bandwidth’s subdivision is the Unweighted Fair Budget one. Other bandwidth management algorithms could also be employed without affecting the entire system, but the following invariant property must be respected : the total budget assigned to nodes is less or equal than the total available bandwidth. Not doing so will with most probability lead to congestion, resulting in throughput, fairness and perceived delay degradation.
C2ML Source files
Here you can find the source code and the scripts to run the experiments presented in the paper Reducing Latency in Satellite Emergency Networks through a Cooperative Transmission Control, where you have:
- The main c2ml.patch, which contains all files of our work. It is based over the ns-3 simulator, version 3.19 .
- The scripts, which ends in .sh, to run our simulations. All the environment is UNIX-based; no simulations or scripts are provided for the Windows platform.