What is WAVE Sync
Allows connecting to the WAVE Server behind a NAT without setting up port forwarding.
Services that take part in the WAVE Sync
This is an intermediate service which allows the server and the client (each behind its own NAT) to find out the address of each other to establish a direct connection.
This is another cloud service responsible for relaying traffic between the client and the media server in the event that UDP hole punching does not work.
If a System is connected to WAVE Sync:
- Just after it starts, Server reports all of its local addresses to the It is needed in case the media server is installed on a machine with a public IP.
- The media server connects to the relay and waits for incoming
The client takes the following steps to connect to the media server:
- If the media server can be found in a LAN using multicast, then the client establishes a direct TCP connection to that In this case, the mediator is not used.
- Otherwise, the client sends a connect request to the
- The mediator responds with all known addresses of the media server, this includes TCP addresses (forwarded and local) and the UDP address obtained by punching a hole in
- After receiving this information, the client tries to establish a connection to every address
- At the same time the client tries to connect to the media server through a cloud relay
Note: To minimize connection time, there is no preference between TCP or UDP. In some network environments, TCP may be the only option, while in others - UDP. Because of this possibility, giving preference to one of them will slow down the time it takes to connect.
NAT traversing methods
UDP hole punching
NAT allows a host to send UDP packet to some public UDP service.
When the host sends a UDP packet, NAT allocates a public port (port1 on address ip1) for that packet and sends the request as if it has been sent from ip1:port1.
When that service sends a response back to the ip1:port1, NAT knows it is actually Server that awaits the response and forward response to it.
So, when sending a UDP request from within NAT to the public, NAT punches a hole. This method is used in hole punching to establish a reliable connection over UDP between two peers, each behind its own NAT.
UDP hole punching does not guarantee success in 100% of cases. Success is dependent upon client and media server NAT types.
All NAT types except for symmetric NAT allow for UDP hole punching. Although a firewall/antivirus can still block UDP traffic (like any other traffic, actually).