Skip to content

How to interop with Windows NTttcp?

Simon Xiao edited this page Apr 14, 2017 · 3 revisions

Windows NTttcp v5.33 is available now

The Windows NTttcp utility v5.33 has been released. This release includes a new option "-ns" which enables "NTttcp does not establish these extra connections and instead generates load as soon as possible".

Please visit Windows NTttcp page here for more information: http://aka.ms/ntttcp

With this new option added in Windows Ntttcp, we can test the network throughput performance between Windows and Linux in the "no-sync" node.

Why interop only happens with "no-sync" mode?

In previous version of Windows NTttcp, "by default, NTttcp will establish extra control connections between senders and receiver to synchronize prior to generating load." The number of the "extra control connections" here is the same number of the TCP test connections. This brings challenge to ntttcp-for-linux to the interop test as ntttcp-for-linux also needs to create that number of "extra control connections" to make it interop-able with Windows NTttcp.

Now, with the "no-sync" mode support on both ntttcp-for-linux and Windows NTttcp, we can easily enable the interop test without those "extra control connections".

How to interop?

Run both tools in "no-sync" mode:

  • Run Windows NTttcp in no-sync mode with option "-ns";
  • Run ntttcp-for-linux in no-sync mode with option "-N";

Below is an example of how to run 64 concurrent TCP test connections between Windows and Linux:

  • On Windows, run Ntttcp.exe as receiver:

    C:\NTttcp.exe -r -m 64,*,192.168.4.1 -t 60 -ns

  • On Linux, run ntttcp-for-Linux as sender in either of below commands:

    lisa@msftloveslinux:~# ntttcp -s -m 64,*,192.168.4.1 -n 1 -t 60 -N

    lisa@msftloveslinux:~# ntttcp -s192.168.4.1 -P 64 -n 1 -t 60 -N

Test Notes

The test warm-up and cool-down in Windows Ntttcp

It looks like Windows NTttcp (version 5.33) will run the tool longer than the time specified by "-t" ("Runtime" option). This may be caused by Windows NTttcp sets a value to "warm-up" (the "-wu" option) or "cool-down" (the "-cd" option) by default.

Known Issues

The test timing issue.

As there is no sync between sender and receiver, Windows NTttcp (no matter as receiver role or sender role) and ntttcp-for-Linux (when acts as sender role) will exit after their own timer (which is specified by the "-t" option) expired.

Windows NTttcp and ntttcp-for-linux may have slight different logic to start the test timer, so if both of them run with the same test duration, one endpoint (may be sender, or receiver) may throw error which says test connections are closed unexpectedly.

To walk around this issue, please specify a longer time in receiver side to make sure it will not exit while sender is running. In this case, please use the throughput reported by sender side, this is because the throughput report by receiver side will not be inaccurate as the sender may exit and no data transferred to receiver but receiver does not know this and still increases the test time.

Example run

Let's see an example of the interop test. The sender side is Linux and receiver side is Windows.

The information here is provided with referential purposes only and is not official performance benchmarking information from Microsoft, as data could differ with different test environments.

Run this command on Windows to start NTttcp as receiver:

Ntttcp.exe -r -m 64,*,192.168.4.1 -t 60 -ns

Run this command on Linux to start ntttcp-for-Linux as sender:

ntttcp -s192.168.4.1 -P 64 -n 1 -t 60 -N

This is the output from the Linux sender side (reported by ntttcp-for-linux):

lisa@msftloveslinux:~# ntttcp -s192.168.4.1 -P 64 -n 1 -t 60 -N
NTTTCP for Linux 1.1.0
---------------------------------------------------------
12:29:46 INFO: Starting sender activity (no sync) ...
12:30:46 INFO:  Thread  Time(s) Throughput
12:30:46 INFO:  ======  ======= ==========
12:30:46 INFO:  0        59.97   286.38Mbps
12:30:46 INFO:  1        59.97   392.66Mbps
12:30:46 INFO:  2        59.97   450.00Mbps
... ...
12:30:46 INFO:  63       59.97   453.06Mbps
12:30:46 INFO: #####  Totals:  #####
12:30:46 INFO: test duration    :59.97 seconds
12:30:46 INFO: total bytes      :207427338240
12:30:46 INFO:   throughput     :27.67Gbps
12:30:46 INFO: total cpu time   :72.29%
12:30:46 INFO:   user time      :9.49%
12:30:46 INFO:   system time    :62.80%
12:30:46 INFO:   cpu cycles     :191895688899
12:30:46 INFO: cycles/byte      :0.93
---------------------------------------------------------