Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SRT-bonding send data via 2 ISP network interface #3111

Open
mks75 opened this issue Feb 11, 2025 · 3 comments
Open

SRT-bonding send data via 2 ISP network interface #3111

mks75 opened this issue Feb 11, 2025 · 3 comments
Labels
Type: Question Questions or things that require clarification

Comments

@mks75
Copy link

mks75 commented Feb 11, 2025

Hi, I am trying to test connection bonding using srt-test-live, and observing the sending data goes through one network only. Following is my test setup:

Sender (mode=Listener):
Has two network interface and connected to two separate ISP networks (192.168.2.135/24) and (192.168.31.135/24). 192.168.2.1 is the default gateway while 192.168.31.1 gateway is set via policy routing.

./srt-test-live "udp://@239.1.1.1:1234" -g "srt://:5000?groupconnect=1&mode=listener"

Receiver (mode=Caller)
Has single interface connected to single ISP with network 192.168.8.10/24.

./srt-test-live "srt://ISP1:5000?type=broadcast&mode=caller" "srt://ISP2:5000?type=broadcast&mode=caller" -g "udp://@239.2.2.2:1234"

On the sender side, it always connect with default gateway 192.168.2.1 via ISP1 only, while no connection on ISP2.
Please advise.

@ethouris ethouris added the Type: Question Questions or things that require clarification label Feb 13, 2025
@ethouris
Copy link
Collaborator

What happens if you establish only one connection - for both these two addresses separately?

@mks75
Copy link
Author

mks75 commented Feb 14, 2025

Yes, they both work separately with 'adapter' parameter and use the respective ISP correctly.
./srt-test-live "udp://@239.1.1.1:1234" -g "srt://:5000?adapter=192.168.2.135&groupconnect=1&mode=listener"
./srt-test-live "udp://@239.1.1.1:1234" -g "srt://:5000?adapter=192.168.31.135&groupconnect=1&mode=listener"

I also tried putting them together like
./srt-test-live "udp://@239.1.1.1:1234" -g "srt://192.168.2.135:5000?groupconnect=1&mode=listener" "srt://192.168.31.135:5000?groupconnect=1&mode=listener"
But this gives ERROR (app): With //group, type='redundancy' undefined

@ethouris
Copy link
Collaborator

No, I mean caller.

The -g option is only for a caller, and it's actually because this option frees the command line syntax checker from requiring exactly two free parameters in the command line. On the listener side you just set up one listener and DO NOT specify the -g option.

There are two ways how you should use the listener:

  1. One listener for all group members - just set up a listener to "omni" binding (do not specify the IP address nor adapter).
  2. Use multiple listeners, each one bound to the specific adapter (the port can be even the same, it doesn't matter in this case). The srt-test-live application doesn't allow this, but there's a dedicated application that can do this, if you want to test: srt-test-mpbond.

What I wanted to know is whether THE CALLER finds the right path to connect to the listener through the particular network path. For that you need to:

  1. Set up a listener with "omni" binding. Using the command you supplied, it will be something like:
./srt-test-live "udp://@239.1.1.1:1234" "srt://:5000?groupconnect=1"

(mode=listener is the default if you do not specify the IP address in the URI)

  1. On the other side, use the caller, once with one of the addresses, and then the other - those that should be resolved through different network path. And check if both of them are transmitting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Question Questions or things that require clarification
Projects
None yet
Development

No branches or pull requests

2 participants