mef-small.jpg (2785 bytes)

Marc E. Fiuczynski, Ph.D.
Department of Computer Science
Princeton University
35 Olden Street
Princeton, NJ 08544

Office: CS 314
Tel: 609-258-8680
Fax: 609-258-1771

button-research.gif (2121 bytes)

button-papers.gif (2116 bytes)

button-personal.gif (2159 bytes)


Work and Research

My research interests at Princeton University span several areas of experimental systems including operating systems, programming languages and their runtime systems, compilers, and networks. My current focus is on version management of operating systems using program analysis techiques.

PlanetLab is an open platform for developing, deploying, and accessing planetary-scale services. Princeton University hosts a research, development, and operations team for PlanetLab.

PlanetWorks is a spinoff from Princeton that I co-founded to deliver next generation solutions for managing machines, services and data at scale.

Recent Papers

Container-based Operating System Virtualization: A Scalable, High-performance Alternative to Hypervisors
By Stephen Soltesz, Herbert Poetzl, Marc E. Fiuczynski, Andy Bavier, and Larry Peterson.
In Proceedings of the 2nd EuroSys Conference, Lisbon, Portugal, March 2007.
Experiences Building PlanetLab
By Larry Peterson, Andy Bavier, Marc E. Fiuczynski and Steve Muir.
In Proceedings of the 7th USENIX Operating System Design and Implementation conference, Seattle, WA, November 2006.
Making Extensibility of System Software Practical with the C4 Toolkit
By Marco Yuen, Marc E. Fiuczynski, Robert Grimm, and Yvonne Coady.
In Proceedings of the 4th AOSD Workshop on Software Engineering Properties of Langauges and Aspect Technologies (SPLAT), Germany, March 2006.
Better tools for kernel evolution, please!
By Marc E. Fiuczynski.
In ;LOGIN: Vol. 30, No. 5, October 1st, 2005
HEY... You got your Paradigm in my Operating System!
By Chris Matthews, Owen Stampflee, Yvonne Coady, Jonathan Appavoo, Marc E. Fiuczynski, and Robert Grimm.
In Proceedings of the 2nd ECOOP Workshop on Programming Languages and Operating Systems, Glasgow, UK, July 2005.
patch (1) Considered Harmful.
By Marc E. Fiuczynski, Robert Grimm, Yvonne Coady, and David Walker.
In Proceedings of the 10th Workshop on Hot Topics in Operating Systems, Santa Fe, New Mexico, June 2005.
Proper: Privileged Operations in a Virtualised System Environment.
By Steve Muir, Larry Peterson, Marc E. Fiuczynski, Justin Cappos, and John Hartman.
In Proceedings of the USENIX 2005 Annual Technical Conference, CA, April 2005.
Managing Variability in Systems: Oh What a Tangled OS We Weave.
By Stuart Bray, Marco Yuen, Yvonne Coady, and Marc E. Fiuczynski.
In MVCDC Workshop, OOPSLA, 2004.

Past Research Activities

spinelogo-small.jpg (4255 bytes)

For my dissertation I've built a Safe Programmable and Integrated Network Environment (SPINE). SPINE extends the fundamental ideas in SPIN -- type safe code downloaded into a trusted execution environment -- to intelligent network adapters.  My thesis work investigates the tradeoffs in safety, performance, and flexibity of migrating system services and application specific functionality to intelligent network adapters in the context of SPINE.

spinlogo-small.jpg (2988 bytes)

For several years I worked on an operating system called SPIN, which is a safe, adaptable and extensible operating system.  Applications add services to SPIN by providing code modules that are dynamically linked directly into the running kernel. We use a combination of language, hardware and design techniques to prevent this code from violating system integrity.

newnaptlogo-small.gif (2264 bytes)

I've designed and implemented an IPv6/IPv4 Network Address and Protocol Translator (NAPT), which converts packet headers as they cross between IPv4 and IPv6 networks.  The purpose of the translator is to ease the transition from the current version of the Internet protocol to the next generation. The translator is implemented as a device driver for Windows/NT.

webproc2.jpg (6587 bytes)

The rapid advancements of networking technologies have boosted potential bandwidth to the point that the cabling is no longer the bottleneck. Rather, it is at the crossing points, the nodes of the network, where data traffic is intercepted or forwarded. As a result, there has been tremendous interest in speeding those nodes, making the equipment run faster by means of specialized chips to handle data trafficking. The Network Processor is the blanket name thrown over such chips in their varied forms. To date, little performance data exist to aid in the decision of what processor architecture to use in next generation network processor. The goal of the WEBPROC project is to, at least partially, remedy this situation by evaluating current technologies and designing future technologies.

