Skip to content

Implement new MDNS spec #623

Closed
Closed
@Stebalien

Description

@Stebalien

That is, libp2p/specs#80. We'll need to:

  1. Use https://github.com/miekg/dns to handle parsing/formatting DNS records.
  2. See https://github.com/grandcat/zeroconf/blob/85eadb44205c14827ae7cbb129bc7eed4488dd25/connection.go#L38-L97 for how to listen for multicast packets. However, we'll need to use https://github.com/libp2p/go-reuseport/blob/b72b23b78b80078df1a7991f6ca39942cb8cc5e1/interface.go#L47-L49 to fix multiple MDNS applications.

Unfortunately, none of the existing golang mdns solutions work for us as:

  1. They all have race conditions.
  2. None of them use reuseport.
  3. All of them are very DNS-SD focused and go through a lot of effort to make sure we get things like A and AAAA records.
  4. We need to use the system's mDNS responder when possible, as running multiple mDNS responders on the same machine is pretty broken.

We could try to patch these however, we'll likely end up with something better if we just write something ourselves.

Metadata

Metadata

Assignees

No one assigned

    Labels

    RFPThe libp2p project may be able to make a grant to further the development of issues tagged as "RFP."kind/enhancementA net-new feature or improvement to an existing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions