SRV Records

From XMPP WIKI
Revision as of 16:06, 31 August 2011 by Neustradamus (talk | contribs)
Jump to navigation Jump to search

A Service record (SRV record) is a specification of data in the Domain Name System (DNS) defining the location (i.e. the hostname and port number) of servers for specified services. It is defined in RFC 2782.

Ports

  • XMPP uses 5222 (C2S) and 5269 (S2S) ports in TCP only (RFC 6020).
  • STUN uses 3478 port in TCP/UDP and STUNS (STUN over TLS) uses 5349 port in TCP only (RFC 5389).
  • TURN uses 3478 port in TCP/UDP and TURNS (TURN over TLS) uses 5349 port in TCP only (RFC 5766, RFC 5928).

Record format

An SRV record has the form:

_service._proto.name TTL class SRV priority weight port target
  • service: the symbolic name of the desired service.
  • proto: the transport protocol of the desired service; this is usually either TCP or UDP.
  • name: the domain name for which this record is valid.
  • TTL: standard DNS time to live field.
  • class: standard DNS class field (this is always IN).
  • priority: the priority of the target host, lower value means more preferred.
  • weight: A relative weight for records with the same priority.
  • port: the TCP or UDP port on which the service is to be found.
  • target: the canonical hostname of the machine providing the service.

XMPP SRV records

_xmpp-client._tcp.example.net. TTL IN SRV priority weight port target
_xmpp-server._tcp.example.net. TTL IN SRV priority weight port target

Example 1

_xmpp-client._tcp.example.net. 86400 IN SRV 5 0 5222 example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 5 0 5269 example.net.

The XMPP domain is example.net and the server is example.net.

Example 2

_xmpp-client._tcp.example.net. 86400 IN SRV 5 0 5222 server.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 5 0 5269 server.example.net.

The XMPP domain is example.net and the server is server.example.net.

Example 3

_xmpp-client._tcp.example.net. 86400 IN SRV 5 50 5222 server1.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 10 30 5222 server2.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 10 10 5222 server3.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 10 10 5222 server4.example.net.
_xmpp-client._tcp.example.net. 86400 IN SRV 15 0 5222 backup.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 5 50 5269 server1.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 10 30 5269 server2.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 10 10 5269 server3.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 10 10 5269 server4.example.net.
_xmpp-server._tcp.example.net. 86400 IN SRV 15 0 5269 backup.example.net.

The XMPP domain is example.net and the principal server is server1.example.net which used 50% after server2.example.net 30%, server3.example.net 10%, server4.example.net 10% too, if server1 is down, server2, server3 and server4 will work, if servers 1/2/3/4 are down, backup will work.

Retrieving XMPP SRV records

$ dig SRV _xmpp-client._tcp.example.net
$ dig SRV _xmpp-server._tcp.example.net


STUN SRV records

_stun._tcp.example.net. TTL IN SRV priority weight port target
_stun._udp.example.net. TTL IN SRV priority weight port target

Example 1

_stun._tcp.example.net. 86400 IN SRV 5 0 3478 example.net.
_stun._udp.example.net. 86400 IN SRV 5 0 3478 example.net.
_stuns._tcp.example.net. 86400 IN SRV 5 0 5349 example.net.

The STUN domain is example.net and the server is example.net.

Example 2

_stun._tcp.example.net. 86400 IN SRV 5 0 3478 server.example.net.
_stun._udp.example.net. 86400 IN SRV 5 0 3478 server.example.net.
_stuns._tcp.example.net. 86400 IN SRV 5 0 5349 server.example.net.

The STUN domain is example.net and the server is server.example.net.

Example 3

