|SANVITO DAVIDE||Cycle: XXXI |
Tutor: CESANA MATTEO
Advisor: CAPONE ANTONIO Major Research topic
:Traffic management in networks with programmable data planesAbstract:
The increased network programmability brought by the Software-Defined Networking paradigm provides the needed flexibility for frequent network updates, enabling online traffic optimization based on periodic traffic measurements and predictions.
The achievable network reconfiguration rate is however limited by several aspects including the uncertain nature of the traffic, the limited speed of flow programming in hardware and the traffic monitoring overhead.
In this work, we focus on the fundamental problem of deciding whether, when and how to reconfigure the network during traffic evolution.
Given a set of measured Traffic Matrices, we propose a new approach to cluster them in the multi-dimensional traffic space taking into account multiple domains, including the routing.
For each cluster, we compute a robust routing configuration to cope with variations within the traffic sub-space defined by the cluster.
We also allow adjacent clusters to overlap to make smoother the transition between routing configurations and help consistent update mechanisms.
Results show that our method can reduce the number of reconfigurations with a small deviation of performance with respect to the continuous update of the network.
Moreover, we present an experimental platform where our solution is implemented in ONOS, a production-ready SDN controller.
Despite the robust nature of each routing configuration, the controller intervention is still required to handle exceptional events such as network failures and congestion.
These kinds of scenarios challenge the strict decoupling of the control plane from the data plane of the SDN paradigm because the intrinsic control channel delay and control traffic processing time at the controller prevent a prompt and scalable reaction.
Switches are indeed unable to modify their configuration without relying on the external controller.
To cope with such events, we designed two applications based on the capabilities provided by advanced stateful programmable data planes which enable the offloading of control functions to the device to support the adaptation of the forwarding configuration in the fast-path according to the locally observable state.
We show how it is possible to offload to the data plane the detection and the recovery of network failures in order to reduce both the recovery latency and packet loss while avoiding to rely on the external controller, even for the case of distant failures.
Regarding the network congestion, we focus on data-center scenarios and show that we can delegate to the networking device the tasks of monitoring and re-routing large flows colliding on a same path in order to quickly balance the load and improve the flow completion times.
Latest advances in the data plane programmability pushed further the potential of SDN.
The possibility of programming the packet parser and defining custom per-packet actions enables a new class of applications beyond pure packet forwarding.
The potential performance gains in terms of higher throughput and lower latency make appealing the offloading of part of the application logic typically run on end-hosts within the network devices, under the in-network computing paradigm.
We analyze the option of running neural networks inference on commodity SmartNICs.
By employing neural network quantization techniques we can reduce their memory and computational requirements to fit the limits of the networking hardware.
When considering traffic analysis applications with rather small neural network models, our prototype can process millions of network flows per second while forwarding traffic at 40Gb/s.
By avoiding the data transfer overhead to the host system and the machine learning accelerator, the prototype can significantly improve the scalability of the system in terms of lower processing latency and higher throughput compared to an equivalent system implemented on a general-purpose CPU.