login | register
Wed 09 of Jul, 2008 [05:43 UTC]

voip-info.org

History

STUN

Created by: jht2,Last modification on Thu 03 of Jul, 2008 [20:34 UTC] by chandave
STUN (Simple Traversal of UDP through NATs (Network Address Translation)) is a protocol for assisting devices behind a NAT firewall or router with their packet routing.

Note: The STUN RFC states: This protocol is not a cure-all for the problems associated with NAT.


  • STUN enables a device to find out its public IP address and the type of NAT service its sitting behind.
  • STUN operates on TCP and UDP port 3478.
  • STUN is not widely supported by VOIP devices yet.
  • STUN may use DNS SRV records to find STUN servers attached to a domain. The service name is _stun._udp or _stun._tcp

Definitions (from the RFC)

  • STUN Client: A STUN client (also just referred to as a client) is an entity that generates STUN requests. A STUN client can execute on an end system, such as a user's PC, or can run in a network element, such as a conferencing server.
  • STUN Server: A STUN Server (also just referred to as a server) is an entity that receives STUN requests, and sends STUN responses. STUN servers are generally attached to the public Internet.

Various types of NAT (still according to the RFC)
  • Full Cone: A full cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. Furthermore, any external host can send a packet to the internal host, by sending a packet to the mapped external address.
  • Restricted Cone: A restricted cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. Unlike a full cone NAT, an external host (with IP address X) can send a packet to the internal host only if the internal host had previously sent a packet to IP address X.
  • Port Restricted Cone: A port restricted cone NAT is like a restricted cone NAT, but the restriction includes port numbers. Specifically, an external host can send a packet, with source IP address X and source port P, to the internal host only if the internal host had previously sent a packet to IP address X and port P.
  • Symmetric: A symmetric NAT is one where all requests from the same internal IP address and port, to a specific destination IP address and port, are mapped to the same external IP address and port. If the same host sends a packet with the same source address and port, but to a different destination, a different mapping is used. Furthermore, only the external host that receives a packet can send a UDP packet back to the internal host.



Closing words (also from the RFC)

14.6 In Closing

The problems with STUN are not design flaws in STUN. The problems in STUN have to do with the lack of standardized behaviors and controls in NATs. The result of this lack of standardization has been a proliferation of devices whose behavior is highly unpredictable, extremely variable, and uncontrollable. STUN does the best it can in such a hostile environment. Ultimately, the solution is to make the environment less hostile, and to introduce controls and standardized behaviors into NAT. However, until such time as that happens, STUN provides a good short term solution given the terrible conditions under which it is forced to operate.





Standard documents

STUN RFC RFC 3489

Update to STUN protocol

STUN standard is currently being reworked in STUN-bis

Software

  • vovida.org has an open source STUN server: vovida.org STUN server
  • a Linux open source STUN server is also available here myStun
  • a Java STUN library (includes a STUN client): JSTUN
  • a Microsoft windows based simple STUN server: miniSipServer
  • PJNATH library from pjsip.org project is an Open Source NAT traversal library supporting STUN, TURN, and ICE.


