Skip to content

Implement TR-10-9 Section 15 DNS-SD browse strategy#484

Open
simonbaren wants to merge 1 commit intosony:masterfrom
simonbaren:feature/tr-10-9-dns-sd-browse-strategy
Open

Implement TR-10-9 Section 15 DNS-SD browse strategy#484
simonbaren wants to merge 1 commit intosony:masterfrom
simonbaren:feature/tr-10-9-dns-sd-browse-strategy

Conversation

@simonbaren
Copy link

@simonbaren simonbaren commented Mar 17, 2026

Summary

Implements the DNS-SD browse strategy required by TR-10-9 Section 15 for IPMX device service discovery.

Changes

  • New dns_sd_browse_mode setting ("both" / "unicast" / "mdns") to control DNS-SD browse method
    • "both" (default): try unicast DNS first with half the timeout budget; fall back to mDNS if no services found
    • "unicast": unicast DNS only
    • "mdns": mDNS only
  • Domain class filtering in browse results to prevent mDNS results leaking into unicast DNS queries and vice versa
  • Refactored resolve_service to delegate to resolve_service_ with the dual-discovery logic

Motivation

TR-10-9 Section 15 requires IPMX devices to support both mDNS and unicast DNS for DNS-SD browse operations, defaulting to using both methods. When using both, unicast DNS must be attempted first, with mDNS as a fallback only if unicast is unsuccessful.

Files changed

  • Development/nmos/settings.h — new dns_sd_browse_mode field
  • Development/nmos/mdns.cpp — dual-browse logic and domain class filtering

https://static.vsf.tv/download/technical_recommendations/VSF_TR-10-9_v2_2025-05-13.pdf

@simonbaren simonbaren force-pushed the feature/tr-10-9-dns-sd-browse-strategy branch from fb842e3 to 8a965c6 Compare March 17, 2026 09:22
TR-10-9 Section 15 requires IPMX devices to:
- Support both mDNS and unicast DNS for DNS-SD browse operations
- Default to using both methods
- Provide user mechanisms to limit browsing to unicast or mDNS only
- When using both: try unicast DNS first, fall back to mDNS only
  if unicast is unsuccessful (no service discovered)
- When multiple results are returned: select by best priority,
  failing over to next-best if unresponsive
- Once a service is selected and responsive: perform no further
  browse operations for that service type
- If the selected service becomes unresponsive: perform a new
  DNS-SD browse and restart selection

Add dns_sd_browse_mode setting ("both"/"unicast"/"mdns") to implement
the required dual-discovery strategy. In "both" mode (default), unicast
DNS is tried first with half the timeout budget; if no records are
found, mDNS fallback gets the remaining half. "unicast" and "mdns"
modes restrict to a single method.

Also filters browse results by domain class to prevent mDNS results
leaking into unicast DNS queries and vice versa.

Signed-off-by: Semyon Barenboym <simonbaren@gmail.com>
@simonbaren simonbaren force-pushed the feature/tr-10-9-dns-sd-browse-strategy branch from 8a965c6 to cc1dab4 Compare March 17, 2026 09:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant