[CUWiN-Dev] more summer of code projects

Sascha Meinrath sascha at ucimc.org
Mon Apr 24 20:19:06 CDT 2006


uploaded to the www.cuwireless.net/2006soc website!

folks should send in any other ideas you may have.

--sascha

David Young wrote:
> 1 Cross-build CUWiN on non-i386 architectures
> 
>         CUWiN is based on NetBSD, which runs on a large number machine
>         architectures, including 64-bit AMD, ARM, i386, MIPS, PowerPC,
>         32- and 64-bit SPARC.  NetBSD also runs in Xen virtual machines.
> 
>         NetBSD comes with a script, build.sh, that builds the
>         cross-compilation toolchain, kernel, and user programs, for
>         every architecture that NetBSD supports.  Changing the target
>         architecture is a simple matter of changing the '-m' option
>         argument to build.sh.
> 
>         The CUWiN system uses build.sh to cross-build NetBSD from Linux
>         and Mac OS X, however, CUWiN does not build for more than one
>         architecture.
> 
>         Revamp the CUWiN build system to exploit NetBSD's ability to
>         cross-build for non-i386 machine architectures.  Add to the
>         CUWiN build script, mkstaboot, an '-m <architecture>' option.
>         Demonstrate either a CUWiN CD-ROM for a non-i386 system, or a
>         kernel with memory-disk root for non-i386, or both.
> 
> 2 Discovering and selecting Internet gateways on a dynamic mesh
>   network.
> 
>         Community wireless "mesh" networks are usually "multi-homed,"
>         that is, they connect to the Internet in more than one place.
>         Multi-homing on community wireless meshes is complicated by the
>         presence of Network Address Translation (NAT) at the gateways.
>         Dynamic wireless links compound the complexity.
> 
>         Write a daemon that advertises, discovers, and selects IPv4
>         gateways.  Select IPv4 gateways that are "best" according to the
>         routing metrics.  Protect against severance of TCP sessions with
>         a change of NAT gateway.
> 
>         CUWiN favors a solution that involves tunneling to one or more
>         IPv4 gateways and using the pf stateful firewall to "stick" a TCP
>         session to its NAT gateway.  If you understand IP-in-IP tunnels,
>         stateful firewalls, and IP routing, the intricacies (and evils)
>         of NAT, this may be the project for you!
> 
> 3 Distribute IPv4 & IPv6 prefixes on a community mesh
> 
>         CUWiN would like for everybody who belongs to a community mesh to
>         have their own global IP number, so that they can run their own
>         web server, place & receive VoIP telephone calls without grotty
>         hacks like STUN, and generally be a first-class network citizen.
> 
>         To that end, CUWiN needs a system for automatically distributing
>         global IP numbers to subscriber's mesh nodes.  The global numbers
>         may come from any number of sources, including a DHCP server,
>         IPv6 prefix advertisements, or manual configuration.
> 
>         Let us say that each router on the wireless mesh has a pool of
>         zero or more global IP numbers that it can allocate to itself and
>         to other routers on the mesh.  Write a daemon that advertises the
>         pool's availability throughout the routing domain, that grants and
>         requests "leases" on IP numbers from pools throughout the domain,
>         and that configures the router and subscribers' home PCs with
>         "leased" IP numbers.
> 
> 4 Configuration information store
> 
>         Have you ever botched the configuration of a wireless router
>         at the tip-top of your steeply-slanting roof in the middle of a
>         thunderstorm?  Did a lot of people depend on that wireless router?
>         Did it take a long time to restore the router to working order?
>         Did you need a ladder to do it?
> 
>         Sometimes CUWiN routers end up in places where it is inconvenient
>         or dangerous to plug your laptop into the ethernet or serial
>         port to manage them.  Sometimes an operator has no choice but
>         to reconfigure a router "over the air."  If an operator tunes
>         to the wrong frequency channel, for instance, or deactivates the
>         wrong wireless interface, they might lose control of the router.
> 
>         Commercial routers by Cisco, Juniper, NextHop, and others,
>         centralize the configuration of the router in a transactional
>         configuration information store that has commit/auto-rollback and
>         undo/redo functions.  An operator can make tentative and, more
>         importantly, incorrect configuration choices (e.g., deactivating
>         the wireless interface he sends his configuration commands
>         over!) with confidence, because the router will "roll back"
>         to the last good configuration if several seconds pass without
>         operator activity.
> 
>         Create a configuration information store for the CUWiN system.
>         The store should be structured as a tree, with individual
>         configuration items named by slash-delimited paths from the root
>         of the tree.  The operations on the tree are these:
> 
>                 value = get(path)
>                 old_value = set(path, value)
>                 create_container(path)
>                 delete_container(path)
>                 handle = start_listen(path)
>                 stop_listen(handle)
>                 stream = serialize(path)
>                 deserialize(path, stream)
>                 set_redo_action(path, action_string)
>                 set_undo_action(path, action_string)
>                 generation = get_generation()
>                 redo(generation)
>                 undo(generation)
>                 commit(generation)
> 
>         Applications that use the store (e.g., an SNMP server or a web
>         configurator) will control it by sending operations over a socket.
>         An application can monitor the state of configuration items at
>         a certain path by registering as a "listener" for that path.
> 
>         Applications label a path with both a "redo" and an "undo"
>         action; these are shell commands that the store runs to apply
>         a make a configuration change "live," and to "revert" a change,
>         respectively.  For example, consider this tree:
> 
>                 /interfaces
>                 /interfaces/0
>                 /interfaces/0/name              = eth0
>                 /interfaces/0/addresses
>                 /interfaces/0/addresses/ipv4
>                 /interfaces/0/addresses/ipv4/0  = 192.168.1.1
> 
>         The path /interfaces/0/addresses/ipv4/0 may be labeled by the
>         redo-action
> 
>                 ifconfig $(../../../name) inet $(.) alias
> 
>         and undo-action
> 
>                 ifconfig $(../../../name) inet $(.) -alias
> 
>         Where the $() notation interpolates the value stored at a path.
> 
>         This configuration manager should be versatile enough to
>         configure any kind of networked appliance.  It could work with
>         Quagga/BIRD/XORP.
> 
>         You only need to produce a simple command-line app for the store.
> 
>         TBD finish specs for this.
> 
>         This is an ambitious project for one summer.
> 
> 5 Community Domain Name Service & Service Discovery
> 
>         CUWiN has designs for a community name service that puts
>         subscribers in control of their name on the 'Net, and lets them
>         advertise web servers and chat-client "presence" information
>         to their neighbors.  Some code exists in a very rough form.
>         Finish it.
> 
> Dave
> 


-- 
Sascha Meinrath
Policy Analyst    *  Project Coordinator  *  President
Free Press       *** CUWiN               *** Acorn Active Media
www.freepress.net *  www.cuwireless.net   *  www.acornactivemedia.com



More information about the CU-Wireless-Dev mailing list