Skip to content

Use the Additional section of SRV queries instead of doing extra requests #675

@Esya

Description

@Esya

It seems like opensips when using SRV records does not read and use the ADDITIONAL RECORDS, and instead sends another DNS request to get the IP for the host, which is inefficient and could be supported just like mentioned in the RFC 2782 :

For each element in the new list

  query the DNS for address records for the Target or
  use any such records found in the Additional Data
  section of the earlier SRV response.

Example, for our _sip._udp service using our service discovery tool :

;; ANSWER SECTION:
_sip._udp.service.consul. 15  IN  SRV 1 1 5063 ourserver.node.us.consul.
_sip._udp.service.consul. 15  IN  SRV 1 1 5060 ourserver.node.us.consul.
_sip._udp.service.consul. 15  IN  SRV 1 1 5062 ourserver.node.us.consul.
_sip._udp.service.consul. 15  IN  SRV 1 1 5061 ourserver.node.us.consul.

;; ADDITIONAL SECTION:
ourserver.node.us.consul. 15 IN A 98.XXX.XXX.XXX

It has all the information it needs but it still does an extra A query, which is an issue for us as some of our services run on different interfaces. I'm looking at resolve.c and trying to see how this can be implemented (See how Kamailio is doing it for example) but I've ran into issues with the dns_cache. Any thoughts or anyone that would like to take on this issue?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions