RVI Core 0.5.0 practically ready

Wiger, Ulf uwiger at jaguarlandrover.com
Mon Jan 18 12:50:31 EST 2016


Brief update.

We have been a bit delayed with RVI Core 0.5.0, but right now, the holdup
is mostly building Debian packages, but as far as features are concerned,
we believe we're ready to release.

The 'develop' branch at https://github.com/PDXostc/rvi_core/ contains the
latest version. Feel free to check it out and familiarize yourselves with
the new functionality.

Highlights:

== TLS support ==
We are now using X.509 certificates, and have simplified the RVI protocol.
The new protocol is described in
https://github.com/PDXostc/rvi_core/blob/develop/doc/rvi_protocol.md

(Note that we renamed the RVI certificates "credentials" instead; in the
future, when we talk about "certificates", we mean the X.509 certificates.)

As a consequence of the TLS support, we recommend that the TCP transport is
only used for testing. It uses the same handshake protocol as the TLS
transport, but as no X.509 certificates are being exchanged, it doesn't
actually validate credentials, and of course, doesn't use encryption.

== Fragmentation ==
It's now possible to specify a maximum message size, either per connection,
or per message. A related option is {reliable, boolean()}, which activates
the fragmentation protocol, but sends a single fragment and waits for the
acknowledgement of the complete message being received. This serves as a
form of reliable message delivery.

For actual fragmentation, the receiving end requests each fragment (except
the first) and performs re-assembly. The rvi_core re-assembly logic detects
missing fragments and requests them again. Currently missing: timers (a
notable omission, but we'll add them a.s.a.p.).

The fragmentation protocol operates at the RVI data link layer, so it works
for all messages, even the RVI Core handshake and service announcement
messages. It is described in rvi_protocol.md

== Msgpack encoding ==
Besides still supporting JSON encoding, we also support msgpack (see
http://msgpack.org). This is a byte-coded format, intended to work well
where JSON could be used, but being faster and more compact than JSON. The
data link code in RVI Core automatically detects which encoding is being
used, but it makes sense to decide on one and use it in both directions
(however, it's technically possible to e.g. use JSON encoding and msgpack
encoding for the fragmentation messages).

== New installation and start ==
The new method of installing and starting rvi is:
- Run `./scripts/rvi_install.sh <TargetDir>`
  This copies the RVI code to the target directory
- Run `<TargetDir>/rvi.sh ... `, providing various options, including a
config file.
  This will create boot scripts on the fly and then start the RVI node.

== Event log ==
In order to better monitor what goes on in RVI Core, a special log for
high-level events is kept. The contents of the log is still somewhat
inconsistent, but basically, it will contain events signaling entry and
exit for the different subsystems of RVI. The logs can be fetched via an
RPC interface.

== Debian packages ==
More about this once we've built the packages. Magnus is working on this
right now.

Feel free to play with the 'develop' branch and give feedback, or wait for
the announcement. I will add more documentation, but if you have questions
in the meantime, just ask.

BR,
Ulf Wiger
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genivi.org/pipermail/genivi-projects_lists.genivi.org/attachments/20160118/a3202e53/attachment.html>


More information about the genivi-projects mailing list