The Mace Project

Mace is a complete redesign and rewrite of MACEDON. Furthering its efforts, the goal of Mace is to simplify the development, research and deployment of Distributed Systems. To this end, Mace consists of these related pieces:

  • An extensible set of APIs geared at modularizing and componentizing parts of distributed systems
  • A domain-specific C++ language extension to describe a distributed system’s behavior from which real operating code can be generated
  • A software engine that implements common features and functionality of distributed systems, providing a performance-tuned system.
  • A model checker capable of finding violations of liveness properties which lead the system to dead states.

As a result, Mace allows algorithm designers to focus their attention on the algorithm itself and less on tedious implementation details. In the process, we promote code re-usability and fair comparisons of competing algorithms.


Faculty and Staff


External Contributors:

Former contributors:


“Composable reliability for asynchronous systems: Treating failures as slow processes.” Sunghwan Yoo, Charles Killian, Terence P. Kelly, Hyoun Kyu Cho, and Steve Plite. In proceedings of the 2012 USENIX Annual Technical Conference (USENIX ATC 2012). Boston, MA. (to appear) 13-15 June, 2012.

“Gatling: Automatic Attack Discovery in Large-Scale Distributed Systems.” Hyojeong Lee, Jeff Seibert, Charles Killian, and Cristina Nita-Rotaru. In proceedings of 19th Annual Network & Distributed System Security Symposium (NDSS 2012). San Diego, CA. 5-8 February, 2012.

“Hierarcy-Aware Distributed Overlays in Data Centers using DC2.” Karthik Nagaraj, Hitesh Khandelwal, Charles Killian, and Ramana Kompella. In proceedings of Fourth International Conference on COMmunication Systems and NETworkS (COMSNETS 2012). Bangalore, India. (to appear) 3-7 January, 2012.

“ALIAS: Scalable, Decentralized Label Assignment for Data Centers”. Meg Walraed-Sullivan, Radhika Niranjan Mysore, Malveeka Tewari, Ying Zhang, Amin Vahdat, Keith Marzullo. Proceedings of the ACM Symposium on Cloud Computing, ACM, October, 2011.

“Brief Announcement: A Randomized Algorithm for Label Assignment in Dynamic Networks.” Meg Walraed-Sullivan, Radhika Niranjan Mysore, Keith Marzullo, Amin Vahdat. Proceedings of the 25th International Symposium on DIStributed Computing, David Peleg (ed.), Springer, 326-327, 20, September, 2011.

“InContext: Simple Parallelism for Distributed Applications.” Sunghwan Yoo, Hyojeong Lee, Charles Killian, and Milind Kulkarni. In proceedings of the 20th International ACM Symposium on High-Performance Parallel and Distributed Computing (HPDC 2011). San Jose, CA. 8-11 June, 2011. (pdf)

“Finding Latent Performance Bugs in Systems Implementations.” Charles Killian, Karthik Nagaraj, Salman Pervez, Ryan Braud, James W. Anderson, and Ranjit Jhala. In proceedings of Eighteenth International Symposium on the Foundations of Software Engineering (FSE 2010). Santa Fe, NM. 7-11 November, 2010. [pdf]

“Live Debugging of Distributed Systems.” Darren Dao, Jeannie Albrecht, Charles Killian, and Amin Vahdat, in Proceedings of International Conference on Compiler Construction (CC 2009), York, UK, March, 2009. [pdf]

“High Bandwidth Data Dissemination for Large-scale Distributed Systems.” Dejan Kostic, Alex C. Snoeren, Amin Vahdat, Ryan Braud, Charles Killian, Jeannie Albrecht, James W. Anderson, Adolfo Rodriguez, and Erik Vandekieft, ACM Transactions on Computer Systems, 26(1). 2008.

“Mace: Language Support for Building Distributed Systems.” Charles Killian, James W. Anderson, Ryan Braud, Ranjit Jhala, and Amin Vahdat, in Proceedings of PLDI (PLDI 2007), San Diego, CA, June 2007. [pdf]

“Life, Death, and the Critical Transition: Detecting Liveness Bugs in Systems Code.” Charles Killian, James W. Anderson, Ranjit Jhala, and Amin Vahdat, in Proceedings of NSDI (NSDI 2007), Cambridge, MA, April 2007. [pdf] Awarded Best Paper.

“Pip: Detecting the Unexpected in Distributed Systems.” Patrick Reynolds, Charles Killian, Janet L. Wiener, Jeffrey C. Mogul, Mehul A. Shah, and Amin Vahdat, in Proceedings of NSDI (NSDI 2006), San Jose, CA, May 2006. [pdf]

“Maintaining High Bandwidth under Dynamic Network Conditions.” Dejan Kostic, Ryan Braud, Charles Killian, Erik Vandekieft, James W. Anderson, Alex C. Snoeren and Amin Vahdat, Proceedings of 2005 USENIX Annual Technical Conference (USENIX 2005), April 2005. [pdf]

“MACEDON: Methodology for Automatically Creating, Evaluating, and Designing Overlay Networks.” Adolfo Rodriguez, Charles Killian, Sooraj Bhat, Dejan Kostic, and Amin Vahdat, Proceedings of the USENIX/ACM Symposium on Networked Systems Design and Implementation (NSDI 2004), March 2004. [pdf]

“Scalability in Adaptive Multi-Metric Overlays.” Adolfo Rodriguez, Dejan Kostic, and Amin Vahdat, The 24th International Conference on Distributed Computing Systems (ICDCS 2004), March 2004. [ps]

