Welcome to the Fraglets Home Page

fraglets logo

Table of Contents:


What are Fraglets?

Fraglets are tiny computation fragments or tokens that flow through a computer network. There are two ways to look at Fraglets. First, Fraglets implement a chemical reaction model where computations are carried out by having fraglets "react" with each other. Alternatively, fraglets can be seen as dataflow tokens that work themselves through communication media and routing tables - conceptually, the CPU is turned inside out such that the network becomes the CPU's bus. An interesting twist (with both views) is that Fraglets blend the notion of code and data, overcoming the discrepancy between "classic networking" and "active networking".

What are they good for?

Fraglets can be used to explore new protocol engineering and implementation opportunities. Inspired by the chemical metaphor, we study for example the regulation of protocol instances as well as their internal code base. Such a system will hopefully be able to track changes in network and code configurations, adapt gracefully to unforseen situations and even evolve its own functionality. On the other hand, Fraglets are formal enough such that we can study self-healing properties of protocol implementations running in unreliable execution environments.

Fraglets Core Instructions:

dup [dup t a tail] → [t a a tail]
duplicate a single symbol
exch [exch t a b tail] → [t b a tail]
swap two tags
fork [fork a b tail] → [a tail], [b tail]
copy fraglet and prepend different header symbols
match [match a tail1], [a tail2] → [tail1 tail2]
two fraglets react, their tails are concatenated
matchp [matchp a tail1], [a tail2] →
   [matchp a tail1], [tail1 tail2]

"catalytic match", i.e. the matchp rule persists
nop [nop tail] → [tail]
does nothing (except consuming the instruction tag)
nul [nul tail] → []
destroy a fraglet
pop2 [pop2 h t a b tail] → [h a], [t b tail]
pop head element 'a' out of a list 'a b tail'
split [split seq1 * seq2] → [seq1], [seq2]
break a fraglet into two at the first occurence of *

More Instructions:

Full instruction set, as of September 24, 2007:
Quick guide





Related Work

Chemical Computation Models such as:



A fraglets interpreter in C is available as a proof-of-concept implementation. The interpreter package also includes the fraglet protocols shown in the AINS'03 paper and several scripts used for the genetic programming experiments reported in the SelfMan'05 and WAC'05 papers. The source code within the package is available under the GNU General Public License (GPL). It has been tested mostly under Linux.

September 24, 2007: release 0.32 of the C version is out!
March 2007: A fraglets interpreter in Java is now available in bytecode form. It was implemented by TechIdeas in the framework of the BIONETS project.

To download the fraglets package:

Release Date Comments Download package
0.32 2007-09-24 more language extensions and fixes (see the instruction set for an updated overview) fraglets0.32.tgz
0.2 2007-03-15 Fraglet Interpreter written in Java by TechIdeas, available in bytecode form. Click here for more information. fraglets-0.2.jar
0.29 2007-01-28 several language extensions and bug fixes; reaction graph generation, concentration and rate plots fraglets0.29.tgz
0.19 2005-06-24 incorporated udp sockets support (implemented by Jasenko Zivanov, undergrad student at Univ. Basel, as part of a network course project) fraglets0.19.tgz
0.18 2005-05-05 improved fitness evaluation and ported ains'03 protocols, Lidia Yamamoto (Univ. Basel) fraglets0.18.tgz
0.17 2005-02-13 added the notion of modules and crossover by homologous recombination (preparation for selfman'05 and wac'05) --
0.16 2005-01-28 bug fixes for genetic experiments --
0.15 2004-07-11 wac'04 package by Christian Tschudin (now at Univ. Basel) --
0.14 2002-03-11 ains'03 package (Uppsala Univ.) --
0.01 2002-??-?? created by Christian Tschudin (Uppsala Univ.) --

Developed at:

Commuications Research (CoRe) Group     
Uppsala University
Computer Networks Group     
University of Basel


Starting from January 2006, the research and development of the fraglets language and interpreter have been partially funded by the European Commission under the framework of the BIONETS project, within the Situated and Autonomic Communications (SAC) initiative.

Starting from July 2007, it has also been partially funded by the Swiss National Science Foundation (SNF) under the grant for the project 'Self-Healing Protocols'.


(c) 2005-2007 Computer Networks Group, University of Basel
Page created: 2005-05-25
Last update: 2007-09-24 by Christian Tschudin and Lidia Yamamoto