Lynckia architecture for newbies

Hi,

I understand that Lynckia is a plugin-free set of tools that enable live
video conferencing on the web.

There are:

  • A centralized MCU which receives and sends streams to multiples users.
    A user can be a publisher and a subscriber, or only a subscriber. The MCU
    is called Erizo.
  • A server-side API with REST endpoints that manages rooms, tokens and
    users. This service is called Nuve and it talks to Erizo. Nuve is called in
    one’s server app.
  • A client-side API. This API talks with Nuve for access and management.
    Then the users seamlessly establish WebRTC media peer connections with
    Erizo.
  • Nuve is installed with the Node.JS app as a dependency. Erizo is
    installed on a Linux server. Cloud deployment and management are up to
    Lynckia users.

Is that correct?
Big fuzziness with that last fourth point.

Hi Achraf,

Yes, with the additional idea that Lynckia is aimed to provide any
type of audio, video and data communication between multiple clients,
not only two, by saving bandwidth and processing time on clients.

There are some mistakes on your description. I put some comment inline:

Hi,

I understand that Lynckia is a plugin-free set of tools that enable live
video conferencing on the web.

There are:

A centralized MCU which receives and sends streams to multiples users. A
user can be a publisher and a subscriber, or only a subscriber. The MCU is
called Erizo.

That’s ok. Erizo is a C++ MCU, that offers a full WebRTC stack. It has
been implemented from scratch.

A server-side API with REST endpoints that manages rooms, tokens and users.
This service is called Nuve and it talks to Erizo. Nuve is called in one’s
server app.

That’s ok, But Nuve doesn’t talk directly to Erizo. It starts and
stops Erizo Controllers (scaling up and down according to workloads).
These Erizo Controllers talk to Erizo through Erizo API, which is a
JavaScript wrapper for Erizo. Erizo API only leverage Erizo functions,
and Erizo Controllers also handle connections from clients and manage
signalling between clients and the MCU.

Third-party services will use Nuve through their server apps to
provide access to their users, and to create and remove rooms, that
are the virtual places where users will communicate. In other words,
users will be able to publish their streams in the room where they are
connected (and only in this room), and to subscribe to any of these
streams later.

A client-side API. This API talks with Nuve for access and management. Then
the users seamlessly establish WebRTC media peer connections with Erizo.
Nuve is installed with the Node.JS app as a dependency. Erizo is installed
on a Linux server. Cloud deployment and management are up to Lynckia users.

The client-side API talks to Erizo Controller, not to Nuve. And all
systems can be installed on Ubuntu or Mac. They potentially could be
used in any other platform, but we haven’t tried more than these. For
the time being Cloud deployment and management are up to users that
want to install Lynckia.

Cheers,
Javier.On 5 December 2012 22:58, Achraf Kassioui achrafkassioui@gmail.com wrote:

Is that correct?
Big fuzziness with that last fourth point.

Hello,

I have other questions to better understand Lynckia architecture.

My understanding of WebRTC communications is that the ICE framework will
first attempt to get a direct pathway between the peers using a STUN
server. STUN is able to get the public IPs of the peers, so they can talk
to each other. But sometimes, STUN fails, because the peers are behinds
unbreachable NATs. In such case, ICE will relay on a TURN server. TURN is
able to speak to both peers’ IPs (but how exactly?). The whole RTC pathway
now goes through TURN.

Is that correct?

Question: is Erizo, at its core, a TURN server?

A TURN server is meant to relay the data stream between 2 peers (which,
then, are no longer peers). A TURN server is also able to relay data
streams between multiple clients. Isn’t that the first building block of an
MCU?

Thank you for your time.
Achraf.

Hello,

Is this diagram correct?

https://lh3.googleusercontent.com/-ftK5LSzPp-k/UNh5oMt6NqI/AAAAAAAAAMM/EK_FuW2L4ek/s1600/lynckia_app_diagram.png

Achraf.

Hi Achraf,

Yes, I’ve detailed it a bit more, with the client JavaScript libraries.

Cheers,
Javier.On Dec 24, 2012, at 4:51 PM, Achraf Kassioui achrafkassioui@gmail.com wrote:

Hello,

Is this diagram correct?


Achraf.