Transcript Summer 05.2

Tinkernet
The Presentation
Dan Turner, Mark Kegel, Erik Shimshock and
Ryan Ausanka-Crues
With Support and Encouragement by
Titus Winters and Mike Erlinger
(also Jason Arold)
Project Overview
• What is Tinkernet?
• System to allow students to write the
networking code of an OS
• Why would you want it?
• Provides a convenient and controlled
environment to write and test
networking code
Students
How it works... Nodes
Tinkerbell
SSH
TFTP
Hardware
• Rack of nodes
• Basic (old) computer
• minimal components (RAM, CPU,
etc.)
• Two network cards
• Couple of hubs, many ethernet cables
• Server
• Standard computer (lots of RAM)
• Linux
Student Assignments
• Writing modules to handle the protocol
stack
• ethernet, IP, UDP, ARP
• TCP - could do but is a lot of work
• Scaled down version of TCP
Student Perspective
• SSH in to a server (Tinkerbell)
• Write the network module for a kernel
• Filling in a code template
• Compile code on the server; run on
node
• Debugging code
• Tinkerboot
• netprintf
The Real
Perspective
• (1) Student writes code
• (2) Student compiles code into kernel
• (3) Student uses tinkerboot to load
kernel
• (4) Student tests kernel
• (5) Kernel dies, and student repeats the
first four steps
Behind the Scenes:
Compiling the Kernel
• OSKit
• provides a fully operable kernel
• we strip out the networking module
• student code gets compiled in as the
new networking module
• then you have your kernel...
Behind the Scenes:
Booting the Kernel
• tinkercontroller
• is a daemon that manages the nodes
• a free node is chosen, and the kernel
is sent to it
• if all has gone well, you have a
running kernel
The Running Kernel
• Kernels are expected to respond to:
• ARP requests
• IP broadcast
• Handle IP packets
• Also UDP
• Also need to be able to generate their
own packets
Controlling the
Kernel
• Each node has two network cards
• Is hooked in to two separate networks:
warzone and admin
• Student packets are sent over warzone
• Admin network handles management of
each node - booting, restarting, debug
Individual Projects
• Dan
• Grub
• OSKit
• Packet dropping
Individual Projects
• Erik
• Built a new rack
• Solved missing nodes
• Documentation
• Comments
Individual Projects
• Mark
• Set up team computers
• Tinkerboot GUI
• Tinkeradmin GUI
Individual Projects
• Ryan
• Built rack
• Missing nodes problem
• Website and wiki
• Commenting and re-factoring code
Things left to do...
• Documentation...
• Portability...
• Packaging for distribution...