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

Compare with Current View Page History

« Previous Version 63 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 16 November

Version 4.4.5 pushed.   Over the past few days several patch level versions have been pushed to the 4.4 release.  These, for the most part, have addressed code scanning complaints for minor issues. The 4.4.5 push (this morning US-East) corrects a small memory leak in the route table cleanup code. This will also likely be the Cherry release package unless a major bug is discovered.


2020 5 November

Version 4.4.0 pushed.  This fixes a race condition in the route table collection thread that RMR runs.  It is excited when route table updates arrive very quickly.  This version is currently in staging pending verification by the reporter that the problem has been solved. When it moves to production it is highly recommended that all xAPPs shift to this version.


2020 23 July

Version 4.1.4 pushed (the change log has a typo claiming it to be 4.2.4)

This is a patch release to fix a potential "use of pointer after free" bug in the SI95 connect function. (RIC-626)


2020 9 July

Version 4.1.3 pushed.

This fixes a bug to allow return to sender (RTS) messages to be sent prior to the arrival of a route table. Needed to support calls to the heartbeat callback function for xAPPs using the C++ and Python frameworks. (RIC-589)

2020 24 June

Version 4.1.2 pushed.  This is a change only to the RIC message types header file (corrects a problem in 4.1.1, which also change only the same header file).  Message type documentation is now generated from the header file and can be found on the  RTD site for RMR.


2020 17 June

Bronze branch now exists. The official tag for the release is 4.0.5 and any patches which need to be applied backwards will be done as 4.0.x versions.  Development moves forward with 4.1.x


Current Version

Cherry development begins with version 4.4.5 on the master branch; 4.4.5 current in the package cloud staging repo.

Cherry Release:  Likely to be version 4.4.5 (November 2020)

Bronze Release :  version tag 4.0.5 (6 June 2020)  -- Code is currently frozen; only bug fixes and documentation updates are being applied.

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 or on the RMR read the docs page.

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.

RMR Packages

Several frameworks (wrappers/bindings) are being developed which provide a more simplistic interface to the xAPP developer. Installation of the framework will likely require that the RMR runtime package be installed.  RMR packages (debian and RPM) are currently published on the html site https://packagecloud.io.   

The generic URL below can be used to obtain a list of available packages (current version listed at the top of this page).
https://packagecloud.io/app/o-ran-sc/staging/search?q=rmr&filter=all&filter=all&dist=

Links on these pages redirect to a generalised information HTML page; the actual wget command needed to pull the package is on the right side of these pages near the bottom.

As an example, the following can be added to a Docker file to install the RMR runtime package:


docker example
# Install RMr (runtime and dev) from debian package cached on packagecloud.io
ARG RMR_VER=3.3.0

RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_${RMR_VER}_amd64.deb/download.deb
RUN dpkg -i rmr_${RMR_VER}_amd64.deb


Performance

The following pages discuss RMR and NNG performance.

Support Software

When the RMR runtime package is installed, there may be one or more support binaries which are included. These are installed (by default) into /usr/local/bin. The links below describe each.

Tutorials

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


  • No labels