Cascaded Bridge screen sharing issue

Hi, I post this here, it’s an issue on github related to screen sharing and cascasded bridge with Octo.

All links containing configuration files are on the link bellow. Sorry in advance, as a new user I am limited to two links.

https://github.com/jitsi/jitsi-meet/issues/9479

Thanks for your attention.

Description:

Jitsi Meet self-hosted Cascaded Bridge.

Hi, I am currently having an issue with my current setup. It appears that when someone stops his screen sharing and starts a new one, only users on the same JVB can see it. To make it again visible to other users, this user has to reconnect to the room. Or users on different JVB have to reconnect to the room.
All logs from the different servers don’t seem to indicate any error.

Setup:

  • Server A :
    • JMS
    • Jicofo
    • Prosody
    • JVB-0
  • Server B:
    • JVB-1
  • Server C:
    • JVB-2

I am using JWT token authentication and websocket protocol.

Jicofo uses SplitBridgeSelectionStrategy to split users on different JVB for one room.

Steps to reproduce:

  1. Connect 8 peoples on the same room : ROOM1
  2. USER-1 is on JVB-0
    USER-2 is on JVB-1
    USER-3 is on JVB-2
    USER-4 is on JVB-0
    USER-5 is on JVB-1
    USER-6 is on JVB-2
  3. All users start to screen sharing. Everythings works as intended, everyone can see everyone’s screen sharing.
  4. USER-1 on JVB-0 stops his screen sharing. Now every other user can see the screen sharing of USER-1.
  5. USER-1 starts screen sharing. Now only USER-4 on JVB-0 can see the screen sharing.

For other users who are not on JVB-0, to be able to see the screen sharing of USER-1, there are two cases:

  • Case 1:
    USER-1 has to logout. And login back to ROOM1. And start a new screen sharing.
  • Case 2:
    Users on JVB-1 and JVB-2 have to logout. And login back to ROOM1.

Expected behavior:

If a user on a specific JVB stops his screen sharing and starts a new one. Every other user on a different JVB should be able to see the screen sharing.

Actual behavior:

Only users on the same JVB can see the screen sharing

Server information:

Server A:

  • Jitsi Meet version:
    • jicofo 1.0+763-1
    • jitsi-meet 1.0.5096-1
    • jitsi-meet-prosody 1.0.5096-1
    • jitsi-meet-turnserver 1.0.5096-1
    • jitsi-videobridge 2.1+518+g2a0848b8-1
  • Operating System:
    • 5.12.13-arch1-2

Server B:

  • Jitsi Meet version:
    • jitsi-videobridge 2.1+518+g2a0848b8-1
  • Operating System:
    • 5.12.13-arch1-2

Server C:

  • Jitsi Meet version:
    • jitsi-videobridge 2.1+518+g2a0848b8-1
  • Operating System:
    • 5.12.13-arch1-2

Client information:

  • Browser / app version:
    • Google Chrome Version 91.0.4472.114
  • Operating System:
    • 5.12.13-arch1-2

Additional information:

Server A configs :

  • Jicofo
    • (See issue link)
  • Jitsi Meet
    • (See issue link)
  • Prosody
    • (See issue link)

Server B config:

  • JVB
    • (See issue link)

Server C config:

  • JVB
    • (See issue link)

UPDATE:

I’ve upgrading from lastest nightly and the issue still persist but are not as consistant than before. It seems like if an initial Screen sharing is still on. Even if an other user cut and start an other screensharing. It’s still remain visible and other JVB. But not always.

jicofo 1.0+769-1
jitsi-meet 1.0.5127-1
jitsi-meet-prosody 1.0.5127-1
jitsi-videobridge 2.1+523+gc8d73432-1

Can each JVB access to UDP/4096 of the other JVBs?

Hello,

Yes, there is no firewall at the moment. JVB are working correctly if users are not shutting down their stream.

@acuD1 what happens if you limit your test to 3 people? Can you still reproduce the issue? Do you have the bridge logs somewhere?

Hi,

I was wondering if this issue had been successfully resolved? As I am encountering a similar issue at the moment. Thanks.

Hi, same behavior.

They are the logs for two server JVB. One server <APP_NAME>-jms and <APP_NAME>-jvb1.
The first server is hosting Jitsi-meet, Prosody and Jicofo.

Hi triggered the issue two times with two differents users. 4 users in total split in two differents JVB.

PS: Sorry there is a lot of charactere, 428k. Reply are limited to 98k. I had to give you raw urls from Github.

Not yet ! Are you able to reproduce exactly the issue I described ?

Hi, I close this topic. I have reinstalled everything under ubuntu server. And everythings run smoothly. Have a great day !

Hi @acuD1,

Is there any configuration change with the previous installation, other than the operating system? I’m using ubuntu and implement OCTO with split bridge selection strategy and still experiencing screen sharing issue.

Thanks

