mptcptrace analyze MPTCP traces


If you plan to use this tool in a publication, please use the following reference:

 author = {Hesmans, Benjamin and Bonaventure, Olivier},
 title = {Tracing Multipath TCP Connections},
 booktitle = {Proceedings of the 2014 ACM Conference on SIGCOMM},
 series = {SIGCOMM '14},
 year = {2014},
 isbn = {978-1-4503-2836-4},
 location = {Chicago, Illinois, USA},
 pages = {361--362},
 numpages = {2},
 url = {},
 doi = {10.1145/2619239.2631453},
 acmid = {2631453},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {Multipath TCP},


You can build mptctrace with:

$ ./
$ ./configure --prefix=whatever/
$ make
$ make install

I you have troubles to compile it, you can contact me.

Use it

You need to provide a pcap trace to mptcptrace with the -f option. Mptcptrace will recognize ETH and Linux cooked header, if it's something else, you can use "-o" to tell mptctrace the offset to go to the IP header.

There is manpage in the man directory.

To get started you can try the -s option that will output MPTCP sequence graph:

$ mptcptrace -f myDump.pcap -s

This will generate 2 xplot files for each MPTCP connection inside the trace (one to show sequences numbers from client to server (c2s) and the other to show sequences numbers from the server to the client (s2c)).

You can also try the goodput graph with -G 20:

$ mptcptrace -f myDump.pcap -G 20

That will generate the gput files.

CSV output usage

Mptcptrace let you output information into CSV format. It's easy to reuse to plot the information, make statistics, be creative.

To get the CSV output, you can use -w 2 options, and all other regular options.

$ mptcptrace -f myDump.pcap -s -w 2

Will output MPTCP sequence inforamtions in a CSV format.

One quick GNU plot script example can be found in res/scripts/gnuplot/seq_sf

$ mptcptrace -f myDump.pcap -s -w 2
$ gnuplot -e "maxsf=16" seq_sf < c2s_seq_0.csv > seq_sf.eps
$ evince seq_sf.eps

The output of the example is available in res/pics in eps format. This graph shows the MPTCP mappings that pass trough subflows. In red you can also see, the mappings that cause reinjections, and in green on which sublfows they have been reinjected.

You can also use use the CSV format to easely convert some graphs, for instance, we use the R script in res/scripts/R/ to translate the flight graph.

$ mptcptrace -f myDump.pcap -F 3 -w 2
$ // prepend ts,val,met,DONT,USE,ME to c2s_flight_0.csv
$ ./flightR c2s_flight_0.csv win.eps

The output is available in res/pics in eps format.

Man page

MPTCPTRACE(1)                  mptcptrace Manual                 MPTCPTRACE(1)

       mptcptrace - MPTCP connection analysis

       mptcptrace [options] -f filename

       mptcptrace  is  a  tool  that enable the analysis of dump that contains
       MPTCP capable connection(s).

       The following options are supported:

       -s     MPTCP sequence number graph

       -a     MPTCP ack size graph

       -r     RTT at MPTCP level, X axis may be selected :
              1     x is timestamp of the ACK arrival
              2     x is timestamp of the SEQ departure
              4     x is SEQ numbers
              To get more than one graph, just add the  value.  E.g.  6  would
              give the second and the third graph.

       -F     MPTCP  Flight  size  graphs.  You have two kinds of MPTCP flight
              size graphs.
              1     Shows the receive window, the MPTCP  flightsize,  and  the
              sum of the TCP (sublfow) flight size.
              2     Show the flight size per subflow.
              To  get more than one graph, just add the value.  -G You have to
              specify the size of the table to make the moving average.  Small
              number  will  be  closed to instantaneous goodput but may be too
              variable. Big numbers will lead to a smoother graph but may  not
              reflect  some holes in the connection.  Measures the MPTCP good-
              put. The red line is the average good put since  the  bbegining.
              The blue diamond represents the moving average.

       -S     Output  statistics in a CSV format. The set of statistics is not
              yet well defined.

       -q     Specify the length of the queue that contains sequence  that  we
              have to keep in memory for reinjection checking. By default this
              option is set to 0 which means infinite queue. If you have  very
              long trace, you may be forced to limit the size of the queue.

       -o     Specify the offset of the IP packet. Could be usefull if the top
              layer is unknown by the program. It currently recognize automat-
              ically ETHernet and Cooked.

       -w     Select  a writer to output the results. This option is not fully
              implemented.  The default writer is xlot (0).
              0     Output xplot files. (default)
              1     Output google chart files. No fully implemented. The  main
              reason  is  scability issues. Nevertheless can be used for small
              traces. For demo.
              2     Output csv files. Can be used to plot the information with
              other program or post-process the output. E.g. we used this out-
              put to generate Gnuplot graph on the web interface. We also  use
              this output with R.

       -h     Print a short help and then exit.

       -v     TODO


       report to

       Benjamin Hesmans

       tcptrace(1),, gnuplot(1), R(1)

Version 0.1                       May 7, 2014                    MPTCPTRACE(1)