SILK Research
The research ideas of SILK address the problem of providing resource
isolation between slices in PlanetLab. In PlanetLab's distributed
environment of over 160 nodes world-wide, this problem is complicated by
the following dimensions:
- PlanetLab has a large community of users who depends on many of the
features provided by SILK. As new resource isolation features are added
to SILK (or current
bugs are fixed), new versions must be deployed on all PlanetLab nodes
in a timely manner.
- The PlanetLab kernel is based on Linux 2.4.19 with several
experimental patches applied. At least one of these patches
(vservers) modifies many
critical kernel data structures, and continues to evolve. There is
the danger that new patches will conflict with code changed or assumptions
made by existing patches or future versions of these patches.
- The Linux kernel itself changes over time. For instance, the Linux
CPU scheduler has received a major overhaul for the 2.5 series kernels.
While it is not yet clear whether PlanetLab will track Linux kernel changes,
it is undesirable to tie SILK to a particular kernel version.
Faced with these practical problems, we have developed techniques
for scheduling CPU and network resources, and imposing additional
resource isolation structures on the kernel, from within a Linux
kernel module. This allows SILK development, deployment, and
maintenance on PlanetLab without kernel patches. Conversely,
PlanetLab kernel changes require only a recompilation of the SILK
module as long as the key internal interfaces used by SILK remain
unchanged. SILK is structured so that tracking future versions of
Linux with modified internal interfaces will involve rewriting only a
few well-defined components.
SILK's resource isolation mechanisms span the following research areas:
- CPU and Network Scheduling
- The goal of SILK's scheduling framework is to generalize
scheduling along two dimensions: those of the resource scheduled
(e.g., CPU cycles or network bits) and the discipline used
to schedule it. The framework is designed to be "dropped in" to any
context where such scheduling is needed (e.g., application, OS kernel,
device driver). Multiple schedulers are provided, including
round-robin, priority, and several proportional sharing disciplines;
new disciplines can be created by writing a self-contained object and
plugging it into the framework. This framework is currently used to
provide CPU isolation between slices on PlanetLab.
- PathKit
- The PathKit overlays Scout-path-like structures onto the
Linux protocol stack, providing the resource isolation and accounting
of Scout paths with the full functionality of Linux. Currently, each
TCP, UDP, and safe raw socket corresponds to a path within the Linux
kernel provided by SILK's PathKit. A future goal of the PathKit is to
allow easy extensibility of the Linux protocol stack through
assembling simple, reusable components into new path structures.
Copyright © 2003 Andy Bavier