"Internet 0 -- Bringing IP to the Leaf Node" Raffi Krikorian O'Reilly Emerging Tech Conference 2003 Cory Doctorow doctorow@craphound.com -- IP has changed our world, but there's lots it hasn't changed: * Poor countries * Quotidian stuff: chairs, tables, etc (too expensive to IPify) IP "stuff" is expensive, but we can IPify more cheaply if the devices can manage the complexity themselves. Barcelona: really pissed to see "expressive" Gaudi beuildings being knocked through with holes to accomodate power, network, etc. Why can't expressivity and power/network be built into matter? [[Shows video of lightbulbs with httpds in them and light-switches with user-agents that work like regular lightswtiches over TCP/IP. You can move the lightswitch to anywhere else in the building an it will still control the same bulb. When you attack a new lightswitch, it doesn' tknow what bulb it controls. You program the switch by touching the switch and the bulb with tweezers that causes them both to announce that they've been touched and creates an association]] India: metering the power grid. Lots of power in India is stolen through linetaps. Breaks the grid, can kill you. Need a way to detect theft and it's too expensive to use poeple and conventional meters. Sol'n: IP power-metersm, per village, use power-lines for transporting data about how much current is sent and received so you can identify where power is stolen. Byproduct is that you're creating 100kb/s connectivity to rural Indian villages. -- Problem: Create $5 small IP devices that can interconnect. * Fix complex code into small, resource-constrained devices * Include network connectivitiy * Coordination overhead -- In the Barcelona example, each switch had a $3 IP-enabled microcontroller. -- Internet 0 is: * IP to the edge: every device speaks IP. Solves all the problems the Internet already solves: naming, addressing routing. All devices speak TCP/HTTP/SOAP -- no protocol conversion. * P2P +/- servers: no central point of failure except the network. Devices randomly choose IP address and collaborate to see if they're already taken. No central basement server. Devices maintain local state. A crash won't take your house down. Centralize to add value: if you want Google, install a server in the basement, but the system still runs if it goes down. * Physical OOP: Program once and deploy devices. Interacty physically with devices to spur them into communication -- no laptops to change the code. My mom shouldn't need an IT person to install a lightbulb. Need a security model that allows a mechanism for flashing the whole house with new OSes. Leads to: * Functional descriptions: Complex code that compiles down to simple, small code by removing unnecessary instructions. 3.5k assembly-code httpds. Why not use a Pentium and run Linux on a lightswitch? It's not just Moore's Law. The processor is also lower power. Simplicity means that it can be hand built. Chips run cool. We don't care about WiFi or mesh WiFi. * Slow bits: Networks just slow enough to get the job done. !00kbs. Who needs Video on Demand on your lightswitch. It's expensive -- all the switches have to be REALLY fast, every corner of your house requires a $50 piece of networking. Slow RS45 nets can be installed by existing electricians -- already used for elevators and thermostats. * Shared analog modulation: UWB-light. Cheap and simple networking. USB-like clicks with microprocessors. Plug in a wire or an LED or whatever to change network medium. IR, ultrasound, RF... * Open system: Nobody owns the Internet. Lets anyone build on it. If you want to expand Bluetooth out of band, you're screwed, because it wasn't scoped into the standard. By contrast, IP lets you build just about anything. -- Industry uses: * Builders * Sun Microsystems (standards and security) * Steelcase (smart furniture) * Swatch * EToy (for 2003 Xmas Light show in Zurich) -- Future research: * Analog modulation * Security (protect house, convergence of physical and network security, coop security) (require physical presence to control key functions -- turn a key in a lock to re-key a door) (simple code reduces sploits) * Emerging high-level functionality * Programatically decomoposing functional representation