dig - not resolving all records with mdns subtype's included

Asked by Anders Fromell

When using avahi and the option --subtype dig fails to find all records, however some of them are found.
- the .service files are identical except for the <name>instancename</name> and one row in <txt-record>..

My goal with the setup is to use dns-sd to annonce what parts of the application protocol "avms" actually are implemented or running at the local network. This approach are currently evaluated in a EU R&D project, and the outcome will be a recommendation for extention of the CEN standard EN13149-7 and -9

Ex. of a .service file:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name>generalmessage</name>
  <service protocol="ipv4">
    <type>_ebsf2._tcp</type>
    <subtype>_avms._sub._ebsf2._tcp</subtype>
    <port>8085</port>
    <txt-record>txtver=1</txt-record>
    <txt-record>content=test-of-sub-service</txt-record>
    <txt-record>path=/avms/generalmessage</txt-record>
    <txt-record>status=0</txt-record>
    <txt-record>xstatus=C000000000C0FFFF</txt-record>
      </service>
  </service-group>

The dig command:
dig @224.0.0.251 -p 5353 -t any _avms._sub._ebsf2._tcp.local

returns:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @224.0.0.251 -p 5353 -t any _avms._sub._ebsf2._tcp.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44915
;; flags: qr aa; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;_avms._sub._ebsf2._tcp.local. IN ANY

;; ANSWER SECTION:
_avms._sub._ebsf2._tcp.local. 10 IN PTR vehiclemonitoring._ebsf2._tcp.local.
vehiclemonitoring._ebsf2._tcp.local. 10 IN TXT "txtver=1" "content=test-of-sub-service" "path=/avms/vehiclemonitoring" "status=0" "xstatus=C000000000C0FFFF"
vehiclemonitoring._ebsf2._tcp.local. 10 IN SRV 0 0 8085 noname.local.
noname.local. 10 IN AAAA ffff::111:ffff:ffff:ffff
noname.local. 10 IN A 10.0.8.106
_avms._sub._ebsf2._tcp.local. 10 IN PTR runmonitoring._ebsf2._tcp.local.
runmonitoring._ebsf2._tcp.local. 10 IN TXT "txtver=1" "content=test-of-sub-service" "path=/avms/runmonitoring" "status=0" "xstatus=C000000000C0FFFF"
runmonitoring._ebsf2._tcp.local. 10 IN SRV 0 0 8085 noname.local.
_avms._sub._ebsf2._tcp.local. 10 IN PTR plannedpattern._ebsf2._tcp.local.
plannedpattern._ebsf2._tcp.local. 10 IN SRV 0 0 8086 noname.local.
_avms._sub._ebsf2._tcp.local. 10 IN PTR patternmonitoring._ebsf2._tcp.local.

;; Query time: 0 msec
;; SERVER: 10.0.8.106#5353(224.0.0.251)
;; WHEN: Wed Sep 21 10:03:38 CEST 2016
;; MSG SIZE rcvd: 498

Eg. it found 3 of 6 instances..
vehiclemonitoring
runmonitoring
plannedpattern

running the command:
avahi-browse -tr _avms._sub._ebsf2._tcp

returns:
+ eth0 IPv4 runmonitoring _ebsf2._tcp local
+ eth0 IPv4 plannedpattern _ebsf2._tcp local
+ eth0 IPv4 patternmonitoring _ebsf2._tcp local
+ eth0 IPv4 journeymonitoring _ebsf2._tcp local
+ eth0 IPv4 generalmessage _ebsf2._tcp local
+ eth0 IPv4 vehiclemonitoring _ebsf2._tcp local
= eth0 IPv4 runmonitoring _ebsf2._tcp local
   hostname = [noname.local]
   address = [10.0.8.106]
   port = [8085]
   txt = ["xstatus=C000000000C0FFFF" "status=0" "path=/avms/runmonitoring" "content=test-of-sub-service" "txtver=1"]
= eth0 IPv4 plannedpattern _ebsf2._tcp local
   hostname = [noname.local]
   address = [10.0.8.106]
   port = [8086]
   txt = ["xstatus=C000000000C0FFFF" "status=0" "path=/avms/plannedpattern" "content=test-of-sub-service" "txtver=1"]
= eth0 IPv4 patternmonitoring _ebsf2._tcp local
   hostname = [noname.local]
   address = [10.0.8.106]
   port = [8085]
   txt = ["xstatus=C000000000C0FFFF" "status=0" "path=/avms/patternmonitoring" "content=test-of-sub-service" "txtver=1"]
= eth0 IPv4 journeymonitoring _ebsf2._tcp local
   hostname = [noname.local]
   address = [10.0.8.106]
   port = [8085]
   txt = ["xstatus=C000000000C0FFFF" "status=0" "path=/avms/journeymonitoring" "content=test-of-sub-service" "txtver=1"]
= eth0 IPv4 generalmessage _ebsf2._tcp local
   hostname = [noname.local]
   address = [10.0.8.106]
   port = [8087]
   txt = ["xstatus=C000000000C0FFFF" "status=0" "path=/avms/generalmessage" "content=test-of-sub-service" "txtver=1"]
= eth0 IPv4 vehiclemonitoring _ebsf2._tcp local
   hostname = [noname.local]
   address = [10.0.8.106]
   port = [8085]
   txt = ["xstatus=C000000000C0FFFF" "status=0" "path=/avms/vehiclemonitoring" "content=test-of-sub-service" "txtver=1"]

Eg.
All the 6 instances are found..
vehiclemonitoring
runmonitoring
plannedpattern
journeymonitoring
generalmessage
patternmonitoring

Is there a bug? or am I doing something wrong??

A nice behaviour would also be to resolve:
dig @224.0.0.251 -p 5353 -t any _sub._ebsf2._tcp.local

to return a list of all subtypes to _ebsf2

it may also be useful to sometimes leave out the _tcp or _udp part
(dig @224.0.0.251 -p 5353 -t any _sub._ebsf2..local) or something like it
and why only _tcp and _udp??

Best regards,
Anders Fromell
Senior System Architect

Question information

Language:
English Edit question
Status:
Expired
For:
Ubuntu bind9 Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Launchpad Janitor (janitor) said :
#1

This question was expired because it remained in the 'Open' state without activity for the last 15 days.

Revision history for this message
Anders Fromell (konsultnisse) said :
#2

Can someone please answer to this..
is it a bug? or is the RFC only partly implemented (semi broken..)

Revision history for this message
Launchpad Janitor (janitor) said :
#3

This question was expired because it remained in the 'Open' state without activity for the last 15 days.