Title: Binary Component Adaptation
1Binary Component Adaptation
- Ralph Keller and Urs Hölzle
- Dept. of Computer Science
- University of California, Santa Barbara
- 1998
2Motivation
- A user should be able to easily integrate binary
only code provided by multiple vendors. - It is unrealistic to expect different vendors to
code with the same standards. - A single vendor should have a better way to
update modules while maintaining binary
compatibility between releases. - Problematic with direct source code modification
- Currently you only get one chance to get it
right with an interface.
3Simple Example
4Solution
5The goal of BCA
6Supported Modifications
7A replacement example
8Interface Evolution Example
9Steps To Using BCA
- 1. Adaptation FileTextual description of the
changes desired. - 2. Delta File
- Adaptation is compiled to a portable delta file
containing delta information plus compiled
bytecode for new methods. - 3. Class File Modification
- Static produce new class files
- Dynamic modify class files based on available
deltas at load time.
10Delta File Compilation
11Intermediate class file representation
12Problems
- Naming clashes in evolved (distributor
modified) versus adapted (user modified)
versions. - To solve this every class file needs a record of
the version of the module it was compiled
against. - If deltas contain renaming, composition order may
be relevant. - To be solved by the user.
13(No Transcript)
14Integration with javac
15Benchmark Summary
- BCA was acceptable fast
- The majority of slowdown was due to double
parsing of the class file. Could be solved by
integration into javac.
16Conclusions
- Allows adaptation of any component without
requiring source code access. - Provides a mechanism for release to release
binary compatibility. - Robust- can add/rename fields and methods,change
inheritance structure, extend interfaces. - Efficient enough to be performed at load time.
- This is all good stuff.
17This Slide Intentionally Left Blank
18Safe Kernel Programming in the Open Kernel
Environment (OKE)
- Herbert Bos and Bart Samwel
- Leiden Institute of Advanced Computer Sciences
- June 2002
19Goals
- Load fully optimized native user code into the
kernel. - Use a language OS programmers will be comfortable
with. - Allow for various levels of freedom within the
kernel depending on user credentials.
20Predecessors
- DrScheme Support for multiple language access
levels. - OKE uses a modified version of Cyclone with the
same effect - Spin Support for user code inside the kernel
boundary. Modula-3. Trusted compiler. - Doesnt handle resource management. Bad code can
still consume the memory or cputime. - FLAME Cyclone KeyNote Static checking
- Focus on networking code rather than full kernel
programability. - Proof Carrying Code(PCC) Uses formal proofs to
ensure safety of code. - OKE relies on trust management and language
mechanisms instead.
21OKE Trust Management
- Uses KeyNote and OpenSSL as the foundation.
- Public key certification System
- Binds keys directly to the authorization to
perform specific tasks. - Trust chains. Trusted users may delegate trust
to others. - Permission to load a module of type X or type Y,
but only under condition Z
22Trust Management (cont.)
- Types Rule sets for compiled code. A compiled
module will have a signature verifying that it
conforms to a given type. - Roles e.g. student loading code in kernel
- Types and Roles the responsibility of the
administrator to manage. -
23OKE Architecture Framework
- The Code Loader
- The legislator
- The bygwyn compiler
24The Code Loader
- Verifies the integrity of the module and the
permission of the user to load the module(based
on user credentials). - Otherwise a standard loader.
25The Legislator
- Designed to help automate language customizations
for specific tasks while maintaining safety in
the kernel. - Proof of concept implementation only
- Mechanisms, not policies. Does not manage any
mapping between users and types.
26The bygwyn Compiler You cant always get what
you want, but you get what you need. Rolling
Stones
- Allows for a dynamic set of restrictions using
the forbid keyword. e.g. - forbid namespace
- Credentials must be supplied to the compiler to
determine restrictions. Credentials may differ
from CL credentials. - Compiler binds customization types (rule sets) to
compiled code with MD5. Generates a signed
compilation record.
27Putting it all together
28Restricting Cyclone
- Untrusted Code must be contained within a single
translation unit. - Environmental Setup Code(ESC).
- ESC allowed to use inline C
- Defines external APIs
- forbid extern C
- generates a unique random namespace
- No unauthorized imports
- No namespace clashes
- locked keyword. Allows a struct field to be
passed as an argument, but not read or written.
29Resource Protection
- cputime
- Timer based(configurable). Generates an
uncatchable exception. - Stack Overflow
- Static maximum potential stack usage
- Dynamic(for recursion) checks at runtime
30Region based memory protection
- Outlives concept derived form Cyclone.
- Pointers in one region may only point to data in
regions which are guaranteed to outlive the
pointer. - Cyclone Heap may point to kernel memory, but not
vise versa. - Correct because the kernel will always outlive
the module, but problematic since the kernel can
free whatever it wants. Tricks required.
31Wrapping
- Calls from kernel to untrusted code are wrapped.
- catch Cyclone Exceptions before reaching the
kernel. - Free unreleased locks
- Calls to kernel functions are wrapped.
- Allows insertion of Misbehavior Exceptions
- forbid catch
- Usually kill a module by throwing an exception.
If trying to kill while in the kernel, exception
is deferred to the wrapper exit.
32(No Transcript)
33Applications
- Network Monitoring
- Packet filters
- Traffic analysis
- Packet Transcoding
- Forward Error Correction (FEC)
- Audio packet resampling
34Open Monitoring Architecture
35OMA Packet filtering
- Prevents access to various parts of the packet
- Examples
- Header only
- Header only, except for origination access.
- Uses const locked fields to achieve this
protection at no cost(checked at compile time). - Module acts as a filter with Linux NetFilter
hooks (inserted in forwarding path).
36OMA Packet Transcoding
- The packet is removed from the forwarding path.
- Traditional solutions require a copy into user
memory space. - Example1 Add Forward Error Correction (FEC) to
the packet. - Example2 Audio Resampling
37OMA Packet Transcoding
38Overhead of Copy to Userspace
39FEC Overhead- OKE vs. C
40Overhead of Resampling
41Other WorkActive Networking and The OKE Corral
- Goals similar to that of the Click Modular
Router. - Relies on trust management mechanism to allow
modules to be loaded into the kernel over a
network.
42Conclusions
- The OKE allows optimized modules to be safely
integrated into the kernel. - There is a clear performance advantage against
both user space implementations (frequently
crossing the kernel boundary) and against
interpreted solutions such as BPF. In many
cases, performance can approach that of native C.