Experimental setup with a docker traffic shaper


I am working on experiments that evaluate how some Libra Rust functions scale in terms of #nodes or #transactions. Furthermore, I am planning to gain insight how well Libra scales(performance wise) in terms of #nodes and transactions load. To make this as fair as possible I want to run the docker containers on a beefy machine with a traffic shaper, eg: “https://github.com/lukaszlach/docker-tc”. This allows for bandwidth and message delays simulation. I would like to hear some opinions about this approach.

Furthermore, I would like to know, approximately, the transactions size. I found an old post that estimated a transaction to be 400Bytes, is this still the case? If so, can I find some evidence somewhere? Its about this post:



Hi Jeanpierre,

We have already been using tc to run experiments on effects bandwidth and latency on Libra network performance at scale. You can find the experiments that we have here : https://github.com/libra/libra/blob/master/testsuite/cluster-test/src/experiments/

Regarding transaction size, the size of a peer to peer transfer signed transaction is around 450 bytes. So your estimate of ~400 bytes is not too far :slight_smile:

Hi Ankushagarwal,

Thank you for your response, I was not aware of these experiments but they are helpful to me. Is it true that I cannot run these experiments with the docker containers setup in master branch? Would it be much work to get it to work with docker peers? Because I have the feeling that the docker containers are faster than running libra-swarm. You mentioned that you are using tc to run these experiments with libra-swarm, how can I configure this mechanism with the libra-swarm experiments?

Lastly, the docker nodes do run on the master branch while libra-swarm does not. What branch do you recommend to program in? Master or testnet?

Thanks for your help!