OCTO in docker-jitsi-meet 5963 [MINOR ISSUE]

Hello everybody,

We are trying to configure OCTO in docker-jitsi-meet 5963

The environment looks something like this

image

Virtual Machines are behind a firewall Public IP. The ports forwarded are exactly as in the diagram

For JMS, the configuration needed for OCTO looks something like this

.env file

TESTING_OCTO_PROBABILITY=1
ENABLE_OCTO=true
OCTO_BRIDGE_SELECTION_STRATEGY=SplitBridgeSelectionStrategy
JVB_OCTO_BIND_ADDRESS=jvb
JVB_OCTO_PUBLIC_ADDRESS=jvb
JVB_OCTO_BIND_PORT=4096
JVB_OCTO_REGION=Region1
PUBLIC_URL=<https://meet.xyz.com>
DOCKER_HOST_ADDRESS=<public-ip>

config.js

 deploymentInfo: {
        // shard: "shard1",
        region: "Region1",
        userRegion: "Region1"
    },

..
..
testing: {
        octo: {
            probability: 1
        }
...
...
if (!config.hasOwnProperty('testing')) config.testing = {};
if (!config.testing.hasOwnProperty('octo')) config.testing.octo = {};

config.testing.capScreenshareBitrate = 1;
config.testing.octo.probability = 1;

On the second machine, the .env and docker-compose configuration looks something like this

.env file

CONFIG=/home/jitsi/jvb2
ENABLE_OCTO=true
DOCKER_HOST_ADDRESS=<public-ip>
XMPP_AUTH_DOMAIN=auth.meet.jitsi
XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi
XMPP_SERVER=meet.jitsi
JVB_AUTH_USER=jvb
JVB_AUTH_PASSWORD=<jvb-auth-password>
JVB_BREWERY_MUC=jvbbrewery
JVB_PORT=10002
#JVB_TCP_HARVESTER_DISABLED=false
#JVB_TCP_PORT=4443
#JVB_TCP_MAPPED_PORT=4443
#JVB_STUN_SERVERS=meet-jit-si-turnrelay.jitsi.net:443
JVB_ENABLE_APIS=rest,colibri
PUBLIC_URL=<https://meet.xyz.com>
JVB_OCTO_BIND_ADDRESS=jvb2
JVB_OCTO_PUBLIC_ADDRESS=jvb2
JVB_OCTO_BIND_PORT=4096
JVB_OCTO_REGION=Region2
RESTART_POLICY=always
TZ=Asia/Kolkata

docker-compose.yaml

version: '3'

services:
    jvb2:
        container_name: jvb2
        image: jitsi/jvb:stable-5963
        restart: ${RESTART_POLICY}
        ports:
            - '${JVB_PORT}:${JVB_PORT}/udp'
            #- '10002:10002/udp'
            #- '${JVB_TCP_PORT}:${JVB_TCP_PORT}'
            - '4096:4096/udp'
        volumes:
            - ${CONFIG}/jvb:/config:Z
        environment:
            - ENABLE_COLIBRI_WEBSOCKET
            - ENABLE_OCTO
            - DOCKER_HOST_ADDRESS
            - XMPP_AUTH_DOMAIN
            - XMPP_INTERNAL_MUC_DOMAIN
            - XMPP_SERVER
            - JVB_AUTH_USER
            - JVB_AUTH_PASSWORD
            - JVB_BREWERY_MUC
            - JVB_PORT=10002
            - JVB_TCP_HARVESTER_DISABLED
            - JVB_TCP_PORT
            - JVB_TCP_MAPPED_PORT
            - JVB_STUN_SERVERS
            - JVB_ENABLE_APIS
            - JVB_WS_DOMAIN
            - JVB_WS_SERVER_ID
            - PUBLIC_URL
            - JVB_OCTO_BIND_ADDRESS
            - JVB_OCTO_PUBLIC_ADDRESS
            - JVB_OCTO_BIND_PORT
            - JVB_OCTO_REGION
            - TZ
        extra_hosts:
            - "meet.jitsi:192.168.1.2"
            - "xmpp.meet.jitsi:192.168.1.2"

THE ISSUE

What is happening is, when only one from both the JVB’s run, the meetings run perfectly. But as soon as the second bridge connects to the main jms, the participants from the first - second bridge cannot hear see each other.

These are the exact jvb logs that I see in both the jvb’s when the meeting starts with 2 jvb’s

JMS-JVB1

WARNING: Error sending data
java.lang.IllegalArgumentException: unresolved address
        at java.net.DatagramPacket.setSocketAddress(DatagramPacket.java:316)
        at java.net.DatagramPacket.<init>(DatagramPacket.java:144)
        at org.jitsi.videobridge.transport.udp.UdpTransport.send(UdpTransport.kt:123)
        at org.jitsi.videobridge.transport.udp.UdpTransport.send(UdpTransport.kt:135)
        at org.jitsi.videobridge.octo.OctoRelayService$2.sendData(OctoRelayService.kt:85)
        at org.jitsi.videobridge.transport.octo.BridgeOctoTransport.sendData(BridgeOctoTransport.kt:231)
        at org.jitsi.videobridge.transport.octo.BridgeOctoTransport.sendMediaData(BridgeOctoTransport.kt:180)
        at org.jitsi.videobridge.octo.ConfOctoTransport.doSend(ConfOctoTransport.java:292)
        at org.jitsi.nlj.util.PacketInfoQueue$sam$org_jitsi_utils_queue_PacketQueue_PacketHandler$0.handlePacket(PacketInfoQueue.kt)
        at org.jitsi.utils.queue.PacketQueue$HandlerAdapter.handleItem(PacketQueue.java:380)
        at org.jitsi.utils.queue.AsyncQueueHandler$1.run(AsyncQueueHandler.java:133)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

JVB-2

Sep 15, 2021 12:32:41 PM org.jitsi.utils.logging2.LoggerImpl log
WARNING: Error sending data
java.lang.IllegalArgumentException: unresolved address
     at java.net.DatagramPacket.setSocketAddress(DatagramPacket.java:316)
     at java.net.DatagramPacket.<init>(DatagramPacket.java:144)
     at org.jitsi.videobridge.transport.udp.UdpTransport.send(UdpTransport.kt:123)
     at org.jitsi.videobridge.transport.udp.UdpTransport.send(UdpTransport.kt:135)
     at org.jitsi.videobridge.octo.OctoRelayService$2.sendData(OctoRelayService.kt:85)
     at org.jitsi.videobridge.transport.octo.BridgeOctoTransport.sendData(BridgeOctoTransport.kt:231)
     at org.jitsi.videobridge.transport.octo.BridgeOctoTransport.sendMediaData(BridgeOctoTransport.kt:180)
     at org.jitsi.videobridge.octo.ConfOctoTransport.doSend(ConfOctoTransport.java:292)
     at org.jitsi.nlj.util.PacketInfoQueue$sam$org_jitsi_utils_queue_PacketQueue_PacketHandler$0.handlePacket(PacketInfoQueue.kt)
     at org.jitsi.utils.queue.PacketQueue$HandlerAdapter.handleItem(PacketQueue.java:380)
     at org.jitsi.utils.queue.AsyncQueueHandler$1.run(AsyncQueueHandler.java:133)
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
     at java.lang.Thread.run(Thread.java:748)

There are no active firewalls on both the machines
From what I can understand, its this a port 4096 issue? Because everything works well just in case there is only one active JVB either 1 or 2

Do I need to forward 4096/udp from firewall to JMS VM i.e 192.168.1.2?