Ethr is a Comprehensive Network Measurement Tool for TCP, UDP & ICMP.

Related tags

Network ethr
Overview

Ethr Build Status

Ethr is a cross platform network performance measurement tool written in golang. The goal of this project is to provide a native tool for comprehensive network performance measurements of bandwidth, connections/s, packets/s, latency, loss & jitter, across multiple protocols such as TCP, UDP, HTTP, HTTPS, and across multiple platforms such as Windows, Linux and other Unix systems.

Ethr server in action

Ethr takes inspiration from existing open source network performance tools and builds upon those ideas. For Bandwidth measurement, it is similar to iPerf3, for TCP & UDP traffic. iPerf3 has many more options for doing such as throttled testing, richer feature set, while Ethr has support for multiple threads, that allows it to scale to 1024 or even higher number of connections, multiple clients communication to a single server etc. For latency measurements, it is similar to latte on Windows or sockperf on Linux.

Ethr provides more test measurements as compared to other tools, e.g. it provides measurements for bandwidth, connections/s, packets/s, latency, and TCP connection setup latency, all in a single tool. In the future, there are plans to add more features (hoping for others to contribute) as well as more protocol support to make it a comprehensive tool for network performance measurements.

Ethr is natively cross platform, thanks to golang, as compared to compiling via an abstraction layer like cygwin that may limit functionality. It hopes to unify performance measurement by combining the functionality of tools like iPerf3, ntttcp, psping, sockperf, and latte and offering a single tool across multiple platforms and multiple protocols.

Installation

Download

https://github.com/Microsoft/ethr/releases/latest

Linux

wget https://github.com/microsoft/ethr/releases/latest/download/ethr_linux.zip
unzip ethr_linux.zip

Windows Powershell

wget https://github.com/microsoft/ethr/releases/latest/download/ethr_windows.zip -OutFile ethr_windows.zip
Expand-Archive .\ethr_windows.zip -DestinationPath .

OSX

wget https://github.com/microsoft/ethr/releases/latest/download/ethr_osx.zip
unzip ethr_osx.zip

Building from Source

Note: go version 1.11 or higher is required building it from the source.

We use go-module to manage Ethr dependencies. for more information please check how to use go-modules!

git clone https://github.com/Microsoft/ethr.git
cd ethr
go build

If ethr is cloned inside of the $GOPATH/src tree, please make sure you invoke the go command with GO111MODULE=on!

Docker

Build image using command:

docker build -t microsoft/ethr .

Make binary:

Linux

docker run -e GOOS=linux -v $(pwd):/out microsoft/ethr make build-docker

Windows

docker run -e BINARY_NAME=ethr.exe -e GOOS=windows -v $(pwd):/out microsoft/ethr make build-docker

OS X

docker run -e BINARY_NAME=ethr -e GOOS=darwin -v $(pwd):/out microsoft/ethr make build-docker

Using go get

go get github.com/Microsoft/ethr

Using ArchLinux AUR

