Hi Luke and Juliusz! Good to hear from you. Ah, P2P DNS... thats near and dear to my heart... <br><br>What&#39;s the context of the giant email thread below? I can glean bits and pieces but am not sure of what the overall discussion is about.<br>
<br><div class="gmail_quote">On Wed, May 14, 2008 at 11:23 AM, Luke Kenneth Casson Leighton &lt;<a href="mailto:luke.leighton@googlemail.com">luke.leighton@googlemail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Wed, May 14, 2008 at 12:15 AM, Juliusz Chroboczek<br>
&lt;<a href="mailto:Juliusz.Chroboczek@pps.jussieu.fr">Juliusz.Chroboczek@pps.jussieu.fr</a>&gt; wrote:<br>
&gt; &gt; &nbsp;getting proper WAN-wide name registration and defending is _hard_.<br>
&gt;<br>
&gt; &nbsp;Yes, if you want to be distributed. &nbsp;You can always fake it with<br>
&gt; &nbsp;a centralised server.<br>
<br>
&nbsp;yuk :) &nbsp;yes. &nbsp;e.g. WINS servers. &nbsp;WINS servers - a centralised<br>
&quot;collection&quot; point, aka NBNS servers in rfc1001/1002. &nbsp;the &quot;recursion<br>
desired&quot; flag is set to indicate the distinction between &quot;actually<br>
this packet should go to the WINS server&quot; and &quot;actually this packet<br>
should go to the local-broadcast-network-service that is defending<br>
this particular LAN segment&quot;. &nbsp;because, obviously, a WINS server has<br>
to be _on_ a NetBIOS network! &nbsp;the &quot;recursion desired&quot; flag is exactly<br>
the same bit as the DNS &quot;recursion desired&quot; flag (same packet format,<br>
different meaning. &nbsp;botched by microsoft&#39;s implementation! grr)<br>
<br>
<br>
&nbsp;... or you could have a p2p-based DNS service such as that offered by<br>
the lightweight p2p-dns replacement of<br>
<a href="https://p2psockets.dev.java.net/" target="_blank">https://p2psockets.dev.java.net/</a> (hi brad! :) )<br>
<br>
&nbsp;freedce / dce/rpc contains a &quot;naming service&quot; with the ability to do<br>
&quot;global&quot; naming. &nbsp;i.e. you can register as being one of many of the<br>
providers of a particular service. &nbsp;the opengroup&#39;s reference<br>
implementation (dce 1.1 aka freedce) and the subsequent release of dce<br>
1.2.2 under the LGPL - all these codebases contain a &quot;naming service&quot;<br>
which is, unfortunately, &quot;centralised&quot;.<br>
<br>
however, i&#39;m mentioning the concept because i believe that a p2p<br>
&quot;naming service&quot; should deeffinitely have &quot;group registration&quot;<br>
support.<br>
<br>
thus, you can have a p2p dns cache where it would be easy to find<br>
yourself a local cache of the more &quot;global&quot; dns, and you would simply<br>
begin by broadcasting out to find the nearest cache, then, on finding<br>
one, you&#39;d be able to query _that_ to find out further-afield<br>
resources...<br>
<br>
&gt; &nbsp;&gt; &nbsp;it takes about _three years_ to get it right - as no less than three<br>
&gt; &nbsp;&gt; of us found out for samba.<br>
&gt;<br>
&gt; &nbsp;Yeah, but you needed to be bug-compatible with another system. &nbsp;Doing<br>
&gt; &nbsp;it from scratch would have been easier.<br>
<br>
&nbsp;... you&#39;d think so... :) &nbsp;but we learned that it took microsoft three<br>
years to get their _own_ implementation correct ha ha.<br>
<br>
&gt; &nbsp;&gt;&gt; &nbsp;In a mesh network, the notion of link doesn&#39;t really<br>
&gt; &nbsp;&gt;&gt; &nbsp;exist, so zeroconf will give mixed results.<br>
&gt;<br>
&gt; &nbsp;&gt; ... this i don&#39;t follow. &nbsp;you&#39;re using terms that have specific<br>
&gt; &nbsp;&gt; meanings with which i&#39;m not yet familiar, and, as it&#39;s an area i<br>
&gt; &nbsp;&gt; really do need to understand, i&#39;d very much appreciate some pointers /<br>
&gt; &nbsp;&gt; elaboration.<br>
&gt;<br>
&gt; &nbsp;Sure. &nbsp;In traditional (wired) networking, a link is a set of<br>
&gt; &nbsp;interfaces that can communicate without going through a router.<br>
<br>
&nbsp;oh ok.<br>
<br>
&gt; &nbsp;It<br>
&gt; &nbsp;used to be just a cable, nowadays it&#39;s usually a set of cables bridged<br>
&gt; &nbsp;together.<br>
<br>
&nbsp;oh, as simple as that? ok he he.<br>
<br>
&nbsp;ok - so... going back to the original thing you said - that &quot;in a<br>
mesh network, zeroconf can&#39;t really cope because &#39;link&#39; doesn&#39;t really<br>
exist&quot;, a mesh network is where you have limited (unreliable)<br>
connectivity between nodes.<br>
<br>
soo... <a href="http://wiki.laptop.org/go/Mesh_Network_Details#Experimenting" target="_blank">http://wiki.laptop.org/go/Mesh_Network_Details#Experimenting</a> -<br>
they&#39;ve ... oh. &nbsp;they cheated. &nbsp;they got marvell to do some of the<br>
low-level mesh networking. &nbsp;y&#39;know... i get deeply unimpressed, more<br>
and more, with the OLPC&#39;s management, the more i hear about it.<br>
<br>
so anyway, that explains why zeroconf can do what it does on OLPC,<br>
because the mesh networking side is &quot;taken care of&quot; in hardware.<br>
<br>
<br>
&gt; &nbsp;In both IPv4 and IPv6, you usually assume that if a node belongs to<br>
&gt; &nbsp;the same subnet prefix as you do then it is on the same link, and you<br>
&gt; &nbsp;may speak to it directly (ignoring unnumbered links and multiple<br>
&gt; &nbsp;prefixes per link for now). &nbsp;In other words, you encode topology<br>
&gt; &nbsp;information within the bits of the address.<br>
<br>
&nbsp;ack.<br>
<br>
&gt; &nbsp;Obviously, this is not the case for mesh networks, where the topology<br>
&gt; &nbsp;varies over time and does not correspond in any way to the address<br>
&gt; &nbsp;allocation.<br>
<br>
&nbsp;ack.<br>
<br>
&gt; &nbsp;&gt; in particular, what does - or doesn&#39;t - babel provide for &quot;mesh networks&quot; ?<br>
&gt;<br>
&gt; &nbsp;Babel is a routing protocol that, in its basic form, does not make any<br>
&gt; &nbsp;assumptions about how prefixes map to links. &nbsp;Hence, it will work on<br>
&gt; &nbsp;any network topology -- wireless mesh, classical wired network --, but<br>
&gt; &nbsp;might not be optimally efficient.<br>
<br>
&nbsp;doesn&#39;t matter :)<br>
<br>
&gt; &nbsp;Babel can be made to be efficient on wired networks, but this requires<br>
&gt; &nbsp;a little bit of per-node configuration. &nbsp;Since most of our nodes are<br>
&gt; &nbsp;wireless, and at any rate the inefficiency incurred by using<br>
&gt; &nbsp;out-of-the-box Babel on wired networks is slight, that&#39;s satisfactory.<br>
<br>
&nbsp;ack.<br>
<br>
&gt; &nbsp;The only assumption that Babel makes about the underlying network is<br>
&gt; &nbsp;that link-local multicast is able to reach all neighbours.<br>
<br>
&nbsp;ahh :) &nbsp;that would be where a &quot;group-based&quot; p2p &quot;name registration&quot;<br>
concept would come in handy: you could use it to maintain an<br>
approximation of link-local, based on aggregation of successful links<br>
and partially-successful links (which would sometimes require one hop<br>
and would sometimes drift in-and-out of direct contact).<br>
<br>
and use this aggregated list to pseudo-define a slightly more stable<br>
multicasting group, comprising immediate neighbours plus<br>
one-hop-neighbours.<br>
<br>
... what you think? &nbsp;does this sound even remotely practical - or useful?<br>
<br>
&gt; &nbsp;Hence, in<br>
&gt; &nbsp;its current form, it will not work on non-broadcast (NBMA) networks,<br>
&gt; &nbsp;such as ATM.<br>
<br>
&nbsp;ack.<br>
<br>
&gt;<br>
&gt; &nbsp;&gt; &nbsp;mm? *quizzical*. &nbsp;i thought ipv6 didn&#39;t do multicasting?<br>
&gt;<br>
&gt; &nbsp;IPv6 multicasts just fine.<br>
<br>
&nbsp;oh. &nbsp;huh. &nbsp;i must have something misunderstood (from my friend who<br>
maintains his own node and gets a BGP feed etc. etc. - i&#39;ll have to<br>
ask him what that&#39;s about).<br>
<br>
&gt; &nbsp;However, non-local multicast requires<br>
&gt; &nbsp;multicast routers, and Babel doesn&#39;t route multicast right now.<br>
&gt;<br>
&gt;<br>
&gt; &nbsp;&gt; the lowest speed network is a digital radio modem, with something<br>
&gt; &nbsp;&gt; like a 10 mile range (with TCP/IP on it).<br>
&gt;<br>
&gt; &nbsp;How does that Simpsons line go again? &nbsp;Mmmh... 800MHz.<br>
<br>
&nbsp;he he<br>
<br>
&gt;<br>
&gt; &nbsp;&gt; the other ones we have yet to specify but candidates include<br>
&gt; &nbsp;&gt; GPRS/EDGE or maybe 3G, and WIMAX or some other adhoc high speed<br>
&gt; &nbsp;&gt; networking.<br>
&gt;<br>
&gt; &nbsp;What do you mean by ``ad-hoc&#39;&#39;? &nbsp;If you&#39;re using the term to mean that<br>
&gt; &nbsp;stations can communicate between themselves, then WiMAX certainly<br>
&gt; &nbsp;isn&#39;t, it&#39;s strictly a point-to-multipoint technology. &nbsp;(Which is<br>
&gt; &nbsp;something that Babel will handle beautifully, by the way.)<br>
<br>
&nbsp;ooo, cooool :)<br>
<br>
&gt; &nbsp;&gt; please don&#39;t ask why all that&#39;s needed :)<br>
&gt;<br>
&gt; &nbsp;Please do tell!<br>
<br>
&nbsp;ha ha.<br>
<br>
well, the voice data goes over the radio-modem, but the baud rate is<br>
nowhere near enough to do video, which is one of the requirements.<br>
and the radio-modem &quot;black box&quot; has mesh networking built-in and it&#39;s<br>
all &quot;taken care of&quot; as far as i can tell...<br>
<br>
... which leaves us completely buggered for transferring video content<br>
between devices. &nbsp;and pretty much everything else.<br>
<br>
so, not only am i going to need to merge all the different types of<br>
communications technology together but also i&#39;m going to need to send<br>
certain types of traffic (voice, video, jpeg images) over the<br>
different communications networks, selecting the &quot;best available&quot; one<br>
for the job. (!)<br>
<br>
&gt; &nbsp;&gt; so i am suddenly extreemely interested in decent and versatile routing<br>
&gt; &nbsp;&gt; software that can help here!<br>
&gt;<br>
&gt; &nbsp;Babel is certainly versatile, and I like to think it&#39;s decent. &nbsp;It can<br>
&gt; &nbsp;deal with multiple interfaces, which appears to be what you are mainly<br>
&gt; &nbsp;concerned with.<br>
<br>
&nbsp;yes. &nbsp;ppp over GSM/GPRS; WIMAX; 802.11; radio-modem; all of it has to<br>
be sort-of... merged amorphously.<br>
<br>
what i am hoping is that the use of (at least two) extra<br>
communications channels will be very helpful in ensuring that the<br>
other channels are made best use of.<br>
<br>
e.g. if you can transfer _some_ routing information - however slowly -<br>
about the 2-mile-range WIMAX nodes over the 10-mile-range radio-modem,<br>
then you would, i assume, be able to make better routing decisions<br>
than you would if you didn&#39;t have the long-range radio connection?<br>
<br>
<br>
&gt; &nbsp;But you&#39;ll really need to tell us more about the network architecture<br>
&gt; &nbsp;you&#39;re envisioning. &nbsp;Whether Babel or some other technology is best<br>
&gt; &nbsp;depends on a lot of factors,<br>
<br>
&nbsp;ok.<br>
<br>
&gt; notably what kind of hand-off times are tolerable,<br>
<br>
&nbsp;walking around inside and outside office buildings, which might cut<br>
things off randomly, but assume decent antenna (4 or 8-way phased<br>
ceramic antenna).<br>
<br>
&gt; whether you&#39;re interested in multi-hop routing,<br>
<br>
like <a href="http://wiki.laptop.org/go/Mesh_Network_Details#Experimenting" target="_blank">http://wiki.laptop.org/go/Mesh_Network_Details#Experimenting</a> ? yes.<br>
<br>
so - like the OLPC thing [except better :) ] &nbsp;assume that it&#39;s got to<br>
work without centralised infrastructure, but if centralised<br>
infrastructure is available (e.g. GPRS / 3G or a high-power<br>
fixed-position WIMAX unit that has better range and coverage than the<br>
mobile units) then it should be seamlessly taken advantage of.<br>
<br>
&gt; &nbsp;how large is your power budget,<br>
<br>
&nbsp;luggable rather than portable. &nbsp;i.e. &quot;big enough&quot; to not have to worry about :)<br>
<br>
&gt; &nbsp;and whether you can count on link-layer notifications.<br>
<br>
&nbsp;does this mean &quot;inter-layer&quot; notifications? &nbsp;i.e. like i hinted at<br>
above, about being able to send notifications over the radio-modem<br>
about the e.g. WIMAX layer?<br>
<br>
&nbsp;if so, yes.<br>
<font color="#888888"><br>
&nbsp;l.<br>
</font></blockquote></div><br>