Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.6.0.3
Overview

The Routing Protocol Process Interface (RPPI) provides a programmatic interface allowing processes outside of the ICOS main process (switchdrvr) access to routing services. This documentation refers to clients of RPPI as applications. The set of services is intended to be complete enough to allow a unicast routing protocol to be implemented in an external process. RPPI provides interfaces to allow adding, deleting, and modifying routes in the ICOS route table. RPPI notifies applications of events required for a routing protocol implementation to function. Events include changes to the forwarding table and routing configuration and status changes. Additional services are provided to allow routing protocol applications to operate as an extension to switchdrvr.

While the scope of RPPI is designed to allow a routing protocol to run in a separate process, RPPI provides interfaces that may be useful in other contexts as well. Any application that wants to add routes to the FASTPATH routing table can use the RPPI RPC APIs for that purpose. Any application that wants to track changes to the router's forwarding table or track changes to routing interface status can use RPPI to be notified of such changes. Any application that wants to use the FASTPATH routing policy library can use RPPI.

Application Environment

RPPI applications run as separate processes under the Linux kernel. The switchdrvr process controls the switching hardware. Applications modify the switching behavior indirectly through changes to the routing table. Services provided by RPPI are accessed by shared object C function calls. These calls invoke RPPI services via an RPC mechanism. RPPI uses UNIX sockets to send event notifications to applications. Because RPPI uses UNIX sockets, an application must run on the same system. RPPI does not support applications on remote systems.

The design of RPPI assumes the network operator controls the applications that run on the router; therefore, RPPI assumes a level of trust for applications that invoke its APIs. RPPI does not provide any security to screen the users of the interface.

RPPI Services

RPPI offers three categories of services and events:

  1. Route Table Service. This category includes APIs an application uses to initially identify itself and the types of routes it will provide as well as APIs to add, modify, and delete individual routes. There are also APIs to query the routing table.
  2. Routing Configuration and State. Routing events notify applications of changes to both global and per-interface routing configuration and status. Additional RPC APIs allow queries for routing configuration and status.
  3. Routing Policy Service. Applications can apply routing policies configured in FASTPATH.

Registration for any of the RPPI services is optional, depending on the application's needs. Because these registrations are optional, they are designed to be completely independent. An application registers separately for each service it needs.

IPv6 Support

The RPPI APIs are designed to support IPv6 and this documentation describes IPv6 interfaces and parameters; however, IPv6 support in RPPI is not yet fully implemented.