Speakers | |
---|---|
Renzo Davoli | |
Schedule | |
Day | Sunday |
Room | K.1.105 |
Capacity | 809 |
Start time | 11:00 |
End time | 11:50 |
Duration | 00:50 |
Info | |
Track | Network and IO Track |
Attachments | |
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.
Links:
Concurrent events:
Next (up to 3) talks in the same room (K.1.105):
When | Event | Track |
---|---|---|
12:00-12:50 | The Wild West of UNIX I/O | Network and IO |
13:00-13:50 | A strategy for managing diverse equipment in the CERN controls group | Network and IO |
14:00-14:50 | Why the community should welcome Average Jane and Joe | Community |
Events that start after this one (within 30 minutes):
When | Event | Track | Where |
---|---|---|---|
11:55-12:15 | The LemonLDAP::NG Project | Perl | AW1.121 |
12:00-12:50 | The Wild West of UNIX I/O | Network and IO | K.1.105 |
12:00-12:05 | OpenPGP keysigning | Certification | Ferrer |
12:00-12:25 | Cluster internals | MySQL and Friends | H.1309 |
12:00-12:25 | VDSM - The oVirt Node Management Agent | Virtualization and Cloud | Chavanne |
12:00-12:30 | Continuous integration with Mozmill for Firefox | Mozilla | UD2.218A |
12:00-12:30 | How Eclipse Works | Free Java | K.4.401 |
12:00-12:30 | An introduction to jQuery Mobile | Smalltalk | AW1.126 |
12:00-12:35 | Works with persistent graphs using OrientDB | Graph Processing | AW1.125 |
12:00-12:50 | coreboot - The last frontier: Laptops | System | Janson |
12:00-13:00 | Safe upgrade of embedded systems | Embedded | Lameere |
12:00-13:00 | Colour Management in Compositors. | X.org+OpenICC | K.3.401 |
12:05-14:00 | CAcert Assurance Party | CAcert | Ferrer |
12:15-13:00 | 29,000 packages in 24 hours - Releasing Debian | CrossDistribution | H.1302 |