You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 41 Next »

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.

2020 February 21

Version 3.2.3 pushed.  This change ensures that RTS messages are attempted on a uni-directional channel first for performance reasons. MEID support in SI is now enabled.

2020 February 20

Version 3.2.2 was pushed into the repo. This change corrected a bug in the SI95 portion of the RMR code that affected multi-threaded user programmes which attempt to use more than one thread to receive messages.  

2020 February 10: 

The SI95 library support as a transport replacement for NNG has been in the build for a few weeks now. It should support all of the original capabilities provided by NNG.  To make use, link with -lrmr_si and remove the library reference to nng.  One caution:  all applications communicating with RMR must use the same underlying transport (SI95 or NNG) as the two do NOT share the same protocol.

2020 January 17:

Work is in progress to add support for a new (faster) transport interface under RMR. This will replace NNG which seems to have a ceiling of approximately 50K msg/sec with the push/pull model that we use.  The new library (SI95) is being ported directly into RMR (in the src/rmr/si directory in the repo).  An alpha version is being pushed up today and has enough support for some initial testing; complete thread safety, complete bi-directional communications on all connections, and dynamic route manager updates are still in progress and missing from the current code.  The base API has not changed, and the packages will include a new librmr_si.* component to link against.

2019 December 6:

  • The release B (dev-b) has been merged back into master and is deprecated (will be deleted)
  • RMR core library version1.13.0 has been pushed; this change adds the support to route messages on the MEID (managed equipment ID) contained in the message after matching a route table entry using the normal message type and subscription ID. Additional documentation on MEID routing is in the RMR route table doc (link is below).

2019 Novermber 7:

  • Release B development branch created (dev-b) in the o-ran repo.  The version number point for release B is 1.12.0
  • Master branch remains frozen at 1.11.0; eventually a branch for the Amber release will be cut allowing dev-b to merge back into master. 
  • The branch r2-temp was created at version 1.10.2; it contains RMR state for the November 2019 trial.


Current Version

Release B development (master branch) version tag 3.2.3 (21 Feb 2020)

Release A frozen: 1.11.1 (Amber branch) 6 November 2019

Trial branch (r2-temp): 1.10.2 Fall 2019


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.

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.

Performance

The following pages discuss RMR and NNG performance.

Tutorials

The following are links to short tutorials covering some aspects of RMR usage


  • No labels