Assuming you are using yay (https://github.com/Jguer/yay):

yay -S ethr

Publishing Nuget package

Follow the topic Building from Source to build ethr.exe

Modify ethr.nuspec to add new release version

vim ethr.nuspec

Create a nuget package(like Ethr.0.2.1.nupkg)

nuget.exe pack ethr.nuspec

Upload the package to nuget.org.

Usage

Simple Usage

Help:

ethr -h

Server:

ethr -s

Server with Text UI:

ethr -s -ui

Client:

ethr -c <server ip>

Examples:

// Start server
ethr -s

// Start client for default (bandwidth) test measurement using 1 thread
ethr -c localhost

// Start bandwidth test using 8 threads
ethr -c localhost -n 8

// Start connections/s test using 64 threads to server 10.1.0.11
ethr -c 10.1.0.11 -t c -n 64

// Run Ethr server on port 9999
./ethr -s -port 9999

// Measure TCP connection setup latency to ethr server on port 9999
// Assuming Ethr server is running on server with IP address: 10.1.1.100
./ethr -c 10.1.1.100 -p tcp -t pi -d 0 -4 -port 9999

// Measure TCP connection setup latency to www.github.com at port 443
./ethr -x www.github.com:443 -p tcp -t pi -d 0 -4

// Measure TCP connection setup latency to www.github.com at port 443
// Note: Here port 443 is driven automatically from https
./ethr -x https://www.github.com -p tcp -t pi -d 0 -4

// Measure ICMP ping latency to www.github.com
sudo ./ethr -x www.github.com -p icmp -t pi -d 0 -4

// Run measurement similar to mtr on Linux
sudo ./ethr -x www.github.com -p icmp -t mtr -d 0 -4

// Measure packets/s over UDP by sending small 1-byte packets
./ethr -c 172.28.192.1 -p udp -t p -d 0

Known Issues & Requirements

Windows

For ICMP related tests, Ping, TraceRoute, MyTraceRoute, Windows requires ICMP to be allowed via Firewall. This can be done using PowerShell by following commands. However, use this only if security policy of your setup allows that.

// Allow ICMP packets via Firewall for IPv4
New-NetFirewallRule -DisplayName "ICMP_Allow_Any" -Direction Inbound -Protocol ICMPv4 -IcmpType Any -Action Allow  -Profile Any -RemotePort Any

// Allow ICMP packets via Firewall for IPv6
New-NetFirewallRule -DisplayName "ICMPV6_Allow_Any" -Direction Inbound -Protocol ICMPv6 -IcmpType Any -Action Allow  -Profile Any -RemotePort Any

In addition, for TCP based TraceRoute and MyTraceRoute, Administrator mode is required, otherwise Ethr won't be able to receive ICMP TTL exceeded messages.

Linux

For ICMP Ping, ICMP/TCP TraceRoute and MyTraceRoute, privileged mode is required via sudo.

Complete Command Line

Common Parameters

	-h 
		Help
	-no 
		Disable logging to file. Logging to file is enabled by default.
	-o <filename>
		Name of log file. By default, following file names are used:
		Server mode: 'ethrs.log'
		Client mode: 'ethrc.log'
	-debug 
		Enable debug information in logging output.
	-4 
		Use only IP v4 version
	-6 
		Use only IP v6 version

Server Mode Parameters

In this mode, Ethr runs as a server, allowing multiple clients to run
performance tests against it.
	-s 
		Run in server mode.
	-ip <string>
		Bind to specified local IP address for TCP & UDP tests.
		This must be a valid IPv4 or IPv6 address.
		Default: <empty> - Any IP
	-port <number>
		Use specified port number for TCP & UDP tests.
		Default: 8888
	-ui 
		Show output in text UI.

Client Mode Parameters

In this mode, Ethr client can only talk to an Ethr server.
	-c <server>
		Run in client mode and connect to <server>.
		Server is specified using name, FQDN or IP address.
	-b <rate>
		Transmit only Bits per second (format: <num>[K | M | G])
		Only valid for Bandwidth tests. Default: 0 - Unlimited
		Examples: 100 (100bits/s), 1M (1Mbits/s).
	-cport <number>
		Use specified local port number in client for TCP & UDP tests.
		Default: 0 - Ephemeral Port
	-d <duration>
		Duration for the test (format: <num>[ms | s | m | h]
		0: Run forever
		Default: 10s
	-g <gap>
		Time interval between successive measurements (format: <num>[ms | s | m | h]
		Only valid for latency, ping and traceRoute tests.
		0: No gap
		Default: 1s
	-i <iterations>
		Number of round trip iterations for each latency measurement.
		Only valid for latency testing.
		Default: 1000
	-ip <string>
		Bind to specified local IP address for TCP & UDP tests.
		This must be a valid IPv4 or IPv6 address.
		Default: <empty> - Any IP
	-l <length>
		Length of buffer to use (format: <num>[KB | MB | GB])
		Only valid for Bandwidth tests. Max 1GB.
		Default: 16KB
	-n <number>
		Number of Parallel Sessions (and Threads).
		0: Equal to number of CPUs
		Default: 1
	-p <protocol>
		Protocol ("tcp", "udp", "http", "https", or "icmp")
		Default: tcp
	-port <number>
		Use specified port number for TCP & UDP tests.
		Default: 8888
	-r 
		For Bandwidth tests, send data from server to client.
	-t <test>
		Test to run ("b", "c", "p", "l", "cl" or "tr")
		b: Bandwidth
		c: Connections/s
		p: Packets/s
		l: Latency, Loss & Jitter
		pi: Ping Loss & Latency
		tr: TraceRoute
		mtr: MyTraceRoute with Loss & Latency
		Default: b - Bandwidth measurement.
	-tos 
		Specifies 8-bit value to use in IPv4 TOS field or IPv6 Traffic Class field.
	-w <number>
		Use specified number of iterations for warmup.
		Default: 1
	-T <string>
		Use the given title in log files for logging results.
		Default: <empty>		

External Mode Parameters

In this mode, Ethr talks to a non-Ethr server. This mode supports only a
few types of measurements, such as Ping, Connections/s and TraceRoute.
	-x <destination>
		Run in external client mode and connect to <destination>.
		<destination> is specified in URL or Host:Port format.
		For URL, if port is not specified, it is assumed to be 80 for http and 443 for https.
		Example: For TCP - www.microsoft.com:443 or 10.1.0.4:22 or https://www.github.com
		         For ICMP - www.microsoft.com or 10.1.0.4
	-cport <number>
		Use specified local port number in client for TCP & UDP tests.
		Default: 0 - Ephemeral Port
	-d <duration>
		Duration for the test (format: <num>[ms | s | m | h]
		0: Run forever
		Default: 10s
	-g <gap>
		Time interval between successive measurements (format: <num>[ms | s | m | h]
		Only valid for latency, ping and traceRoute tests.
		0: No gap
		Default: 1s
	-ip <string>
		Bind to specified local IP address for TCP & UDP tests.
		This must be a valid IPv4 or IPv6 address.
		Default: <empty> - Any IP
	-n <number>
		Number of Parallel Sessions (and Threads).
		0: Equal to number of CPUs
		Default: 1
	-p <protocol>
		Protocol ("tcp", or "icmp")
		Default: tcp
	-t <test>
		Test to run ("c", "cl", or "tr")
		c: Connections/s
		pi: Ping Loss & Latency
		tr: TraceRoute
		mtr: MyTraceRoute with Loss & Latency
		Default: pi - Ping Loss & Latency.
	-tos 
		Specifies 8-bit value to use in IPv4 TOS field or IPv6 Traffic Class field.
	-w <number>
		Use specified number of iterations for warmup.
		Default: 1
	-T <string>
		Use the given title in log files for logging results.
		Default: <empty>		

Status

Protocol Bandwidth Connections/s Packets/s Latency Ping TraceRoute MyTraceRoute
TCP Yes Yes NA Yes Yes Yes Yes
UDP Yes NA Yes No NA No No
ICMP No NA NA NA Yes Yes Yes

Platform Support

Windows

Tested: Windows 10, Windows 7 SP1

Untested: Other Windows versions

Linux

Tested: Ubuntu Linux 18.04.1 LTS, OpenSuse Leap 15

Untested: Other Linux versions

OSX

Tested: OSX is tested by contributors

Other

No other platforms are tested at this time

Todo List

Todo list work items are shown below. Contributions are most welcome for these work items or any other features and bugfixes.

  • Test Ethr on other Windows versions, other Linux versions, FreeBSD and other OS
  • Support for UDP latency, TraceRoute and MyTraceRoute

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Comments
  • Error: could not get network stats

    Error: could not get network stats

    Hello. The latest version built from f0074aeb3580492e611afed2c220db54f0d116a3 shows errors when launched as server: could not get network stats And also statistics section is empty when launched in UI mode. Tested on Ubuntu 18.04

    opened by nepeta-cataria 14
  • MacOS Support - go build fails (779d5c1)

    MacOS Support - go build fails (779d5c1)

    MacOS(Mojave)10.14.1 (18B75) go1.11.2 darwin/amd64 (homebrew) ITerm2 Build 3.2.6

    $ go build ./serverui.go:88:2: undefined: hideCursor ./serverui.go:89:2: undefined: blockWindowResize ./stats.go:33:2: undefined: getNetDevStats ./stats.go:37:2: undefined: getTcpStats

    help wanted 
    opened by machinemob 13
  • Lint the code and make it follow the golang conventions

    Lint the code and make it follow the golang conventions

    When I read the code, many warnings raises from my IDE. It looks like it is complaining about the golang naming/comment convention.

    If you agree, I will fix them and add a Makefile to make it easy to find/fix.

    opened by lylex 7
  • Is UDP bandwidth test supported?

    Is UDP bandwidth test supported?

    Thanks for making this great tool. I am using this to test some UDP traffic. This is not exactlly an issue, just want to get some confirmations. It is marked in the status that UDP bandwidth is YES(I believe this indicates that UDP bandwidth test is supported). But UDP bandwidth is also mentioned in the TODO list. I want to use this bandwidth test feature for UDP. Can someone please help clarify if this is supported or not?

    • [ ] Support for UDP bandwidth & latency testing

    Protocol | Bandwidth | Connections/s | Packets/s | Latency -- | -- | -- | -- | -- TCP | Yes | Yes | No | Yes UDP | Yes | NA | Yes | No

    opened by Shanfang 4
  • Display unicode network interface name.

    Display unicode network interface name.

    https://github.com/microsoft/ethr/blob/fe09eed5fbce59a67e03295019b6258a1d7f8d3f/ui.go#L165

    Currently, unicode network interface name is not displayed correctly. Please change the code xoff++ ==> xoff = xoff + 2

    Thanks a lot.

    if_err

    opened by nogarder77 4
  • UDP performance on server side

    UDP performance on server side

    Hi. I am running a UDP network performance test with ethr. The client reports sending speed, but the server reports only 0 bits/s. Why is that?

    UDP/TCP ports 4200-4300 are open, so the traffic should pass. The same experiment with HTTP works well.

    I need to know the speed of receiving,

    Server

    ethr -s -ports control=4287,tcp=4299,udp=4201,http=4289,https=4288

    [RemoteAddress]  Proto   Bits/s   Conn/s    Pkt/s   Latency 
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    [**.**.***.***]    UDP        0
    Ending Bandwidth test from **.**.***.***
    

    Client

    ethr -c IP -n 1 -p udp -t b -ports control=4287,tcp=4299,udp=4201,http=4289,https=4288 -l 64KB

    [ ID]   Protocol    Interval      Bits/s
    [  6]     UDP      000-001 sec     1.90G
    [  6]     UDP      001-002 sec     1.89G
    [  6]     UDP      002-003 sec     1.89G
    [  6]     UDP      003-004 sec     1.89G
    [  6]     UDP      004-005 sec     1.89G
    [  6]     UDP      005-006 sec     1.89G
    [  6]     UDP      006-007 sec     1.89G
    [  6]     UDP      007-008 sec     1.89G
    [  6]     UDP      008-009 sec     1.89G
    [  6]     UDP      009-010 sec     1.89G
    
    opened by maxsharabayko 4
  • IP version output to display (server side)

    IP version output to display (server side)

    Hello!

    IP version output to display, when server side is in use. E.g.:

    ./ethr -4 -s
    Accepting IP version: ipv4
    Listening on 9999 for TCP bandwidth tests
    Listening on 9998 for TCP conn/s tests
    Listening on 9996 for TCP latency tests
    Listening on 9899 for HTTP bandwidth tests
    Listening on 9799 for HTTPS bandwidth tests
    Listening on 8888 for control plane
    
    ./ethr -6 -s
    Accepting IP version: ipv6
    Listening on 9999 for TCP bandwidth tests
    Listening on 9998 for TCP conn/s tests
    Listening on 9996 for TCP latency tests
    Listening on 9899 for HTTP bandwidth tests
    Listening on 9799 for HTTPS bandwidth tests
    Listening on 8888 for control plane
    
    ./ethr -4 -6 -s
    Accepting IP version: ipv4, ipv6
    Listening on 9999 for TCP bandwidth tests
    Listening on 9998 for TCP conn/s tests
    Listening on 9996 for TCP latency tests
    Listening on 9899 for HTTP bandwidth tests
    Listening on 9799 for HTTPS bandwidth tests
    Listening on 8888 for control plane
    
    ./ethr -s
    Accepting IP version: ipv4, ipv6
    Listening on 9999 for TCP bandwidth tests
    Listening on 9998 for TCP conn/s tests
    Listening on 9996 for TCP latency tests
    Listening on 9899 for HTTP bandwidth tests
    Listening on 9799 for HTTPS bandwidth tests
    Listening on 8888 for control plane
    

    Can be useful for dropping specified packets from client side. Personally, after some tests I have 0.5 ratio of initial connections due to multiple TCP6 CLOSE_WAIT connections (12 hours) in ss -tunlp output.

    opened by MikhailKasimov 4
  • -4 and -6 parameters are unrecognizable by ethr

    -4 and -6 parameters are unrecognizable by ethr

    Hello!

    Subj.

    Despite on -4 and -6 parameters, described in README.md file in Common Parameters paragraph, they are unrecognizable by ethr and are not displayed in help-info on -h key and when ethr is given without parameters.

    Use-cases I've tested on: ./ethr -4 - s and ./ethr -4 -c <server_IP_to_connect_to>. Both of them return ethr's help-info.

    Thanks!

    opened by MikhailKasimov 4
  • TCP Latency test are not supported for external client mode

    TCP Latency test are not supported for external client mode

    I'm getting the following error when trying to execute a tcp latency test

    [email protected]:~# ethr -6 -c haproxy:9999 -m x -t l -n 25
    Error: "Latency" test for "TCP" is not supported.
    
    Please use "ethr -h" for ethr command line arguments.
    

    According to the status, it says that latency tests are supported

    opened by scrollins 3
  • Client error when testing more than one instance with same server

    Client error when testing more than one instance with same server

    Clients : Android 8 / Android 9 Pie Server : Ubuntu Server 18.04

    Compiled from latest commit : 65627a0

    Steps to reproduce:

    Start the server Initialize the first client with ethr -c IP -p udp Initialize the second client with ethr -c IP -p -r udp

    second client will print this output:

    panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x23a5e4]

    goroutine 1 [running]: main.establishSession(0x100000001, 0x3e8000000001, 0x1000003e8, 0x4420010890, 0xf, 0x44200b6070, 0x34f4c0, 0x442005fb10) /root/go/src/ethr/client.go:74 +0x4a4 main.runClient(0x100000001, 0x3e8000000001, 0x1000003e8, 0x2540be400, 0x0, 0x7fc9bfa873, 0xd) /root/go/src/ethr/client.go:28 +0xc0 main.main() /root/go/src/ethr/ethr.go:374 +0x708

    Then the server will be waiting forever for the UDP packets.

    One more thing, when client sends the UDP packets, it will fill the pipe , in my case client tried to send 1Gbit of data in one try.

    opened by abraaocaldas 3
  • Add `dep`

    Add `dep`

    This PR adds dep as dependency manager for this project - as there are currently two external dependencies used, this ensures reproduceable builds for whoever clones this repo, regardless of packages available on their $GOPATH.

    opened by radu-matei 3
  • Server ip parameter does not accept IPv6 addresses, but says it should:

    Server ip parameter does not accept IPv6 addresses, but says it should:

    Examples:

    # ./ethr -s --ip  2001:db8:d401:21cd::6
    
    Ethr: Comprehensive Network Performance Measurement Tool (Version: UNKNOWN)
    Maintainer: Pankaj Garg (ipankajg @ LinkedIn | GitHub | Gmail | Twitter)
    
    -----------------------------------------------------------
    Accepting IP version: ipv4, ipv6
    Listening on port 8888 for TCP & UDP
    Fatal error running TCP server: listen tcp: address 2001:db8:d401:21cd::6:8888: too many colons in address
    
    # ./ethr -s --ip "[2001:db8:d401:21cd::6]"
    
    Ethr: Comprehensive Network Performance Measurement Tool (Version: UNKNOWN)
    Maintainer: Pankaj Garg (ipankajg @ LinkedIn | GitHub | Gmail | Twitter)
    
    Error: Invalid IP address: <[2001:db8:d401:21cd::6]> specified.
    Please use "ethr -h" for complete list of command line arguments.
    
    opened by grayaw 0
  • Support for request/response (with TCP connection remaining open)

    Support for request/response (with TCP connection remaining open)

    We want to simulate database traffic which is request/response, but the TCP connection remains open. Can this be simulated, and support multiple clients (we need 500).?

    opened by KurtSchenk 0
  • Fix bug in latency logging

    Fix bug in latency logging

    Due to a parameter mismatch between the emitLatencyResults and logLatency the percentile latencies are being incorrectly logged. This change makes the two functions consistent.

    opened by timguen 0
  • Issue for ethr latency test of AWS EC2 in two different regions

    Issue for ethr latency test of AWS EC2 in two different regions

    If you set up two EC2 in tow AWS regions, and test latency between them, there is no any result comes out. Even though the connection is valid, but sees all of packages are dropped by some reason. For instance: one EC2 in us-east-1, and the other in ap-southeast-1, you run command like below:

    for server EC2:
    ./ethr -s --port 5023.
    for client EC2:
    ./ethr -c xxxx.xxxx.xxxx.xxxx -n 16 --port 5023 -p tcp -t l
    

    And you got nothing related to valid result, but the connection is ok. Screen Shot 2022-05-19 at 19 25 23

    If you put two EC2 in the same region, and do the same test, and you will get the expected result.. Screen Shot 2022-05-19 at 19 27 17

    I noticed that AWS has a MTU 1500 bytes restriction for traffic over an internet gateway, so my question is does ethr latency test will send a package over the 1500 bytes size? And how can I solve this issue

    opened by terrificdm 0
  • Bandwidth measurements are not accurate

    Bandwidth measurements are not accurate

    The bandwidth gap between server and client is around 10% .

    
    # ./ethr -s -4
    
    Ethr: Comprehensive Network Performance Measurement Tool (Version: v1.0.0)
    Maintainer: Pankaj Garg (ipankajg @ LinkedIn | GitHub | Gmail | Twitter)
    
    -----------------------------------------------------------
    Accepting IP version: ipv4
    Listening on port 8888 for TCP & UDP
    -----------------------------------------------------------
    [RemoteAddress]  Proto   Bits/s   Conn/s    Pkt/s   Latency
    [    10.3.9.21]    TCP  265.09M        1     --        --
    [    10.3.9.21]    TCP    9.60G        0     --        --
    [    10.3.9.21]    TCP    9.07G        0     --        --
    [    10.3.9.21]    TCP    9.09G        0     --        --
    [    10.3.9.21]    TCP    9.66G        0     --        --
    [    10.3.9.21]    TCP    9.48G        0     --        --
    [    10.3.9.21]    TCP    9.47G        0     --        --
    [    10.3.9.21]    TCP    9.61G        0     --        --
    [    10.3.9.21]    TCP    9.19G        0     --        --
    [    10.3.9.21]    TCP    9.16G        0     --        --
    [    10.3.9.21]    TCP    9.55G        0     --        --
    
    
    ./ethr -c 10.3.9.14
    
    Ethr: Comprehensive Network Performance Measurement Tool (Version: v1.0.0)
    Maintainer: Pankaj Garg (ipankajg @ LinkedIn | GitHub | Gmail | Twitter)
    
    Using destination: 10.3.9.14, ip: 10.3.9.14, port: 8888
    [  5] local 10.3.9.21 port 35617 connected to 10.3.9.14 port 8888
    - - - - - - - - - - - - - - - - - - - - - - -
    [  ID ]   Protocol    Interval      Bits/s
    [    5]     TCP      000-001 sec     8.73G
    [    5]     TCP      001-002 sec     8.34G
    [    5]     TCP      002-003 sec     8.33G
    [    5]     TCP      003-004 sec     8.64G
    [    5]     TCP      004-005 sec     8.55G
    [    5]     TCP      005-006 sec     8.56G
    [    5]     TCP      006-007 sec     8.61G
    [    5]     TCP      007-008 sec     8.43G
    [    5]     TCP      008-009 sec     8.37G
    [    5]     TCP      009-010 sec     8.57G
    Ethr done, duration: 10s.
    Hint: Use -d parameter to change duration of the test.
    
    
    opened by fanqiehc 4
Releases(v1.0.0)
Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
Send network packets over a TCP or UDP connection.

Packet is the main class representing a single network message. It has a byte code indicating the type of the message and a []byte type payload.

Aero 71 Nov 28, 2022
UDP Transport: compress, encrypt and send any data reliably over unreliable UDP connections

udpt UDP Transport Compresses, encrypts and transfers data between a sender and receiver using UDP protocol. Features and Design Aims: Avoid the overh

Ali Bala 42 Nov 5, 2022
UDP output for beats to send events over UDP.

beats-udp-output How To Use Clone this project to elastic/beats/libbeat/output/ Modify elastic/beats/libbeat/publisher/includes/includes.go : // add i

ichx 0 Dec 11, 2021
Bee is a tool to scan ports by TCP and UDP protocols

Bee - Port scan tool ?? Bee is a tool to scan ports by TCP and UDP protocols Building from Source Code First, we compile the source code with the ligh

kraken 2 Oct 10, 2021
P2P Forwarder - a tool for farwarding tcp/udp ports. Made using libp2p.

P2P Forwarder A tool for farwarding ports. Made using libp2p. How it works A: opens desired ports ports inside P2P Forwarder A: shares it's id from P2

null 31 Nov 14, 2022
Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH.

Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH. Single executable including both client and server. Written in Go (golang). Chisel is mainly useful for passing through firewalls, though it can also be used to provide a secure endpoint into your network.

Jaime Pillora 8.4k Jan 1, 2023
netscanner - TCP/UDP scanner to find open or closed ports

netscanner netscanner - TCP/UDP scanner to find open or closed ports installation you have to run this command to install the program $ go get github.

R4yan 201 Dec 19, 2022
SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support

socks5 中文 SOCKS Protocol Version 5 Library. Full TCP/UDP and IPv4/IPv6 support. Goals: KISS, less is more, small API, code is like the original protoc

TxThinking 509 Jan 8, 2023
A socks5 server(tcp/udp) written in golang.

socks5-server A socks5 server(tcp/udp) written in golang. Usage Usage of /main: -l string local address (default "127.0.0.1:1080") -p stri

null 32 Nov 20, 2022
Program to simultaneously listen and respond on multiple TCP/UDP ports

listen Program to simultaneously listen on multiple TCP/UDP ports and reply back to anything sent along with IP addresses and lengths of data received

Purplecarrot 1 Feb 20, 2022
Golang pow implementation client <-> server over UDP and TCP protocols

Client <-> server over UDP and TCP pow protocol Denial-of-Service-attacks are a typical situation when providing services over a network. A method for

Nikita Kryuchkov 0 Jan 13, 2022
a go mini version TCP top on UDP for game connections or others.

sanhua sanhua(三花猫) is kind of cat with black, red and white color. This is a mini version TCP top on UDP, but with out resend lost packet. As we know.

Arion 1 May 31, 2022
C-ping is a very simple and small ping tool that sends ICMP Echo datagram to a host.

C-ping is a very simple and small ping tool that sends ICMP Echo datagram to a host.

Chen Chen 4 Aug 9, 2022
🚥 Yet another pinger: A high-performance ICMP ping implementation build on top of BPF technology.

yap Yet-Another-Pinger: A high-performance ICMP ping implementation build on top of BPF technology. yap uses the gopacket library to receive and handl

dongdong 44 Nov 9, 2022
Use ICMP requests to check the alive subnet.

Doge-AliveCheck Use ICMP requests to check the alive subnet. Build go build -ldflags "-s -w" -trimpath Usage Doge-AliveCheck.exe

TimWhite 22 Nov 11, 2022
Golang binary for data exfiltration with ICMP protocol

QueenSono ICMP Data Exfiltration A Golang Package for Data Exfiltration with ICMP protocol. QueenSono tool only relies on the fact that ICMP protocol

Ariary 115 Jan 3, 2023
[FORK] ICMP Ping library for Go

forked from go-ping/ping go get -u github.com/gandaldf/ping go-ping A simple but powerful ICMP echo (ping) library for Go, inspired by go-fastping. He

Diego Parisi 0 Oct 21, 2021
Use pingser to create client and server based on ICMP Protocol to send and receive custom message content.

pingser Use pingser to create client and server based on ICMP Protocol to send and receive custom message content. examples source code: ./examples Us

zznQ 13 Nov 9, 2022
Simple dashboard to check if hosts are up (via ICMP)

About ping-dashboard is a simple dashboard to quickly check if a large amount of hosts are up (via ICMP). Building $ cd /path/to/build/directory $ GOB

Kory Prince 0 Jan 14, 2022