_stun._tcp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_stun._tcp.example.net. 86400 IN SRV 10 30 3478 server2.example.net.
_stun._tcp.example.net. 86400 IN SRV 10 10 3478 server3.example.net.
_stun._tcp.example.net. 86400 IN SRV 10 10 3478 server4.example.net.
_stun._tcp.example.net. 86400 IN SRV 15 0 3478 backup.example.net.
_stun._udp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_stun._udp.example.net. 86400 IN SRV 10 30 3478 server2.example.net.
_stun._udp.example.net. 86400 IN SRV 10 10 3478 server3.example.net.
_stun._udp.example.net. 86400 IN SRV 10 10 3478 server4.example.net.
_stun._udp.example.net. 86400 IN SRV 15 0 3478 backup.example.net.
_stuns._tcp.example.net. 86400 IN SRV 5 50 5349 server1.example.net.
_stuns._tcp.example.net. 86400 IN SRV 10 30 5349 server2.example.net.
_stuns._tcp.example.net. 86400 IN SRV 10 10 5349 server3.example.net.
_stuns._tcp.example.net. 86400 IN SRV 10 10 5349 server4.example.net.
_stuns._tcp.example.net. 86400 IN SRV 15 0 5349 backup.example.net.

The XMPP domain is example.net and the principal server is server1.example.net which used 50% after server2.example.net 30%, server3.example.net 10%, server4.example.net 10% too, if server1 is down, server2, server3 and server4 will work, if servers 1/2/3/4 are down, backup will work.

Retrieving STUN SRV records

$ dig SRV _stun._tcp.example.net
$ dig SRV _stun._udp.example.net
$ dig SRV _stuns._tcp.example.net

TURN SRV records

_turn._tcp.example.net. TTL IN SRV priority weight port target
_turn._udp.example.net. TTL IN SRV priority weight port target

Example 1

_turn._tcp.example.net. 86400 IN SRV 5 0 3478 example.net.
_turn._udp.example.net. 86400 IN SRV 5 0 3478 example.net.
_turns._tcp.example.net. 86400 IN SRV 5 0 5349 example.net.

The TURN domain is example.net and the server is example.net.

Example 2

_turn._tcp.example.net. 86400 IN SRV 5 0 3478 server.example.net.
_turn._udp.example.net. 86400 IN SRV 5 0 3478 server.example.net.
_turns._tcp.example.net. 86400 IN SRV 5 0 5349 server.example.net.

The TURN domain is example.net and the server is server.example.net.

Example 3

_turn._tcp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_turn._tcp.example.net. 86400 IN SRV 10 30 3478 server2.example.net.
_turn._tcp.example.net. 86400 IN SRV 10 10 3478 server3.example.net.
_turn._tcp.example.net. 86400 IN SRV 10 10 3478 server4.example.net.
_turn._tcp.example.net. 86400 IN SRV 15 0 3478 backup.example.net.
_turn._udp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_turn._udp.example.net. 86400 IN SRV 10 30 3478 server2.example.net.
_turn._udp.example.net. 86400 IN SRV 10 10 3478 server3.example.net.
_turn._udp.example.net. 86400 IN SRV 10 10 3478 server4.example.net.
_turn._udp.example.net. 86400 IN SRV 15 0 3478 backup.example.net.
_turns._tcp.example.net. 86400 IN SRV 5 50 5349 server1.example.net.
_turns._tcp.example.net. 86400 IN SRV 10 30 5349 server2.example.net.
_turns._tcp.example.net. 86400 IN SRV 10 10 5349 server3.example.net.
_turns._tcp.example.net. 86400 IN SRV 10 10 5349 server4.example.net.
_turns._tcp.example.net. 86400 IN SRV 15 0 5349 backup.example.net.

The XMPP domain is example.net and the principal server is server1.example.net which used 50% after server2.example.net 30%, server3.example.net 10%, server4.example.net 10% too, if server1 is down, server2, server3 and server4 will work, if servers 1/2/3/4 are down, backup will work.

Retrieving TURN SRV records

$ dig SRV _turn._tcp.example.net
$ dig SRV _turn._udp.example.net
$ dig SRV _turns._tcp.example.net

External links