FOSDEM is the biggest free and non-commercial event organized by and for the community. Its goal is to provide Free and Open Source developers a place to meet. No registration necessary.

Renzo Davoli
Day Sunday
Room K.1.105
Capacity 809
Start time 11:00
End time 11:50
Duration 00:50
Track Network and IO Track
fosdemIoTh (slides)

Internet of Threads

"Internet of Threads" gives a new perspective on the Internet. Each process, group of processes or even a single thread can be an Internet node, having its own ip address, QoS, routing etc. Virtual Distributed Ethernet, User mode IP stacks, partial virtual machines can make this change possible.

What does a network connect? The question about which are the real nodes of a network has been the target much recent discussion in the research community. In the beginning Internet and the TCP/IP protocols were based on the idea to connect computers, hence, the addressable entities were the networking adapters.

This seminar introduces an alternative view: a process or a group of processes can be made to correspond to a single networking node. This concept has been named Internet of Threads.

This proposal is already supported by a set of software tools which are an experimentalproof-of-concept for this change of outlook on networking.

The international research lab on virtuality named VirtualSquare developed several tools:

· VDE: the Virtual Distributed Ethernet. It supports the definition of virtual LANS interconnecting user Virtual Machines (and other virtual entities) both running on the same host and on remote hosts.

· LWIPv6: a hybrid stack IPv6, back compatible with IPv4, and implemented by a modular library. A program using LWIPv6 can join a TCP-IP network using its own IP addresses, routing, etc. LWIPv6 supports address autoconfiguration, DHCP server, DHCP client, NAT and slirp (including IPv6 NAT and slirp).

· View-OS/umnet/umnetlwipv6: View-OS implements partial virtual machines, i.e. it grants the possibility of virtualizing only some features of the hosting environment. For example the module named umfuse supports the virtual mount operation of file systems, umdev supports the definition of virtual devices. Umnet furthermore supports virtual networking stacks, and its submodule umnetlwipv6 uses LWIPv6 to define multiple TCP-IP stacks. By View-OS, standard tools like web browsers, ssh servers or clients can use virtual networks, e.g. a VPN, while other processes running on the same host are under different network definitions (e.g. the kernel provided TCP-IP stack which uses the physical networking adapters installed).

This change of view permits great flexibility in terms of service migration: a virtual distributed ethernet network defines a cloud in which the programs (our threads) are directly connected as they were nodes of a LAN. When joining a VDE, the physical location of the server thread which provides a service is irrelevant: that virtual address can be everywhere on the virtual network.

Within Internet of Threads, the idea of running a unique stack per host, or at least a unique one per container, become obsolete. The stack is merely a library which implements the layers of a protocol stack. This library can run as kernel code or as user level code, depending on the performance requirements of the system. The fundamental change is that each user can run several networking stacks for her applications (processes or threads) and she can decide which virtual (or real) network is connected to each stack and which IP addresses, routing, QoS apply.

The model includes also gateway applications working with several networking stacks at the same time. Unfortunately, the Berkeley sockets API was designed with the implicit assumption of a single netwokring stack available. We designed an extension to the API in order to fix this lack by providing the support of serveral stacks. This extension allows the support of useful features like:

· The simultaneous support of several stacks for different usage scenarios: different retransmission policies, different sizes for the TCP packet windows etc.

· The support of a production stack together with an experimental stack. It is common to have one single stack implementation, including when several stack instances are running in the system (e.g. virtual adapters for containers). Through the idea of Internet of Threads it is possible to use a reliable stack for the normal use and in the meanwhile to control the experimental environment provided by a second stack, maybe still unreliable and under investigation.

Concurrent events:

When Event Track Where
10:00-12:00 OpenSC codesprint Security H.2214
10:20-11:05 Using Cascalog and Hadoop for rapid graph processing and exploration Graph Processing AW1.125
10:30-11:10 Mobicents TelScale and RestComm Telephony and Communications H.2213
10:30-11:30 OBS Cross Build CrossDistribution H.1301
10:30-12:15 LPI Exam Session 3 Certification Guillissen
10:45-11:15 Boxes, use other systems with ease CrossDesktop H.1308
10:55-11:40 Data-Driven and Component-Based Game-Entities Open Source Game Development AW1.120
11:00-11:15 Powerful tools for Linux C/C++ developers based on Eclipse Lightning Talks Ferrer
11:00-11:25 Virtualization Management the oVirt way Virtualization and Cloud Chavanne
11:00-11:25 How to offload MySQL server with Sphinx MySQL and Friends H.1309
11:00-11:30 Xspice: Integrating spice-server into Xorg K.3.401
11:00-11:45 Towards a BSD C++11 Stack BSD K.4.201
11:00-11:45 Practical implementation of promise theory in CFEngine Configuration and Systems Management K.3.601
11:00-11:45 Being a good upstream - the syslog-ng PoV CrossDistribution H.1302
11:00-11:50 Caching and Tuning fun for high scalability System Janson
11:00-12:00 Aseba robot programming Embedded Lameere
11:00-12:00 Amber, the Smalltalk for web developers Smalltalk AW1.126
11:00-17:00 LPI Item Writing Workshop Certification UA2.114
11:05-11:45 Perlito Perl AW1.121
11:10-11:55 Introduction to HelenOS Microkernel OS K.3.201
11:10-11:55 Birds of a feather - Graph processing, future trends! Graph Processing AW1.125
11:15-11:55 From zero to VoIP provider in 15 minutes Telephony and Communications H.2213
11:20-11:35 Amarok CrossDesktop H.1308
11:20-11:35 LibrePlan: Open Web Planning Lightning Talks Ferrer
11:30-11:55 Build simple and complex replication clusters with Tungsten Replicator MySQL and Friends H.1309
11:30-11:55 oVirt Engine Core: Internals and Infrastructure Virtualization and Cloud Chavanne
11:30-12:00 Introducing the Metrics Data Ping Mozilla UD2.218A
11:30-12:00 Wayland Q & A for toolkit developers. K.3.401
11:30-12:00 Can I legally do that? Free Java K.4.401
11:30-12:30 Working with contributor communities (round table) CrossDistribution H.1301
11:40-11:55 How we scaled up OpenQuake Lightning Talks Ferrer
11:40-12:30 and Qt 5 CrossDesktop H.1308
11:45-12:30 The Dynamic Data Driven Worlds of WorldForge Open Source Game Development AW1.120
11:45-12:30 Integrating LLVM into FreeBSD BSD K.4.201