TCP/IP Meets Physical Reality
An anonymous reader writes "When Google is clouding
the borderline between web and the desktop, a much, much smaller
project is blurring the border between the Internet and the
physical reality: the newly released Contiki
operating system version 2.2.1. Contiki runs on networked wireless
sensors that are used for anything from road
tunnel monitoring for fire rescue operations to collecting vital
statistics from ice hockey players. These sensors
typically have as little as a few kilobytes of memory and a few
milliwatts of power budget — a thousandth of the resources of a
typical PC computer — yet Contiki provides them with full TCP/IP
connectivity. Meanwhile, San Francisco is monitoring parking spaces with wireless technology."
What is the point of this story, anyway? It seems to be about Contiki, but it ends with something on parking meters? How is clouding relevant?
What does "Internet Protocol Meets Physical Reality" mean? Wireless interfaces in everyday applications have been around for years. Forget headlines, this whole story seems to be pointless.
My preferred name is frazz, but someone keeps taking it. If you see him, tell him I said hi.
This is one of three parts that will enable ubiquitous computing - the ubiquitous data gatherers & environmental sensors.
The second is a wireless routing protocol that really supports jumping from one AP to another (This will be worked out, probably as a derivative of cell phone networks, when people start roaming further than a single WiFi AP and demand seamless transitions) without disrupting existing sessions. More than just auto-connecting to a new AP, but having previous datastreams (streaming music, calls, chat) redirected to the new address and handing over authentication tokens as well.
The third is a system capable of generating or pattern-matching meaningful information from new sensors without being explicitly told how (since not even a geek such as I would want to program my implants to recognize every new blobject they encounter). We'll get there eventually.
Looking at the wikipedia page :
http://en.wikipedia.org/wiki/Contiki
Confirms why I thought of the C64 when I read Contiki.
Here is a list of supported systems from wikipedia :
* Computers:
o Apple II family[1]
o Atari 8-bit[1]
o Atari ST
o Atari Portfolio
o Casio Pocketview
o Commodore PET[1]
o Commodore VIC 20[1]
o Commodore 64[1]
o Commodore 128[1]
o GP32
o Oric
o PC-6001
o Sharp Wizard
o x86-based Unix-like systems, on top of GTK+ as well as directly using the X Window System[2]
* Video game consoles:
o PC Engine
o Sega Dreamcast
o Sony PlayStation
* Handheld game consoles:
o Nintendo Game Boy
o Nintendo Game Boy Advance
Impressive features as well :
A full installation of Contiki includes the following features:
* Multitasking kernel
* Optional per-application pre-emptive multithreading
* Protothreads
* TCP/IP networking
* Windowing system and GUI
* Networked remote display using Virtual Network Computing
* A web browser (claimed to be the world's smallest)
* Personal web server
* Simple telnet client
* Screensaver
Another brilliant, clear, and useful article summary about...what exactly? The connecting-things-to-stuff dept doesn't help much either.
Tic-Tac-Toe, Global Thermonuclear War, and relationships all have the same winning move.
If, on the other hand, you try to use private IP4 address blocks, you're going to risk address collisions when you try to combine networks (and have a harder time resolving such collisions, given the kind of objects you're playing with).
Sometimes boldness is in fashion. Sometimes only the brave will be bold.
Currently, there are two popular "OSes" being used for wireless sensor networks. One of them is TinyOS and one of them is Contiki. The challenge is that WSN nodes are usually battery operated, small, and need to last for a very long time. That means that you're memory restricted and power restricted which are difficult limitations for OS developers. I prefer using Contiki on my open source Zigbee project because its developed in ANSI C, unlike TinyOS which requires a variant of C called NesC. I'm also using a lot of libraries from Contiki which is keeping the protocol stack size down. I'm probably around 30-40 kB right now which is already big by WSN standards. FYI, the Contiki uIP protocol stack is about 20kB including the OS. The Contiki OS alone is about 2.5 kB, and some people have gotten TCP/IP on it running with 250 bytes of RAM. Not sure how they pulled it off. Contiki is really an amazing OS. For those interested in checking out my project, in can be found here: http://www.freaklabs.org/ Akiba
From my experience, biggest challenges in TCP are the all other smaller RFCs written after TCP became STD.
If you look at other projects e.g. LWIP, you will notice that core TCP code isn't that large. Many parts deal with compatibility issues, with security issues and of course with memory management. (Many disregard memory management, yet TCP for effective work has to have quite an amount of memory: otherwise bandwidth would be quite limited.)
From my personal experience, TCP is nothing more than ring buffer, four counters and FSM to track the counters. Rest is optional and can be easily simulated, remaining within RFC requirements. (Yes, I was implementing TCP long time ago for traffic shaping module.)
All hope abandon ye who enter here.