Marlin MS3 Apache Model

MS3 Apache Module in standalone mode

Part of our ongoing activities at BCi has been the evaluation of various Marlin technologies within our test lab. Given the current level of interest in the Marlin MS3 (Marlin Simple Secure Streaming) protocol, we’ve been looking at setting up a demo system in the lab to evaluate the various configurations of this technology. Of particular interest is the MS3 Apache module running in standalone mode.

The attraction of using Apache is that this offers a solid and reliable means of hosting the MS3 functionality. The architecture of Apache scales well, offers good security and good stability.

Apache runs on multiple processes. A supervisor process looks after the spawning of new processes as and when required by the demand on the server. This supervisor process can also take care of destroying these processes when they are no longer needed and can also cull them when they reach an old age (not something to be tried in general society!) This mechanism protects against runaway processes or memory leaks.

In order to host MS3 functionality, the Apache server must first be configured for HTTPS as per general Apache setup guidelines. The Marlin MS3 module is available as an Apache module. This is compiled from source, this being part of the SDK supplied by Intertrust. Once compiled, the resulting module is copied into Apache’s modules directory.

One possible complication when running the Marlin MS3 module under Apache is that of logging. In operation, it is essential that there is some way of accessing log data from failed MS3 access attempts since analysing failed attempts without log data is impossible. Some complications arise due to the way that Apache runs sub-processes; these are run as an unprivileged user and thus are not able to write their own log files. Unfortunately, any such attempt results in a silent failure as the logging failure can’t be reported. The solution is to use the UDP logging functionality built into the Neptune libraries that are linked into the Marlin MS3 module. Neptune is a set of C++ libraries for common functionality used heavily within Marlin MS3. Neptune libraries are used here as the Neptune framework can be compiled under a wide variety of architectures allowing the Marlin MS3 components to be ported easily to other targets.

With the UDP logging enabled, it is possible to successfully run the Marlin MS3 module within Apache and have easy access to logging information when required. The Itertrust SDK includes a simple log client that can be used to display the UDP logging information emitted by the logging package. With these tools configured, it becomes a much easier task to debug problems with the Marlin MS3 setup.

Be Sociable, Share!
  • Marlin MS3 Apache Model
Category : Marlin DRM,Systems Integration
Post Tags: