ProtoRINA: Experimenting with Recursive-Networking Policies over GENI

ProtoRINA is a user-space prototype of the Recursive InterNetwork Architecture (RINA) by Professors Abraham Matta and John Day of Boston University and graduate students Yuefeng Wang, Flavio Esposito (now at Exegy) and Nabeel Akhtar.  It is a new architecture that builds on the fundamental principle that networking is Inter-Process Communication (IPC) and only IPC. As a consequence, RINA subsumes existing Future Internet Architecture (FIA) proposals and inherently supports capabilities such as security, mobility, and manageability. RINA views the network as a collection of networks of processes, rather than a network of “boxes”. A “layer” in RINA constitutes a (virtual) transport network of processes, which can recursively provide communication service to a higher layer (Figure 1). RINA separates mechanisms and policies so all processes use the same mechanisms but may use different policies in different layers over different scopes. RINA has a complete naming/addressing architecture where processes, not interfaces, are named, and addresses are not static but relative to the layer in which the process resides. Each process employs only two policy-configurable protocols: a data transfer control protocol and an object-based management protocol.

Figure 1:  Distributed IPC Facility (DIF) is RINA’s building block. A DIF is a special DAF (Distributed Application Facility) that provides communication service.

Figure 1: Distributed IPC Facility (DIF) is RINA’s building block. A DIF is a special DAF (Distributed Application Facility) that provides communication service.

ProtoRINA provides a framework with common mechanisms so researchers do not have to implement these from scratch; rather they can focus on programming different policies (supported by user applications or network management applications).  ProtoRINA offers several features:

  1. It is not restricted to the Internet Protocol (IP), so it enables experimentation with new control and management applications;
  2. It supports research not only on user applications but also network management;
  3. It can be used as a teaching tool by educators in networking and distributed systems classes; and
  4. It can be used to run real experiments, both on local-area networks and on wide-area network testbeds such as GENI.

ProtoRINA (version 1.0) was released in October 2013 and has been used to demonstrate the RINA architecture and its advantages, and also to experiment with different policies.

In a GREE 2013 paper, RINA experiments over the GENI testbed demonstrate enrollment of an IPC process into a RINA layer, and the dynamic formation of a high-level layer on top of lower-level layers.  The latter illustrates how RINA naturally supports the provision of a virtual private cloud service (demonstrated in NSDI 2013). In a GREE 2014 paper, ProtoRINA on GENI is used to experiment with different routing policies configured over different layer topologies. In a CNERT 2014 paper, the programmability of ProtoRINA is demonstrated with the jitter-based routing of video traffic across multiple GENI aggregates.

Figure 2: Yufeng Wang describing the ProtoRINA implementation on GENI at CNERT 2014.

Figure 2: Yufeng Wang describing the ProtoRINA implementation on GENI at CNERT 2014.

GENI has been instrumental in testing RINA as it supports repeatable wide-area and non-IP experiments. GENI capabilities and tools—such as stitching distant resources using GRE tunnels or VLANs, configuring the experiment using GUI tools, and visualizing real-time measurements using the GENI Desktop—provide the needed experimental support environment, which has markedly improved over the past two years. Future experiments will continue to test RINA’s inherent support for Network Function Virtualization and application-driven network management, demonstrate the programmability of additional recursive-networking policies, and run a long-lived RINA-managed slice on GENI to which users can opt-in to offer or use new services.

A tutorial on running ProtoRINA on GENI was delivered at GEC19; tutorial instructions and a video are available online.   The ProtoRINA code, along with its user / programmer’s manual and other documentation, are available on the project’s wiki page.