The RIC Message Router (RMR) is a thin library which allows applications to send messages to other applications. RMR provides insulation from the actual message transport system (e.g. Nanomsg or NNG), as well as providing endpoint selection based on message type. This page serves as an anchor point for RMR related pages.
Announcements
The following are announcements related to RMR during the past 30 days; newest announcements first.
2019 August 8:
- The RMR User's Guide has been added to this wiki set. See the link in the developer section below.
- RMR library version 1.1.0 is being released today. A transport status field is being added to the message buffer structure in order to provide wrapper code with access to the underlying transport provider errno value (errno is not directly available to all wrappers in all environments). This is a backwardly compatible change, but a change to the structure portion of the API, so a minor version bump was made.
2019 August 5:
- Please see the Supported Transport Mechanisms section below; support for Nanomsg is being dropped (NNG will be the only transport mechanism supported).
Current Version
1.1.1 August 9, 2019.
The bump from 1.1.0 to 1.1.1 is a documentation only change (user's guide source added); there were no API changes.
For a detailed description of API changes, and their related commits, please consult the CHANGES file at the top level of the RMR repo:
https://gerrit.o-ran-sc.org/r/admin/repos/ric-plt/lib/rmr
Changes to the API will be announced via this wiki page, so it is assumed that anybody interested in being notified about API changes will place a watch on this page.
Supported Transport Mechanisms
A transport mechanism is a "mid-layer" protocol which makes use of TCP/UDP and provides features such as automatic connection reestablishment and connection acceptance. RMR was originally built using the Nanomsg transport library, and was extended to use NNG (Nanomsg next generation) as NNG provides several enhancements, and Nanomsg has been all but abandoned from a maintenance perspective. While the underlying "wire" protocol of both NNG and Nanomsg are the same, the APIs are different; RMR has supported both mechanisms by supplying two sets of libraries (librmr and librmr_nng). At this point in time, NNG is stable, and as the support for Nanomsg is reduced, thus RMR will drop support for Nanomsg. In other words, beginning with version 1.0.45 (initally announced as happening in 1.0.44, but has been pushed by one) only librmr_nng will be included. This change should not have any impact on applications using RMR as the RMR API is not changing. The only change would be that applications using librmr will need to alter their build process to change the underlying RMR library to librmr_nng.
Developer Information
The following links are generally useful for developers writing applications (xAPPs) which make use of RMR.
- Frequently Asked Questions
- User's Guide
- Message Conventions
- Prebuilt Binary Packages
- Building From Source
- Using RMR
- RMR Route Tables
- Subscription ID
- Manual (man) Pages
External Systems
The following links are likely useful for developers which must communicate with RMR based applications (e.g. route manager applications).
RMR Development
The following pages hold information that should be useful to anybody modifying and/or testing RMR itself.