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

Compare with Current View Page History

« Previous Version 32 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.

2019 October 7:

  • RMR version 1.10.0 pushed to package cloud.  The version reports on send counts (success/hard fail/soft fail), and attempts to reduce the number of retries reported to the user application.

2019 September 26:

  • NNG bug preventing reconnection of a session through docker-proxy (and maybe other proxies) was released.  A patch level change to RMR was pushed which incorporates the NNG update during the RMR build process.  (1.8.3)   This version is backwards compatible with the version of NNG which was previously used (1.1.1), but the NNG library in the run-time environment must be upgraded to avoid the proxy related bug.
  • RMR version 1.8.2 is a patch level change which fixed a bug in rmr_torcv_msg() that was causing the receive to block when the MT_CALL mode (multi-threaded call()) mode was enabled. 1.8.2 was updated on 25 September 2019.
  • RMR version 1.8.1 is a patch level change which fixed a bug: missing constant possibly needed by wrapper scripts.

2019 September 19:

  • Added three new message types; version now 1.8.0

2019 September 18:

  • Version 1.7.0:  Connection mode changed to be non-blocking by default.  Set the environment variable RMR_CONN_ASYNC=0 if blocking is desired during connections.  There is no affect on the API.

2019 September 3:

  • Version 1.6.0:  bug fix in rmr_rts_msg() which could cause the retry of a failed rts call to "reflect" the message back rather than sending it out. Added the ability to set the applications source ID via the environment variable RMR_SRC_ID (if not set the original behaviour of using the hostname, with out any domain components) is used.  

2019 August 29:

  • Changes to eliminate the possible edge condition where the status of a successful send when the routing table has multiple round-robin groups defined for a message type was added. When there are multiple round-robin groups, a successful status (RMR_OK) will be reported if the message was sent to any of the groups.  Version bump to 1.5.0.

2019 August 26:

  • Add message type constants to the RIC message type header file. Minor version bump to 1.4.0.

Current Version

1.10.0 October 7,  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.


  • No labels