Open Ethernet Networking (OpEN) API Guide and Reference Manual
3.6.0.3
|
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.
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 offers three categories of services and events:
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.
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.