GithubHelp home page GithubHelp logo

ntttcp's Introduction

NTTTCP

Build

A Windows network throughput benchmark tool.

See Releases section for binaries.

Building

  1. Clone the repository with submodules.
  2. Open the solution file ntttcp.sln in Visual Studio and build.
  3. The binary will be at build/bin/amd64fre/ntttcp.exe

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

ntttcp's People

Contributors

maolson-msft avatar microsoft-github-operations[bot] avatar microsoftopensource avatar mtfriesen avatar nibanks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ntttcp's Issues

GetLastError: 10049 - The requested address is not valid in its context.

Using a standard recieve string
NTttcp.exe -r -v -p 1025 -m 1,3,
It fails and this is the resulting output :

4/13/2022 11:33:22 StartSenderReceiver start thread 0 port 1025
4/13/2022 11:33:22 SetupNet port 1025
4/13/2022 11:33:22 bound to port 1025
4/13/2022 11:33:22 ERROR: SetupNet failed: error in connect/bind function, GetLastError: 10049 - The requested address is not valid in its context.
4/13/2022 11:33:22 ERROR: StartSenderReceiver in thread: 0 failed: error in SetupNet function
4/13/2022 11:33:22 ERROR: StartSenderReceiver in thread: 0 failed: closesocket, GetLastError: 10038 - An operation was attempted on something that is not a socket.

It's windows server 2018 running powershell in administrator mode.
There is no other error information, just the above.
Please advise.

Negative Average Latency Numbers

I have been testing with ntttcp but when I read the XML file I see that the latency values are negative, these are the parameters used to run the benchmark:

  • NTttcp.exe -r -m 8,*,192.168.100.50 -xml C:\temp\result.xml -lm -wu 60 -t 730 -cd 30

image

The max and min values look good but the average doesn't make sense.

NTTCP Windows Server 2012 R2 Error - DLL Missing

NTTCP when trying to execute on windows server 2012 R2 is encountering the following error :

"This Program can't start because api-ms-win-core-synch-l1-2-1.dll is missing from your computer. Try reinstalling the program to fix this problem"

image

Please add documentation for UDP

Hello, would it be possible to add some documentation for the project? I've found eg. this. But it failed even in the simple case (interconnection is 10 GE with single switch between computers):

ntttcp -s -m 4,*,172.30.80.23 -t 10 -N
11:19:54 INFO:   throughput     :11.23Mbps

