Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


iperf tool on MirageOS


This program is a network performance measurement tool on MirageOS based on the test iperf implementation included in mirage-tcpip ( You can measure the TCP throughput between two different MirageOS VMs by this tool.



Step by step

  1. Check your target path.
    TCP client in iperf_client, TCP server in iperf_server
    UDP client in iperf_udp_client, UDP server in iperf_udp_server
  2. Edit the following variables in of your target client program.
    • server_ip (= server IP address)
    • total_size (= total data size to be sent)
    • blen (= sender buffer size)
  3. Configure your target programs. You must assign an IP address for each side in this step.
(client side using hvt)
$ mirage configure --ipv4= -t hvt
(server side using hvt)
$ mirage configure --ipv4= -t hvt
  1. Compile your target programs.
  2. Launch the server side at first, then the client side.

Automated measurement

  • Xen or QEMU/KVM
    1. Modify domain xml files in ./template/ so that they can use a network bridge on your environment. The default bridge is vmbr0.
    2. Modify parameters in so that it can be used on your environment.
      CLIENTADDR : A host IP for libvirt where you want to run a client side VM SERVERADDR : A host IP for libvirt where you want to run a server side VM
      USER : A username you want to use
      OCAMLVER : An OCaml compiler version you want to use BUFSIZE : Sender buffer size
      ITERATIONS : # of measurements for each sender buffer size
    3. Execute ./iperf_run xen tcp /path/to/dir if you want to launch the TCP client and server side programs at /path/to/dir on Xen-based physical servers.
      1st argument : xen or virtio
      2nd argument : tcp or udp
      3rd argument : /path/to/dir (where you want to put the server and client kernel files)
  • hvt
    1. Create and configure two tap devices on your hosts and check if they can communicate each other.
    2. Modify parameters in The default tap devices are tap0 and tap1 for the server and client respectively.
    3. Execute ./ tcp if you want to launch the TCP client and server side programs.
      1st argument : tcp or udp


  • UDP-based programs are partly compatible with the C-based iperf. This is just for testing. (The programs were tested with iperf-2.0.9)
    • C-based client with MirageOS-based server
      Note that you can check only the bytes transferred and bit rate. The jitter and packet loss rate fields (= indicated as "Server report:" in the client side output) are invalid as the server side does not measure them.
    • MirageOS-side client with C-based client
      No special considerations needed.


iperf like tool on MirageOS







No releases published


No packages published