parameters.rst 6.14 KB
Newer Older
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
###################################
TAS Command-Line Parameters
###################################

******************************
IP Configuration
******************************

   *  ``--ip-addr=ADDR[/PREFIXLEN]``

      Set local IP address. Currently only exactly one IP address is supported.

   *  ``--ip-route=DEST[/PREFIX],NEXTHOP``

      Add an IP route for the destination subnet ``DEST/PREFIX`` via ``NEXTHOP``.
      Can be specified more than once.
      For example, a default route could be ``--ip-route=0.0.0.0/0,192.168.1.1``.


******************************
Fast Path Configuration
******************************

   *  ``--fp-cores-max=CORES``

      Maximum number of cores to use for fast-path. (default: 1)

   *  ``--fp-no-ints``

      Disable receive interrupts in the NIC driver, switches over to just
      polling.

   *  ``--fp-no-xsumoffload``

      Disable transmit checksum offloads, primarily useful to run TAS with NICs
      that do not support checksum offload, but comes at a slight performance
      cost.

   *  ``--fp-no-autoscale``

      Disable auto scaling, instead fix the number of cores used by the fast
      path to the maximum.

   *  ``--fp-no-hugepages``

      Do not use huge pages for the shared memory region between TAS and
      applications. (DPDK still uses huge pages for it's buffers unless
      explicitly disabled through ``--dpdk-extra``)

   *  ``--dpdk-extra=ARG``

      Pass ``ARG`` through as a parameter to the dpdk EAL. (see
      https://doc.dpdk.org/guides/linux_gsg/linux_eal_parameters.html)


******************************
TCP Protocol Parameters
******************************

   *  ``--tcp-rtt-init=RTT``

      Initial RTT used for congestion control. Is updated with actual
      measurements when they arrive.

   *  ``--tcp-link-bw=BANDWIDH``

      Link bandwidth in GBPS. TODO: what is this used for? (default: 10).

   *  ``--tcp-rxbuf-len=LEN``

      Connection receive buffer len in bytes (default: 8,192).

   *  ``--tcp-txbuf-len=LEN``

      Connection transmit buffer len in bytes (default: 8,192).

   *  ``--tcp-handshake-timeout=TIMEOUT``

      TCP handshake timeout in microseconds (default 10,000us).

   *  ``--tcp-handshake-retries=RETRIES``

      Maximum retries for timeouts during handshake.  (default: 10).


******************************
Congestion Control Parameters
******************************

   *  ``--cc=ALGORITHM``

      Choose which congestion control algorithm to use. The supported options
      are:

         +  ``dctcp-rate``: dctcp algorithm adapted to directly operate on the
            connection rate.

         +  ``dctcp-win``: original dctcp algorithm with the window converted to
            a rate for enforcement.

         + ``timely``: latency-based TIMELY control law.

         + ``const-rate``: set all connections to a constant rate (effectively
           disables congestion control, useful for debugging).

   *  ``--cc-control-interval=INT``

      Control interval length as multiples of the connection's RTT. (default: 2)

   *  ``--cc-control-granularity=G``

      Minimal control loop granularity. Control loop is only executed at most
      once every ``G`` microseconds. (default: 50)

   *  ``--cc-rexmit-ints=INTERVALS``

      Number of connection cnotrol intervals before TAS triggers a re-transmit.
      (default: 4).

DCTCP
=========================
For the ``dctcp-rate`` and ``dctcp-win`` algorithm:

   *  ``--cc-dctcp-weight=WEIGHT``

      EWMA weight for dctcp's ECN rate (alpha, default: 0.0625).

   *  ``--cc-dctcp-mimd=INC_FACT``

      Enable mutliplicative increase by ``INC_FACT`` (disabled by default, only
      used for tests).

   *  ``--cc-dctcp-min=RATE``

      Minimum rate to set for flows (kbps, default: 10000).

Timely
=========================
Parameters for the ``timely`` algorithm:

   *  ``--cc-timely-tlow=TIME``

      Tlow threshold in microseconds. (default: 30)

   *  ``--cc-timely-thigh=TIME``

      Thigh threshold in microseconds. (default: 150)

   *  ``--cc-timely-step=STEP``

      Additive increase step size in kbps (default: 10000)

   *  ``--cc-timely-init=RATE``

      Initial connection rate in kbps (default: 10000)

   *  ``--cc-timely-alpha=FRAC``

      EWMA weight for rtt diff. (default: 0.02)

   *  ``--cc-timely-beta=FRAC``

      Multiplicative decrease factor. (default: 0.8)

   *  ``--cc-timely-minrtt=RTT``

      Minimal RTT without queueing in microseconds. (default: 11)

   *  ``--cc-timely-minrate=RTT``

      Minimal connection rate to use in kbps (default: 10000)

Constant Rate
=========================
For the ``const-rate`` "algorithm" the following configuration options apply:

   *  ``--cc-const-rate=RATE``

      Sets the rate to use in kbps.


******************************
ARP Protocol Parameters
******************************

   *  ``--arp-timeout=TIMEOUT``

      Initial ARP request timetout in microseconds. This doubles with every
      retry (default: 500).

   *  ``--arp-timeout-max=TIMEOUT``

      Maximal ARP timeout in microseconds. If the retry-timeout grows larger
      than this, the request fails. (default: 10,000,000 us)


******************************
Slowpath Queues
******************************

   *  ``--nic-rx-len=LEN``

      Number of entries in TAS slowpath receive queue. (default: 16,384).

   *  ``--nic-tx-len=LEN``

      Number of entries in TAS slowpath transmit queue. (default: 16,384).

   *  ``--app-kin-len=LEN``

      Application slow path receive queue length in bytes. (default: 1,048,576).

   *  ``--app-kout-len=LEN``

      Application slow path transmit queue length in bytes. (default: 1,048,576).


******************************
Host Kernel Interface
******************************

   *  ``--kni-name=NAME``

      Enables the DPDK kernel network interface, by creating a dummy network
      interface with the name ``NAME``. (default: disabled)


******************************
Miscellaneous
******************************

   *  ``--quiet``

       Disable non-essential logging.

   *  ``--ready-fd=FD``

      Causes TAS to write to file descriptor ``FD`` when ready. Can be used by
      supervisor processes to detect when TAS is ready, e.g. used in full system
      tests.