Videobridge location (cascaded bridges)

Hi All

I seem to have an issue with VideoBridges set in RegionBasedBridgeSelectionStrategy.

I have set up octo and when testing it a few days ago using SplitBridgeSelectionStrategy I could see each participant connecting from a different bridge, however as you can see in the screenshots when using RegionBased strategy all participants were connected to the New York bridge which was where the first user joined the conference.

user New York
User London

Could someone confirm if there are any other configuration required other than the one below:

I totally have the same problem. I’ve been setting up jitsi installs for a while now but I need octo for the first time now. For me it doesn’t have anything to do with geo-location, I just need a big conf to take place with 50~60 people. So I’ve installed everything according to the docs, I guess. I’ve searched the forum, couldn’t really find anything about this except for your post @ATQO and you seem to have the same problem as me! So giving a bit more information underneath about my config, hopefully it helps people answering the question.

In my config.js I enabled:

 deploymentInfo: {
     userRegion: "region1"
},

I’ve got 3 bridges they are all set-up as region1 as well. When doing SplitBridgeSelectionStrategy I see traffic appearing (tcpdump) at all bridges on port 10000 when having a conference.Also bridges are communicating over port 4096, which is good as well. The UI tells me 3 servers and different endpoints on different users. This tells me that ‘stuff’ is working. As far as I know SplitBridgeSelectionStrategy is just for testing purposes, it does some kind of load balancing but as far as I could tell it’s just some kind of round-robin mechanism which drops you on a custom bridge, not taking in account any load or whatsoever.

Now when putting it on RegionBasedBridgeSelectionStrategy all participants are connecting to a single server. I’ve tried shutting down the bridge on which participants live, but when doing that they simply join on a single other bridge. When participants join I see this in the jicofo.log:

Jicofo 2020-05-19 22:56:40.927 INFO: [31] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=ffaafa octo_enabled= true: [[region1, region1, region1, region1, region1, region1, region1, region1, region1]]

I’ve checked the code a little, as far as I could with my minimall skill-set, and the comments in the code seem to say that it should take the bridge with the least load if one is available, but I could be wrong there. Anyway, if that is not the case, when should it fire up a second bridge? Is it a hard number of users? Or does it do that when load is getting ‘high’, and if so when is that high-load point reached? I’ve even tried, which seems to be a new method,
IntraRegionBridgeSelectionStrategy as a bridge selection strategy, but also without luck for now. As a test I had 13 participants with video in a room. Before writing up this post I made sure I updated all my packages on all my hosts (stable repo, Ubuntu 18.04). I’ve searched for errors in logs, but couldn’t find anything.

Perhaps noteworthy, on this particular installation ‘secure domain’ is enabled. Not sure if it might have something to do with anything, but just mentioning it.

Hopefully somebody can help us out, are we missing something in our configuration perhaps? If you need any more information please let me know, I’m open to share anything you’d like.

@Boris_Grozev
This is the first time I see IntraRegionBridgeSelectionStrategy and it does not seem to be documented anywhere. Would it be possible to get a quick explanation on what the new octo strategy does? :slight_smile:

Also, am I correct to think that for Region Based strategy the config.js file needs to have the same region as specified inside the video bridge, which means a HA Proxy will be needed to serve these files depending on where it is accessed from?

Figured out a bit more today. It mostly has got something to do with the ‘load’ on the machine. Don’t know the specific numbers, but Jitsi does something with packetrate to determine what the ‘stress’ leven of a bridge is, if it’s too high, ‘overstressed’ , it will fire up a second bridge for the conference. These calculations are a bit fuzzy for me looking at the code, but when it hits a stress-level of 0,8, where 1 is meaning the bridge is completely full, it will include another bridge for the region. There are a couple of settings mentioned in this PR:

Which you can use to play around with a limits a bit. In /etc/jitsi/jicofo/sip-communicator.properties you can set a couple of values like:

org.jitsi.jicofo.BridgeSelector.MAX_PARTICIPANTS_PER_BRIDGE
org.jitsi.jicofo.BridgeSelector.MAX_BRIDGE_PACKET_RATE
org.jitsi.jicofo.BridgeSelector.AVG_PARTICIPANT_PACKET_RATE

You can play around a bit with it to set it lower than what the ‘normal’ values would be, but I dont have a clue what normal values are, haha. Just saw them and when setting max participants to 2 for example, I can join a conference with 3 people in total and octo will kick in and divide the participants over 2 bridges. So that is some cool stuff. For me when setting no values, the 2nd bridge is coming in too late. I did a conference with 45 people, to test something today and the 2nd bridge didn’t come up till it hit ~33 participants in the conference. That was too late, participants were being kicked out, audio scrambled a bit, some video of participants was shown as a black window, etc etc. So when it did kick in eventually some people were already gone because of the bad experience. So I would just like to have it kick in a bit earlier for me, but I guess that could depend on the resources you gave the jitsi server. Anyway, I thought I would share, it could help you, or others, reading this thread.

1 Like

@ATQO were u able to fix it using regionbasedstrategy because I am facing same issue??

@Alves as far as I know the NGINX needs to serve a specific js file for each location relating to where the user is connecting from. I am going to be switching to a Amazon AWS and testing it there. I’ve not had a chance to test this yet.