Hello ! I added in the nginx config to accept colibri websocket. I didn’t checked if it was the issue.

location ~ ^/colibri-ws/([0-9.]*)/(.*) {
    proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    tcp_nodelay on;
}

Hi @acuD1,

Thanks for your reply, is this modification at nginx.conf file? Could you please give example for the content of nginx.conf file?

And does the problem (screen sharing issue) already solved?
Could you please inform your jitsi meet version?

Yes, I added this block on the default Jitsi Nginx VHOST, located at /etc/nginx/sites-enabled/.

You must put this block under the default colibri websocket :

# colibri (JVB) websockets for jvb1
location ~ ^/colibri-ws/default-id/(.*) {
    proxy_pass http://127.0.0.1:9090/colibri-ws/default-id/$1$is_args$args;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    tcp_nodelay on;
}

location ~ ^/colibri-ws/([0-9.]*)/(.*) {
    proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    tcp_nodelay on;
}

And there is a jvb.conf for one of your non main JVB :

videobridge {
http-servers {
public {
port = 9090
}
}
websockets {
enabled = true
domain = “exemple.com:443
tls = true
server-id = “123.123.123.123”
}
cc {
trust-bwe = false
}
}

I was running jitsi on Arch, but it shouldn’t be an OS related issue.
My current jitsi versions are:

jicofo/unstable,now 1.0-772-1 all [installed,upgradable to: 1.0-786-1]
jitsi-meet-prosody/now 1.0.5160-1 all [installed,upgradable to: 1.0.5214-1]
jitsi-meet-tokens/now 1.0.5160-1 all [installed,upgradable to: 1.0.5214-1]
jitsi-meet-turnserver/now 1.0.5160-1 all [installed,upgradable to: 1.0.5214-1]
jitsi-meet-web-config/now 1.0.5160-1 all [installed,upgradable to: 1.0.5214-1]
jitsi-meet-web/now 1.0.5160-1 all [installed,upgradable to: 1.0.5214-1]
jitsi-videobridge2/unstable,now 2.1-532-g078e5df0-1 all [installed,upgradable to: 2.1-538-g062e9f56-1]

Didn’t upgraded on lastest nightly tho, I will do it next week. I’ll keep you in touch if you like.

And yes everything runs smoothly :wink:

Thanks, if you don’t mind please inform.
In your previous thread, you are saying that you change to Ubuntu? So, this is not OS related issue?

I don’t think so yes.

Hi @acuD1,

If I’m using more than one extra-JVB, is it enough to set jvb.conf (as your example above) only for one of non-main JVB? or should I set the jvb.conf for all of the extra-JVB?

@acuD1

and another question is, should we fill server-id value in jvb.conf of extra-jvb with the jvb server ip or just follow your example above, where server-id=“123.123.123.123”?

If you configured Nginx like @acuD1’s example, you have to set its IP as server-id for each JVB (except the one which is on the JMS server)

You just need this block under the default one on the NGINX conf file. This block will handle every server-id different from the main one.
For exemple if you have 3 JVB. One from your Jitsi-meet Installation and 2 others on standalone service.
The first block

colibri (JVB) websockets for jvb1

location ~ ^/colibri-ws/default-id/(.*) {
proxy_pass http://127.0.0.1:9090/colibri-ws/default-id/$1$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
tcp_nodelay on;
}

will take care of the main JVB from jitsi-meet server. You have to set if not already set on his jvb.conf his correct id which is “default-id”.

Then on others JVB, the second block :

location ~ ^/colibri-ws/([0-9.])/(.) {
proxy_pass http://:9090$1/colibri-ws/$1/$2$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
tcp_nodelay on;
}

will take care of server-id as their IP address. So you just need only one block for many others JVB as you like.

On their jvb.conf you must set their server-id as their public IP address.

Hi @acuD1 and @emrah ,

Thanks for the info, unfortunately I’m still experiencing the screen sharing issue when activating octo with split bridge selection strategy.

this is the modification I’ve added in /etc/nginx/sites-enabled/mydomain.com.conf:

# colibri (JVB) websockets for jvb1
    location ~ ^/colibri-ws/default-id/(.*) {
        proxy_pass http://127.0.0.1:9090/colibri-ws/default-id/$1$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        tcp_nodelay on;
    }

    location ~ ^/colibri-ws/([0-9.]*)/(.*) {
        proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        tcp_nodelay on;
    }

and the content of jvb.conf on extra videobridges:

videobridge {
    http-servers {
        public {
            port = 9090
        }
    }
    websockets {
        enabled = true
        domain = "mydomain.com:443"
        tls = true
        server-id = "XXX.XXX.XXX.XXX"
    }
    cc {
        trust-bwe = false
    }
}

where XXX.XXX.XXX.XXX is my extra videobridge public IP addresses.

and I also set in mydomain.com-config.js:

useNewBandwidthAllocationStrategy: true,

Is there any suggestions?

Thanks