I am doing some personal research on Byzantine Faults. I am trying out algorithms from various research papers which present algorithms for consensus in distributed systems like this one. For this i need a small scale simulation environment of a distributed system. How do i approach this problem ?


We use this: http://lxc.sourceforge.net/

Linux Containers are extremely light weight virtual machines (basically zero overhead). We are using only 250 machines per physical machine, but there shouldn't be any issue going for thousands per machine.

We successfully used both LVM partitions and overlay filesystems as the system root.

  • hi can you please tell me if the documentation is solid enough ? – Chani Sep 25 '11 at 18:25
  • @Scrooge It's very simple to use and there are a bunch of tutorials. – Let_Me_Be Sep 25 '11 at 18:28
  • can you pls tell me if i can run lxc on Damn Small Linux or Lubuntu or some similar light weight linux ? – Chani Sep 25 '11 at 18:45
  • @Scrooge Just use debian. – Let_Me_Be Sep 25 '11 at 18:48
  • so are there issues if i use ubuntu ? – Chani Sep 25 '11 at 19:13

Virtual machines may be the way to go, the problem is that if you setup 5 VM's on one server the response time between them will be effectively 0, which may not be true in your real environment where there could be a delay between servers.

If that is an issue (or could be) I would suggest setting up some servers on AWS or the like to test. Chances are that this could be done for less than $10 or $20.

  • 2
    Some VM software, like VMWare ESX allows you to simulate network latency as well. (Just something to consider). – vcsjones Sep 25 '11 at 20:13
  • Didn't actually know that, very cool – Zachary K Sep 26 '11 at 2:48

I just skipped through the paper that you mention, but here I go. We often use a virtualised environment to create experimental setups that involve multiple computers. Using Hyper-V on Windows Server (or similar software) you can easily create a private, isolated network of machines that you can configure on the fly and reuse as needed.

You seem to be working on fault detection and the associated consensus reaching, so I wouldn't think that the low latency, high bandwidth that a virtualised environment would yield would be a problem. In any case, if it is a problem, you can always use a WAN simulator such as WAN Connection Emulator to simulate an arbitrarily high-latency, low-bandwidth connection between your nodes.


Short of virtual machines -- which are probably the way to go -- most client server software lets the same machine behave as client and server. So you might need a distributed pardagim on a single PC.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.