The NaaS NetAgg system

Data centre (DC) networks often run “big data” applications that exchange large amount of data between end hosts. For example, in partition/aggregation applications such as data analysis frameworks, graph processing systems, and interactive query processing systems, a job is partitioned into many independent sub-tasks, which are then executed in parallel by different worker machines; and, then, these workers send partial results to one or more aggregation servers to aggregate them and produce a final result. An open challenge of this partition/aggregation model is that it results in high contention for network resources in a DC, due to the large amount of data exchanged between machines.

The NetAgg Approach

NetAgg is an in-network aggregation system for such big data applications. Data from the majority of these type of applications can be aggregated on path so that the amount of data exchanged between end hosts is minimised. This approach saves the scarce network bandwidth available at end hosts, as well as it decreases the computation time for aggregation, overall enhancing the application performance.


The NaaS NetAgg system

The NetAgg system provides a transparent in-network aggregation framework to applications. NetAgg consists of a set of aggregation nodes (a.k.a., AggNodes) connected to a subset of the switches in the DC network using high-capacity links; and, a shim-layer that runs on worker nodes as shown in the figure (left). The shim-layer transparently intercepts application flows at the socket layer and redirects them to designated AggNodes. An AggNode runs application-specific aggregation functions to aggregate partial results from worker nodes and forwards the aggregated results to aggregation servers. Note that the AggNode uses an aggregation tree that runs in parallel for scalability and high performance.

An AggNode can run different applications simultaneously, which requires resource sharing among aggregation tasks. In order to provide Quality of Service guarantees, NetAgg uses an adaptive task scheduler to allocate computational and bandwidth resources to different aggregation tasks. The scheduler employs lottery scheduling, where each application is assigned a lottery factor that determines the amount of CPU time and network bandwidth allocated to its aggregation task. The lottery factor of an application is adjusted periodically based on the resource usage at run-time.

Currently, the NetAgg system supports two different partition/aggregation applications: the Apache Solr search platform and the Apache Hadoop map/reduce platform. It required approximately 1 KLOC of Java code to incorporate Solr in NetAgg and 2 KLOC of Java code to incorporate Hadoop. In order to run a Hadoop job on the NetAgg system, a user only needs to configure the reduce function at AggNodes. For example, we have tested NetAgg with the AdPredictor map/reduce application and observed that NetAgg not only increases the throughput, but it decreases the job completion time as well.


The NetAgg system takes advantage of the computing capabilities of network nodes to reduce the network traffic demand and the completion time of jobs. In the context of  HARNESS, NetAgg helps software engineers and users to seamlessly integrate advanced network technologies into the design an execution of their cloud-hosted applications. We will further explore the possibility of implementing its services in high-performance computing devices such as FPGA accelerators and GPGPU processors.

Further Reading

  1. The Network-as-a-Service (NaaS) project
  2. L. Mai, L. Rupprecht, P. Costa, M. Migliavacca, P. Pietzuch, and A. L. Wolf. Supporting Application-Specific In-Network Processing in Data Centres. In SIGCOMM, 2013
  3. P. Costa, M. Migliavacca, P. Pietzuch, and A. L. Wolf. NaaS: Network-as-a-Service in the Cloud. In 2nd USENIX Workshop on Hot Topics in Management of Internet, Cloud, and Enterprise Networks and Services (Hot-ICE), 2012