In 1998, I worked on a part-time basis for Microsoft as a research intern.  I ported my NAPT implementation to Microsoft's Research IPv6 stack on Windows/NT.  The sources to the translator are freely available as part of the Microsoft Research's IPv6 protocol stack.

During the summers of '89-'91 and '92-'93 I interned at Bell Labs and the MITRE Corporation, respectively, working on software projects ranging from telephone switch administration support to a prototype of an Internet telephony system. In '93 I was the sole proprietor of MEF Systems, a company that I created to sell a distributed, Internet telephony system that I built using UniVoice telephony adapters and the Wind River Systems' VxWorks operating system running on 68020 processors in a VME chassis. This project magnified my interests in operating systems, embedded systems, networks, and distributed systems.

Publication History

Characterizing Processor Architecture for Programmable Network Interfaces
An initial investigation into processor and memory system architectures for programmable network interfaces.  To investigate such architectures we have identified and implemented a few applications to serve as a workload.  This paper sums up the current status of our work in progress.
In proceedings of the 2000 International Conference on Supercomputing.
SPINE: An Operating System for Intelligent Network Adapters
Describes our experience of building an execution environment for a programmable network interface and how we've used it to build two network-oriented applications. Also discusses basic hardware requirements that may significantly enhance performance.
Available as UW TR-98-08-01.
SPINE - A Safe Programmable and Integrated Network Environment
A shorter version of the above paper.
In Proceedings of the Eighth ACM SIGOPS European Workshop (1998).
On Using Intelligent Network Interface Cards to Support Multimedia Application
Describes how we have used a programmable network interface card to support a video client application in the context of Windows NT.
In Proceedings of the Seventh workshop on Network and Operating System Support for Digital Audio Video (1998).
The Design and Implementation of an IPv6/IPv4 Network Address and Protocol Translator
Describes the design and implementation of a transparent transition service that translates packet headers as they cross between IPv4 and IPv6 networks. While several such transition mechanisms have been proposed, ours is the first actual implementation. As a result, we are able to demonstrate and measure a working system, and report on the complexities involved in building and deploying such a system.
In Proceedings of the 1998 Summer USENIX Technical Conference.
Low-Level Systems Programming with Modula-3
Since 1995 we have used Modula-3 to build operating system services. Modula-3 greatly facilitated the rapid construction of SPIN and its extensions. This article describes the features we added to Modula-3 to support low-level systems programming.
In the Fall 1997 edition of Threads Modula-3 Systems Journal.
An Extensible Protocol Architecture for Application-Specific Networking
A design and implementation and performance paper. Describes an extensible protocol architecture that allows applications to dynamically customize an in-kernel protocol graph, thereby achieving better performance compared to similar applications using the APIs of a conventional operating systems. For a demonstration of this work as it services HTTP requests contact http://www-spin.cs.washington.edu.
In Proceedings of the 1996 Winter USENIX Technical Conference.
Extensibility, Safety and Performance in the SPIN Operating System
A design, implementation and performance paper.
In  Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles.
Language Support for Extensible Operating Systems
We've been pretty happy with M3, but we've had to deal with a few shortcomings in order to use the language in a safe extensible operating system. This paper describes how we've addressed those shortcomings.
In Proceedings of the 1st Workshop on Compiler Support for Systems Software (1996).
Also available as UW TR-95-11-02.
Safe Dynamic Linking in an Extensible Operating System
Describes the dynamic linker we use to load code into the kernel. Key point is the ability to create and manage linkable namespaces that describe interfaces and collections of interfaces.
In Proceedings of the 1st Workshop on Compiler Support for Systems Software (1996).
Also available as UW TR-95-11-01.
Protection is a Software Issue
A position paper comparing software and hardware protection mechanisms.
In the Proceedings of the Fifth IEEE Workshop on Hot Topics in Operating Systems.
Region Analysis: A Parallel Elimination Method for Data Flow Analysis
In IEEE 1995 Transactions on Software Engineering.

Personal

United States Citizen. Born July 1st 1969 in New Brunswick, New Jersey.  Resided in Germany 1972-1985 and attended local schools; completely bilingual.  Enjoy soccer, table tennis (a.k.a. ping-pong), science fiction, and travel. Married, three children.