“Bullet: High Bandwidth Data Dissemination Using an Overlay Mesh.” Dejan Kostic, Adolfo Rodriguez, Jeannie Albrecht, and Amin Vahdat, Proceedings of the 19th ACM Symposium on Operating System Principles (SOSP 2003), October 2003. [ps]

“Using Random Subsets to Build Scalable Network Services.” Dejan Kostic, Adolfo Rodriguez, Jeannie Albrecht, Abhijeet Bhirud, and Amin Vahdat, Proceedings of the USENIX Symposium on Internet Technologies and Systems (USITS 2003), March 2003. [pdf]

External Impact


CrystalBall (EPFL): CrystalBall is built on top of the Mace/MaceMC toolkit, and provides future predictions of safety property violations, enabling systems to steer away from possible errors. Acknowledgement from the CrystalBall page:
This project builds upon the Mace distributed systems framework (and the MaceMC model checker). Doing so tremendously reduced the time to realize the contributions of this project.
CIM (Microsoft Research): In particular, the CIM project used Mace for a Cimbiosys prototype and MaceMC for protocol testing.
Testing protocol gullibility (Microsoft Research/UCLA): Mace/MaceMC was used to implement a protocol gullibility tester, published at HotNETS.

Nexus (Cornell University), From Emin Gun Sirer:

We adopted Mace for use on Nexus (a new OS I am building whose focus is to develop the OS-level abstractions to take advantage of the capabilities of TPMs). Specifically, we modified it such that Mace-generated apps have their Mace specification embedded in them, and this specification is securely attested to, so that a party can provide a secure attestation to another remote party of the precise protocol it implements, and guarantee that it will not violate the protocol as specified.

Mace is cool stuff, and we appreciated having it publicly available, many thanks!


Advanced Computer Networks and Distributed Systems (EPFL): Course homeworks and final projects were conducted using Mace.
Distributed Systems Research Seminar (EPFL): A research-oriented couse using Mace for group projects.


“Securing Virtual Coordinates by Enforcing Physical Laws.” Jeff Seibert (Purdue University), Sheila Becker (University of Luxembourg), Cristina Nita-Rotaru (Purdue University), and Radu State (University of Luxembourg). In International Conference on Distributed Computing Systems (ICDCS), June 2012. (pdf)

“Practical Software Model Checking via Dynamic Interface Reduction.” Huayang Guo (MSR and Tsinghua), Ming Wu, Lidong Zhou (MSR), Gang Hu (MSR and Tsinghua), Junfeng Yang (Columbia), Lintao Zhang (MSR). In proceedigns of the 23rd ACM Symposium on Operating Systems Principles (SOSP 2011), October 2011. (pdf)

“Unified Debugging of Distributed Systems with Recon.” Kyu Hyung Lee, Nick Sumner, Xiangyu Zhang, and Patrick Eugster, Purdue University. In proceedings of the 41st IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2011), June 2011.

“Model Checking a Networked System Without the Network.” Rachid Guerraoui and Maysam Yabandeh, EPFL. In proceedings of the 8th USENIX Symposium on Networked Systems Design and Implementation (NSDI 2011), Boston, MA, March, 2011. [pdf]

“Simplifying Distributed System Development.” Maysam Yabandeh, Nedeljko Vasic, Dejan Kostic, and Viktor Kuncak, EPFL, in Proceedings of the 12th USENIX Workshop on Hot Topics in Operating Systems (HotOS 2009), Monte Verita, Switzerland, May, 2009. [pdf]

“Cimbiosys: A platform for content-based partial replication.” Venugopalan Ramasubramanian, Thomas L. Rodeheffer, Douglas B. Terry, Meg Walraed-Sullivan, Ted Wobber, Cathy Marshall, and Amin Vahdat, in Proceedings of the 6th ACM/USENIX Symposium on Networked Systems Design and Implementation (NSDI 2009), Boston, MA, April, 2009. [pdf]

“CrystalBall: Predicting and Preventing Inconsistencies in Deployed Distributed Systems.” Maysam Yabandeh, Nikola Knezevic, Dejan Kostic, and Viktor Kuncak, EPFL in Proceedings of Proceedings of the 6th ACM/USENIX Symposium on Networked Systems Design and Implementation (NSDI 2009), Boston, MA, April, 2009. [pdf]

“Can You Fool Me? Towards Automatically Checking Protocol Gullibility.” Milan Stanojevic (UCLA), Ratul Mahajan (Microsoft Research), Todd Millstein (UCLA), Madanlal Musuvathi (Microsoft Research) in Proceedings of Seventh ACM Workshop on Hot Topics in Networks (HotNETS 2008), Calgary, Alberta, Canada, 2008. [pdf]

“Enabling DVD-like features in P2P video-on-demand systems.” Vratonjic, N., Gupta, P., Knezevic, N., Kostic, D., and Rowstron, A, In Proceedings of the 2007 Workshop on Peer-To-Peer Streaming and IP-TV (P2P-TV 2007), Kyoto, Japan, August, 2007. [pdf]

“Surviving Internet Catastrophes.” Flavio P. Junqueira, Ranjita Bhagwan, Alejandro Hevia, Keith Marzullo, and Geoffrey M. Voelker, in Proceedings of USENIX Annual Technical Conference (USENIX 2005), April 2005. [pdf]


This research has been supported in part by the National Science Foundation, the Purdue Research Foundation, Hewlett-Packard, the UCSD Center for Networked Systems, and an Intel equipment donation. We are grateful for their support.


You can contact our group at

Comments are closed.