nmos-cpp: IS-04 unicast discover more than 2 doesn't work
Hello,
I’m having issues discovering more than 2 registration API’s in unicast DNS_SD mode. I am using avahi 0.7 as DNS_SD resolver and have the following BIND config (sorry for the uninitiated 😃 ):
$ORIGIN .
$TTL 604800 ; 1 week
axon.jtnm.lan IN SOA axon.jtnm.lan. root.axon.jtnm.lan. (
1 ; serial
604800 ; refresh (1 week)
86400 ; retry (1 day)
2419200 ; expire (4 weeks)
604800 ; minimum (1 week)
)
NS axon.jtnm.lan.
NS localhost.
A 192.168.10.254
$ORIGIN axon.jtnm.lan.
$TTL 0 ; 1 hour
; reg1 A 192.168.10.254
; These lines indicate to clients that this server supports DNS Service Discovery
b._dns-sd._udp IN PTR @
lb._dns-sd._udp IN PTR @
; These lines indicate to clients which service types this server may advertise
_services._dns-sd._udp PTR _nmos-register._tcp
_services._dns-sd._udp PTR _nmos-registration._tcp
_services._dns-sd._udp PTR _nmos-query._tcp
_services._dns-sd._udp PTR _nmos-system._tcp
; These lines give the fully qualified DNS names to the IP addresses of the hosts which we'd like to discover
; This example uses a domain of 'dns.nmos.tv'. We recommend using a subdomain of a domain name which you own.
reg1 IN A 192.168.10.1
reg2 IN A 192.168.10.2
reg3 IN A 192.168.10.3
reg4 IN A 192.168.10.4
; query1.dns.nmos.tv. IN A 192.168.200.6
; There should be one PTR record for each instance of the service you wish to advertise.
; Here we have one Registration API (_nmos-registration._tcp) and one Query API (_nmos-query._tcp)
; From v1.3, the Registration API switches to use a new name (_nmos-register._tcp)
_nmos-register._tcp PTR reg-api-1._nmos-register._tcp
_nmos-registration._tcp PTR reg-api-1._nmos-registration._tcp
_nmos-query._tcp PTR qry-api-1._nmos-query._tcp
_nmos-system._tcp PTR sys-api-1._nmos-system._tcp
_nmos-register._tcp PTR reg-api-2._nmos-register._tcp
_nmos-registration._tcp PTR reg-api-2._nmos-registration._tcp
_nmos-query._tcp PTR qry-api-2._nmos-query._tcp
_nmos-system._tcp PTR sys-api-2._nmos-system._tcp
_nmos-register._tcp PTR reg-api-3._nmos-register._tcp
_nmos-registration._tcp PTR reg-api-3._nmos-registration._tcp
_nmos-query._tcp PTR qry-api-3._nmos-query._tcp
_nmos-system._tcp PTR sys-api-3._nmos-system._tcp
_nmos-register._tcp PTR reg-api-4._nmos-register._tcp
_nmos-registration._tcp PTR reg-api-4._nmos-registration._tcp
_nmos-query._tcp PTR qry-api-4._nmos-query._tcp
_nmos-system._tcp PTR sys-api-4._nmos-system._tcp
; Next we have a SRV and a TXT record corresponding to each PTR above, first the Registration API
; The SRV links the PTR name to a resolvable DNS name (see the A records above) and identify the port which the API runs on
; The TXT records indicate additional metadata relevant to the IS-04 spec
reg-api-1._nmos-register._tcp SRV 0 0 3210 reg1.axon.jtnm.lan.
reg-api-1._nmos-register._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=50" "api_auth=false"
reg-api-2._nmos-register._tcp SRV 0 0 3210 reg2.axon.jtnm.lan.
reg-api-2._nmos-register._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=60" "api_auth=false"
reg-api-3._nmos-register._tcp SRV 0 0 3210 reg3.axon.jtnm.lan.
reg-api-3._nmos-register._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=70" "api_auth=false"
reg-api-4._nmos-register._tcp SRV 0 0 3210 reg4.axon.jtnm.lan.
reg-api-4._nmos-register._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=80" "api_auth=false"
reg-api-1._nmos-registration._tcp SRV 0 0 3210 reg1.axon.jtnm.lan.
reg-api-1._nmos-registration._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=50" "api_auth=false"
reg-api-2._nmos-registration._tcp SRV 0 0 3210 reg2.axon.jtnm.lan.
reg-api-2._nmos-registration._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=60" "api_auth=false"
reg-api-3._nmos-registration._tcp SRV 0 0 3210 reg3.axon.jtnm.lan.
reg-api-3._nmos-registration._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=70" "api_auth=false"
reg-api-4._nmos-registration._tcp SRV 0 0 3210 reg4.axon.jtnm.lan.
reg-api-4._nmos-registration._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=80" "api_auth=false"
; Finally, the SRV and TXT for the Query API
qry-api-1._nmos-query._tcp SRV 0 0 3210 reg1.axon.jtnm.lan.
qry-api-1._nmos-query._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=50" "api_auth=false"
qry-api-2._nmos-query._tcp SRV 0 0 3210 reg2.axon.jtnm.lan.
qry-api-2._nmos-query._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=60" "api_auth=false"
qry-api-3._nmos-query._tcp SRV 0 0 3210 reg3.axon.jtnm.lan.
qry-api-3._nmos-query._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=70" "api_auth=false"
qry-api-4._nmos-query._tcp SRV 0 0 3210 reg3.axon.jtnm.lan.
qry-api-4._nmos-query._tcp TXT "api_ver=v1.0,v1.1,v1.2,v1.3" "api_proto=http" "pri=80" "api_auth=false"
sys-api-1._nmos-system._tcp SRV 0 0 10641 reg1.axon.jtnm.lan.
sys-api-1._nmos-system._tcp TXT "api_ver=v1.0" "api_proto=http" "pri=50" "api_auth=false"
sys-api-2._nmos-system._tcp SRV 0 0 10641 reg2.axon.jtnm.lan.
sys-api-2._nmos-system._tcp TXT "api_ver=v1.0" "api_proto=http" "pri=60" "api_auth=false"
sys-api-3._nmos-system._tcp SRV 0 0 10641 reg3.axon.jtnm.lan.
sys-api-3._nmos-system._tcp TXT "api_ver=v1.0" "api_proto=http" "pri=70" "api_auth=false"
sys-api-4._nmos-system._tcp SRV 0 0 10641 reg4.axon.jtnm.lan.
sys-api-4._nmos-system._tcp TXT "api_ver=v1.0" "api_proto=http" "pri=80" "api_auth=false"
However when running nmos-cpp I get the following output:
I always seem to get one or two, never four. In multicast the mechanism works find. Any thoughts?
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 36 (18 by maintainers)
Commits related to this issue
- Remove minimum timeout for resolve and getaddrinfo to resolve failures in at least IS-04-01 test_15, test_16 and test_21 (see sony/nmos-cpp#128) — committed to garethsb/nmos-cpp by garethsb 2 years ago
- Remove minimum timeout for resolve and getaddrinfo to resolve failures in at least IS-04-01 test_15, test_16 and test_21 (see sony/nmos-cpp#128) — committed to garethsb/nmos-cpp by garethsb 2 years ago
- Remove minimum timeout for resolve and getaddrinfo to resolve failures in at least IS-04-01 test_15, test_16 and test_21 (see sony/nmos-cpp#128) — committed to garethsb/nmos-cpp by garethsb 2 years ago
- Remove minimum timeout for resolve and getaddrinfo to resolve failures in at least IS-04-01 test_15, test_16 and test_21 (see sony/nmos-cpp#128) — committed to garethsb/nmos-cpp by garethsb 2 years ago
- Remove minimum timeout for resolve and getaddrinfo to resolve failures in at least IS-04-01 test_15, test_16 and test_21 (see sony/nmos-cpp#128) — committed to garethsb/nmos-cpp by garethsb 2 years ago
I’m doing a full clean build now to verify. Should take around an hour or so. But yeah I think this is the only change.