logo SBA


Digital archive of theses discussed at the University of Pisa


Thesis etd-05032018-101302

Thesis type
Tesi di dottorato di ricerca
Thesis title
High-performance network programming for multicore architectures.
Academic discipline
Course of study
tutor Ing. Procissi, Gregorio
relatore Prof. Giordano, Stefano
  • functional programming
  • multi-core architectures
  • network programming
  • performance
Graduation session start date
Release date
Over the last few years the Internet has become a pervasive network that inter- connects billions of users and heterogeneous devices. The speed at which ser- vices mutate and the increasing number of devices (e.g., the advent of Internet Thing) call for innovative tools of network management and monitoring.
This rapid evolution poses new challenges for the scientific community and the industry, which are facing similar problems, though with different objectives.
The scientific community has moved to seek accelerated software solutions for the Internet traffic management on low-cost platforms. The industry, to meet new market demands, is called to develop more and more efficient products, with flexibility and reconfigurability as primary goals.
The choice to replace old and expensive equipment with personal computers (PC), has allowed achieving better performance and functionality, reducing both the devel- opment times and the production costs. Consequently, the cooperation between the scientific community and industry has enabled the creation of two new technologies dedicated to the development of the network and its services: SDN (software defined network) and NFV (network virtualization function).
In this context, the thesis delves into network programming for multi-core archi- tectures, with the goal to identify and formalize the techniques required to compete with the growing speed of the network and the often underused parallelism of modern commodity hardware.
Most of the general purpose languages adopted for the development of network ap- plications are still inadequate, due to the complexity of parallel programming. Therefore developers fail to create applications with the goal of performance, security, and flexibility at the same time.
On this premise, we set ourselves the goal of making a functional framework for the Linux operating system, equipped with a specific programming language, allowing a rapid development of high-performance network applications in a safe and straight forward manner.
In chapter 1 we introduce the reader to the efficient network programming, and from that point of view, we eviscerate in the gory details the technicalities of concurrency and parallelism in modern architectures.
The chapters that follow revolve around the key aspects of such a topic.
In chapter 2 we describe the internals of the PFQ framework and in particular its kernel-bypass architecture, the programming user interfaces and the performance ob- tainable with its use in network applications.
Later, in chapter 3 we tackle the foundation of traffic distribution and highlight the benefit deriving from the adoption of PFQ as an accelerated engine to enable parallel execution of legacy applications. In particular, to exploit the multi-processor architec- tures, we analyze an extension for the standard libpcap interface with fanout algorithms based on the "divide and conquer" principle.
Chapter 4 introduces the reader to the DSL (Domain Specific Language) area and presents a prototyped functional language designed for both stateless and stateful pro- cessing of network packets. In short, we start with the theoretical background of func- tional languages and category theory (monads); we give a formal description of the grammar, and then we evaluate two implementations, for both the kernel- and user- space, in term of flexibility and performance.
Finally, in chapter 5 we show some use cases and applications related to high- performance network programming.
We present the BEBA flavor OpenFlow Soft Switch, in which PFQ is used as an accelerated engine for packet switching. The acceleration obtained – quantified with a factor between 90 and 100 – is the combined effect of the improvements achieved on a single core with the parallelism of multiple core architectures.
Afterwards, we describe a scenario where PFQ is deployed as a tool to perform mea- surements on a 10Gbit network, with the aim to prove the correctness of an algorithm for enforcing fair-bandwidth among many TCP-like senders. In this case, the use of the framework is necessary to carry out non-invasive measurements not affecting the normal operation of the Linux kernel stack.
In the end, we present a system designed for anomaly detection where the framework is used as a building block of multiple distributed probes intended to collect traffic from a backbone network and detect different kinds of anomalies. In particular, we present the library that implements a set of composable probabilistic counters which are used to spot heavy hitters, taking advantage of their fundamental aggregation property.