After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 647252 - make udpsink generate keep alive packets
make udpsink generate keep alive packets
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-04-09 08:18 UTC by Oleksij Rempel
Modified: 2011-04-11 17:05 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Oleksij Rempel 2011-04-09 08:18:53 UTC
It is important for VoIP to keep hole in firewall/nat. To do this we need to send some think to get it back.
Current empathy ill encode sound (or even silence) and send this stream just to recive other stream. In some situations this produce too big/useless overhead on network.

Maximum what we need is empty udp packet. No rtp, or even audio in it.

Current speex already has integrated silence detection, and generate empty packets with GAP flag. Current rtpspeexpay will drop this packets (after my patch, see Bug 646474). So probably i should change rtpspeexpay to generate keep alive event on GAP packet. And udpsink if it recive this event should send just empty udp packet.
Comment 1 Oleksij Rempel 2011-04-09 08:25:16 UTC
Key words for this issue are: "UDP hole punching", "NAT traversal"
Comment 2 Oleksij Rempel 2011-04-09 10:00:02 UTC
The next idea is for fallowing schema:
Two peers A and B. The peer B connected direct to the internet, without NAT
Peer A connected with NAT, so A can recive only if A send keep alive packets. B do need to get this packets. So we can set TTL of keep alive packets to 1 (or what ever it need), just to pass first NAT.

So udpsink also need option to set ttl of keep alive packets.

Your thoughts?
Comment 3 Oleksij Rempel 2011-04-09 10:01:41 UTC
Correction: "B do _not_ need to get this packets"
Comment 4 Olivier Crête 2011-04-09 14:19:45 UTC
Not udpsink's job...

If you want a complete NAT traversal solution (including keepalives), use libnice.
Comment 5 Olivier Crête 2011-04-09 14:53:13 UTC
You may also be interested by
http://tools.ietf.org/html/draft-ietf-avt-app-rtp-keepalive

Which recommends using RTP/RTCP muxing (which is also on my todo list for Farsight2)
Comment 6 Mikhail Zabaluev 2011-04-11 17:05:40 UTC
I guess it's only relevant when ICE is not in use. Nice should generate in-band STUN keepalives.

CN payloads (RFC 3389) can also be sent if negotiated by both parties.