VLDB 2026 Research / reviewers in the wild / expert
M. Frans Kaashoek
dblp:k/MFransKaashoek
· DBLP profile ↗
131ranked-venue papers
7as first author
10since 2021 · last 2024
0000-0001-7098-586XORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 68 · 2 first-author · 8 since 2021Systems, architecture and hardware · 34 · 4 first-author · 1 since 2021Computer networks · 23Security and privacy · 6 · 1 since 2021Databases, data management, data science and information retrieval · 1Human-computer interaction and ubiquitous computing · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Probability from Possibility: Probabilistic Confidentiality for Storage Systems Under NondeterminismabstractNondeterminism, such as system crashes, poses an important challenge to the security of storage systems by making leakages possible through secret-dependent result probabilities. This paper proposes a new possibilistic confidentiality specification prohibiting such probabilistic leakages. Our specification is preserved under simulation to enable modularity and is sequentially compositional. We implemented our specification in a framework that contains structures to implement storage systems and prove their confidentiality in a modular fashion. On top of our framework, we implemented the first crash-safe file system with a termination-insensitive version of our specification and machine-checkable confidentiality proofs. Our evaluation shows that proving confidentiality incurs 9.2x proof overhead per line of implementation code. Both our framework and file system are implemented in Coq and extracted to Haskell to obtain an executable artifact. Atalay Mert Ileri, Nickolai Zeldovich, Adam Chlipala, M. Frans Kaashoek |
CSF | 4 |
| 2024 | Modular Verification of Secure and Leakage-Free Systems: From Application Specification to Circuit-Level ImplementationabstractParfait is a framework for proving that an implementation of a hardware security module (HSM) leaks nothing more than what is mandated by an application specification. Parfait proofs cover the software and the hardware of an HSM, which catches bugs above the cycle-level digital circuit abstraction, including timing side channels. Parfait's contribution is a scalable approach to proving security and non-leakage by using intermediate levels of abstraction and relating them with transitive information-preserving refinement. This enables Parfait to use different techniques to verify the implementation at different levels of abstraction, reuse existing verified components such as CompCert, and automate parts of the proof, while still providing end-to-end guarantees. We use Parfait to verify four HSMs, including an ECDSA certificate-signing HSM and a password-hashing HSM, on top of the OpenTitan Ibex and PicoRV32 processors. Parfait provides strong guarantees for these HSMs: for instance, it proves that the ECDSA-on-Ibex HSM implementation---2,300 lines of code and 13,500 lines of Verilog---leaks nothing more than what is allowed by a 40-line specification of its behavior. Anish Athalye, Henry Corrigan-Gibbs, M. Frans Kaashoek, Joseph Tassarotti, Nickolai Zeldovich |
SOSP | 3 |
| 2024 | Unifying serverless and microservice workloads with SigmaOSabstractMany cloud applications use both serverless functions, for bursts of stateless parallel computation, and container orchestration, for long-running microservices and tasks that need to interact. Ideally a single platform would offer the union of these systems' capabilities, but neither is sufficient to act as that single platform: serverless functions are lightweight but cannot act as servers with long-term state, while container orchestration offers general-purpose computation but instance start-up takes too long to support burst parallelism. Ariel Szekely, Adam Belay, Robert Morris 0005, M. Frans Kaashoek |
SOSP | 4 |
| 2023 | Verifying vMVCC, a high-performance transaction library using multi-version concurrency control
Yun-Sheng Chang, Ralf Jung 0002, Upamanyu Sharma, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich |
OSDI | 5 |
| 2023 | Grove: a Separation-Logic Library for Verifying Distributed SystemsabstractGrove is a concurrent separation logic library for verifying distributed systems. Grove is the first to handle time-based leases, including their interaction with reconfiguration, crash recovery, thread-level concurrency, and unreliable networks. This paper uses Grove to verify several distributed system components written in Go, including vKV, a realistic distributed multi-threaded key-value store. vKV supports reconfiguration, primary/backup replication, and crash recovery, and uses leases to execute read-only requests on any replica. vKV achieves high performance (67--73% of Redis on a single core), scales with more cores and more backup replicas (achieving about 2× the throughput when going from 1 to 3 servers), and can safely execute reads while reconfiguring. Upamanyu Sharma, Ralf Jung 0002, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich |
SOSP | 4 |
| 2023 | Edna: Disguising and Revealing User Data in Web ApplicationsabstractEdna is a system that helps web applications allow users to remove their data without permanently losing their accounts, anonymize their old data, and selectively dissociate personal data from public profiles. Edna helps developers support these features while maintaining application functionality and referential integrity via disguising and revealing transformations. Disguising selectively renders user data inaccessible via encryption, and revealing enables the user to restore their data to the application. Edna's techniques allow transformations to compose in any order, e.g., deleting a previously anonymized user's account, or restoring an account back to an anonymized state. Lillian Tsai, Hannah Gross, Eddie Kohler, M. Frans Kaashoek, Malte Schwarzkopf |
SOSP | 4 |
| 2022 | Performance evolution of mitigating transient execution attacksabstractToday's applications pay a performance penalty for mitigations to protect against transient execution attacks such as Meltdown [32] and Spectre [25]. Such a reduction in performance directly translates to higher operating costs and degraded user experience. This paper measures the performance impact of these mitigations across a range of processors from multiple vendors and across several security boundaries to identify trends over successive generations of processors and to attribute how much of the overall slowdown is caused by each individual mitigation. Jonathan Behrens, Adam Belay, M. Frans Kaashoek |
EuroSys | 3 |
| 2022 | Verifying Hardware Security Modules with Information-Preserving Refinement
Anish Athalye, M. Frans Kaashoek, Nickolai Zeldovich |
OSDI | 2 |
| 2022 | Verifying the DaisyNFS concurrent and crash-safe file system with sequential reasoning
Tej Chajed, Joseph Tassarotti, Mark Theng, M. Frans Kaashoek, Nickolai Zeldovich |
OSDI | 4 |
| 2021 | GoJournal: a verified, concurrent, crash-safe journaling system
Tej Chajed, Joseph Tassarotti, Mark Theng, Ralf Jung 0002, M. Frans Kaashoek, Nickolai Zeldovich |
OSDI | 5 |
| 2020 | Efficiently Mitigating Transient Execution Attacks using the Unmapped Speculation Contract
Jonathan Behrens, Anton Cao, Cel Skeggs, Adam Belay, M. Frans Kaashoek, Nickolai Zeldovich |
OSDI | 5 |
| 2019 | Towards Multiverse DatabasesabstractA multiverse database transparently presents each application user with a flexible, dynamic, and independent view of shared data. This transformed view of the entire database contains only information allowed by a centralized and easily-auditable privacy policy. By enforcing the privacy policy once, in the database, multiverse databases reduce programmer burden and eliminate many frontend bugs that expose sensitive data. Alana Marzoev, Lara Timbó Araújo, Malte Schwarzkopf, Samyukta Yagati, Eddie Kohler, Robert Morris 0005, M. Frans Kaashoek, Samuel Madden 0001 |
HotOS | 7 |
| 2019 | Argosy: verifying layered storage systems with recovery refinementabstractStorage systems make persistence guarantees even if the system crashes at any time, which they achieve using recovery procedures that run after a crash. We present Argosy, a framework for machine-checked proofs of storage systems that supports layered recovery implementations with modular proofs. Reasoning about layered recovery procedures is especially challenging because the system can crash in the middle of a more abstract layer’s recovery procedure and must start over with the lowest-level recovery procedure. Tej Chajed, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich |
PLDI | 3 |
| 2019 | Notary: a device for secure transaction approvalabstractNotary is a new hardware and software architecture for running isolated approval agents in the form factor of a USB stick with a small display and buttons. Approval agents allow factoring out critical security decisions, such as getting the user's approval to sign a Bitcoin transaction or to delete a backup, to a secure environment. The key challenge addressed by Notary is to securely switch between agents on the same device. Prior systems either avoid the problem by building single-function devices like a USB U2F key, or they provide weak isolation that is susceptible to kernel bugs, side channels, or Rowhammer-like attacks. Notary achieves strong isolation using reset-based switching, along with the use of physically separate systems-on-a-chip for agent code and for the kernel, and a machine-checked proof of both the hardware's register-transfer-level design and software, showing that reset-based switching leaks no state. Notary also provides a trustworthy I/O path between the agent code and the user, which prevents an adversary from tampering with the user's screen or buttons. Anish Athalye, Adam Belay, M. Frans Kaashoek, Robert Morris 0005, Nickolai Zeldovich |
SOSP | 3 |
| 2019 | Verifying concurrent, crash-safe systems with PerennialabstractThis paper introduces Perennial, a framework for verifying concurrent, crash-safe systems. Perennial extends the Iris concurrency framework with three techniques to enable crash-safety reasoning: recovery leases, recovery helping, and versioned memory. To ease development and deployment of applications, Perennial provides Goose, a subset of Go and a translator from that subset to a model in Perennial with support for reasoning about Go threads, data structures, and file-system primitives. We implemented and verified a crash-safe, concurrent mail server using Perennial and Goose that achieves speedup on multiple cores. Both Perennial and Iris use the Coq proof assistant, and the mail server and the framework's proofs are machine checked. Tej Chajed, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich |
SOSP | 3 |
| 2018 | Verifying concurrent software using movers in CSPEC
Tej Chajed, M. Frans Kaashoek, Butler W. Lampson, Nickolai Zeldovich |
OSDI | 2 |
| 2018 | The benefits and costs of writing a POSIX kernel in a high-level language
Cody Cutler, M. Frans Kaashoek, Robert T. Morris |
OSDI | 2 |
| 2018 | Noria: dynamic, partially-stateful data-flow for high-performance web applications
Jon Gjengset, Malte Schwarzkopf, Jonathan Behrens, Lara Timbó Araújo, Martin Ek, Eddie Kohler, M. Frans Kaashoek, Robert Morris 0005 |
OSDI | 7 |
| 2018 | Proving confidentiality in a file system using DiskSec
Atalay Mert Ileri, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich |
OSDI | 4 |
| 2017 | Scaling a file system to many cores using an operation logabstractIt is challenging to simultaneously achieve multicore scalability and high disk throughput in a file system. For example, even for commutative operations like creating different files in the same directory, current file systems introduce cache-line conflicts when updating an in-memory copy of the on-disk directory block, which limits scalability. Srivatsa S. Bhat, Rasha Eqbal, Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich |
SOSP | 4 |
| 2017 | Verifying a high-performance crash-safe file system using a tree specificationabstractDFSCQ is the first file system that (1) provides a precise specification for fsync and fdatasync, which allow applications to achieve high performance and crash safety, and (2) provides a machine-checked proof that its implementation meets this specification. DFSCQ's specification captures the behavior of sophisticated optimizations, including log-bypass writes, and DFSCQ's proof rules out some of the common bugs in file-system implementations despite the complex optimizations. Haogang Chen 0001, Tej Chajed, Alex Konradi, Stephanie Wang, Atalay Mert Ileri, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich |
SOSP | 7 |
| 2016 | Using Crash Hoare Logic for Certifying the FSCQ File System
Haogang Chen 0001, Daniel Ziegler 0002, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich |
USENIX ATC | 5 |
| 2015 | Hare: a file system for non-cache-coherent multicoresabstractHare is a new file system that provides a POSIX-like interface on multicore processors without cache coherence. Hare allows applications on different cores to share files, directories, and file descriptors. The challenge in designing Hare is to support the shared abstractions faithfully enough to run applications that run on traditional shared-memory operating systems, with few modifications, and to do so while scaling with an increasing number of cores. Charles Gruenwald III, Filippo Sironi, M. Frans Kaashoek, Nickolai Zeldovich |
EuroSys | 3 |
| 2015 | Amber: Decoupling User Data from Web Applications
Tej Chajed, Jon Gjengset, Jelle van den Hooff, M. Frans Kaashoek, James W. Mickens, Robert Morris 0005, Nickolai Zeldovich |
HotOS | 4 |
| 2015 | Specifying Crash Safety for Storage Systems
Haogang Chen 0001, Daniel Ziegler 0002, Adam Chlipala, M. Frans Kaashoek, Eddie Kohler, Nickolai Zeldovich |
HotOS | 4 |
| 2015 | Using Crash Hoare logic for certifying the FSCQ file systemabstractFSCQ is the first file system with a machine-checkable proof (using the Coq proof assistant) that its implementation meets its specification and whose specification includes crashes. FSCQ provably avoids bugs that have plagued previous file systems, such as performing disk writes without sufficient barriers or forgetting to zero out directory blocks. If a crash happens at an inopportune time, these bugs can lead to data loss. FSCQ's theorems prove that, under any sequence of crashes followed by reboots, FSCQ will recover the file system correctly without losing data. Haogang Chen 0001, Daniel Ziegler 0002, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich |
SOSP | 5 |
| 2015 | The Scalable Commutativity Rule: Designing Scalable Software for Multicore ProcessorsabstractWhat opportunities for multicore scalability are latent in software interfaces, such as system call APIs? Can scalability challenges and opportunities be identified even before any implementation exists, simply by considering interface specifications? To answer these questions, we introduce the scalable commutativity rule: whenever interface operations commute, they can be implemented in a way that scales. This rule is useful throughout the development process for scalable multicore software, from the interface design through implementation, testing, and evaluation. This article formalizes the scalable commutativity rule. This requires defining a novel form of commutativity, SIM commutativity , that lets the rule apply even to complex and highly stateful software interfaces. We also introduce a suite of software development tools based on the rule. Our Commuter tool accepts high-level interface models, generates tests of interface operations that commute and hence could scale, and uses these tests to systematically evaluate the scalability of implementations. We apply Commuter to a model of 18 POSIX file and virtual memory system operations. Using the resulting 26,238 scalability tests, Commuter highlights Linux kernel problems previously observed to limit application scalability and identifies previously unknown bottlenecks that may be triggered by future workloads or hardware. Finally, we apply the scalable commutativity rule and Commuter to the design and implementation sv6, a new POSIX-like operating system. sv6’s novel file and virtual memory system designs enable it to scale for 99% of the tests generated by Commuter . These results translate to linear scalability on an 80-core x86 machine for applications built on sv6’s commutative operations. Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich, Robert T. Morris, Eddie Kohler |
ACM Trans. Comput. Syst. | 2 |
| 2015 | A Differential Approach to Undefined Behavior DetectionabstractThis article studies undefined behavior arising in systems programming languages such as C/C++. Undefined behavior bugs lead to unpredictable and subtle systems behavior, and their effects can be further amplified by compiler optimizations. Undefined behavior bugs are present in many systems, including the Linux kernel and the Postgres database. The consequences range from incorrect functionality to missing security checks. This article proposes a formal and practical approach that finds undefined behavior bugs by finding “unstable code” in terms of optimizations that leverage undefined behavior. Using this approach, we introduce a new static checker called S tack that precisely identifies undefined behavior bugs. Applying S tack to widely used systems has uncovered 161 new bugs that have been confirmed and fixed by developers. Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek, Armando Solar-Lezama |
ACM Trans. Comput. Syst. | 3 |
| 2014 | VerSum: Verifiable Computations over Large Public LogsabstractVerSum allows lightweight clients to outsource expensive computations over large and frequently changing data structures, such as the Bitcoin or Namecoin blockchains, or a Certificate Transparency log. VerSum clients ensure that the output is correct by comparing the outputs from multiple servers. VerSum assumes that at least one server is honest, and crucially, when servers disagree, VerSum uses an efficient conflict resolution protocol to determine which server(s) made a mistake and thus obtain the correct output. Jelle van den Hooff, M. Frans Kaashoek, Nickolai Zeldovich |
CCS | 2 |
| 2014 | Identifying Information Disclosure in Web Applications with Retroactive Auditing
Haogang Chen 0001, Taesoo Kim, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek |
OSDI | 5 |
| 2013 | RadixVM: scalable address spaces for multithreaded applicationsabstractRadixVM is a new virtual memory system design that enables fully concurrent operations on shared address spaces for multithreaded processes on cache-coherent multicore computers. Today, most operating systems serialize operations such as mmap and munmap, which forces application developers to split their multithreaded applications into multiprocess applications, hoard memory to avoid the overhead of returning it, and so on. RadixVM removes this burden from application developers by ensuring that address space operations on non-overlapping memory regions scale perfectly. It does so by combining three techniques: 1) it organizes metadata in a radix tree instead of a balanced tree to avoid unnecessary cache line movement; 2) it uses a novel memory-efficient distributed reference counting scheme; and 3) it uses a new scheme to target remote TLB shootdowns and to often avoid them altogether. Experiments on an 80 core machine show that RadixVM achieves perfect scalability for non-overlapping regions: if several threads mmap or munmap pages in parallel, they can run completely independently and induce no cache coherence traffic. Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich |
EuroSys | 2 |
| 2013 | The scalable commutativity rule: designing scalable software for multicore processorsabstractWhat fundamental opportunities for scalability are latent in interfaces, such as system call APIs? Can scalability opportunities be identified even before any implementation exists, simply by considering interface specifications? To answer these questions this paper introduces the following rule: Whenever interface operations commute, they can be implemented in a way that scales. This rule aids developers in building more scalable software starting from interface design and carrying on through implementation, testing, and evaluation. Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich, Robert T. Morris, Eddie Kohler |
SOSP | 2 |
| 2013 | Towards optimization-safe systems: analyzing the impact of undefined behaviorabstractThis paper studies an emerging class of software bugs called optimization-unstable code: code that is unexpectedly discarded by compiler optimizations due to undefined behavior in the program. Unstable code is present in many systems, including the Linux kernel and the Postgres database. The consequences of unstable code range from incorrect functionality to missing security checks. Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek, Armando Solar-Lezama |
SOSP | 3 |
| 2013 | Processing Analytical Queries over Encrypted DataabstractMONOMI is a system for securely executing analytical workloads over sensitive data on an untrusted database server. MONOMI works by encrypting the entire database and running queries over the encrypted data. MONOMI introduces split client/server query execution, which can execute arbitrarily complex queries over encrypted data, as well as several techniques that improve performance for such workloads, including per-row precomputation, space-efficient encryption, grouped homomorphic addition, and pre-filtering. Since these optimizations are good for some queries but not others, MONOMI introduces a designer for choosing an efficient physical design at the server for a given workload, and a planner to choose an efficient execution plan for a given query at runtime. A prototype of MONOMI running on top of Postgres can execute most of the queries from the TPC-H benchmark with a median overhead of only 1.24× (ranging from 1.03×to 2.33×) compared to an un-encrypted Postgres database where a compromised server would reveal all data. Stephen Tu, M. Frans Kaashoek, Samuel Madden 0001, Nickolai Zeldovich |
Proc. VLDB Endow. | 2 |
| 2012 | Scalable address spaces using RCU balanced treesabstractSoftware developers commonly exploit multicore processors by building multithreaded software in which all threads of an application share a single address space. This shared address space has a cost: kernel virtual memory operations such as handling soft page faults, growing the address space, mapping files, etc. can limit the scalability of these applications. In widely-used operating systems, all of these operations are synchronized by a single per-process lock. This paper contributes a new design for increasing the concurrency of kernel operations on a shared address space by exploiting read-copy-update (RCU) so that soft page faults can both run in parallel with operations that mutate the same address space and avoid contending with other page faults on shared cache lines. To enable such parallelism, this paper also introduces an RCU-based binary balanced tree for storing memory mappings. An experimental evaluation using three multithreaded applications shows performance improvements on 80 cores ranging from 1.7x to 3.4x for an implementation of this design in the Linux 2.6.37 kernel. The RCU-based binary tree enables soft page faults to run at a constant cost with an increasing number of cores,suggesting that the design will scale well beyond 80 cores. Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich |
ASPLOS | 2 |
| 2012 | Improving Integer Security for Systems with KINT
Xi Wang 0005, Haogang Chen 0001, Nickolai Zeldovich, M. Frans Kaashoek |
OSDI | 5 |
| 2012 | CPHASH: a cache-partitioned hash tableabstractCPHash is a concurrent hash table for multicore processors. CPHash partitions its table across the caches of cores and uses message passing to transfer lookups/inserts to a partition. CPHash's message passing avoids the need for locks, pipelines batches of asynchronous messages, and packs multiple messages into a single cache line transfer. Experiments on a 80-core machine with 2 hardware threads per core show that CPHash has ~1.6x higher throughput than a hash table implemented using fine-grained locks. An analysis shows that CPHash wins because it experiences fewer cache misses and its cache misses are less expensive, because of less contention for the on-chip interconnect and DRAM. CPServer, a key/value cache server using CPHash, achieves ~5% higher throughput than a key/value cache server that uses a hash table with fine-grained locks, but both achieve better throughput and scalability than memcached. The throughput of CPHash and CPServer also scale near-linearly with the number of cores. Zviad Metreveli, Nickolai Zeldovich, M. Frans Kaashoek |
PPoPP | 3 |
| 2011 | Software fault isolation with API integrity and multi-principal modulesabstractThe security of many applications relies on the kernel being secure, but history suggests that kernel vulnerabilities are routinely discovered and exploited. In particular, exploitable vulnerabilities in kernel modules are common. This paper proposes LXFI, a system which isolates kernel modules from the core kernel so that vulnerabilities in kernel modules cannot lead to a privilege escalation attack. To safely give kernel modules access to complex kernel APIs, LXFI introduces the notion of API integrity, which captures the set of contracts assumed by an interface. To partition the privileges within a shared module, LXFI introduces module principals. Programmers specify principals and API integrity rules through capabilities and annotations. Using a compiler plugin, LXFI instruments the generated code to grant, check, and transfer capabilities between modules, according to the programmer's annotations. An evaluation with Linux shows that the annotations required on kernel functions to support a new module are moderate, and that LXFI is able to prevent three known privilege-escalation vulnerabilities. Stress tests of a network driver module also show that isolating this module using LXFI does not hurt TCP throughput but reduces UDP throughput by 35%, and increases CPU utilization by 2.2-3.7x. Yandong Mao, Haogang Chen 0001, Dong Zhou 0006, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek |
SOSP | 6 |
| 2011 | Eyo: Device-Transparent Personal Storage
Jacob Strauss, Justin Mazzola Paluska, Chris Lesniewski-Laas, Bryan Ford, Robert Morris 0005, M. Frans Kaashoek |
USENIX ATC | 6 |
| 2010 | Whanau: A Sybil-proof Distributed Hash Table
Chris Lesniewski-Laas, M. Frans Kaashoek |
NSDI | 2 |
| 2010 | An Analysis of Linux Scalability to Many Cores
Silas Boyd-Wickizer, Austin T. Clements, Yandong Mao, Aleksey Pesterev, M. Frans Kaashoek, Robert Morris 0005, Nickolai Zeldovich |
OSDI | 5 |
| 2010 | Intrusion Recovery Using Selective Re-execution
Taesoo Kim, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek |
OSDI | 4 |
| 2009 | Ksplice: automatic rebootless kernel updatesabstractKsplice allows system administrators to apply patches to their operating system kernels without rebooting. Unlike previous hot update systems, Ksplice operates at the object code layer, which allows Ksplice to transform many traditional source code patches into hot updates with little or no programmer involvement. In the common case that a patch does not change the semantics of persistent data structures, Ksplice can create a hot update without a programmer writing any new code. Jeff Arnold, M. Frans Kaashoek |
EuroSys | 2 |
| 2009 | Reinventing Scheduling for Multicore Systems
Silas Boyd-Wickizer, Robert Morris 0005, M. Frans Kaashoek |
HotOS | 3 |
| 2009 | Flexible, Wide-Area Storage for Distributed Systems with WheelFS
Jeremy Stribling, Yair Sovran, Irene Zhang, Xavid Pretzer, Jinyang Li 0001, M. Frans Kaashoek, Robert Morris 0005 |
NSDI | 6 |
| 2009 | Improving application security with data flow assertionsabstractResin is a new language runtime that helps prevent security vulnerabilities, by allowing programmers to specify application-level data flow assertions. Resin provides policy objects, which programmers use to specify assertion code and metadata; data tracking, which allows programmers to associate assertions with application data, and to keep track of assertions as the data flow through the application; and filter objects, which programmers use to define data flow boundaries at which assertions are checked. Resin's runtime checks data flow assertions by propagating policy objects along with data, as that data moves through the application, and then invoking filter objects when data crosses a data flow boundary, such as when writing data to the network or a file. Alexander Yip, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek |
SOSP | 4 |
| 2008 | Xoc, an extension-oriented compiler for systems programmingabstractToday's system programmers go to great lengths to extend the languages in which they program. For instance, system-specific compilers find errors in Linux and other systems, and add support for specialized control flow to Qt and event-based programs. These compilers are difficult to build and cannot always understand each other's language changes. However, they can greatly improve code understandability and correctness, advantages that should be accessible to all programmers. Russ Cox, Tom Bergan, Austin T. Clements, M. Frans Kaashoek, Eddie Kohler |
ASPLOS | 4 |
| 2008 | Building Distributed, Wide-Area Applications with WheelFS
M. Frans Kaashoek |
GPC | 1 |
| 2008 | D3S: Debugging Deployed Distributed Systems
Xuezheng Liu, Xi Wang 0005, Feibo Chen, Xiaochen Lian, Ming Wu 0007, M. Frans Kaashoek, Zheng Zhang 0001 |
NSDI | 8 |
| 2008 | UsenetDHT: A Low-Overhead Design for Usenet
Emil Sit, Robert Morris 0005, M. Frans Kaashoek |
NSDI | 3 |
| 2008 | Corey: An Operating System for Many Cores
Silas Boyd-Wickizer, Haibo Chen 0001, Rong Chen 0001, Yandong Mao, M. Frans Kaashoek, Robert Morris 0005, Aleksey Pesterev, Lex Stein, Ming Wu 0007, Yue-hua Dai, Zheng Zhang 0001 |
OSDI | 5 |
| 2008 | R2: An Application-Level Kernel for Record and Replay
Xi Wang 0005, Xuezheng Liu, Zhilei Xu, Ming Wu 0007, M. Frans Kaashoek, Zheng Zhang 0001 |
OSDI | 7 |
| 2007 | Alpaca: extensible authorization for distributed servicesabstractTraditional Public Key Infrastructures (PKI) have not lived up to their promise because there are too many ways to define PKIs, too many cryptographic primitives to build them with, and too many administrative domains with incompatible roots of trust. Alpaca is an authentication and authorization framework that embraces PKI diversity by enabling one PKI to plug another PKI's credentials and cryptographic algorithms, allowing users of the latter to authenticate themselves to services using the former using their existing, unmodified certificates. Alpaca builds on Proof-Carrying Authorization (PCA), expressing a credential as an explicit proof of a logical claim. Alpaca generalizes PCA to express not only delegation policies but also the cryptographic primitives, credential formats, and namespace structures needed to use foreign credentials directly. To achieve this goal, Alpaca introduces a method of creating and naming new principals which behave according to arbitrary rules, a modular approach to logical axioms, and a domain-specific language specialized for reasoning about authentication. We have implemented Alpaca as a Python module that assists applications in generating proofs (e.g., in a client requesting access to a resource), and in verifying those proofs via a compact 800-line TCB (e.g., in a server providing that resource). We present examples demonstrating Alpaca's extensibility in scenarios involving inter-organization PKI interoperability and secure remote PKI upgrade. Chris Lesniewski-Laas, Bryan Ford, Jacob Strauss, Robert Morris 0005, M. Frans Kaashoek |
CCS | 5 |
| 2007 | Information flow control for standard OS abstractionsabstractDecentralized Information Flow Control (DIFC) [24] is an ap-proach to security that allows application writers to control how data flows between the pieces of an application and the outside world. As applied to privacy, DIFC allows untrusted software to compute with private data while trusted security code controls the release of that data. As applied to integrity, DIFC allows trusted code to protect untrusted software from unexpected malicious in-puts. In either case, only bugs in the trusted code, which tends to be small and isolated, can lead to security violations. We present Flume, a new DIFC model and system that applies at the granularity of operating system processes and standard OS ab-stractions (e.g., pipes and file descriptors). Flume eases DIFC’s use in existing applications and allows safe interaction between con-ventional and DIFC-aware processes. Flume runs as a user-level reference monitor on Linux. A process confined by Flume cannot perform most system calls directly; instead, an interposition layer replaces system calls with IPC to the reference monitor, which en-forces data flow policies and performs safe operations on the pro-cess’s behalf. We ported a complex Web application (MoinMoin wiki) to Flume, changing only 2 % of the original code. The Flume version is roughly 30–40 % slower due to overheads in our current implementation but supports additional security policies impossible without DIFC. Maxwell N. Krohn, Alexander Yip, Micah Z. Brodsky, Natan Cliffer, M. Frans Kaashoek, Eddie Kohler, Robert Morris 0005 |
SOSP | 5 |
| 2007 | Events Can Make Sense
Maxwell N. Krohn, Eddie Kohler, M. Frans Kaashoek |
USENIX ATC | 3 |
| 2007 | Labels and event processes in the Asbestos operating systemabstractAsbestos, a new operating system, provides novel labeling and isolation mechanisms that help contain the effects of exploitable software flaws. Applications can express a wide range of policies with Asbestos's kernel-enforced labels, including controls on interprocess communication and system-wide information flow. A new event process abstraction defines lightweight, isolated contexts within a single process, allowing one process to act on behalf of multiple users while preventing it from leaking any single user's data to others. A Web server demonstration application uses these primitives to isolate private user data. Since the untrusted workers that respond to client requests are constrained by labels, exploited workers cannot directly expose user data except as allowed by application policy. The server application requires 1.4 memory pages per user for up to 145,000 users and achieves connection rates similar to Apache, demonstrating that additional security can come at an acceptable cost. Steve Vandebogart, Petros Efstathopoulos, Eddie Kohler, Maxwell N. Krohn, Cliff Frey, David Ziegler, M. Frans Kaashoek, Robert Morris 0005, David Mazières |
ACM Trans. Comput. Syst. | 7 |
| 2006 | Efficient Replica Maintenance for Distributed Storage Systems
Byung-Gon Chun, Frank Dabek, Andreas Haeberlen, Emil Sit, Hakim Weatherspoon, M. Frans Kaashoek, John Kubiatowicz, Robert Morris 0005 |
NSDI | 6 |
| 2006 | OverCite: A Distributed, Cooperative CiteSeer
Jeremy Stribling, Jinyang Li 0001, Isaac G. Councill, M. Frans Kaashoek, Robert Morris 0005 |
NSDI | 4 |
| 2006 | Persistent Personal Names for Globally Connected Mobile Devices
Bryan Ford, Jacob Strauss, Chris Lesniewski-Laas, Sean C. Rhea, M. Frans Kaashoek, Robert Morris 0005 |
OSDI | 5 |
| 2005 | Sybil-Resistant DHT Routing
George Danezis, Chris Lesniewski-Laas, M. Frans Kaashoek, Ross J. Anderson |
ESORICS | 3 |
| 2005 | Make Least Privilege a Right (Not a Privilege)
Maxwell N. Krohn, Petros Efstathopoulos, Cliff Frey, M. Frans Kaashoek, Eddie Kohler, David Mazières, Robert Morris 0005, Michelle Osborne, Steve Vandebogart, David Ziegler |
HotOS | 4 |
| 2005 | A performance vs. cost framework for evaluating DHT design tradeoffs under churnabstractProtocols for distributed hash tables (DHTs) incorporate features to achieve low latency for lookup requests in the face of churn, continuous changes in membership. These protocol features can include a directed identifier space, parallel lookups, pro-active flooding of membership changes, and stabilization protocols for maintaining accurate routing. In addition, DHT protocols have parameters that can be tuned to achieve different tradeoffs between lookup latency and communication cost due to maintenance traffic. The relative importance of the features and parameters is not well understood, because most previous work evaluates protocols on static networks. This paper presents a performance versus cost framework (PVC) that allows designers to compare the effects of different protocol features and parameter values. PVC views a protocol as consuming a certain amount of network bandwidth in order to achieve a certain lookup latency, and helps reveal the efficiency with which protocols use additional network resources to improve latency. To demonstrate the value of PVC, this paper simulates Chord, Kademlia, Kelips, OneHop, and Tapestry under different workloads and uses PVC to understand which features are more important under churn. PVC analysis shows that the key to efficiently using additional bandwidth is for a protocol to adjust its routing table size. It also shows that routing table stabilization is wasteful and can be replaced with opportunistic learning through normal lookup traffic. These insights combined demonstrate that PVC is a valuable tool for DHT designers. Jinyang Li 0001, Jeremy Stribling, Robert Morris 0005, M. Frans Kaashoek, Thomer M. Gil |
INFOCOM | 4 |
| 2005 | Improving Web Availability for Clients with MONET
David G. Andersen, Hari Balakrishnan, M. Frans Kaashoek, Rohit N. Rao |
NSDI | 3 |
| 2005 | Bandwidth-efficient Management of DHT Routing Tables
Jinyang Li 0001, Jeremy Stribling, Robert Morris 0005, M. Frans Kaashoek |
NSDI | 4 |
| 2005 | Labels and event processes in the Asbestos operating systemabstractAsbestos, a new prototype operating system, provides novel labeling and isolation mechanisms that help contain the effects of exploitable software flaws. Applications can express a wide range of policies with Asbestos's kernel-enforced label mechanism, including controls on inter-process communication and system-wide information flow. A new event process abstraction provides lightweight, isolated contexts within a single process, allowing the same process to act on behalf of multiple users while preventing it from leaking any single user's data to any other user. A Web server that uses Asbestos labels to isolate user data requires about 1.5 memory pages per user, demonstrating that additional security can come at an acceptable cost. Petros Efstathopoulos, Maxwell N. Krohn, Steve Vandebogart, Cliff Frey, David Ziegler, Eddie Kohler, David Mazières, M. Frans Kaashoek, Robert Morris 0005 |
SOSP | 8 |
| 2005 | UIA: a user information architecture for personal devicesabstractWe are heading for a device information disaster. Many people already store information on dozens of devices, but are unable to organize and find their scattered information effectively. A given picture might be on a digital camera, a home PC, a laptop, an iPod Photo, or a cell phone. Even knowing a file's location is often not enough, because the relevant device may be on the far side of a firewall or not currently plugged into a PC's USB port. Sharing pictures, documents, or multimedia with family, friends, and colleagues today requires one to upload the information from a portable device to a personal computer and then E-mail it, or copy files via a physical medium such as a USB key. Bryan Ford, Jacob Strauss, Chris Lesniewski-Laas, M. Frans Kaashoek, Robert Morris 0005, Sean C. Rhea |
SOSP | 4 |
| 2005 | SSL splitting: Securely serving data from untrusted caches
Chris Lesniewski-Laas, M. Frans Kaashoek |
Comput. Networks | 2 |
| 2004 | Designing a DHT for Low Latency and High Throughput
Frank Dabek, Jinyang Li 0001, Emil Sit, James Robertson, M. Frans Kaashoek, Robert Morris 0005 |
NSDI | 5 |
| 2004 | Vivaldi: a decentralized network coordinate systemabstractLarge-scale Internet applications can benefit from an ability to predict round-trip times to other hosts without having to contact them first. Explicit measurements are often unattractive because the cost of measurement can outweigh the benefits of exploiting proximity information. Vivaldi is a simple, light-weight algorithm that assigns synthetic coordinates to hosts such that the distance between the coordinates of two hosts accurately predicts the communication latency between the hosts. Vivaldi is fully distributed, requiring no fixed network infrastructure and no distinguished hosts. It is also efficient: a new host can compute good coordinates for itself after collecting latency information from only a few other hosts. Because it requires little com-munication, Vivaldi can piggy-back on the communication patterns of the application using it and scale to a large number of hosts. An evaluation of Vivaldi using a simulated network whose latencies are based on measurements among 1740 Internet hosts shows that a 2-dimensional Euclidean model with height vectors embeds these hosts with low error (the median relative error in round-trip time prediction is 11 percent). Frank Dabek, Russ Cox, M. Frans Kaashoek, Robert Morris 0005 |
SIGCOMM | 3 |
| 2004 | REX: Secure, Extensible Remote Execution
Michael Kaminsky, Eric Peterson, Daniel B. Giffin, Kevin Fu, David Mazières, M. Frans Kaashoek |
USENIX ATC, General Track | 6 |
| 2003 | A measurement study of available bandwidth estimation toolsabstractAvailable bandwidth estimation is useful for route selection in overlay networks, QoS verification, and traffic engineering. Recent years have seen a surge in interest in available bandwidth estimation. A few tools have been proposed and evaluated in simulation and over a limited number of Internet paths, but there is still great uncertainty in the performance of these tools over the Internet at large.This paper introduces Spruce, a simple, light-weight tool for measuring available bandwidth, and compares it with two existing tools, IGI and Pathload, over 400 different Internet paths. The comparison focuses on accuracy, failure patterns, probe overhead, and implementation issues. The paper verifies the measured available bandwidth by comparing it to Multi-Router Traffic Grapher (MRTG) data and by measuring how each tool responds to induced changes in available bandwidth.The measurements show that Spruce is more accurate than Pathload and IGI. Pathload tends to overestimate the available bandwidth whereas IGI becomes insensitive when the bottleneck utilization is large. Jacob Strauss, Dina Katabi, M. Frans Kaashoek |
Internet Measurement Conference | 3 |
| 2003 | Measuring the effects of internet path faults on reactive routingabstractEmpirical evidence suggests that reactive routing systems improve resilience to Internet path failures. They detect and route around faulty paths based on measurements of path performance. This paper seeks to understand why and under what circumstances these techniques are effective.To do so, this paper correlates end-to-end active probing experiments, loss-triggered traceroutes of Internet paths, and BGP routing messages. These correlations shed light on three questions about Internet path failures: (1) Where do failures appear? (2) How long do they last? (3) How do they correlate with BGP routing instability?Data collected over 13 months from an Internet testbed of 31 topologically diverse hosts suggests that most path failures last less than fifteen minutes. Failures that appear in the network core correlate better with BGP instability than failures that appear close to end hosts. On average, most failures precede BGP messages by about four minutes, but there is often increased BGP traffic both before and after failures. Our findings suggest that reactive routing is most effective between hosts that have multiple connections to the Internet. The data set also suggests that passive observations of BGP routing messages could be used to predict about 20% of impending failures, allowing re-routing systems to react more quickly to failures. Nick Feamster, David G. Andersen, Hari Balakrishnan, M. Frans Kaashoek |
SIGMETRICS | 4 |
| 2003 | Decentralized user authentication in a global file systemabstractThe challenge for user authentication in a global file system is allowing people to grant access to specific users and groups in remote administrative domains, without assuming any kind of pre-existing administrative relationship. The traditional approach to user authentication across administrative domains is for users to prove their identities through a chain of certificates. Certificates allow for general forms of delegation, but they often require more infrastructure than is necessary to support a network file system.This paper introduces an approach without certificates. Local authentication servers pre-fetch and cache remote user and group definitions from remote authentication servers. During a file access, an authentication server can establish identities for users based just on local information. This approach is particularly well-suited to file systems, and it provides a simple and intuitive interface that is similar to those found in local access control mechanisms. An implementation of the authentication server and a file server supporting access control lists demonstrate the viability of this design in the context of the Self-certifying File System (SFS). Experiments demonstrate that the authentication server can scale to groups with tens of thousands of members. Michael Kaminsky, George Savvides, David Mazières, M. Frans Kaashoek |
SOSP | 4 |
| 2003 | Role Classification of Hosts Within Enterprise Networks Based on Connection Patterns
Godfrey Tan, Massimiliano Poletto, John V. Guttag, M. Frans Kaashoek |
USENIX ATC, General Track | 4 |
| 2003 | Multiprocessor Support for Event-Driven Programs
Nickolai Zeldovich, Alexander Yip, Frank Dabek, Robert T. Morris, David Mazières, M. Frans Kaashoek |
USENIX ATC, General Track | 6 |
| 2003 | SSL Splitting: Securely Serving Data from Untrusted Caches
Chris Lesniewski-Laas, M. Frans Kaashoek |
USENIX Security Symposium | 2 |
| 2003 | Chord: a scalable peer-to-peer lookup protocol for internet applicationsabstractA fundamental problem that confronts peer-to-peer applications is the efficient location of the node that stores a desired data item. This paper presents Chord, a distributed lookup protocol that addresses this problem. Chord provides support for just one operation: given a key, it maps the key onto a node. Data location can be easily implemented on top of Chord by associating a key with each data item, and storing the key/data pair at the node to which the key maps. Chord adapts efficiently as nodes join and leave the system, and can answer queries even if the system is continuously changing. Results from theoretical analysis and simulations show that Chord is scalable: Communication cost and the state maintained by each node scale logarithmically with the number of Chord nodes. Ion Stoica, Robert Morris 0005, David Liben-Nowell, David R. Karger, M. Frans Kaashoek, Frank Dabek, Hari Balakrishnan |
IEEE/ACM Trans. Netw. | 5 |
| 2002 | Fast and secure distributed read-only file systemabstractInternet users increasingly rely on publicly available data for everything from software installation to investment decisions. Unfortunately, the vast majority of public content on the Internet comes with no integrity or authenticity guarantees. This paper presents the self-certifying read-only file system, a content distribution system providing secure, scalable access to public, read-only data.The read-only file system makes the security of published content independent from that of the distribution infrastructure. In a secure area (perhaps off-line), a publisher creates a digitally signed database out of a file system's contents. The publisher then replicates the database on untrusted content-distribution servers, allowing for high availability.The read-only file system avoids performing any cryptographic operations on servers and keeps the overhead of cryptography low on clients, allowing servers to scale to a large number of clients. Measurements of an implementation show that an individual server running on a 550-Mhz Pentium III with FreeBSD can support 1,012 connections per second and 300 concurrent clients compiling a large software package. Kevin Fu, M. Frans Kaashoek, David Mazières |
ACM Trans. Comput. Syst. | 2 |
| 2002 | Fast and flexible application-level networking on exokernel systemsabstractApplication-level networking is a promising software organization for improving performance and functionality for important network services. The Xok/ExOS exokernel system includes application-level support for standard network services, while at the same time allowing application writers to specialize networking services. This paper describes how Xok/ExOS's kernel mechanisms and library operating system organization achieve this flexibility, and retrospectively shares our experiences and lessons learned (both positive and negative). It also describes how we used this flexibility to build and specialize three network data services: the Cheetah HTTP server, the webswamp Web benchmarking tool, and an application-level TCP forwarder. Overall measurements show large performance improvements relative to similar services built on conventional interfaces, in each case reaching the maximum possible end-to-end performance for the experimental platform. For example, Cheetah provides factor of 2--4 increases in throughput compared to highly tuned socket-based implementations and factor of 3--8 increases compared to conventional systems. Webswamp can offer loads that are two to eight times heavier. The TCP forwarder provides 50--300% higher throughput while also providing end-to-end TCP semantics that cannot be achieved with POSIX sockets. With more detailed measurements and profiling, these overall performance improvements are also broken down and attributed to the specific specializations described, providing server writers with insights into where to focus their optimization efforts. Gregory R. Ganger, Dawson R. Engler, M. Frans Kaashoek, Héctor M. Briceño, Russell Hunt, Thomas Pinckney |
ACM Trans. Comput. Syst. | 3 |
| 2001 | The Case for Resilient Overlay NetworksabstractThis paper makes the case for Resilient Overlay Networks (RONs), an application-level routing and packet forwarding service that gives end-hosts and applications the ability to take advantage of network paths that traditional Internet routing cannot make use of, thereby improving their end-to-end reliability and performance. Using RON, nodes participating in a distributed Internet application configure themselves into an overlay network and cooperatively forward packets for each other. Each RON node monitors the quality of the links in the underlying Internet and propagates this information to the other nodes; this enables a RON to detect and react to path failures within several seconds rather than several minutes, and allows it to select application-specific paths based on performance. We argue that RON has the potential to substantially improve the resilience of distributed Internet applications to path outages and sustained overload. David G. Andersen, Hari Balakrishnan, M. Frans Kaashoek, Robert Morris 0005 |
HotOS | 3 |
| 2001 | Building peer-to-peer systems with Chord, a distributed lookup serviceabstractWe argue that the core problem facing peer-to-peer Systems is locating documents in a decentralized network and propose Chord, a distributed lookup primitive. Chord provides an efficient method of locating documents while placing few constraints on the applications that use it. As proof that Chord's functionality is useful in the development of peer-to-peer applications, we outline the implementation of a peer-to-peer file sharing system based on Chord. Frank Dabek, Emma Brunskill, M. Frans Kaashoek, David R. Karger, Robert Morris 0005, Ion Stoica, Hari Balakrishnan |
HotOS | 3 |
| 2001 | Reconsidering Internet MobilityabstractDespite the popularity of mobile computing platforms, appropriate system support for mobile operation is lacking in the Internet. The paper argues that this is not for lack of deployment incentives, but because a comprehensive system architecture that efficiently addresses the needs of mobile applications does not exist. We identify five fundamental issues raised by mobility: location, preservation of communication, disconnection handling, hibernation, and reconnection, and suggest design guidelines for a system that attempts to support Internet mobility. In particular, we argue that a good system architecture should: (i) eliminate the dependence of higher protocol layers upon lower-layer identifiers; (ii) work with any application-selected naming scheme; (iii) handle (unexpected) network disconnections in a graceful way, exposing its occurrence to applications; and (iv) provide mobility services at the mobile nodes themselves, rather than via proxies. Motivated by these principles, we propose a session-oriented, end-to-end architecture called Migrate, and briefly examine the set of services it should provide. Alex C. Snoeren, Hari Balakrishnan, M. Frans Kaashoek |
HotOS | 3 |
| 2001 | Chord: A scalable peer-to-peer lookup service for internet applicationsabstractA fundamental problem that confronts peer-to-peer applications is to efficiently locate the node that stores a particular data item. This paper presents Chord, a distributed lookup protocol that addresses this problem. Chord provides support for just one operation: given a key, it maps the key onto a node. Data location can be easily implemented on top of Chord by associating a key with each data item, and storing the key/data item pair at the node to which the key maps. Chord adapts efficiently as nodes join and leave the system, and can answer queries even if the system is continuously changing. Results from theoretical analysis, simulations, and experiments show that Chord is scalable, with communication cost and the state maintained by each node scaling logarithmically with the number of Chord nodes. Ion Stoica, Robert Morris 0005, David R. Karger, M. Frans Kaashoek, Hari Balakrishnan |
SIGCOMM | 4 |
| 2001 | Resilient Overlay NetworksabstractA Resilient Overlay Network (RON) is an architecture that allows distributed Internet applications to detect and recover from path outages and periods of degraded performance within several seconds, improving over today's wide-area routing protocols that take at least several minutes to recover. A RON is an application-layer overlay on top of the existing Internet routing substrate. The RON nodes monitor the functioning and quality of the Internet paths among themselves, and use this information to decide whether to route packets directly over the Internet or by way of other RON nodes, optimizing application-specific routing metrics.Results from two sets of measurements of a working RON deployed at sites scattered across the Internet demonstrate the benefits of our architecture. For instance, over a 64-hour sampling period in March 2001 across a twelve-node RON, there were 32 significant outages, each lasting over thirty minutes, over the 132 measured paths. RON's routing mechanism was able to detect, recover, and route around all of them, in less than twenty seconds on average, showing that its methods for fault detection and recovery work well at discovering alternate paths in the Internet. Furthermore, RON was able to improve the loss rate, latency, or throughput perceived by data transfers; for example, about 5% of the transfers doubled their TCP throughput and 5% of our transfers saw their loss probability reduced by 0.05. We found that forwarding packets via at most one intermediate RON node is sufficient to overcome faults and improve performance in most cases. These improvements, particularly in the area of fault detection and recovery, demonstrate the benefits of moving some of the control over routing into the hands of end-systems. David G. Andersen, Hari Balakrishnan, M. Frans Kaashoek, Robert Morris 0005 |
SOSP | 3 |
| 2001 | Wide-Area Cooperative Storage with CFSabstractThe Cooperative File System (CFS) is a new peer-to-peer read-only storage system that provides provable guarantees for the efficiency, robustness, and load-balance of file storage and retrieval. CFS does this with a completely decentralized architecture that can scale to large systems. CFS servers provide a distributed hash table (DHash) for block storage. CFS clients interpret DHash blocks as a file system. DHash distributes and caches blocks at a fine granularity to achieve load balance, uses replication for robustness, and decreases latency with server selection. DHash finds blocks using the Chord location protocol, which operates in time logarithmic in the number of servers.CFS is implemented using the SFS file system toolkit and runs on Linux, OpenBSD, and FreeBSD. Experience on a globally deployed prototype shows that CFS delivers data to clients as fast as FTP. Controlled tests show that CFS is scalable: with 4,096 servers, looking up a block of data involves contacting only seven servers. The tests also demonstrate nearly perfect robustness and unimpaired performance even when as many as half the servers fail. Frank Dabek, M. Frans Kaashoek, David R. Karger, Robert Morris 0005, Ion Stoica |
SOSP | 2 |
| 2001 | The measured performance of content distribution networks
Kirk L. Johnson, John F. Carr, Mark S. Day, M. Frans Kaashoek |
Comput. Commun. | 4 |
| 2000 | Fast and Secure Distributed Read-Only File System
Kevin Fu, M. Frans Kaashoek, David Mazières |
OSDI | 2 |
| 2000 | Overcast: Reliable Multicasting with an Overlay Network
John Jannotti, David K. Gifford, Kirk L. Johnson, M. Frans Kaashoek, James W. O'Toole Jr. |
OSDI | 4 |
| 2000 | The click modular routerabstractClicks is a new software architecture for building flexible and configurable routers. A Click router is assembled from packet processing modules called elements . Individual elements implement simple router functions like packet classification, queuing, scheduling, and interfacing with network devices. A router configurable is a directed graph with elements at the vertices; packets flow along the edges of the graph. Several features make individual elements more powerful and complex configurations easier to write, including pull connections, which model packet flow drivn by transmitting hardware devices, and flow-based router context, which helps an element locate other interesting elements. Click configurations are modular and easy to extend. A standards-compliant Click IP router has 16 elements on its forwarding path; some of its elements are also useful in Ethernet switches and IP tunnelling configurations. Extending the IP router to support dropping policies, fairness among flows, or Differentiated Services simply requires adding a couple of element at the right place. On conventional PC hardware, the Click IP router achieves a maximum loss-free forwarding rate of 333,000 64-byte packets per second, demonstrating that Click's modular and flexible architecture is compatible with good performance. Eddie Kohler, Robert Morris 0005, Benjie Chen, John Jannotti, M. Frans Kaashoek |
ACM Trans. Comput. Syst. | 5 |
| 1999 | A Readable TCP in the Prolac Protocol LanguageabstractProlac is a new statically-typed, object-oriented language for network protocol implementation. It is designed for readability, extensibility, and real-world implementation; most previous protocol languages, in contrast, have been based on hard-to-implement theoretical models and have focused on verification. We present a working Prolac TCP implementation directly derived from 4.4BSD. Our implementation is modular---protocol processing is logically divided into minimally-interacting pieces; readable---Prolac encourages top-down structure and naming intermediate computations; and extensible---subclassing cleanly separates protocol extensions like delayed acknowledgements and slow start. The Prolac compiler uses simple global analysis to remove expensive language features like dynamic dispatch, resulting in end-to-end performance comparable to an unmodified Linux 2.0 TCP. 1 INTRODUCTION Most familiar programming idioms handle network protocols badly---even modern languages are stressed... Eddie Kohler, M. Frans Kaashoek, David R. Montgomery |
SIGCOMM | 2 |
| 1999 | Separating key management from file system securityabstractNo secure network file system has ever grown to span the Internet. Existing systems all lack adequate key management for security at a global scale. Given the diversity of the Internet, any particular mechanism a file system employs to manage keys will fail to support many types of use. We propose separating key management from file system security, letting the world share a single global file system no matter how individuals manage keys. We present SFS, a secure file system that avoids internal key management. While other file systems need key management to map file names to encryption keys, SFS file names effectively contain public keys, making them self-certifying pathnames. Key management in SFS occurs outside of the file system, in whatever procedure users choose to generate file names. Self-certifying pathnames free SFS clients from any notion of administrative realm, making inter-realm file sharing trivial. They let users authenticate servers through a number of different techniques. The file namespace doubles as a key certification namespace, so that people can realize many key management schemes using only standard file utilities. Finally, with self-certifying pathnames, people can bootstrap one key management mechanism using another. These properties make SFS more versatile than any file system with built-in key management. 1 David Mazières, Michael Kaminsky, M. Frans Kaashoek, Emmett Witchel |
SOSP | 3 |
| 1999 | The Click modular routerabstractClick is a new software architecture for building flexible and configurable routers. A Click router is assembled from packet processing modules called elements. Individual elements implement simple router functions like packet classification, queueing, scheduling, and interfacing with network devices. Complete configurations are built by connecting elements into a graph; packets flow along the graph's edges. Several features make individual elements more powerful and complex configurations easier to write, including pull processing, which models packet flow driven by transmitting interfaces, and flow-based router context, which helps an element locate other interesting elements.We demonstrate several working configurations, including an IP router and an Ethernet bridge. These configurations are modular---the IP router has 16 elements on the forwarding path---and easy to extend by adding additional elements, which we demonstrate with augmented configurations. On commodity PC hardware running Linux, the Click IP router can forward 64-byte packets at 73,000 packets per second, just 10% slower than Linux alone. Robert Morris 0005, Eddie Kohler, John Jannotti, M. Frans Kaashoek |
SOSP | 4 |
| 1999 | 'C and tcc: A Language and Compiler for Dynamic Code GenerationabstractDynamic code generation allows programmers to use run-time information in order to achieve performance and expressiveness superior to those of static code. The 'C(Tick C) language is a superset of ANSI C that supports efficient and high-level use of dynamic code generation. 'C provides dynamic code generation at the level of C expressions and statements and supports the composition of dynamic code at run time. These features enable programmers to add dynamic code generation to existing C code incrementally and to write important applications (such as “just-in-time” compilers) easily. The article presents many examples of how 'C can be used to solve practical problems. The tcc compiler is an efficient, portable, and freely available implementation of 'C. tcc allows programmers to trade dynamic compilation speed for dynamic code quality: in some aplications, it is most important to generate code quickly, while in others code quality matters more than compilation speed. The overhead of dynamic compilation is on the order of 100 to 600 cycles per generated instruction, depending on the level of dynamic optimizaton. Measurements show that the use of dynamic code generation can improve performance by almost an order of magnitude; two- to four-fold speedups are common. In most cases, the overhead of dynamic compilation is recovered in under 100 uses of the dynamic code; sometimes it can be recovered within one use. Massimiliano Poletto, Wilson C. Hsieh, Dawson R. Engler, M. Frans Kaashoek |
ACM Trans. Program. Lang. Syst. | 4 |
| 1998 | The Design, Implementation and Operation of an Email Pseudonym ServerabstractAttacks on servers that provide anonymity generally fall into two categories: attempts to expose anonymous users and attempts to silence them. Much existing work concentrates on withstanding the former, but the threat of the latter is equally real. One particularly e#ective attack against anonymous servers is to abuse them and stir up enough trouble that they must shut down. This paper describes the design, implementation, and operation of nym.alias.net, a server providing untraceable email aliases. We enumerate many kinds of abuse the system has weathered during two years of operation, and explain the measures we enacted in response. From our experiences, we distill several principles by which one can protect anonymous servers from similar attacks. 1 Introduction Anonymous on-line speech serves many purposes ranging from fighting oppressive government censorship to giving university professors feedback on teaching. Of course, the availability of anonymous speech also leads to many fo... David Mazières, M. Frans Kaashoek |
CCS | 2 |
| 1998 | Exploiting Two-Case Delivery for Fast Protected MessagingabstractWe propose and evaluate two complementary techniques to protect and virtualize a tightly-coupled network interface in a multicomputer. The techniques allow efficient, direct application access to network hardware in a multiprogrammed environment while gaining most of the benefits of a memory-based network interface. First, two-case delivery allows an application to receive a message directly from the network hardware in ordinary circumstances, but provides buffering transparently when required for protection. Second, virtual buffering stores messages in virtual memory on demand, providing the convenience of effectively unlimited buffer capacity while keeping actual physical memory consumption low. The evaluation is based on workloads of real and synthetic applications running on a simulator and partly on emulated hardware. The results show that the direct path is also the common path, justifying the use of software buffering. Further results show that physical buffering requirements remain low in our applications despite the use of unacknowledged messages and despite adverse scheduling conditions. Kenneth Mackenzie, John Kubiatowicz, Matthew I. Frank, Walter Lee, Victor Lee, Anant Agarwal, M. Frans Kaashoek |
HPCA | 7 |
| 1998 | Implementing Sequentially Consistent Shared Objects using Broadcast and Point-to-Point CommunicationabstractThis paper presents and proves correct a distributed algorithm that implements a sequentially consistent collection of shared read/update objects. This algorithm is a generalization of one used in the Orca shared object system. The algorithm caches objects in the local memory of processors according to application needs; each read operation accesses a single copy of the object, while each update accesses all copies. The algorithm uses broadcast communication when it sends messages to replicated copies of an object, and it uses point-to-point communication when a message is sent to a single copy, and when a reply is returned. Copies of all objects are kept consistent using a strategy based on sequence numbers for broadcasts. The algorithm is presented in two layers. The lower layer uses the given broadcast and point-to-point communication services, plus sequence numbers, to provide a new communication service called acontext multicast channel. The higher layer uses a context multicast channel to manage the object replication in a consistent fashion. Both layers and their combination are described and verified formally, using the I/O automation model for asynchronous concurrent systems. Alan D. Fekete, M. Frans Kaashoek, Nancy A. Lynch |
J. ACM | 2 |
| 1997 | tcc: A System for Fast, Flexible, and High-level Dynamic Code Generationabstracttcc is a compiler that provides efficient and high-level access to dynamic code generation. It implements the 'C ("Tick-C") programming language, an extension of ANSI C that supports dynamic code generation [15]. 'C gives power and flexibility in specifying dynamically generated code: whereas most other systems use annotations to denote run-time invariants. 'C allows the programmer to specify and compose arbitrary expressions and statements at run time. This degree of control is needed to efficiently implement some of the most important applications of dynamic code generation, such as "just in time" compilers [17] and efficient simulators [10, 48, 46].The paper focuses on the techniques that allow tcc to provide 'C's flexibility and expressiveness without sacrificing run-time code generation efficiency. These techniques include fast register allocation, efficient creation and composition of dynamic code specifications, and link-time analysis to reduce the size of dynamic code generators. tcc also implements two different dynamic code generation strategies, designed to address the tradeoff of dynamic compilation speed versus generated code quality. To characterize the effects of dynamic compilation, we present performance measurements for eleven programs compiled using tcc. On these applications, we measured performance improvements of up to one order of magnitude.To encourage further experimentation and use of dynamic code generation, we are making the tcc compiler available in the public domain. This is, to our knowledge, the first high-level dynamic compilation system to be made available. Massimiliano Poletto, Dawson R. Engler, M. Frans Kaashoek |
PLDI | 3 |
| 1997 | Application Performance and Flexibility on Exokernel SystemsabstractThe exokernel operating system architecture safely gives untrusted software efficient control over hardware and software resources by separating management from protection. This paper describes an exokernel system that allows specialized applications to achieve high performance without sacrificing the performance of unmod-ified UNIX programs. It evaluates the exokernel architecture by measuring end-to-end application performance on Xok, an exo-kernel for Intel x86-based computers, and by comparing Xok’s performance to the performance of two widely-used 4.4BSD UNIX systems (FreeBSD and OpenBSD). The results show that common unmodified UNIX applications can enjoy the benefits of exoker-nels: applications either perform comparably on Xok/ExOS and the BSD UNIXes, or perform significantly better. In addition, the results show that customized applications can benefit substantially from control over their resources (e.g., a factor of eight for a Web server). This paper also describes insights about the exokernel ap-proach gained through building three different exokernel systems, and presents novel approaches to resource multiplexing. 1 M. Frans Kaashoek, Dawson R. Engler, Gregory R. Ganger, Héctor M. Briceño, Russell Hunt, David Mazières, Thomas Pinckney, Robert Grimm 0001, John Jannotti, Kenneth Mackenzie |
SOSP | 1 |
| 1997 | Embedded Inodes and Explicit Grouping: Exploiting Disk Bandwidth for Small Files
Gregory R. Ganger, M. Frans Kaashoek |
USENIX ATC | 2 |
| 1997 | Mobile Computing with the Rover ToolkitabstractRover is a software toolkit that supports the construction of both mobile-transparent and mobile-aware applications. The mobile-transparent approach aims to enable existing applications to run in a mobile environment without alteration. This transparency is achieved by developing proxies for system services that hide the mobile characteristics of the environment from applications. However, to excel, applications operating in the harsh conditions of a mobile environment must often be aware of and actively adapt to those conditions. Using the programming and communication abstractions present in the Rover toolkit, applications obtain increased availability, concurrency, resource allocation efficiency, fault tolerance, consistency, and adaptation. Experimental evaluation of a suite of mobile applications demonstrates that use of the toolkit requires relatively little programming overhead, allows correct operation, substantially increases interactive performance, and dramatically reduces network utilization. Anthony D. Joseph, Joshua A. Tauber, M. Frans Kaashoek |
IEEE Trans. Computers | 3 |
| 1997 | ASHs application-specific handlers for high-performance messagingabstractApplication-specific safe message handlers (ASHs) are designed to provide applications with hardware-level network performance. ASHs are user-written code fragments that safely and efficiently execute in the kernel in response to message arrival. ASHs can direct message transfers (thereby eliminating copies) and send messages (thereby reducing send-response latency). In addition, the ASH system provides support for dynamic integrated layer processing (thereby eliminating duplicate message traversals) and dynamic protocol composition (thereby supporting modularity). ASHs offer this high degree of flexibility while still providing network performance as good as, or (if they exploit application-specific knowledge) even better than, hard-wired in-kernel implementations. A combination of user-level microbenchmarks and end-to-end system measurements using TCP demonstrates the benefits of the ASH system. Deborah A. Wallach, Dawson R. Engler, M. Frans Kaashoek |
IEEE/ACM Trans. Netw. | 3 |
| 1997 | Building reliable mobile-aware applications using the Rover toolkit
Anthony D. Joseph, M. Frans Kaashoek |
Wirel. Networks | 2 |
| 1996 | Atomic Recovery Units: Failure Atomicity for Logical DisksabstractAtomic recovery units (ARUs) are a mechanism that allows several logical disk operations to be executed as a single atomic unit with respect to failures. For example, ARUs can be used during file creation to update several pieces of file meta-data atomically. ARUs simplify systems, as they isolate issues of atomicity within the logical disk system, ARUs are designed as part of the Logical Disk (LD), which provides an interface to disk storage that separates file and disk management by using logical block numbers and block lists. This paper discusses the semantics of concurrent ARUs, as well as the concurrency control they require. A prototype implementation in a log-structured logical disk system is presented and evaluated. The performance evaluation shows that the run-time overhead to support concurrent ARUs is negligible for Read and Write operations, and small but pronounced for file creation (4.0%-7.2%) and deletion (17.9%-20.5%) which mainly manipulate meta-data. The low overhead (when averaged over file creation, writing, reading, and deletion) for concurrent ARUs shows that issues of atomicity can be successfully isolated within the disk system. Robert Grimm 0001, Wilson C. Hsieh, Wiebren de Jonge, M. Frans Kaashoek |
ICDCS | 4 |
| 1996 | An Evaluation of the Amoeba Group Communication SystemabstractThe Amoeba group communication system has two unique aspects: (1) it uses a sequencer-based protocol with negative acknowledgements for achieving a total order on all group messages; and (2) users choose the degree of fault tolerance they desire. This paper reports on our design decisions in retrospect, the performance of the Amoeba group system, and our experiences using the system. We conclude that sequencer-based group protocols achieve high performance (comparable to Amoeba's fast remote procedure call implementation), that the scalability of our sequencer-based protocols is limited by message processing time, and that the flexibility and modularity of user-level implementations of protocols is likely to outweigh the potential performance loss. M. Frans Kaashoek, Andrew S. Tanenbaum |
ICDCS | 1 |
| 1996 | Building Reliable Mobile-Aware Applications Using the Rover ToolkitabstractThis paper discusses extensions to the Rover toolkit for constructing reliable mobile-aware applications. The extensions improve upon the existing failure model, which addressed client or communication failures and guaranteed reliable message delivery from clients to server, but did not address server failures (e.g., the loss of an incoming message due to server failure) [16]. Due to the unpredictable, intermittent communication connectivity typically found in mobile client environments, it is inappropriate to make clients responsible for guaranteeing request completion at servers. The extensions discussed in this paper provide both system- and language-level support for reliable operation in the form of stable logging of each message received by a server, per-application stable variables, programmer-supplied failure recovery procedures, server process failure detection, and automatic server process restart. The design and implementation of fault-tolerance support is optimized for high... Anthony D. Joseph, M. Frans Kaashoek |
MobiCom | 2 |
| 1996 | C: A Language for High-Level, Efficient, and Machine-Independent Dynamic Code GenerationabstractDynamic code generation allows specialized code sequences to be created using runtime information. Since this information is by definition not available statically, the use of dynamic code generation can achieve performance inherently beyond that of static code generation. Previous attempts to support dynamic code generation have been low-level, expensive, or machine-dependent. Despite the growing use of dynamic code generation, no mainstream language provides flexible, portable, and efficient support for it.We describe 'C (Tick C), a superset of ANSI C that allows flexible, high-level. efficient, and machine-independent specification of dynamically generated code. 'C provides many of the performance benefits of pure partial evaluation, but in the context of a complex, statically typed, but widely used language. 'C examples illustrate the ease of specifying dynamically generated code and how it can be put to use. Experiments with a prototype compiler show that 'C enables excellent performance improvement (in some cases, more than an order of magnitude). Dawson R. Engler, Wilson C. Hsieh, M. Frans Kaashoek |
POPL | 3 |
| 1996 | Dynamic Computation Migration in DSM SystemsabstractWe describe dynamic computation migration, the runtime choice between computation and data migration. Dynamic computation migration is useful for concurrent data structures with unpredictable read/write patterns. We implemented it in MCRL, a multithreaded DSM system that runs on the MIT Alewife machine and Thinking Machines' CM-5. We evaluate two dynamic migration heuristics relative to data migration. On a concurrent, distributed B-tree with 50% lookups and 50% inserts, the STATIC heuristic improves performance by about 17%, on both Alewife and the CM-5. The REPEAT heuristic generally performs better than the STATIC heuristic. On Alewife, with 80% lookups and 20% inserts, the REPEAT heuristic improves performance by 23%; on the CM-5, it improves performance by 46%. Our results apply to concurrent, dynamic data structures whose access patterns are only known at runtime. For regularly accessed data structures, static methods will always be applicable, but we expect future applications to be more dynamic. Wilson C. Hsieh, M. Frans Kaashoek, William E. Weihl |
SC | 2 |
| 1996 | DPF: Fast, Flexible Message Demultiplexing Using Dynamic Code GenerationabstractFast and flexible message demultiplexing are well-established goals in the networking community [1, 18, 22]. Currently, however, network architects have had to sacrifice one for the other. We present a new packet-filter system, DPF (Dynamic Packet Filters), that provides both the traditional flexibility of packet filters [18] and the speed of hand-crafted demultiplexing routines [3]. DPF filters run 10-50 times faster than the fastest packet filters reported in the literature [1, 17, 18, 27]. DPF's performance is either equivalent to or, when it can exploit runtime information, superior to hand-coded demultiplexors. DPF achieves high performance by using a carefully-designed declarative packet-filter language that is aggressively optimized using dynamic code generation. The contributions of this work are: (1) a detailed description of the DPF design, (2) discussion of the use of dynamic code generation and quantitative results on its performance impact, (3) quantitative results on how DPF is used in the Aegis kernel to export network devices safely and securely to user space so that UDP and TCP can be implemented efficiently as user-level libraries, and (4) the unrestricted release of DPF into the public domain. Dawson R. Engler, M. Frans Kaashoek |
SIGCOMM | 2 |
| 1996 | ASHs: Application-Specific Handlers for High-Performance MessagingabstractApplication-specific safe message handlers (ASHs) are designed to provide applications with hardware-level network performance. ASHs are user-written code fragments that safely and efficiently execute in the kernel in response to message arrival. ASHs can direct message transfers (thereby eliminating copies) and send messages (thereby reducing send-response latency). In addition, the ASH system provides support for dynamic integrated layer processing (thereby eliminating duplicate message traversals) and dynamic protocol composition (thereby supporting modularity). ASHs provide this high degree of flexibility while still providing network performance as good as, or (if they exploit application-specific knowledge) even better than, hard-wired in-kernel implementations. A combination of user-level microbenchmarks and end-to-end system measurements using TCP demonstrate the benefits of the ASH system. Deborah A. Wallach, Dawson R. Engler, M. Frans Kaashoek |
SIGCOMM | 3 |
| 1995 | AVM: application-level virtual memoryabstractVirtual memory (VM) is a notoriously complicated abstraction to implement, and is hard to change, specialize, or replace. Although a certain degree of flexibility is achieved by user-level pagers, the control they provide is limited: they leave much of the VM system fixed in the kernel, unreachable by the application. As applications become more diverse and the opportunity cost of bad memory policies grows, it is essential for applications to have more control over the VM abstraction. We motivate and describe a VM system that is implemented completely at the application level. To the best of our knowledge this system is the first complete example of application-level virtual memory (AVM). AVM allows applications to easily specialize, modify, or even replace the VM abstractions offered. For example, on architectures with software TLB management, applications can even select their own page-table structures. In addition, AVM simplifies the OS kernel, since the kernel only multiplexes and does not abstract physical memory. A prototype AVM system is implemented for Aegis, an experimental exokernel. Dawson R. Engler, Sandeep K. Gupta 0002, M. Frans Kaashoek |
HotOS | 3 |
| 1995 | Exterminate all operating system abstractionsabstractThe defining tragedy of the operating systems community has been the definition of an operating system as software that both multiplexes and abstracts physical resources. The view that the OS should abstract the hardware is based on the assumption that it is possible bath to define abstractions that are appropriate for all areas and to implement them to perform efficiently in all situations. We believe that the fallacy of this quixotic goal is self-evident, and that the operating system problems of the last two decades (poor performance, poor reliability, poor adaptability, and inflexibility) can be traced back to it. The solution we propose is simple: complete elimination of operating system abstractions by lowering the operating system interface to the hardware level. Dawson R. Engler, M. Frans Kaashoek |
HotOS | 2 |
| 1995 | Implementing Sequentially Consistent Shared Objects Using Broadcast and Point-to-Point CommunicationabstractA distributed algorithm that implements a sequentially consistent collection of shared read/update objects using a combination of broadcast and point-to-point communication is presented and proved correct. This algorithm is a generalization of one used in the Orca shared object system. The algorithm caches objects in the local memory of processors according to application needs; each read operation accesses a single copy of the object, while each update accesses all copies. Copies of all the objects are kept consistent using a strategy based on sequence numbers for broadcasts. The algorithm is presented in two layers. The lower layer uses the given broadcast and point-to-point communication services, plus sequence numbers, to provide a new communication service called a context multicast channel. The higher layer uses a context multicast channel to manage the object replication in a consistent fashion. Both layers and their combination are described and verified formally, using the I/O automaton model for asynchronous concurrent systems. Alan D. Fekete, M. Frans Kaashoek, Nancy A. Lynch |
ICDCS | 2 |
| 1995 | Optimistic Active Messages: A Mechanism for Scheduling Communication with ComputationabstractLow-overhead message passing is critical to the performance of many applications. Active Messages reduce the software overhead for message handling: messages are run as handlers instead of as threads, which avoids the overhead of thread management and the unnecessary data copying of other communication models. Scheduling the execution of Active Messages is typically done by disabling and enabling interrupts, or by polling the network. This primitive scheduling control, combined with the fact that handlers are not schedulable entities, puts severe restrictions on the code that can be run in a message handler. This paper describes a new software mechanism, Optimistic Active Messages (OAM), that eliminates these restrictions; OAMs allow arbitrary user code to execute in handlers, and also allow handlers to block. Despite this gain in expressiveness, OAMs perform as well as Active Messages. Deborah A. Wallach, Wilson C. Hsieh, Kirk L. Johnson, M. Frans Kaashoek, William E. Weihl |
PPoPP | 4 |
| 1995 | Exokernel: An Operating System Architecture for Application-Level Resource Managementabstractarticle Exokernel: an operating system architecture for application-level resource management Share on Authors: D. R. Engler M.I.T. Laboratory for Computer Science, Cambridge, MA M.I.T. Laboratory for Computer Science, Cambridge, MAView Profile , M. F. Kaashoek M.I.T. Laboratory for Computer Science, Cambridge, MA M.I.T. Laboratory for Computer Science, Cambridge, MAView Profile , J. O'Toole M.I.T. Laboratory for Computer Science, Cambridge, MA M.I.T. Laboratory for Computer Science, Cambridge, MAView Profile Authors Info & Claims ACM SIGOPS Operating Systems ReviewVolume 29Issue 5Dec. 3, 1995 pp 251–266https://doi.org/10.1145/224057.224076Online:03 December 1995Publication History 700citation13,300DownloadsMetricsTotal Citations700Total Downloads13,300Last 12 Months628Last 6 weeks58 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access Dawson R. Engler, M. Frans Kaashoek, James W. O'Toole Jr. |
SOSP | 2 |
| 1995 | Using a Modified Object Buffer to Improve the Write Performance of an Object-Oriented DatabaseabstractNo abstract available. Sanjay Ghemawat, M. Frans Kaashoek, Barbara Liskov |
SOSP | 2 |
| 1995 | CRL: High-Performance All-Software Distributed Shared Memoryabstractarticle Free Access Share on CRL: high-performance all-software distributed shared memory Authors: K. L. Johnson MIT Laboratory for Computer Science, Cambridge, MA MIT Laboratory for Computer Science, Cambridge, MAView Profile , M. F. Kaashoek MIT Laboratory for Computer Science, Cambridge, MA MIT Laboratory for Computer Science, Cambridge, MAView Profile , D. A. Wallach MIT Laboratory for Computer Science, Cambridge, MA MIT Laboratory for Computer Science, Cambridge, MAView Profile Authors Info & Claims ACM SIGOPS Operating Systems ReviewVolume 29Issue 5Dec. 3, 1995 pp 213–226https://doi.org/10.1145/224057.224073Published:03 December 1995Publication History 161citation782DownloadsMetricsTotal Citations161Total Downloads782Last 12 Months60Last 6 weeks14 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF Kirk L. Johnson, M. Frans Kaashoek, Deborah A. Wallach |
SOSP | 2 |
| 1995 | Rover: A Toolkit for Mobile Information AccessabstractThe Rover toolkit combines relocatable dynamic objects and queued remote procedure calls to provide unique services for "roving" mobile applications.A relocatable dynamic object is an object with a well-defined interface that can be dynamically loaded into a client computer from a server computer (or vice versa) to reduce clientserver communication requirements.Queued remote procedure call is a communication system that permits applications to continue to make non-blocking remote procedure call requests even when a host is disconnected, with requests and responses being exchanged upon network reconnection.The challenges of mobile environments include intermittent connectivity, limited bandwidth, and channeluse optimization.Experimental results from a Rover-based mail reader, calendar program, and two non-blocking versions of World-Wide Web browsers show that Rover's services are a good match to these challenges.The Rover toolkit also offers advantages for workstation applications by providing a uniform distributed object architecture for code shipping, object caching, and asynchronous object invocation. 1 Anthony D. Joseph, Alan F. deLespinasse, Joshua A. Tauber, David K. Gifford, M. Frans Kaashoek |
SOSP | 5 |
| 1994 | Software Prefetching and Caching for Translation Lookaside Buffers
Kavita Bala, M. Frans Kaashoek, William E. Weihl |
OSDI | 2 |
| 1994 | Storage Alternatives for Mobile Computers
Fred Douglis, Ramón Cáceres, M. Frans Kaashoek, Kai Li 0001, Brian Marsh, Joshua A. Tauber |
OSDI | 3 |
| 1994 | The Exokernel Approach to Operating System Extensibility (Panel Statement)
Dawson R. Engler, M. Frans Kaashoek, James W. O'Toole Jr. |
OSDI | 2 |
| 1994 | Object-based approach to programming distributed systemsabstractAbstract Two kinds of parallel computers exist: those with shared memory and those without. The former are difficult to build but easy to program. The latter are easy to build but difficult to program. In this paper we present a hybrid model that combines the best properties of each by simulating a restricted object‐based shared memory on machines that do not share physical memory. In this model, objects can be replicated on multiple machines. An operation that does not change an object can then be done locally, without any network traffic. Update operations can be done using the reliable broadcast protocol described in the paper. We have constructed a prototype system, designed and implemented a new programming language for it, and programmed various applications using it. The model, algorithms, language, applications and performance will be discussed. Andrew S. Tanenbaum, Henri E. Bal, Saniya Ben Hassen, M. Frans Kaashoek |
Concurr. Pract. Exp. | 4 |
| 1993 | Programming a Distributed System Using Shared ObjectsabstractBuilding the hardware for a high-performance distributed computer system is a lot easier than building its software. The authors describe a model for programming distributed systems based on abstract data types that can be replicated on all machines that need them. Read operations are done locally, without requiring network traffic. Writes can be done using a reliable broadcast algorithm if the hardware supports broadcasting; otherwise, a point-to-point protocol is used. The authors have built such a system based on the Amoeba microkernel, and implemented a language, Orca, on top of it. For Orca applications that have a high ratio of reads to writes, they measure good speedups on a system with 16 processors.> Andrew S. Tanenbaum, Henri E. Bal, M. Frans Kaashoek |
HPDC | 3 |
| 1993 | Using Group Communication to Implement a Fault-Tolerant Directory ServiceabstractGroup communication is an important paradigm for building distributed applications. The authors discuss a fault-tolerant distributed directory service based on group communication, and compare it with the previous design and implementation based on remote procedure call (RPC). The group directory service uses an active replication scheme and, when triplicated, can handle 627 lookup operations per second and 88 update operations per second (using nonvolatile RAM). This performance is better than the performance for the RPC implementation and it is even better than the performance for directory operations under SunOS, which does not provide any fault tolerance at all. The conclusion is that the implementation using group communication is simpler and has better performance than the one based on remote procedure call, supporting the claim that a distributed operating system should provide both remote procedure call and group communication.> M. Frans Kaashoek, Andrew S. Tanenbaum, Kees Verstoep |
ICDCS | 1 |
| 1993 | Object Distribution in Orca using Compile-Time and Run-Time TechniquesabstractOrca is a language for parallel programming on distributed systems. Communication in Orca is based on shared data-objects, which is a form of distributed shared memory. The performance of Orca programs depends strongly on how shared dataobjects are distributed among the local physical memories of the processors. This paper studies a new and efficient solution to this problem, based on an integration of compile-time and run-time techniques. The Orca compiler has been extended to determine the access patterns of processes to shared objects. The compiler passes a summary of this information to the run-time system, which uses it to make good decisions about which objects to replicate and where to store nonreplicated objects. Measurements show that the new system gives better overall performance than any previous implementation of Orca. 3333333333333333 1 This research was supported in part by a PIONIER grant from the Netherlands Organization for Scientific Research (N.W.O.). 2 This re... Henri E. Bal, M. Frans Kaashoek |
OOPSLA | 2 |
| 1993 | The Logical Disk: A New Approach to Improving File SystemsabstractThe Logical Disk (LD) defines a new interface to disk storage that separates file management and disk management by using logical block numbers and block lists. The LD interface is designed to support multiple file systems and to allow multiple implementations, both of which are important given the increasing use of kernels that support multiple operating system personalities.A log-structured implementation of LD (LLD) demonstrates that LD can be implemented efficiently. LLD adds about 5% to 10% to the purchase cost of a disk for the main memory it requires. Combining LLD with an existing file system results in a log-structured file system that exhibits the same performance characteristics as the Sprite log-structured file system. Wiebren de Jonge, M. Frans Kaashoek, Wilson C. Hsieh |
SOSP | 2 |
| 1993 | FLIP: An Internetwork Protocol for Supporting Distributed SystemsabstractMost modern network protocols give adequate support for traditional applications such as file transfer and remote login. Distributed applications, however, have different requirements (e.g., efficient at-most-once remote procedure call even in the face of processor failures). Instead of using ad hoc protocols to meet each of the new requirements, we have designed a new protocol, called the Fast Local Internet Protocol (FLIP), that provides a clean and simple integrated approach to these new requirements. FLIP is an unreliable message protocol that provides both point-to-point communication and multicast communication, and requires almost no network management. Furthermore, by using FLIP we have simplified higher-level protocols such as remote procedure call and group communication, and enhanced support for process migration and security. A prototype implementation of FLIP has been built as part of the new kernel for the Amoeba distributed operating system, and is in daily use. Measurements of its performance are presented. M. Frans Kaashoek, Robbert van Renesse, Hans van Staveren, Andrew S. Tanenbaum |
ACM Trans. Comput. Syst. | 1 |
| 1992 | Replication techniques for speeding up parallel applications on distributed systemsabstractAbstract Most methods for programming loosely coupled systems are based on message‐passing. Recently, however, methods have emerged based on ‘virtually’ sharing data. These methods simplify distributed programming, but are hard to implement efficiently, as loosely coupled systems do not contain physical shared memory. We introduce a new model,the shared data‐object model, that eases the implementation of parallel applications on loosely coupled systems, but can still be implemented efficiently. In our model, shared data are encapsulated in passive data‐objects, which are variables of user‐defined abstract data types. To speed up access to shared data, data‐objects are replicated. This ability to replicate objects is a significant difference with other object‐based models (e.g. Emerald and Amber). Also, by replicating logical objects rather than physical pages, our model has many advantages over shared virtual memory systems. This paper discusses the design choices involved in replicating objects and their effect on performance. Important issues are: how to maintain consistency among different copies of an object; how to implement changes to objects; which strategy for object replication to use. We have implemented several options to determine which ones are the most efficient. Henri E. Bal, M. Frans Kaashoek, Andrew S. Tanenbaum, Jack Jansen 0001 |
Concurr. Pract. Exp. | 2 |
| 1992 | A Comparison of Two Paradigms for Distributed Shared MemoryabstractAbstract Two paradigms for distributed shared memory on loosely‐coupled computing systems are compared: the shared data‐object model as used in Orca, a programming language specially designed for loosely‐coupled computing systems, and the shared virtual memory model. For both paradigms two systems are described, one using only point‐to‐point messages, the other using broadcasting as well. The two paradigms and their implementations are described briefly. Their performances are compared on four applications: the travelling‐salesman problem, alpha‐beta search, matrix multiplication and the all‐pairs shortest‐paths problem. Measurements were obtained on a system consisting of 10 MC68020 processors connected by an Ethernet. For comparison purposes, the applications have also been run on a system with physical shared memory. In addition, the paper gives measurements for the first two applications above when remote procedure call is used as the communication mechanism. The measurements show that both paradigms can be used efficiently for programming large‐grain parallel applications, with significant speed‐ups. The structured shared data‐object model achieves the highest speed‐ups and is easiest to program and to debug. M. Frans Kaashoek, Henri E. Bal, Andrew S. Tanenbaum |
Softw. Pract. Exp. | 1 |
| 1992 | Orca: A Language For Parallel Programming of Distributed SystemsabstractA detailed description is given of the Orca language design and the design choices are discussed. Orca is intended for applications programmers rather than systems programmers. This is reflected in its design goals to provide a simple, easy-to-use language that is type-secure and provides clean semantics. Three example parallel applications in Orca, one of which is described in detail, are discussed. One of the existing implementations, which is based on reliable broadcasting, is described. Performance measurements of this system are given for three parallel applications. The measurements show that significant speedups can be obtained for all three applications. The authors compare Orca with several related languages and systems.> Henri E. Bal, M. Frans Kaashoek, Andrew S. Tanenbaum |
IEEE Trans. Software Eng. | 2 |
| 1991 | Group communication in the Amoeba distributed operating systemabstractPrimitives for broadcast communication that have been integrated with the Amoeba distributed operating system are introduced. The semantics of the broadcast primitives are simple and easy to understand, but are still powerful. The proposed primitives, for example, guarantee global ordering of broadcast messages. The proposed primitives are also efficient: a reliable broadcast can be done in just slightly more than two messages, so the performance is comparable to a remote procedure call. In addition, the primitives are flexible; user applications can, for example, trade performance against fault-tolerance.> M. Frans Kaashoek, Andrew S. Tanenbaum |
ICDCS | 1 |
| 1991 | The Amoeba distributed operating system - A status report
Andrew S. Tanenbaum, M. Frans Kaashoek, Robbert van Renesse, Henri E. Bal |
Comput. Commun. | 2 |