using '-N 300' (didn't have patience to wait till the end):
Real-time throughput: 0.00bps

I mainly want to test UDP performance Linux->Windows using current versions (5.36 and 1.4.0). Something like:

linux-sender $ ./nttcp -s -m 4,*,172.30.80.23 -t 10 -N -u -B 8G
C:\tools>Ntttcp.exe -r -m 4,*,172.30.80.23 -u -ns -l 9000

The main problem is that the receiver doesn't report any info, neither in TCP mode (-u removed). In UDP mode it only complains about buffer sizes - I didn't find how to set MTU on sender, interface has 9000 so -l 9000 may be sufficient on receiver. FW should be disabled for the process and TCP/UDP ports 5000-5100.

ERROR: StartSenderReceiver in thread: 2 failed: error in send/recv, GetLastError: 10040 - A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.

So my question is simple - how do I simply measure the UDP performance between 2 computers with ntttcp, eg. in a manner as iperf does?

Thanks, Martin

ntttcp for Windows does not flush/accept socket receiver buffer with a Linux ntttcp sender

Sender : Ubuntu 22.04 using ntttcp for Linux version 1.4.0
Receiver : Windows Server 2019 using ntttcp 5.38

Create Windows receiver with this command:

ntttcp -r -m 4,*,<rx IP> -rb 128M

Start the sender on Ubuntu 22.04

ntttcp -s -m 4,*,<rx IP> -N -t 60

The transfer will run for a while, then go into TCP zero windows state. These packets are from Wireshark collected on the Windows system.

1894865	1198.584902	10.2.0.3	10.2.0.1	TCP	54	[TCP ZeroWindow] 5003 → 50808 [ACK] Seq=1 Ack=268436481 Win=0 Len=0

1894866	1199.608741	10.2.0.1	10.2.0.3	TCP	54	[TCP Keep-Alive] 39568 → 5004 [ACK] Seq=268452024 Ack=1 Win=65536 Len=0

1894867	1199.608896	10.2.0.3	10.2.0.1	TCP	54	[TCP ZeroWindow] 5004 → 39568 [ACK] Seq=1 Ack=268452025 Win=0 Len=0

1894868	1200.376678	10.2.0.1	10.2.0.3	TCP	54	[TCP Keep-Alive] 58052 → 5001 [ACK] Seq=268464432 Ack=1 Win=65536 Len=0

1894869	1200.376732	10.2.0.3	10.2.0.1	TCP	54	[TCP ZeroWindow] 5001 → 58052 [ACK] Seq=1 Ack=268464433 Win=0 Len=0

The transfer stays in this state until it ends.

The TCP zero window happens because the receiver, Windows, is advertising a TCP windows size of zero (0) [Win=0]. TCP does with then the socket receiver buffer is full. It tells the sender that it cannot send new data.

The issue happens when not using -rb, "-rb -1", or any other variation. The larger th e-rb value the longer the transfer will run, but eventually it will run out of buffer and stop transmitting. Assuming the network link is fast enough to exhaust the receive buffer value.

Changes on the sender side (-b) don't seem to affect the issue.

Using Linux as the receiver and Windows as the sender works fine.

Windows to Windows works fine, too. This only happens with a Windows receiver and Linux sender.

ERROR: WaitForWorkerThreads failed: WaitForMultipleObjects returned an unexpected value

Hello! Can you tell me how critical this error is, is the test result correct?

client

PS D:\temp> .\NTttcp536.exe -s -m 20,*,10.8.2.10 -t 60 -u -l 32K
Copyright Version 5.36
Network activity progressing...


Thread  Time(s) Throughput(KB/s) Avg B / Compl
======  ======= ================ =============
     0   59.998        60102.270     32768.000
     1   59.998        60811.627     32768.000
     2   59.998        60701.223     32768.000
     3   59.998        60707.090     32768.000
     4   59.998        60676.689     32768.000
     5   59.998        60778.559     32768.000
     6   59.998        60786.560     32768.000
     7   59.999        60700.212     32768.000
     8   59.999        60188.203     32768.000
     9   59.998        60201.473     32768.000
    10   59.998        60256.942     32768.000
    11   59.998        60215.874     32768.000
    12   59.998        60294.810     32768.000
    13   59.999        60528.475     32768.000
    14   59.999        60767.946     32768.000
    15   59.999        60732.746     32768.000
    16   59.998        60762.025     32768.000
    17   59.998        60791.893     32768.000
    18   59.999        60784.480     32768.000
    19   59.998        60785.493     32768.000


#####  Totals:  #####


   Bytes(MEG)    realtime(s) Avg Frame Size Throughput(MB/s)
================ =========== ============== ================
    70988.687500      60.001      32762.894         1183.125


Throughput(Buffers/s) Cycles/Byte       Buffers
===================== =========== =============
            37859.986       9.350   2271638.000


DPCs(count/s) Pkts(num/DPC)   Intr(count/s) Pkts(num/intr)
============= ============= =============== ==============
     9496.571         0.001      102052.054          0.000


Packets Sent Packets Received Retransmits Errors Avg. CPU %
============ ================ =========== ====== ==========
     2271992              652           0      0     10.985

server

PS C:\install> .\NTttcp536.exe -r -m 20,*,10.8.2.10 -t 60 -u -l 32K
Copyright Version 5.36
Network activity progressing...
ERROR: WaitForWorkerThreads failed: WaitForMultipleObjects returned an unexpected value

ERROR: DoWork failed: WaitForWorkerThreads(threads_finished) timed out
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: DoSendsReceives failed: unknown error: 10004, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 16 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 6 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 6 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 5 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 5 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 7 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 7 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 19 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 19 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 0 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 0 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 1 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 11 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 11 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 2 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 2 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 13 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 4 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 4 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 14 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 14 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 17 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 17 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 8 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 8 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 10 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 1 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 12 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 3 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 13 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 15 failed: error in send/recv, GetLastError: 10004 - A blocking operation was interrupted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 16 failed: closesocket, GetLastError: 10093 - Either the application has not called WSAStartup, or WSAStartup failed.
upted by a call to WSACancelBlockingCall.
ERROR: StartSenderReceiver in thread: 10 failed: closesocket, GetLastError: 10093 - Either the application has not called
 WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 12 failed: closesocket, GetLastError: 10093 - Either the application has not called
 WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 3 failed: closesocket, GetLastError: 10093 - Either the application has not called
WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 15 failed: closesocket, GetLastError: 10093 - Either the application has not called
 WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 18 failed: closesocket, GetLastError: 10093 - Either the application has not called
 WSAStartup, or WSAStartup failed.
ERROR: StartSenderReceiver in thread: 9 failed: closesocket, GetLastError: 10093 - Either the application has not called
WSAStartup, or WSAStartup failed.


Thread  Time(s) Throughput(KB/s) Avg B / Compl
======  ======= ================ =============
     0   62.059        57975.797     32768.000
     1   62.059        58656.440     32768.000
     2   62.059        58553.312     32768.000
     3   62.059        58563.109     32768.000
     4   62.059        58530.624     32768.000
     5   62.059        58618.283     32768.000
     6   62.059        58649.737     32768.000
     7   62.059        58562.594     32768.000
     8   62.059        58067.581     32768.000
     9   62.059        58082.534     32768.000
    10   62.059        58122.239     32768.000
    11   62.059        58095.941     32768.000
    12   62.059        58162.974     32768.000
    13   62.059        58396.042     32768.000
    14   62.059        58620.345     32768.000
    15   62.059        58579.094     32768.000
    16   62.059        58604.360     32768.000
    17   62.059        58633.236     32768.000
    18   62.059        58643.033     32768.000
    19   62.059        58635.299     32768.000


#####  Totals:  #####


   Bytes(MEG)    realtime(s) Avg Frame Size Throughput(MB/s)
================ =========== ============== ================
    70831.656250      60.039      32767.277         1179.756


Throughput(Buffers/s) Cycles/Byte       Buffers
===================== =========== =============
            37752.188       2.541   2266613.000


DPCs(count/s) Pkts(num/DPC)   Intr(count/s) Pkts(num/intr)
============= ============= =============== ==============
     8270.557         4.565       47178.955          0.800


Packets Sent Packets Received Retransmits Errors Avg. CPU %
============ ================ =========== ====== ==========
         428          2266663           0      0     22.466

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.