Public STUN servers

  • stun.ekiga.net
  • stun.fwdnet.net (no XOR_MAPPED_ADDRESS support)
  • stun.ideasip.com (no XOR_MAPPED_ADDRESS support)
  • stun01.sipphone.com (no DNS SRV record)
  • stun.softjoys.com (no DNS SRV record) (no XOR_MAPPED_ADDRESS support)
  • stun.voipbuster.com (no DNS SRV record) (no XOR_MAPPED_ADDRESS support)
  • stun.voxgratia.org (no DNS SRV record) (no XOR_MAPPED_ADDRESS support)
  • stun.xten.com
  • stunserver.org see their usage policy
  • stun.sipgate.net:10000
  • numb.viagenie.ca (http://numb.viagenie.ca) (no XOR_MAPPED_ADDRESS support)

See also


Note: XOR_MAPPED_ADDRESS support on STUN Servers

Some home routers (namely Linksys routers whose firmware is based on the Linux kernel) have a tendency to alter the STUN reply packets from the STUN server. It changes the MAPPED_ADDRESS from the public IP address derived by the server to the IP address of the router's WAN port. If the router's WAN port is not assigned a public IP address (as in the case of Internet Service Providers like AT&T Uverse), then the application using STUN to discover its public IP address will get the wrong info.

STUN provides a work-around to this problem via XOR_MAPPED_ADDRESS. A STUN client can request an XOR_MAPPED_ADDRESS as well as the standard MAPPED_ADDRESS. While the router may alter the MAPPED_ADDRESS, it shouldn't change the XOR_MAPPED_ADDRESS.

Unfortunately, not all STUN servers support XOR_MAPPED_ADDRESS. The public STUN servers listed on this wiki have been updated with info about lack of support for XOR_MAPPED_ADDRESS.


Additional reading

STUN sits along side a number of techniques to achieving NAT traversal, these include TURN, ICE UPnP and Session Border controllers. ICE provides a framework pulls together a number of different techniques: STUN, TURN, RSIP, to allow a client to investigate its environment, however, this flexibility comes at a cost - additional client complexity.

Comments

Comments Filter
222

333SIP supported STUNs

by James_Yulo_De, Tuesday 23 of January, 2007 [15:46:08 UTC]
I heard that major public STUNs have SIP support flaws. But there is one recomended by SIP device manufacturers. That is www.whatismyip.com as well as www.ipchicken.com and www.showmyip.com

AFAIK, www.whatismyip.com supports RFC3489 and can receive and send STUN request from a device. The fact that they can throw you back your publick IP is that they have a STUN at their backend that can automaticaly reply your STUN request. Same as with www.ipchicken.com and www.showmyip.com Many SIP ATA devices today such as ATCOM, xten.de, Chinarobi uses www.whatismyip.com I also heard its SIP friendly.
222

333

by trixter, Monday 21 of August, 2006 [00:34:48 UTC]
stun servers really shouldnt be in the telephony application, however client support should be. FreeSwitch supports stun as a client when making calls, which helps get rid of nat related issues. STUN servers are fairly small as well, and easy to install everywhere (or use a SRV record to point to one of the public ones :)

222

333Re: Re: STUN is now widely supported

by sjobeck, Monday 24 of October, 2005 [19:38:00 UTC]
no need to frown. Asterisk is tremendous, you must know that if youre on this site. Please do not try to make Asterisk do everything for all people or it will turn in to a bag of mush. It is tremendous at what it does. STUN is a work-around. As soon as IPv6 is here (hope I'm alive to enjoy it) STUN will be obsoleted. Let others cook-up this stuff & leave Asterisk to do telephone calls. Peace. Love. Linux. Jason
222

333Re: STUN is now widely supported

by enzo, Friday 26 of August, 2005 [16:08:15 UTC]
Yeah, but not by Asterisk, AFAIK (:frown:) See bounty.
222

333STUN is now widely supported

by oobx, Thursday 25 of August, 2005 [05:02:51 UTC]
I've not seen a SIP device yet that didn't have STUN capabilities. So, I'd argue that the bullet points of STUN (as of 8/25/05) above (" STUN is not widely supported by VOIP devices yet.") is wrong. However, I recommend keeping in mind that some legacy equipment might not support it. If this is the case, try a firmware update.
222

333sorry

by , Wednesday 10 of December, 2003 [10:03:10 UTC]
222

333stund

by , Wednesday 10 of December, 2003 [09:58:41 UTC]
The link to the vovida stun daemon links to what appears to be a deprecated site, it doesn;t appear so at first, but of the code on there, the 0.8 release candidate has no makfiles for unix and the 0.7 release is completely useless in regards to actual stun client in the wild.

It appears that the proper place to get stund from is now http://stun.sourceforge.net