A discovery mechanism is used to find available SHIP nodes and their services in the local network without knowing their hostnames or IP addresses. For this purpose mDNS/DNS-SD SHALL be used.
DNS-SD records SHOULD have a TTL of 2 minutes.
mDNS/DNS-SD provide methods for service discovery, resource discovery and hostname to IP address resolution. Detailed information to mDNS can be found in RFC 6762 and to DNS-SD can be found in reference RFC 6763.
All SHIP nodes will offer a service named "ship".
Service Instance
The SHIP node SHALL assign a <Instance> label of up to 63 bytes in UTF-8 format for each DNS SRV/TXT record pair that it advertises. In accordance with RFC 6763 this label SHALL have user-friendly names. In order to avoid name conflicts, <Instance> names SHALL have a meaningful label, for example the device type, brand and model: "Dishwasher Bosch SMI69T45EU".
Should a name conflict occur anyway, then a node SHALL assign itself a new name until conflicts are resolved. A conflict SHOULD be resolved by appending a decimal integer in parentheses to the <Instance> (for example, "Name(2)" for the first conflict, "Name(3)" for the second conflict, etc.).
Service Name
The service name used with DNS-SD SHALL be "ship".
The <Service> portion of a service instance name consists of the service name preceded by an underscore '_' and followed by a period '.' plus a second DNS label specified by SHIP as "_tcp".
Thus, a valid service instance name example would be:
Dishwasher Bosch SMI69T45EU._ship._tcp.local.
Where "Dishwasher Bosch SMI69T45EU" is the <Instance> portion (described in previous section), "ship" is the service name, "tcp" is the transport protocol, and "local" is the <Domain> portion.
Host Name
A SHIP node SHALL assign a unique host name of up to 63 bytes. In order to avoid name conflicts, names SHOULD use the unique ID as specified in the TXT record.
Thus, a complete host name example would be:
BSHG-SMI69T45EU-001122334455.local.
Default Records
DNS-SD defines several records by default. This information MUST NOT be included in other records.
The A record includes the IPv4 address and the AAAA record includes the IPv6 address of the node. The SRV record SHALL include the service name, host name and port.
A SHIP node MAY choose its port for the SHIP TCP server freely, but MUST state it correctly in the SRV record.