System update spec proposal

Dan Williams dcbw at redhat.com
Wed Jun 27 12:55:34 EDT 2007


On Wed, 2007-06-27 at 17:42 +0200, Alexander Larsson wrote:
> On Tue, 2007-06-26 at 15:03 -0400, Mike C. Fletcher wrote:
> 
> > My understanding here is that Alex's system is currently point-to-point, 
> > but that we don't yet have any way to distribute it on the mesh?  That 
> > is, that we are looking at a research project to determine how to make 
> > it work in-the-field using some form of mesh-based discovery protocol 
> > that's going to try to optimise for connecting to local laptops.  I 
> > personally don't care which way we distribute, but I'm wary of having to 
> > have some mesh-network-level hacking implemented to provide discovery of 
> > an update server.
> 
> I'm not sure what you mean here exactly. Discovery is done using avahi,
> a well known protocol which we are already using in many places on the
> laptop. The actual downloading of file uses http, which is a well known
> protocol with many implementations.
> 
> The only thing i'm missing atm is a way to tell which ip addresses to
> prefer downloading from since they are close. This information is
> already availible in the mesh routing tables in the network driver (and
> possibly the arp cache), and its just a question of getting this info
> and using it to drive what servers to pick for downloading.

So, like michail said, do something like:

n = 0
while (True) {
    buf = output of (iwpriv msh0 fwt_list_neigh n)
    if (buf == "(null)")
        break;  // all done

    <parse buf into fields>
    hwaddr = parsed[0]  // Grab the 'ra' field (1st one)
    ip4addr = lookup_hwaddr_in_arp(hwaddr)
    <do something with ip4addr>
    n++;
}

Look on the 'olpc' branch of the libertas driver here:

http://git.infradead.org/?p=libertas-2.6.git;a=blob;f=drivers/net/wireless/libertas/README;hb=olpc
http://git.infradead.org/?p=libertas-2.6.git;a=blob;f=drivers/net/wireless/libertas/ioctl.c;hb=olpc

The README has a description of the command, and the ioctl.c has the
implementation.  Just search for the string "neigh" and you'll find it.

Dan

> > > Basically aside from the vserver bits, which no one has seen, I don't
> > > see a particular advantage to using rsync.  In fact, I see serious
> > > downsides since it misses some of the key critical advantages of using
> > > our own tool not the least of which is that we can make our tool do what
> > > we want and with rsync you're talking about changing the protocols.
> > >   
> > Hmm, interestingly I see "using our own tool" as a disadvantage, not a 
> > huge one, but a disadvantage nonetheless, in that we have more untested 
> > code on the system (and we already have a lot), and in this case, in a 
> > critical must-never-fail system.  For instance, what happens if the user 
> > is never connected to another XO or school server, but only connects to 
> > a (non-mesh) WiFi network?  Does the mesh-broadcast upgrade discovery 
> > protocol work in that case?
> 
> Avahi works fine for these cases too. Of course, since it was originally
> created for normal networks. However, if you never come close to another
> OLPC machine, then we won't find a machine to upgrade against. Its quite
> trivial to make it pull from any http server on the net, but that has to
> be either polled (which I don't like) or initiated manually (which might
> be fine).
> 
> 
> _______________________________________________
> Devel mailing list
> Devel at lists.laptop.org
> http://lists.laptop.org/listinfo/devel




More information about the Devel mailing list