coderman wrote:

Hi Coderman -

Thanks for your big set of ideas!

a quick overview, since i don't have time (yet) for a more detailed reply:
there are a plethora of ad-hoc routing protocols [0] and some are well
suited towards this kind of wireless mesh.  my particular favorite is
Link Quality Source Routing [1] which supports multiple radios nicely.
this is what you'll need to do your "rebroadcast" efficiently.

"Link Quality Source Routing" does sound pretty cool, but in a system where there is zero identity in the nodes, I don't know how traditional concepts of routing can apply. Instead of an active transmission-led routing system, where the transmitter makes decisions to direct packets at particular receivers, in this concept the only active decision is if a receiver will rebroadcast. It can't target its broadcast.

some comments about the broadcasts:  you'll want to consider encoding
rate and transmit power in the xmit stack, one size fits all (that is,
no differentiation between packet types and encoding) will be
inefficient, and you'll get better behavior if you can tune this
accordingly.  rate control is actually pretty complicated in practice,
while it may seem seductively easy in theory. [2]

Yes it is a good point, but again the situation is unusual for that. One might reduce the transmit power or decrease the transmission rate to optimize a link to a particular node, but there are no particular nodes, they are all "spartacus". I guess it can keep stats on re-requested packets, or look at the tx signal strength used to make the request, and figure out that there is a distant client it could service by dropping the rate temporarily, but that has ramifications too.

along similar lines, packet size (including fragmentation, if needed)
will greatly affect the receive-ability of your broadcasts by multiple
clients, since longer payloads are more likely to experience
collision, thus forcing back-off and retransmission.  in short, it
might work best to have the signalling/control/discovery traffic in
small packets, sent at the lowest bitrate and max power, while the
data traffic uses a different (more flexible) rate and fragmentation
layer.  (you might be doing this already, but i did not see details on
the wiki)  antenna selection may also be useful now that wireless
devices are including MIMO and multiple antennas more frequently.

Yes my current idea is this kind of granularity

 - frame-sized packets 256..512 bytes that actually get transmitted

 - 4K blocks of packets (individually signed)

- 1MByte "chunks" of 4K blocks (which form the "files" in the caching system)

Each packet is marked up with the hash of the upload to which it belongs

[just to emphasize this point, the broadcast nature of wireless makes
it ideal for resource discovery requests, since it is a true
broadcast, and not an emulated one implemented via iterative unicast
or forwarding, etc.  in particular i've tested small periodic payloads
(<128 bytes) at 1M rate and 1W xmit to great effect, literally many
tens of miles diameter.  you shouldn't need such a high degree source,
but this does show just how wide a unidirectional path can be when the
wireless layer is tuned for distance]

Sounds like you have been there :-) This idea that you might be able to hear a station but not talk back to it is behind the total lack of acknowledges, that and the fact an acknowledge from one station has little meaning when you broadcast to many. But the requests from the guy that is unable to talk back directly can find their way back to the transmitter via other stations.

The state at the moment is I am working on two Linux wifi drivers, for
zd1211rw and ipw3945 to add the Penumbra packet transfer stuff as a
proof of concept, and that the usermode daemon SSL and upload stuff is
done and under GPL.  So it is quite early days but there is progress.

i'd highly recommend looking at the madwifi [3] driver as well, and
fortunately it makes this kind of extension very easy.  there is also
a reverse engineering ath-driver HAL [4] for even more non-standard
tweaking of radio parameters if you want to _really_ avoid contention
in the usual 2.4Ghz bands by giving a finger to the FCC :P

I don't want to make any regulatory trouble. It should be fine just using the ISM bands at normal powers using standard gear. I chose my two POC drivers because I have the hardware :-) Assuming it can be made to work I will document what needs to be done and hopefully someone who works on the driver can consider to add it.

there is even an existing program that uses control frames in 802.11
for covert channel transmissions [5] that may be useful.

That is really cool, but it needs the packet injection capability in the driver. Which admittedly is currently more available than my protocol support in drivers. I will have a closer look at it.

last but not least, the latest madwifi drivers support virtual devices
[6], so you can have a client association, a master mode AP device,
and a raw monitor device all sharing the same physical radio hardware,
which may eliminate the need for driver tweaks when using Atheros
devices.

Yes I heard also that the Devicescape stack will support this, and I saw in the ipw3945 driver there is hardware support but not yet software support in the driver.

that way, although if you need to use persistent identities for secure
routing, an opportunistically shared RSA identity key (for
routing/control) could be used while keeping the single use RSA keys
(perhaps in a mode like ephemeral diffie hellman, with the transient
keys signed by the long lived identity key).

The problem here is that any kind of long-lived identity can be used to destroy the privacy of what the node is doing. What might not violate this privacy aspect is to have random "session keys" that are changed every minute or so by every router, and use that for the purposes of trying to work out what rate and tx power to use to service requests that came with that router as the last hop.

-Andy
_______________________________________________
p2p-hackers mailing list
[email protected]
http://lists.zooko.com/mailman/listinfo/p2p-hackers

Reply via email to