Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

DNS-SD based wide-area ECF discovery provider

Project Lead: Markus Alexander Kuppe (IRC: lemmy)

Mentor: Scott Lewis

This project is part of the Google Summer of Code 2010

Abstract

ECF has been supporting multicast based discovery for a while now allowing for zero configuration remote services or any other service discovery and advertisement. However, multicast discovery is limited to the local subnet only. Thus it's time to bring discovery to wide area networks (WAN) by implementing functionality for DNS-SD based discovery which will enable a complete new range of use cases.

DNS-SD (re)uses regular DNS (a dedicated directory) or more precisely SRV, TXT and PTR records as described in RFC 2782, RFC 1035 to find and advertise services in the global domain name system. With DNS-SD it is possible to publish any kind of service including parameters by predefined service types (RFC 2782). For more background information on DNS-SD check out the slideware that I used during the ECF tutorial at EclipseCon2009 [1] or see http://www.dns-sd.org/.

A use cases that quickly comes to mind, is to advertise Eclipse update sites/p2 repositories via this ECF discovery provider so that you never ever have to manually add the URL of e.g. the next release train to the p2 director again [2][3]. It only requires the webmasters to add a couple of records to the "eclipse.org" domain. But it can even go further when services are automatically advertised and added to the zones via DNS dynamic update. And scalability would not even be a matter due to DNS' efficient caching. All in all any distributed project in Eclipse land will benefit from this enhancement and is likely to become a consumer of ECF wide area discovery.

Therefore the existing ECF mDNS provider [4] should be extended or a new provider created which leverage a (EPLed) DNS resolver as well as support for DNS update (RFC 2136) to provide both service discovery and service announcement. Alternatively the existing SLP provider can be supplemented with DNS SRV functionality as described in RFC 3832.

Ping me on IRC (lemmy) or Jabber/mail (firstname @ lastname.org) for details, question, comments or criticism. :-)

Legend

Glass.gif Needs some investigation/research

Progress.gif Work in progress

Ok green.gif Bug fixed / Feature added

Deliverables

  • Feature complete DNS-SD based ECF discovery provider
    • Service discovery
    • Service advertisement
  • Tests for the ECF discovery "TCK"
  • Licensed under EPL
  • Documentation
  • Integration into ECF build/p2 repository
  • Ready to be shipped with next ECF release

Timeline

Here is a complete list of the milestones and release candidates planned for this plugin.

Milestone Date Planned items
M1 Week 1-3 Research, Requirements gathering
M2 Week 4-6 Impl of (standalone) DNS resolver, DNS update (rfc2136). Alternatively reuse of dnsjava [1] incl. CQ and upstream OSGi-fication or Orbit
M3 Week 7-9 DNS-SD ECF discovery provider implementation, unit tests
M4 Week 10-12 Documentation, General requirements and design specifications, Lessons learned


Community Involvement

Getting the source

The code has been merged into the official ECF repo located at http://git.eclipse.org/c/ecf/org.eclipse.ecf.git. dnsjava made available via [Orbit http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.orbit/org.xbill.dns/?root=Tools_Project].

Getting binaries

The project is regularly build on the ECF build machine and can be downloaded from the DNS-SD p2 repo (This also contains the dnsjava dependency).

Open issues

Check https://bugs.eclipse.org/310580 for progress

New ideas

Do you have a great idea for this project? Just open a new feature request.

Documentation

How to set up a (bind) DNS-SD server

dns-sd.org has a perfect tutorial how to set up a (bind) dyndns server to be used with DNS-SD wide area discovery. This site also describes how to setup DDNS. You might also want to look at the unit tests for API examples as well as internals.

Back to the top