SRV record
A Service record is a specification of data in the Domain Name System defining the location, i.e., the hostname and port number, of servers for specified services. It is defined in, and its type code is 33. Some Internet protocols such as the Session Initiation Protocol and the Extensible Messaging and Presence Protocol often require SRV support by network elements.
Record format
A SRV record has the form:- 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, ending in a dot.
- ttl: standard DNS time to live field.
- IN: standard DNS class field.
- SRV: Type of Record.
- priority: the priority of the target host, lower value means more preferred.
- weight: A relative weight for records with the same priority, higher value means higher chance of getting picked.
- port: the TCP or UDP port on which the service is to be found.
- target: the canonical hostname of the machine providing the service, ending in a dot.
This points to a server named
sipserver.example.com listening on TCP port 5060 for Session Initiation Protocol protocol services. The priority given here is 0, and the weight is 5.As in MX records, the target in SRV records must point to hostname with an address record. Pointing to a hostname with a CNAME record is not a valid configuration.
Provisioning for high service availability
The priority field determines the precedence of the use of the record's data. Clients should use the SRV records with the lowest-numbered priority value first, and fall back to records of higher value if the connection fails. If a service has multiple SRV records with the same priority value, clients should load balance them in proportion to the values of their weight fields.In the following example, both the priority and weight fields are used to provide a combination of load balancing and backup service.
The first three records share a priority of 10, so the weight field's value will be used by clients to determine which server to contact. The sum of all three weight values is 100, so
bigbox.example.com will be used 60% of the time. The two hosts, smallbox1 and smallbox2 will be used for 40% of requests total, with half of them sent to smallbox1, and the other half to smallbox2. If bigbox is unavailable, these two remaining machines will share the load equally, since they will each be selected 50% of the time.If all three servers with priority 10 are unavailable, the record with the next lowest priority value will be chosen, which is
backupbox.example.com. This might be a machine in another physical location, presumably not vulnerable to anything that would cause the first three hosts to become unavailable.The load balancing provided by SRV records is inherently limited since the information is essentially static. The current load of servers is not taken into account unless TTL values are low enough that the priority values can be quickly updated.
Usage
SRV records are common in conjunction with the following standardized communications protocols:- APT
- CalDAV and CardDAV
- Ceph
- DANE
- DNS Service Discovery (DNS-SD)
- Factorio
- Host Identity Protocol
- Kerberos
- LDAP
- SMTP submission agent|submission], POP, and IMAP
- Matrix.org
- Minecraft
- MongoDB
- Mumble
- OMA [Instant Messaging and Presence Service|IMPS]
- Puppet
- Rust
- Session Initiation Protocol
- STUN
- Teamspeak 3
- XMPP
In Microsoft Windows networks domain controllers register their network service types for Active Directory in the DNS.
An older version of the Internet Draft for OpenPGP Web Key Directory uses SRV records for discovering OpenPGP keys through web servers. Usages of SRV records are no longer part of the Internet Draft in later versions.
A registry of service names for SRV records & protocols is maintained by the Internet Assigned Numbers Authority as defined in.