-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
159 lines (131 loc) · 8.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Get Download Count -->
<script type="text/javascript">
function downloadcb(response) {
var meta = response.meta;
var data = response.data;
document.getElementById('download_count').innerHTML=data.download_count;
}
var script = document.createElement('script');
script.src = 'https://api.github.com/repos/flowgrind/flowgrind/releases/assets/30793667?callback=downloadcb';
document.getElementsByTagName('head')[0].appendChild(script);
</script>
<title>Flowgrind by flowgrind</title>
</head>
<body>
<header>
<div class="inner">
<h1>Flowgrind</h1>
<h2>Advanced TCP traffic generator for Linux, FreeBSD, and Mac OS X</h2>
<a href="https://github.com/flowgrind/flowgrind" class="button"><small>View project on</small>GitHub</a>
</div>
</header>
<div id="content-wrapper">
<div class="inner clearfix">
<section id="main-content">
<h1>
<a name="flowgrind---tcp-traffic-generator" class="anchor" href="#flowgrind---tcp-traffic-generator">
<span class="octicon octicon-link"></span></a>Flowgrind - TCP traffic generator
</h1>
<p>Flowgrind is an advanced TCP traffic generator for testing and benchmarking
<strong>Linux</strong>, <strong>FreeBSD</strong>, and <strong>Mac OS X</strong> 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.</p>
<ul>
<li>Website: <a href="https://flowgrind.github.io">flowgrind.github.io</a></li>
<li>Issues: <a href="https://github.com/flowgrind/flowgrind/issues">GitHub Issues</a></li>
<li>API documentation: <a href="https://flowgrind.github.io/doxygen/index.html">Doxygen</a></li>
</ul>
<h1>
<a name="what-it-can-do" class="anchor" href="#what-it-can-do">
<span class="octicon octicon-link"></span></a>What It Can Do?
</h1>
<p>Flowgrind measures besides <strong>goodput</strong> (throughput), the application layer
<strong>interarrival time</strong> (IAT) and <strong>round-trip time</strong> (RTT),
<strong>blockcount</strong> and network <strong>transactions/s</strong>. 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).</p>
<p>Flowgrind has a distributed architecture. It is split into two components: the <em>flowgrind
daemon</em> and the <em>flowgrind controller</em>. 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.</p>
<p>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.</p>
<h1>
<a name="building-flowgrind" class="anchor" href="#building-flowgrind">
<span class="octicon octicon-link"></span></a>Building flowgrind
</h1>
<p>Flowgrind builds cleanly on <em>Linux</em>, <em>FreeBSD</em>, and <em>Mac OS X</em>. Other operating
systems are currently not planned to be supported. Flowgrind expects <code>libxmlrpc-c</code> to be
available. Additionally, for the optional advanced traffic generation and automatic dump support
<code>libgsl</code> an <code>libpcap</code> should be installed.</p>
<p>Flowgrind is built using GNU autotools on all supported platforms. You can build it using the
following commands:</p>
<pre><code># cd flowgrind
<!-- --># autoreconf -i
<!-- --># ./configure
<!-- --># make</code></pre>
<p>If you download a flowgrind release, the first step (autoreconf -i) is not needed. For more
information see the <a href="https://github.com/flowgrind/flowgrind/blob/master/INSTALL">INSTALL</a>
file.</p>
<h1>
<a name="instructions-to-run-a-test" class="anchor" href="#instructions-to-run-a-test">
<span class="octicon octicon-link"></span></a>Instructions to run a test
</h1>
<ol>
<li>Start <code>flowgrindd</code> on all machines that should be the endpoint of a flow.</li>
<li>Execute <code>flowgrind</code> on some machine (not necessarily one of the endpoints) with
the host names of the endpoints passed through the -H option.</li>
</ol>
<p>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 <code>flowgrindd</code> on host1 to host3. On host0 we
execute:</p>
<pre><code># flowgrind -n 2 -F 0 -H s=host1,d=host2 -F 1 -H s=host1,d=host3</code></pre>
<p>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.</p>
<p>Assume two machines running <code>flowgrindd</code>, each having two network adapters, one
wired, one wireless. We run <code>flowgrind</code> 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:</p>
<pre><code># flowgrind -H s=192.168.0.1/10.0.0.1,d=192.168.0.2/10.0.0.2</code></pre>
<p>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.</p>
</section>
<aside id="sidebar">
<a href="https://github.com/flowgrind/flowgrind/releases/download/flowgrind-0.8.2/flowgrind-0.8.2.tar.bz2" class="button">
<small>Download release</small>Version 0.8.2
</a>
<a href="https://github.com/flowgrind/flowgrind/releases/download/flowgrind-0.8.2/flowgrind-0.8.2.tar.bz2.asc" class="button">
<small>Download signature</small>.asc file
</a>
<p>Release date: 2021-01-16</br>
Release downloads: <span id="download_count"></span>
</p>
<p class="repo-owner"><a href="https://github.com/flowgrind/flowgrind"></a> is maintained by
<a href="https://github.com/flowgrind">flowgrind</a>.
</p>
<p>This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the
Architect theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.</p>
</aside>
</div>
</div>
</body>
</html>