xref: /aosp_15_r20/external/iptables/extensions/libxt_rateest.man (revision a71a954618bbadd4a345637e5edcf36eec826889)
1*a71a9546SAutomerger Merge WorkerThe rate estimator can match on estimated rates as collected by the RATEEST
2*a71a9546SAutomerger Merge Workertarget. It supports matching on absolute bps/pps values, comparing two rate
3*a71a9546SAutomerger Merge Workerestimators and matching on the difference between two rate estimators.
4*a71a9546SAutomerger Merge Worker.PP
5*a71a9546SAutomerger Merge WorkerFor a better understanding of the available options, these are all possible
6*a71a9546SAutomerger Merge Workercombinations:
7*a71a9546SAutomerger Merge Worker.\" * Absolute:
8*a71a9546SAutomerger Merge Worker.IP \(bu 4
9*a71a9546SAutomerger Merge Worker\fBrateest\fP \fIoperator\fP \fBrateest-bps\fP
10*a71a9546SAutomerger Merge Worker.IP \(bu 4
11*a71a9546SAutomerger Merge Worker\fBrateest\fP \fIoperator\fP \fBrateest-pps\fP
12*a71a9546SAutomerger Merge Worker.\" * Absolute + Delta:
13*a71a9546SAutomerger Merge Worker.IP \(bu 4
14*a71a9546SAutomerger Merge Worker(\fBrateest\fP minus \fBrateest-bps1\fP) \fIoperator\fP \fBrateest-bps2\fP
15*a71a9546SAutomerger Merge Worker.IP \(bu 4
16*a71a9546SAutomerger Merge Worker(\fBrateest\fP minus \fBrateest-pps1\fP) \fIoperator\fP \fBrateest-pps2\fP
17*a71a9546SAutomerger Merge Worker.\" * Relative:
18*a71a9546SAutomerger Merge Worker.IP \(bu 4
19*a71a9546SAutomerger Merge Worker\fBrateest1\fP \fIoperator\fP \fBrateest2\fP \fBrateest-bps\fP(without rate!)
20*a71a9546SAutomerger Merge Worker.IP \(bu 4
21*a71a9546SAutomerger Merge Worker\fBrateest1\fP \fIoperator\fP \fBrateest2\fP \fBrateest-pps\fP(without rate!)
22*a71a9546SAutomerger Merge Worker.\" * Relative + Delta:
23*a71a9546SAutomerger Merge Worker.IP \(bu 4
24*a71a9546SAutomerger Merge Worker(\fBrateest1\fP minus \fBrateest-bps1\fP) \fIoperator\fP
25*a71a9546SAutomerger Merge Worker(\fBrateest2\fP minus \fBrateest-bps2\fP)
26*a71a9546SAutomerger Merge Worker.IP \(bu 4
27*a71a9546SAutomerger Merge Worker(\fBrateest1\fP minus \fBrateest-pps1\fP) \fIoperator\fP
28*a71a9546SAutomerger Merge Worker(\fBrateest2\fP minus \fBrateest-pps2\fP)
29*a71a9546SAutomerger Merge Worker.TP
30*a71a9546SAutomerger Merge Worker\fB\-\-rateest\-delta\fP
31*a71a9546SAutomerger Merge WorkerFor each estimator (either absolute or relative mode), calculate the difference
32*a71a9546SAutomerger Merge Workerbetween the estimator-determined flow rate and the static value chosen with the
33*a71a9546SAutomerger Merge WorkerBPS/PPS options. If the flow rate is higher than the specified BPS/PPS, 0 will
34*a71a9546SAutomerger Merge Workerbe used instead of a negative value. In other words, "max(0, rateest#_rate -
35*a71a9546SAutomerger Merge Workerrateest#_bps)" is used.
36*a71a9546SAutomerger Merge Worker.TP
37*a71a9546SAutomerger Merge Worker[\fB!\fP] \fB\-\-rateest\-lt\fP
38*a71a9546SAutomerger Merge WorkerMatch if rate is less than given rate/estimator.
39*a71a9546SAutomerger Merge Worker.TP
40*a71a9546SAutomerger Merge Worker[\fB!\fP] \fB\-\-rateest\-gt\fP
41*a71a9546SAutomerger Merge WorkerMatch if rate is greater than given rate/estimator.
42*a71a9546SAutomerger Merge Worker.TP
43*a71a9546SAutomerger Merge Worker[\fB!\fP] \fB\-\-rateest\-eq\fP
44*a71a9546SAutomerger Merge WorkerMatch if rate is equal to given rate/estimator.
45*a71a9546SAutomerger Merge Worker.PP
46*a71a9546SAutomerger Merge WorkerIn the so-called "absolute mode", only one rate estimator is used and compared
47*a71a9546SAutomerger Merge Workeragainst a static value, while in "relative mode", two rate estimators are
48*a71a9546SAutomerger Merge Workercompared against another.
49*a71a9546SAutomerger Merge Worker.TP
50*a71a9546SAutomerger Merge Worker\fB\-\-rateest\fP \fIname\fP
51*a71a9546SAutomerger Merge WorkerName of the one rate estimator for absolute mode.
52*a71a9546SAutomerger Merge Worker.TP
53*a71a9546SAutomerger Merge Worker\fB\-\-rateest1\fP \fIname\fP
54*a71a9546SAutomerger Merge Worker.TP
55*a71a9546SAutomerger Merge Worker\fB\-\-rateest2\fP \fIname\fP
56*a71a9546SAutomerger Merge WorkerThe names of the two rate estimators for relative mode.
57*a71a9546SAutomerger Merge Worker.TP
58*a71a9546SAutomerger Merge Worker\fB\-\-rateest\-bps\fP [\fIvalue\fP]
59*a71a9546SAutomerger Merge Worker.TP
60*a71a9546SAutomerger Merge Worker\fB\-\-rateest\-pps\fP [\fIvalue\fP]
61*a71a9546SAutomerger Merge Worker.TP
62*a71a9546SAutomerger Merge Worker\fB\-\-rateest\-bps1\fP [\fIvalue\fP]
63*a71a9546SAutomerger Merge Worker.TP
64*a71a9546SAutomerger Merge Worker\fB\-\-rateest\-bps2\fP [\fIvalue\fP]
65*a71a9546SAutomerger Merge Worker.TP
66*a71a9546SAutomerger Merge Worker\fB\-\-rateest\-pps1\fP [\fIvalue\fP]
67*a71a9546SAutomerger Merge Worker.TP
68*a71a9546SAutomerger Merge Worker\fB\-\-rateest\-pps2\fP [\fIvalue\fP]
69*a71a9546SAutomerger Merge WorkerCompare the estimator(s) by bytes or packets per second, and compare against
70*a71a9546SAutomerger Merge Workerthe chosen value. See the above bullet list for which option is to be used in
71*a71a9546SAutomerger Merge Workerwhich case. A unit suffix may be used - available ones are: bit, [kmgt]bit,
72*a71a9546SAutomerger Merge Worker[KMGT]ibit, Bps, [KMGT]Bps, [KMGT]iBps.
73*a71a9546SAutomerger Merge Worker.PP
74*a71a9546SAutomerger Merge WorkerExample: This is what can be used to route outgoing data connections from an
75*a71a9546SAutomerger Merge WorkerFTP server over two lines based on the available bandwidth at the time the data
76*a71a9546SAutomerger Merge Workerconnection was started:
77*a71a9546SAutomerger Merge Worker.PP
78*a71a9546SAutomerger Merge Worker# Estimate outgoing rates
79*a71a9546SAutomerger Merge Worker.PP
80*a71a9546SAutomerger Merge Workeriptables \-t mangle \-A POSTROUTING \-o eth0 \-j RATEEST \-\-rateest\-name eth0
81*a71a9546SAutomerger Merge Worker\-\-rateest\-interval 250ms \-\-rateest\-ewma 0.5s
82*a71a9546SAutomerger Merge Worker.PP
83*a71a9546SAutomerger Merge Workeriptables \-t mangle \-A POSTROUTING \-o ppp0 \-j RATEEST \-\-rateest\-name ppp0
84*a71a9546SAutomerger Merge Worker\-\-rateest\-interval 250ms \-\-rateest\-ewma 0.5s
85*a71a9546SAutomerger Merge Worker.PP
86*a71a9546SAutomerger Merge Worker# Mark based on available bandwidth
87*a71a9546SAutomerger Merge Worker.PP
88*a71a9546SAutomerger Merge Workeriptables \-t mangle \-A balance \-m conntrack \-\-ctstate NEW \-m helper \-\-helper ftp
89*a71a9546SAutomerger Merge Worker\-m rateest \-\-rateest\-delta \-\-rateest1 eth0 \-\-rateest\-bps1 2.5mbit \-\-rateest\-gt
90*a71a9546SAutomerger Merge Worker\-\-rateest2 ppp0 \-\-rateest\-bps2 2mbit \-j CONNMARK \-\-set\-mark 1
91*a71a9546SAutomerger Merge Worker.PP
92*a71a9546SAutomerger Merge Workeriptables \-t mangle \-A balance \-m conntrack \-\-ctstate NEW \-m helper \-\-helper ftp
93*a71a9546SAutomerger Merge Worker\-m rateest \-\-rateest\-delta \-\-rateest1 ppp0 \-\-rateest\-bps1 2mbit \-\-rateest\-gt
94*a71a9546SAutomerger Merge Worker\-\-rateest2 eth0 \-\-rateest\-bps2 2.5mbit \-j CONNMARK \-\-set\-mark 2
95*a71a9546SAutomerger Merge Worker.PP
96*a71a9546SAutomerger Merge Workeriptables \-t mangle \-A balance \-j CONNMARK \-\-restore\-mark
97