New bridge merge into master (JVB 2.0)

I’ve just put up a PR to merge the “jvb 2.0” code that’s been discussed for a while now into master in the jitsi-videobridge repo here. The main goal of this work was to clean up tech debt that had accumulated over the years to put us in a better place for future work (performance improvements, features, etc.) and, from some initial testing, we have already seen some good performance improvements as part of the rewrite. We no longer* rely on the libjitsi dependency, which has grown quite large as it is used by many Jitsi components, and instead now rely on a new repo jitsi-media-transform which is targeted at the bridge’s use case. We also rely on another new library, jitsi-rtp, which handles RTP/RTCP parsing and serialization for the bridge. @Boris_Grozev recently gave a talk which discusses the new bridge and some of its architecture at commcon here. I’ve also included a couple diagrams at the bottom of this post.

Next step is we’ll be deploying to beta.meet.jit.si for more testing and we’ll be addressing some of the known issues. Then once things look good we’ll deploy to meet.jit.si, which is when we’ll consider this “fully stable”. The old bridge code can be found on the jvb_1.0 branch.

Deprecations
The following features were deprecated and no longer supported in jvb 2.0 as part of this rewrite:

  1. non-rtcp mux
  2. non-bundle
    (because the above are gone, dynamic port mode also no longer makes sense and is removed)
  3. raw udp transport
  4. audio mixing
  5. RED handling

Known issues
There are a couple known issues we’re currently working on but did not consider blockers:

  1. Bitrate rampup issues with 2 participants
    —> there are some bugs we’re looking at here, but since 2 participant calls usually don’t even go through the bridge, we did not consider them blockers
  2. Endpoint ID limitation with Octo
    —> When Octo is enabled, endpoint IDs must be 8 hexadecimal characters (without Octo, there is no limitation). This will be removed in the near future. More information here What is the reason to remove useNicks?

*Although this dependency is largely removed, it is not fully removed yet. The work to port the rest of the needed code (mainly just SRTP at this point) is underway.

Here’s a high level flow of packets that illustrates how they move through each of the components (ICE4J, JVB and jitsi-media-transform):

Here’s a more detailed look at the packet pipeline flow through the receiver pipelin in jitsi-media-transform, to the conference in the bridge where they get fanned out, and then through the sender pipeline in jitsi-media-transform

3 Likes

What a great news! Kudos to Jitsi team!

  1. What are the corresponding Jigasi and Jicofo version that works with JVB 2.0?
  2. Does JVB 2.0 still depend on FMJ?

/Kaiduan

  1. What are the corresponding Jigasi and Jicofo version that works with JVB 2.0?

JVB had no changes to its external API so should just work with Jigasi and Jicofo. There’s something we’re looking into with the Jicofo unit tests (which rely on JVB) now, but otherwise no breaking changes there.

  1. Does JVB 2.0 still depend on FMJ?

Nope

I assume new JVB supports DTLS 1.2, can you confirm please?

What are the deb installers for JVB 2.0/Jicofo/Jigasi? I would like to try locally.

Yes, JVB 2.0 does support DTLS 1.2.

I don’t think we’ve got a deb installer up for JVB 2.0 yet, watch that linked PR, we should have one soon after it gets merged.

We’re still working out kinks in the build system. The first new deb is out:
https://download.jitsi.org/unstable/jitsi-videobridge2_2.0-0-1_amd64.deb

Boris

I checked out and build master of Jvb and jigasi, and found out,

  1. JVB uses jitsi-media-tranform library
  2. In Jigasi jitsi-media-transform library is not used

Does that mean Jigasi still uses libjitsi to talk to JVB for media?

Correct, jigasi in unchanged.

Boris

Any plan to upgrade Jigasi to use jitsi-media-transform?

No, jitsi-media-transform does not support any kind of raw media, it’s just for RTP really. There aren’t any plans to change jigasi.

Boris

Does Jigasi support DTLS 1.2 and RTCP mux to be able to inter-operate with JVB 2.0?

Boris,

I checked the git history of Jigasi, rtcp mux support is there. How about DTLS 1.2 support in Jigasi?

/Kaiduan

Hi,

Jigasi does not support DTLS 1.2, but it can interoperate with JVB 2.0 using DTLS 1.0 (the new bridge supports both).

Regards,

Boris