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 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415
|
%
% param.inc - Parameter reference
%
% Written 2002,2004 by Werner Almesberger
% Copyright 2002 Bivio Networks, Network Robots
% Copyright 2002,20004 Werner Almesberger
%
%%beginskip
\def\R{$\bullet$}
\def\O{$\circ$}
\def\.{$\cdot$}
%%endskip
%%def\\R=*
%%def\\O=o
%%def\\\.=.
Note that this appendix only lists how \prog{tcng} expects parameters
to be used. This is not meant to be a description of the semantics of
parameters, or the underlying algorithms. For this type of information,
please consult the \cite{LARTC} Web site, and \cite{ALM99}.
% -----------------------------------------------------------------------------
\section{General parameters}
The following parameters are available on all queuing disciplines,
classes, filters, and filter elements:
\begin{center}
\begin{tabular}{lll}
Parameter & Unit & Description \\
\hline
\name{pragma} & list of strings & Implementation-specific data \\
\name{tag} & string & User-provided identification tag \\
\end{tabular}
\end{center}
Both parameters are optional.
% -----------------------------------------------------------------------------
\section{Queuing discipline parameters}
The following table shows which parameters are supported by which queuing
discipline, and whether they are optional (\O) or required (\R):
\begin{center}
\small
\begin{tabular}{l|ccccccccc}
Parameter & \name{cbq} &
\name{dsmark} &
\name{fifo} &
\name{gred} &
\name{htb} &
\name{prio} &
\name{red} &
\name{sfq} &
\name{tbf} \\
\hline
\name{avpkt} & \R & \. & \. & \. & \. &\. & \R & \. & \. \\
\name{bands} & \. & \. & \. & \. & \. &\O & \. & \. & \. \\
\name{bandwidth} & \R & \. & \. & \R & \. &\. & \R & \. & \. \\
\name{burst} & \. & \. & \. & \. & \. &\. & \R & \. & \R \\
\name{default\_index} & \. & \O & \. & \. & \. &\. & \. & \. & \. \\
\name{ecn} & \. & \. & \. & \. & \. &\. & \O & \. & \. \\
\name{ewma} & \O & \. & \. & \. & \. &\. & \. & \. & \. \\
\name{grio} & \. & \. & \. & \O & \. &\. & \. & \. & \. \\
\name{indices} & \. & \O & \. & \. & \. &\. & \. & \. & \. \\
\name{limit} & \. & \. & \O & \. & \. &\. & \R & \. & \R \\
\name{max} & \. & \. & \. & \. & \. &\. & \R & \. & \. \\
\name{min} & \. & \. & \. & \. & \. &\. & \R & \. & \. \\
\name{mpu} & \O & \. & \. & \. & \. &\. & \. & \. & \. \\
\name{mtu} & \. & \. & \. & \. & \. &\. & \. & \. & \O \\
\name{peakrate} & \. & \. & \. & \. & \. &\. & \. & \. & \O \\
\name{perturb} & \. & \. & \. & \. & \. &\. & \. & \O & \. \\
\name{priomap} & \O & \. & \. & \. & \. &\O & \. & \. & \. \\
\name{probability} & \. & \. & \. & \. & \. &\. & \O & \. & \. \\
\name{quantum} & \. & \. & \. & \. & \. &\. & \. & \O & \. \\
\name{r2q} & \. & \. & \. & \. & \O &\. & \. & \. & \. \\
\name{rate} & \R & \. & \. & \. & \. &\. & \. & \. & \R \\
\name{set\_tc\_index} & \. & \O & \. & \. & \. &\. & \. & \. & \. \\
\end{tabular}
\end{center}
The \name{ingress} queuing discipline has no parameters and has
therefore been omitted from the above table.
Units and meaning of the parameters are described below:
\begin{center}
\begin{tabular}{lll}
Parameter & Unit & Description \\
\hline
\name{avpkt} & Bytes & Average packet size \\
\name{bands} & integer & Number of bands \\
\name{bandwidth} & bps & Interface bandwidth \\
\name{burst} & Bytes & Burst size, typically $>=$ MTU \\
\name{default\_index} & integer & Index if no class matches \\
\name{ecn} & flag & Set CE instead of dropping \cite{RFC3168} \\
\name{ewma} & integer & EWMA weight is $2^{-ewma}$ \\
\name{grio} & flag & Enable RIO-like buffer sharing \\
\name{indices} & integer & Indices used for changing the DS field\\
\name{limit} & Bytes & Queue size limit in bytes \\
\name{limit} & pcks & Queue size limit in packets \\
\name{max} & Bytes & Minimum threshold ($min\_th$) \\
\name{min} & Bytes & Maximum threshold ($max\_th$) \\
\name{mpu} & Bytes & Minimum policed unit \\
\name{mtu} & Bytes & Maximum transmission unit \\
\name{peakrate} & bps & Peak data rate \\
\name{perturb} & secs & Perturbation interval \\
\name{priomap} & list of classes & Default class map \\
\name{probability} & floating-point & Maximum drop probability \\
\name{quantum} & Bytes & Maximum burst when scheduled \\
\name{quantum} & secs & Burst duration when scheduled
(\name{HTB} only) \\
\name{rate} & bps & Nominal data rate \\
\name{r2q} & integer & Rate to quantum conversion ratio
(deprecated) \\
\name{set\_tc\_index} & flag & Copy DS field to \name{tc\_index} \\
\end{tabular}
\end{center}
In addition to the parameters described in this section, queuing
disciplines with classes also allow default values for class parameters
to be specified at the queuing discipline. They are listed in the next
section.
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\subsection{Differences from \prog{tc} for \name{fifo}}
Unlike \prog{tc}, which has two types of FIFO queuing disciplines -- one
with the limit expressed in bytes(\name{bfifo}), and one with the limit
expressed in packets (\name{pfifo}) -- \prog{tcng} only uses one queuing
discipline (\name{fifo}), but allows the value of the \name{limit}
parameter to be either in bytes or in packets.
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\subsection{Differences from \prog{tc} for \name{htb}}
For setting the quantum, \prog{tcng} offers a better mechanism than
\prog{tc}: instead of using the slightly obscure \name{r2q} parameter,
users can directly specify the quantum as the time during which the
class can monopolize the link, which is then converted to the
corresponding number of bytes. For compatibility, also \name{r2q}
is supported.
% -----------------------------------------------------------------------------
\section{Class parameters}
The following table shows which class parameters are supported by which
queuing discipline, and whether they are optional (\O) or required (\R):
\begin{center}
\small
\begin{tabular}{l|cccc}
Parameter & \name{cbq} &
\name{dsmark} &
\name{gred} &
\name{htb} \\
\hline
\name{allot} & \R & \. & \. & \. \\
\name{avpkt} & \O & \. & \R & \. \\
\name{bandwidth} & \R & \. & \. & \. \\
\name{bounded} & \O & \. & \. & \. \\
\name{burst} & \O & \. & \R & \O \\
\name{cburst} & \. & \. & \. & \O \\
\name{ceil} & \. & \. & \. & \O \\
\name{default} & \. & \. & \O & \O \\
\name{isolated} & \O & \. & \. & \. \\
\name{ewma} & \O & \. & \. & \. \\
\name{limit} & \O & \. & \R & \. \\
\name{mask} & \. & \O & \. & \. \\
\name{max} & \O & \. & \R & \. \\
\name{maxburst} & \O & \. & \. & \. \\
\name{min} & \O & \. & \R & \. \\
\name{minburst} & \O & \. & \. & \. \\
\name{mpu} & \O & \. & \. & \. \\
\name{prio} & \O & \. & \O & \O \\
\name{probability} & \. & \. & \O & \. \\
\name{rate} & \R & \. & \. & \R \\
\name{value} & \. & \O & \. & \. \\
\name{weight} & \O & \. & \. & \. \\
\end{tabular}
\end{center}
Classes of \name{ingress} and \name{prio} have no parameters and have
therefore been omitted from the above table.
Units and meaning of parameters we haven't already described in the queuing
discipline section:
\begin{center}
\begin{tabular}{lll}
Parameter & Unit & Description \\
\hline
\name{allot} & Bytes & Sending credit when scheduled \\
\name{bounded} & flag & Class may not ``borrow'' bandwidth \\
\name{cburst} & Bytes & Burst exceeding \name{ceil} rate \\
\name{ceil} & bps & Maximum bandwidth a class can use \\
\name{default} & flag & Use this class if DP unknown or if
classification fails \\
\name{isolated} & flag & Neither ``borrow'' or ``lend'' bandwidth \\
\name{mask} & integer & DS field mask \\
\name{maxburst} & pcks & Maximum burst while over-limit \\
\name{minburst} & pcks & Minimum burst when scheduled \\
\name{prio} & integer & Scheduling priority \\
\name{value} & integer & New DS field value \\
\name{weight} & bps & Scheduling weight \\
\end{tabular}
\end{center}
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\subsection{Differences from \prog{tc} for \name{gred}}
While \prog{tc} has a \name{default} parameter at the queuing discipline,
``pointing'' to the class to select if the drop precedence value is too
large, \prog{tcng} uses a flag parameter, which is also called \name{default},
at the class for the same purpose.
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\subsection{Differences from \prog{tc} for \name{htb}}
Like with \name{gred}, \name{tcng} uses the parameter \name{default} to
mark the default class, instead of ``pointing'' to the class from the
queuing discipline.
% -----------------------------------------------------------------------------
\section{Filter parameters}
The following table shows which parameters are supported by which filter,
and whether they are optional (\O) or required (\R):
\begin{center}
\small
\begin{tabular}{l|cccc}
Parameter & \name{fw} &
\name{route} &
\name{rsvp} &
\name{tcindex} \\
\hline
\name{fall\_through} & \. & \. & \. & \O \\
\name{hash} & \. & \. & \. & \O \\
\name{mask} & \. & \. & \. & \O \\
\name{pass\_on} & \. & \. & \. & \O \\
\name{protocol} & \O & \O & \O & \O \\
\name{shift} & \. & \. & \. & \O \\
\end{tabular}
\end{center}
Units and meaning of the parameters are described below:
\begin{center}
\begin{tabular}{lll}
Parameter & Unit & Description \\
\hline
\name{fall\_through} & flag & If no match, calculate index \\
\name{hash} & integer & Hash table size \\
\name{mask} & integer & DS field value mask \\
\name{pass\_on} & flag & Negation of \name{fall\_through} \\
\name{protocol} & Ether protocol & Network layer protocol \\
\name{shift} & integer & Number of bits to right-shift DS field \\
\end{tabular}
\end{center}
The unit ``Ether protocol'' is special: the value can either be an integer,
or a string containing one of the names \name{ip}, \name{ipv4}, or
\name{ipv6}.
In addition to the parameters described in this section, filters
also allow default values for filter element parameters to be specified
at the filter. They are listed in the next section.
% -----------------------------------------------------------------------------
\section{Filter element parameters}
The following table shows which element parameters are supported by which
filter, and whether they are optional (\O) or required (\R):
\begin{center}
\small
\begin{tabular}{l|cc}
Parameter &
\name{route} &
\name{rsvp} \\
\hline
\name{ah} & \. & \O \\
\name{dport} & \. & \O \\
\name{dst} & \. & \R \\
\name{esp} & \. & \O \\
\name{from} & \O & \. \\
\name{fromif} & \O & \. \\
\name{ipproto} & \. & \O \\
\name{order} & \O & \. \\
\name{sport} & \. & \O \\
\name{src} & \. & \O \\
\name{to} & \O & \. \\
\end{tabular}
\end{center}
Elements of \name{fw} and \name{tcindex} have no parameters and have
therefore been omitted from the above table.
Units and meaning of parameters we haven't already described in the filter
section:
\begin{center}
\begin{tabular}{lll}
Parameter & Unit & Description \\
\hline
\name{ah} & integer & SPI in AH header \cite{RFC2402} \\
\name{dport} & port & Destination port number \\
\name{dst} & host & Destination IP address \\
\name{esp} & integer & SPI in ESP header \cite{RFC2406} \\
\name{from} & integer & Incoming realm \\
\name{fromif} & string & Incoming interface name \\
\name{ipproto} & IP protocol & Transport layer protocol \\
%% \name{order} & integer & \\ MUST BE ZERO ?!?
\name{sport} & port & Source port number \\
\name{src} & host & Source IP address \\
\name{to} & integer & Outgoing realm \\
\end{tabular}
\end{center}
The units ``host'', ``port'', and ``IP protocol'' are special: the
value can either be an integer, or a string containing the name of a
host, a service, or a transport-layer protocol, respectively. If a name
is given, \prog{tcng} invokes the corresponding resolver function of the
host to obtain the numeric value.
% -----------------------------------------------------------------------------
\section{Tunnel parameters}
Tunnels only take a single parameter, which is required:
\begin{center}
\begin{tabular}{lll}
Parameter & Unit & Description \\
\hline
\name{skip} & Bytes & Number of header bytes to remove \\
\end{tabular}
\end{center}
% -----------------------------------------------------------------------------
\section{Policer and bucket parameters}
The following table shows which element parameters are supported by buckets
and policers, and whether they are optional (\O) or required (\R):
\begin{center}
\small
\begin{tabular}{l|cc}
Parameter &
\name{bucket} &
\name{policer} \\
\hline
\name{avrate} & \. & \O /\R \\
\name{burst} & \R & \R /\O \\
\name{mpu} & \O & \O \\
\name{mtu} & \. & \O \\
\name{overflow} & \O & \O \\
\name{peakrate} & \. & \O \\
\name{rate} & \R & \R \\
\end{tabular}
\end{center}
For policers, either \name{avrate} or \name{burst} must be present.
\begin{center}
\begin{tabular}{lll}
Parameter & Unit & Description \\
\hline
\name{avrate} & bps & Average policed rate \\
\name{burst} & Bytes & Burst size, typically $>=$ MTU \\
\name{mpu} & Bytes & Minimum policed unit \\
\name{mtu} & Bytes & Maximum transmission unit \\
\name{overflow} & bucket & Bucket to receive excess credit \\
\name{peakrate} & bps & Peak data rate \\
\name{rate} & bps & Sustainable data rate \\
\end{tabular}
\end{center}
%==============================================================================
|