All Projects → flowgrind → Flowgrind

flowgrind / Flowgrind

Licence: gpl-3.0
Advanced TCP traffic generator for Linux, FreeBSD, and Mac OS X

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Flowgrind

T Io
解决其它网络框架没有解决的用户痛点,让天下没有难开发的网络程序
Stars: ✭ 1,331 (+1057.39%)
Mutual labels:  tcp
Bouncer
Bouncer is a network TCP port redirector/forward proxy (like rinetd) with extra features like Reverse tunneling (like ssh -R), SSL tunneling (like stunnel), connection Failover, LoadBalancing and Clustering. In pure Java (BIO)
Stars: ✭ 103 (-10.43%)
Mutual labels:  tcp
Modbuspp
A C++ Library for Modbus TCP Protocol
Stars: ✭ 108 (-6.09%)
Mutual labels:  tcp
Packetsender
Network utility for sending / receiving TCP, UDP, SSL
Stars: ✭ 1,349 (+1073.04%)
Mutual labels:  tcp
Node Tcp Streaming Server
Experimental TCP video streaming server written in node.js. Streaming over TCP and redistributing using WebSockets.
Stars: ✭ 100 (-13.04%)
Mutual labels:  tcp
Reactor Netty
TCP/HTTP/UDP/QUIC client/server with Reactor over Netty
Stars: ✭ 1,743 (+1415.65%)
Mutual labels:  tcp
Workerman
An asynchronous event driven PHP socket framework. Supports HTTP, Websocket, SSL and other custom protocols. PHP>=5.3.
Stars: ✭ 9,617 (+8262.61%)
Mutual labels:  tcp
React Native Tcp Socket
React Native TCP socket API for Android, iOS & macOS with client SSL/TLS support
Stars: ✭ 112 (-2.61%)
Mutual labels:  tcp
Oscp5
An Open Sound Control (OSC) implementation for Java and Processing
Stars: ✭ 103 (-10.43%)
Mutual labels:  tcp
Ddos Rootsec
DDOS Archive by RootSec (Scanners, BotNets (Mirai and QBot Premium & Normal and more), Exploits, Methods, Sniffers)
Stars: ✭ 108 (-6.09%)
Mutual labels:  tcp
Pool
General Purpose Connection Pool for GRPC,RPC,TCP Sevice Cluster
Stars: ✭ 98 (-14.78%)
Mutual labels:  tcp
Simpletcp
Simple wrapper for TCP client and server in C# with SSL support
Stars: ✭ 99 (-13.91%)
Mutual labels:  tcp
Jetlinks Community
JetLinks 基于Java8,Spring Boot 2.x ,WebFlux,Netty,Vert.x,Reactor等开发, 是一个全响应式的企业级物联网平台。支持统一物模型管理,多种设备,多种厂家,统一管理。统一设备连接管理,多协议适配(TCP,MQTT,UDP,CoAP,HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议等设备。实时数据处理,设备告警,消息通知,数据转发。地理位置,数据可视化等。能帮助你快速建立物联网相关业务系统。
Stars: ✭ 2,405 (+1991.3%)
Mutual labels:  tcp
Smux
smux is a socket multiplexer written in Golang. It provides fast communication by efficiently a single connection.
Stars: ✭ 97 (-15.65%)
Mutual labels:  tcp
Pingtunnel
ping tunnel is a tool that advertises tcp/udp/socks5 traffic as icmp traffic for forwarding.
Stars: ✭ 1,904 (+1555.65%)
Mutual labels:  tcp
Cazador unr
Hacking tools
Stars: ✭ 95 (-17.39%)
Mutual labels:  tcp
Deta cache
缓存cache服务器
Stars: ✭ 106 (-7.83%)
Mutual labels:  tcp
Stream
NodeJS Modbus Stream
Stars: ✭ 114 (-0.87%)
Mutual labels:  tcp
Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (-2.61%)
Mutual labels:  tcp
Esp8266 Wifi Uart Bridge
Transparent WiFi (TCP, UDP) to UART Bridge, in AP or STATION mode
Stars: ✭ 107 (-6.96%)
Mutual labels:  tcp

Flowgrind - TCP traffic generator

Build Status Coverity Scan Build Status

Flowgrind is an advanced TCP traffic generator for testing and benchmarking Linux, FreeBSD, and Mac OS X TCP/IP stacks. In contrast to similar tools like iperf or netperf it features a distributed architecture, where throughput and other metrics are measured between arbitrary flowgrind server processes.

What It Can Do?

Flowgrind measures besides goodput (throughput), the application layer interarrival time (IAT) and round-trip time (RTT), blockcount and network transactions/s. Unlike most cross-platform testing tools, flowgrind can output some transport layer information, which are usually internal to the TCP/IP stack. For example, on Linux and FreeBSD this includes among others the kernel's estimation of the end-to-end RTT, the size of the TCP congestion window (CWND) and slow start threshold (SSTHRESH).

Flowgrind has a distributed architecture. It is split into two components: the flowgrind daemon and the flowgrind controller. Using the controller, flows between any two systems running the flowgrind daemon can be setup (third party tests). At regular intervals during the test the controller collects and displays the measured results from the daemons. It can run multiple flows at once with the same or different settings and individually schedule every one. Test and control connection can optionally be diverted to different interfaces.

The traffic generation itself is either bulk transfer, rate-limited, or sophisticated request/response tests. Flowgrind uses libpcap to automatically dump traffic for qualitative analysis.

Building flowgrind

Flowgrind builds cleanly on Linux, FreeBSD, and Mac OS X. Other operating systems are currently not planned to be supported. Flowgrind expects libxmlrpc-c and OSSP uuid to be available. Additionally, for the optional advanced traffic generation and automatic dump support libgsl an libpcap should be installed.

Flowgrind is built using GNU autotools on all supported platforms. You can build it using the following commands:

# cd flowgrind
# autoreconf -i
# ./configure
# make

For more information see INSTALL.md.

Instructions to run a test

  1. Start flowgrindd on all machines that should be the endpoint of a flow.
  2. Execute flowgrind on some machine (not necessarily one of the endpoints) with the host names of the endpoints passed through the -H option.

Assume we have 4 machines, host0, host1, host2 and host3 and flowgrind has been installed on all of them. We want to measure flows from host1 to host2 and from host1 to host3 in parallel, controlled from host0. First, we start flowgrindd on host1 to host3. On host0 we execute:

# flowgrind -n 2 -F 0 -H s=host1,d=host2 -F 1 -H s=host1,d=host3

In order to not influence the test connection with control traffic, flowgrind allows to setup the RPC control connection over a different interface. A typical scenario would be to test a WiFi connection and run the control traffic over a wired connection.

Assume two machines running flowgrindd, each having two network adapters, one wired, one wireless. We run flowgrind on a machine that is connected by wire to the test machines. First machine has addresses 10.0.0.1 and 192.168.0.1, the other has addresses 10.0.0.2 and 192.168.0.1. So our host argument will be this:

# flowgrind -H s=192.168.0.1/10.0.0.1,d=192.168.0.2/10.0.0.2

In words: test from 192.168.0.1 to 192.168.0.2 on the nodes identified by 10.0.0.1 and 10.0.0.2 respectively.

See also

There are other popular TCP measurement tools you might look into, especially if you are mainly interested in fast unidirectional bulk transfer performance.

  • Iperf3 - fresh reimplementation of the original iperf
  • Netperf - network performance benchmark, also supports unix domain sockets
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].