Network
Oden network links carry realtime video, audio, feedback, and com-channel traffic between Streamer and Player.
For most projects, configure one Streamer Initiator link and one Player Responder link.
For bitrate, FEC, and bandwidth regulation, see Bitrate control and Auto Video Packing.
Configure a direct Streamer-to-Player link
Use this when the Streamer can reach the Player IP address and UDP receive port.
-
On the Player, select the
Remote Streamerentity. -
Open
Network. -
Select
Add Linkif the entity has no link. -
Set
ModetoResponder. -
Set
Receive Portto the UDP port the Streamer will send to, for example47000. -
Leave
Bind IPempty or set it to0.0.0.0unless the Player must listen on one specific address. -
On Linux, set
Bind Deviceonly when traffic must use one network interface regardless of system routes. -
On the Streamer, open
Network. -
Set the Streamer link
ModetoInitiator. -
Set
Destination Addr.to the Player address or DNS name. -
Set
Destination Portto the PlayerReceive Port. -
Start
Outputand verify video on the Player.
The default Streamer link is an initiator, and the default destination is 127.0.0.1:47000.
Change it before testing across machines.
Core link settings:
- Mode
-
Initiatorsends to a destination address and port.Responderlistens on a receive port and replies through the same link state. - Receive Port
-
UDP port used by a responder.
- Destination Addr. / Destination Port
-
Address and UDP port used by an initiator.
- Bind IP
-
Local address to bind. Leave empty or use
0.0.0.0/::unless a specific local address is required. - Bind Device
-
Linux interface name used when the link must leave through a specific network device.
- Name
-
Human-readable label shown in stats and commissioning notes.
- Bonding Group
-
Groups links that carry the same realtime stream.
Add modem or interface links
Use multiple links when a vehicle has more than one modem, network adapter, or route to the Player.
-
Add one link per path on both sides.
-
Keep each Streamer
Destination Addr.andDestination Portmatched to the corresponding Player responder. -
Give each link a
Namethat identifies the modem or adapter. -
On Linux, set
Bind Devicefor links that must leave through a specific interface. -
Put links that carry the same stream in the same
Bonding Group. -
In
LLTP Bonding, leaveDynamic Bondingenabled only when Oden should choose link usage from feedback. -
Set
FEC Redundant Linksto0or1unless a measured network test shows that more redundancy is needed.
Use Link Stats to confirm that traffic is flowing on the expected links.
If one link shows errors or no traffic, first check route, firewall, bind device, and destination port.
Link stats include per-link bandwidth, packet loss, bytes in flight, round-trip time, and channel usage.
Use the graph colors and link names to confirm that each physical modem or interface is active during the test, not merely configured.
Use P2P or encryption
Use P2P when the link may be able to switch to a direct peer-to-peer path after initial connectivity.
The default STUN Server is stun.l.google.com:19302.
Add Excluded Subnets in CIDR notation, for example 100.100.0.0/24, when a subnet must not be used for P2P.
Use Encryption when the link must authenticate peers and encrypt traffic.
-
Generate or select a
Key Pair Pathon each side. -
Copy the other side’s
Public KeyintoAllowed Public Keys. -
If traffic is relayed through a WireGuard server, set
Internal src.andInternal dst.to the corresponding tunnel addresses. -
Keep initiator links to one allowed public key unless support has given a project-specific reason to do otherwise.
Relay traffic through a WireGuard server
Use this pattern when Streamer and Player cannot reach each other directly and must relay encrypted Oden traffic through a standalone WireGuard server.
In this setup, both Streamer and Player links use Initiator mode because both sides send to the relay server rather than directly to each other.
Example assumptions:
-
WireGuard server:
gateway.example.com -
Streamer has two modem interfaces:
192.168.8.10and192.168.10.10 -
Internal tunnel addresses:
10.200.0.10and10.200.0.20for Streamer links,10.200.0.30and10.200.0.40for Player links
| Setting | Link 0 | Link 1 |
|---|---|---|
Mode |
|
|
Bind Addr. |
|
|
Destination Addr. |
|
|
Encryption > Allowed Public Keys |
WireGuard server public key |
WireGuard server public key |
Encryption > Advanced > Internal src. |
|
|
Encryption > Advanced > Internal dst. |
|
|
| Setting | Link 0 | Link 1 |
|---|---|---|
Mode |
|
|
Bind Addr. |
|
|
Destination Addr. |
|
|
Encryption > Allowed Public Keys |
WireGuard server public key |
WireGuard server public key |
Encryption > Advanced > Internal src. |
|
|
Encryption > Advanced > Internal dst. |
|
|
Generate a key pair for every Oden link and copy each public key to the WireGuard server.
/etc/wireguard/wg0.conf[Interface]
Address = 10.200.0.1/24
PrivateKey = WIREGUARD_SERVER_PRIVATE_KEY
ListenPort = 51820
[Peer]
PublicKey = WIREGUARD_STREAMER_LINK_0_PUBLIC_KEY
AllowedIPs = 10.200.0.10/32
[Peer]
PublicKey = WIREGUARD_STREAMER_LINK_1_PUBLIC_KEY
AllowedIPs = 10.200.0.20/32
[Peer]
PublicKey = WIREGUARD_PLAYER_LINK_0_PUBLIC_KEY
AllowedIPs = 10.200.0.30/32
[Peer]
PublicKey = WIREGUARD_PLAYER_LINK_1_PUBLIC_KEY
AllowedIPs = 10.200.0.40/32
Make sure Linux routing sends each Streamer modem interface through the intended modem gateway.
For example, traffic bound to 192.168.8.10 should leave through the modem on that interface.
Validate network changes
-
Start Streamer
Output. -
On the Player, open the
Remote Streamerentity. -
In
Network, openStatsand enableEnable Link Stats. -
Confirm that
RxandTxtraffic update on the intended link. -
In
Output, openBandwidth Controland checkBandwidth,Round Trip Time,Packet Loss, andWanted Bitrate. -
Save both projects when link settings are stable.
If video connects but audio or com-channel traffic does not, check the same link first. All realtime traffic uses the configured network manager links.
Project-file names
Network links are stored under net_settings.links.
The UI mode names Initiator and Responder serialize as sender and receiver.
net_settings : {
links : ( {
name : "primary";
mode : "sender";
bind_ip : "::";
destination_ip : "192.0.2.20";
destination_port : 47000;
bonding_group : 0;
} );
};
In Streamer projects, net_settings is under stream_settings.typeData.realtime_nvenc_gstreamer.
In Player projects, it is under the remote_streamer entity.