Actions

Byzantium Live Distro Service Announce: Difference between revisions

From HacDC Wiki

No edit summary
No edit summary
 
Line 2: Line 2:
Share services running on a network with clients and other supernodes.
Share services running on a network with clients and other supernodes.


Each supernode (mesh node) maintains a database of all of the services and web apps it's running.  That database is used to populate the /index.php page of each node.  The trick lies in telling the other mesh nodes what you happen to be running and what IP address it is.  This is where being able to announce what services you run to other mesh nodes will come into play.
Each mesh node maintains a list of all of the services and web apps it's running.  That list is used to populate the service directory page of each node.  The trick lies in telling the other mesh nodes what you happen to be running and what IP address it is.  This is where being able to announce what services you run to other mesh nodes will come into play.
We are using dns-sd via mdns/avahi/bonjour to announce services. The "__byz__._tcp" service type is being used to distribute services started by byzantium.


This is simplified somewhat by the fact that the mesh nodes' network IP addresses are all 192.168/16.
This is simplified somewhat by the fact that the mesh nodes' network IP addresses are all 192.168/16.
Line 8: Line 9:
==Suggestions==
==Suggestions==
===Contents===
===Contents===
*ip address (ipv4 and/or ipv6)
*see dns-sd spec
*protocol service is provided on
**(based on name given in /etc/services maybe)
**in services.sqlite, both tables have a field 'name' that contains the name of the service.
*port number
*human readable name of the service or service instance
*human readable description of arbitrary (as much as possible) size and format
**limit it to microblog post-size (140 characters)?
*Put a timeout on each entry to force neighboring mesh nodes to re-poll the neighbors they know about to see if a service has been turned off by that node's admin?


===Method===
===Method===
*HTTP(S)
*dns-sd via mdns/bonjour/avahi
**Use a RESTful API to make this information accessible?
**https://miranda-zero.byzantium.mesh/services
*socket
*avahi?


===Format===
===Format===
*xml
*see dns-sd spec
<pre>
<?xml version="1.0" encoding="<encoding>" ?>
  <services>
    <service ip4="" ip6="" protocol="" port="" hr-name="" ttl="300">
      Description
    </service>
  </services>
</pre>
*delimited list
<pre>
;;;<ipv4addr>;<ipv6addr>;<protocol>;<port number>;<human readable name>;<cache TTL in seconds>;<description>
</pre>


{{Template:Byzantium}}
{{Template:Byzantium}}

Latest revision as of 22:36, 9 June 2012

Description

Share services running on a network with clients and other supernodes.

Each mesh node maintains a list of all of the services and web apps it's running. That list is used to populate the service directory page of each node. The trick lies in telling the other mesh nodes what you happen to be running and what IP address it is. This is where being able to announce what services you run to other mesh nodes will come into play. We are using dns-sd via mdns/avahi/bonjour to announce services. The "__byz__._tcp" service type is being used to distribute services started by byzantium.

This is simplified somewhat by the fact that the mesh nodes' network IP addresses are all 192.168/16.

Suggestions

Contents

  • see dns-sd spec

Method

  • dns-sd via mdns/bonjour/avahi

Format

  • see dns-sd spec
Project Byzantium
Main Meeting Notes Byzantium Live Distro Misc. Development Stuff