Technical Report TR 2019-04-2
Internetworking and Media Communications Research Laboratories
Department of Computer Science, Kent State University

Leveraging Domino to Implement RCP in a Stateful Programmable Pipeline

by MD Iftakharul Islam and Javed I. Khan
Kent State University
(IEEE HPSR, 2019)

This paper implements RCP [2] in a router dataplane using Domino programming language. RCP is a router-assisted congestion control protocol. RCP has been found to outperform host-centric TCP in achieving higher throughput, lower latecncy, faster flow completio and so on [1, 2, 4]. However it is very hard to implement RCP in a high-speed router dataplane [3]. Currently there is no router that properly supports RCP, to the best of our knowledge. This paper presents an implementation of RCP using Domino.

Getting Started

This experiment is performed on Ubuntu Gnome 16.04 however any Linux distribution should work.

  1. Install Domino according to their website
  2. clone
  3. Enable permission to your tmp directory (sudo chmod a+rwx -R /tmp/). This directory will be used by Domino.
  4. You will find rcp-real.c in our domino-examples directory. This is our implementation. Now compile the program using the command sh domino-programs/rcp-real.c banzai_atoms/ 15 2 true

If you have any issue, please email mislam4 AT kent DOT edu


  1. Katabi, Dina, et al "Congestion control for high bandwidth-delay product networks." ACM SIGCOMM 2002
  2. Dukkipati, Nandita, et al. "Processor sharing flows in the internet." IEEE IWQoS 2005
  3. Sharma, Naveen, et al. "Evaluating the Power of Flexible Packet Processing for Network Resource Allocation" USENIX NSDI, 2017
  4. Islam, Md, et al. "A network-centric TCP for interactive video delivery networks (VDN)." IEEE ICNP, 2017