Skip to content
File

Blob: firmware/vendor/str0m/docs/bwe-dataflow.svg

xml347 lines
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4<!-- Generated by graphviz version 12.2.1 (20241206.2353)
5 -->
6<!-- Title: BWE_DataFlow Pages: 1 -->
7<svg width="1426pt" height="481pt"
8 viewBox="0.00 0.00 1426.29 481.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 477)">
10<title>BWE_DataFlow</title>
11<polygon fill="white" stroke="none" points="-4,4 -4,-477 1422.29,-477 1422.29,4 -4,4"/>
12<g id="clust1" class="cluster">
13<title>cluster_delay</title>
14<polygon fill="none" stroke="darkred" stroke-dasharray="5,2" points="508.71,-350 508.71,-465 1408,-465 1408,-350 508.71,-350"/>
15<text text-anchor="middle" x="958.35" y="-447.7" font-family="Times,serif" font-size="14.00">Delay&#45;Based Estimation</text>
16</g>
17<g id="clust2" class="cluster">
18<title>cluster_probe</title>
19<polygon fill="none" stroke="purple" stroke-dasharray="5,2" points="507.08,-8 507.08,-149 598.83,-149 598.83,-8 507.08,-8"/>
20<text text-anchor="middle" x="552.96" y="-131.7" font-family="Times,serif" font-size="14.00">Probe System</text>
21</g>
22<g id="clust3" class="cluster">
23<title>cluster_pacer</title>
24<polygon fill="none" stroke="darkgreen" stroke-dasharray="5,2" points="754.96,-69 754.96,-167 1121.71,-167 1121.71,-69 754.96,-69"/>
25<text text-anchor="middle" x="938.33" y="-149.7" font-family="Times,serif" font-size="14.00">Pacing System</text>
26</g>
27<g id="clust4" class="cluster">
28<title>cluster_alr</title>
29<polygon fill="none" stroke="orange" stroke-dasharray="5,2" points="266.96,-112 266.96,-253 376.21,-253 376.21,-112 266.96,-112"/>
30<text text-anchor="middle" x="321.58" y="-235.7" font-family="Times,serif" font-size="14.00">ALR System</text>
31</g>
32<!-- TWCC -->
33<g id="node1" class="node">
34<title>TWCC</title>
35<ellipse fill="lightblue" stroke="black" cx="78.67" cy="-306" rx="78.67" ry="28.99"/>
36<text text-anchor="middle" x="78.67" y="-309.2" font-family="Times,serif" font-size="14.00">TWCC Feedback</text>
37<text text-anchor="middle" x="78.67" y="-292.7" font-family="Times,serif" font-size="14.00">(from remote)</text>
38</g>
39<!-- SSBE -->
40<g id="node4" class="node">
41<title>SSBE</title>
42<path fill="gold" stroke="black" d="M817.21,-233.75C817.21,-233.75 765.96,-233.75 765.96,-233.75 759.96,-233.75 753.96,-227.75 753.96,-221.75 753.96,-221.75 753.96,-188.25 753.96,-188.25 753.96,-182.25 759.96,-176.25 765.96,-176.25 765.96,-176.25 817.21,-176.25 817.21,-176.25 823.21,-176.25 829.21,-182.25 829.21,-188.25 829.21,-188.25 829.21,-221.75 829.21,-221.75 829.21,-227.75 823.21,-233.75 817.21,-233.75"/>
43<text text-anchor="middle" x="791.58" y="-216.45" font-family="Times,serif" font-size="14.00">SendSide</text>
44<text text-anchor="middle" x="791.58" y="-199.95" font-family="Times,serif" font-size="14.00">Bandwidth</text>
45<text text-anchor="middle" x="791.58" y="-183.45" font-family="Times,serif" font-size="14.00">Estimator</text>
46</g>
47<!-- TWCC&#45;&gt;SSBE -->
48<g id="edge1" class="edge">
49<title>TWCC&#45;&gt;SSBE</title>
50<path fill="none" stroke="black" d="M115.36,-332.08C193.85,-386.01 383.48,-497.11 497.08,-402 516.47,-385.77 491.75,-366.1 507.08,-346 571.01,-262.17 634.81,-308.22 726.96,-257 735.11,-252.47 743.25,-246.86 750.86,-241.01"/>
51<polygon fill="black" stroke="black" points="752.69,-244.02 758.32,-235.04 748.32,-238.56 752.69,-244.02"/>
52<text text-anchor="middle" x="444.58" y="-442.3" font-family="Times,serif" font-size="14.00">TwccSendRecord[]</text>
53</g>
54<!-- ABE -->
55<g id="node9" class="node">
56<title>ABE</title>
57<polygon fill="lightcyan" stroke="black" points="367.46,-354.5 275.71,-354.5 275.71,-313.5 367.46,-313.5 367.46,-354.5"/>
58<text text-anchor="middle" x="321.58" y="-337.2" font-family="Times,serif" font-size="14.00">Acked Bitrate</text>
59<text text-anchor="middle" x="321.58" y="-320.7" font-family="Times,serif" font-size="14.00">Estimator</text>
60</g>
61<!-- TWCC&#45;&gt;ABE -->
62<g id="edge2" class="edge">
63<title>TWCC&#45;&gt;ABE</title>
64<path fill="none" stroke="black" d="M154.24,-314.67C189.72,-318.79 231.44,-323.64 264.23,-327.45"/>
65<polygon fill="black" stroke="black" points="263.58,-330.9 273.92,-328.58 264.39,-323.95 263.58,-330.9"/>
66<text text-anchor="middle" x="213.21" y="-328.93" font-family="Times,serif" font-size="14.00">acked packets</text>
67</g>
68<!-- LC -->
69<g id="node10" class="node">
70<title>LC</title>
71<polygon fill="lightpink" stroke="black" points="588.21,-267.5 516.71,-267.5 516.71,-226.5 588.21,-226.5 588.21,-267.5"/>
72<text text-anchor="middle" x="552.46" y="-250.2" font-family="Times,serif" font-size="14.00">Loss</text>
73<text text-anchor="middle" x="552.46" y="-233.7" font-family="Times,serif" font-size="14.00">Controller</text>
74</g>
75<!-- TWCC&#45;&gt;LC -->
76<g id="edge13" class="edge">
77<title>TWCC&#45;&gt;LC</title>
78<path fill="none" stroke="black" d="M155.05,-298.73C266.19,-287.91 464.41,-268.18 497.08,-262 499.72,-261.5 502.42,-260.94 505.13,-260.33"/>
79<polygon fill="black" stroke="black" points="505.9,-263.74 514.79,-257.97 504.25,-256.94 505.9,-263.74"/>
80<text text-anchor="middle" x="321.58" y="-290.45" font-family="Times,serif" font-size="14.00">packet results</text>
81</g>
82<!-- PE -->
83<g id="node12" class="node">
84<title>PE</title>
85<polygon fill="plum" stroke="black" points="587.08,-57.5 517.83,-57.5 517.83,-16.5 587.08,-16.5 587.08,-57.5"/>
86<text text-anchor="middle" x="552.46" y="-40.2" font-family="Times,serif" font-size="14.00">Probe</text>
87<text text-anchor="middle" x="552.46" y="-23.7" font-family="Times,serif" font-size="14.00">Estimator</text>
88</g>
89<!-- TWCC&#45;&gt;PE -->
90<g id="edge18" class="edge">
91<title>TWCC&#45;&gt;PE</title>
92<path fill="none" stroke="purple" d="M93.83,-277.18C120.22,-226.84 182.06,-123.62 266.96,-75 342.56,-31.7 447.6,-29.82 506.6,-32.98"/>
93<polygon fill="purple" stroke="purple" points="506.06,-36.45 516.26,-33.58 506.49,-29.47 506.06,-36.45"/>
94<text text-anchor="middle" x="321.58" y="-94.7" font-family="Times,serif" font-size="14.00">TwccSendRecord[]</text>
95<text text-anchor="middle" x="321.58" y="-78.2" font-family="Times,serif" font-size="14.00">(filtered by cluster)</text>
96</g>
97<!-- Application -->
98<g id="node2" class="node">
99<title>Application</title>
100<ellipse fill="lightblue" stroke="black" cx="1054.71" cy="-263" rx="54.42" ry="18"/>
101<text text-anchor="middle" x="1054.71" y="-257.95" font-family="Times,serif" font-size="14.00">Application</text>
102</g>
103<!-- Network -->
104<g id="node3" class="node">
105<title>Network</title>
106<ellipse fill="lightblue" stroke="black" cx="1357.12" cy="-106" rx="61.16" ry="28.99"/>
107<text text-anchor="middle" x="1357.12" y="-109.2" font-family="Times,serif" font-size="14.00">Network</text>
108<text text-anchor="middle" x="1357.12" y="-92.7" font-family="Times,serif" font-size="14.00">(packets out)</text>
109</g>
110<!-- SSBE&#45;&gt;Application -->
111<g id="edge3" class="edge">
112<title>SSBE&#45;&gt;Application</title>
113<path fill="none" stroke="blue" stroke-width="2" d="M829.44,-229.15C837.94,-233.77 847.15,-238.07 856.21,-241 898.53,-254.69 948.31,-260.17 987.31,-262.24"/>
114<polygon fill="blue" stroke="blue" stroke-width="2" points="986.92,-265.73 997.07,-262.68 987.24,-258.73 986.92,-265.73"/>
115<text text-anchor="middle" x="916.96" y="-264.82" font-family="Times,serif" font-size="14.00">bandwidth estimate</text>
116</g>
117<!-- DC -->
118<g id="node5" class="node">
119<title>DC</title>
120<polygon fill="lightcoral" stroke="black" points="588.21,-399.5 516.71,-399.5 516.71,-358.5 588.21,-358.5 588.21,-399.5"/>
121<text text-anchor="middle" x="552.46" y="-382.2" font-family="Times,serif" font-size="14.00">Delay</text>
122<text text-anchor="middle" x="552.46" y="-365.7" font-family="Times,serif" font-size="14.00">Controller</text>
123</g>
124<!-- SSBE&#45;&gt;DC -->
125<g id="edge20" class="edge">
126<title>SSBE&#45;&gt;DC</title>
127<path fill="none" stroke="black" d="M784.15,-234.1C776.02,-263.86 759.03,-309.14 726.96,-334 684.97,-366.55 661.06,-343.96 609.96,-358.5 606.44,-359.5 602.84,-360.61 599.22,-361.78"/>
128<polygon fill="black" stroke="black" points="598.25,-358.41 589.9,-364.94 600.5,-365.04 598.25,-358.41"/>
129<text text-anchor="middle" x="668.46" y="-361.7" font-family="Times,serif" font-size="14.00">probe result</text>
130</g>
131<!-- SSBE&#45;&gt;PE -->
132<g id="edge15" class="edge">
133<title>SSBE&#45;&gt;PE</title>
134<path fill="none" stroke="purple" d="M753.53,-181.79C750.24,-178.51 747.28,-174.91 744.96,-171 716.06,-122.37 768.83,-83.04 726.96,-45 692.83,-14 637.57,-17.18 598.6,-24.76"/>
135<polygon fill="purple" stroke="purple" points="598.11,-21.29 589.05,-26.8 599.56,-28.14 598.11,-21.29"/>
136<text text-anchor="middle" x="668.46" y="-64.7" font-family="Times,serif" font-size="14.00">start probe</text>
137<text text-anchor="middle" x="668.46" y="-48.2" font-family="Times,serif" font-size="14.00">(ProbeClusterConfig)</text>
138</g>
139<!-- ALR -->
140<g id="node13" class="node">
141<title>ALR</title>
142<polygon fill="wheat" stroke="black" points="352.83,-161.5 290.33,-161.5 290.33,-120.5 352.83,-120.5 352.83,-161.5"/>
143<text text-anchor="middle" x="321.58" y="-144.2" font-family="Times,serif" font-size="14.00">ALR</text>
144<text text-anchor="middle" x="321.58" y="-127.7" font-family="Times,serif" font-size="14.00">Detector</text>
145</g>
146<!-- SSBE&#45;&gt;ALR -->
147<g id="edge23" class="edge">
148<title>SSBE&#45;&gt;ALR</title>
149<path fill="none" stroke="black" d="M753.86,-208.07C695.57,-210.98 580.9,-208.45 507.08,-153 499.14,-147.03 505.54,-138.22 497.08,-133 457.05,-108.26 401.43,-116.45 363.83,-126.74"/>
150<polygon fill="black" stroke="black" points="363.33,-123.24 354.71,-129.4 365.29,-129.96 363.33,-123.24"/>
151<text text-anchor="middle" x="552.46" y="-197.34" font-family="Times,serif" font-size="14.00">media sent</text>
152</g>
153<!-- Pacer -->
154<g id="node15" class="node">
155<title>Pacer</title>
156<polygon fill="palegreen" stroke="black" points="1113.71,-134.75 995.71,-134.75 995.71,-77.25 1113.71,-77.25 1113.71,-134.75"/>
157<text text-anchor="middle" x="1054.71" y="-117.45" font-family="Times,serif" font-size="14.00">Pacer</text>
158<text text-anchor="middle" x="1054.71" y="-100.95" font-family="Times,serif" font-size="14.00">(LeakyBucket +</text>
159<text text-anchor="middle" x="1054.71" y="-84.45" font-family="Times,serif" font-size="14.00">ProbeClusterState)</text>
160</g>
161<!-- SSBE&#45;&gt;Pacer -->
162<g id="edge16" class="edge">
163<title>SSBE&#45;&gt;Pacer</title>
164<path fill="none" stroke="purple" d="M829.38,-178.45C832.42,-176 835.4,-173.49 838.21,-171 846.9,-163.27 846,-157.57 856.21,-152 904.44,-125.66 924.33,-142.09 977.71,-129 979.96,-128.45 982.24,-127.87 984.54,-127.27"/>
165<polygon fill="purple" stroke="purple" points="985.18,-130.72 993.91,-124.73 983.35,-123.97 985.18,-130.72"/>
166<text text-anchor="middle" x="916.96" y="-171.7" font-family="Times,serif" font-size="14.00">start probe</text>
167<text text-anchor="middle" x="916.96" y="-155.2" font-family="Times,serif" font-size="14.00">(ProbeClusterConfig)</text>
168</g>
169<!-- PacerCtrl -->
170<g id="node16" class="node">
171<title>PacerCtrl</title>
172<polygon fill="palegreen" stroke="black" points="820.21,-126.5 762.96,-126.5 762.96,-85.5 820.21,-85.5 820.21,-126.5"/>
173<text text-anchor="middle" x="791.58" y="-109.2" font-family="Times,serif" font-size="14.00">Pacer</text>
174<text text-anchor="middle" x="791.58" y="-92.7" font-family="Times,serif" font-size="14.00">Control</text>
175</g>
176<!-- SSBE&#45;&gt;PacerCtrl -->
177<g id="edge4" class="edge">
178<title>SSBE&#45;&gt;PacerCtrl</title>
179<path fill="none" stroke="black" d="M791.58,-175.77C791.58,-164.03 791.58,-150.45 791.58,-138.4"/>
180<polygon fill="black" stroke="black" points="795.08,-138.51 791.58,-128.51 788.08,-138.51 795.08,-138.51"/>
181<text text-anchor="middle" x="780.33" y="-146.32" font-family="Times,serif" font-size="14.00">estimate</text>
182</g>
183<!-- DC&#45;&gt;SSBE -->
184<g id="edge9" class="edge">
185<title>DC&#45;&gt;SSBE</title>
186<path fill="none" stroke="red" stroke-width="2" d="M567.29,-358.11C577.47,-344.42 592.52,-327.32 609.96,-317.5 656.17,-291.47 682.42,-322.81 726.96,-294 745.4,-282.07 760.17,-262.75 770.81,-245.16"/>
187<polygon fill="red" stroke="red" stroke-width="2" points="773.8,-246.99 775.71,-236.57 767.72,-243.52 773.8,-246.99"/>
188<text text-anchor="middle" x="668.46" y="-320.7" font-family="Times,serif" font-size="14.00">delay estimate</text>
189</g>
190<!-- AGA -->
191<g id="node6" class="node">
192<title>AGA</title>
193<polygon fill="lightyellow" stroke="black" points="838.21,-399.5 744.96,-399.5 744.96,-358.5 838.21,-358.5 838.21,-399.5"/>
194<text text-anchor="middle" x="791.58" y="-382.2" font-family="Times,serif" font-size="14.00">Arrival Group</text>
195<text text-anchor="middle" x="791.58" y="-365.7" font-family="Times,serif" font-size="14.00">Accumulator</text>
196</g>
197<!-- DC&#45;&gt;AGA -->
198<g id="edge5" class="edge">
199<title>DC&#45;&gt;AGA</title>
200<path fill="none" stroke="black" d="M588.7,-379C626.8,-379 688.1,-379 733.17,-379"/>
201<polygon fill="black" stroke="black" points="733.04,-382.5 743.04,-379 733.04,-375.5 733.04,-382.5"/>
202<text text-anchor="middle" x="668.46" y="-382.2" font-family="Times,serif" font-size="14.00">acked packets</text>
203</g>
204<!-- TE -->
205<g id="node7" class="node">
206<title>TE</title>
207<polygon fill="lightyellow" stroke="black" points="1089.33,-399.5 1020.08,-399.5 1020.08,-358.5 1089.33,-358.5 1089.33,-399.5"/>
208<text text-anchor="middle" x="1054.71" y="-382.2" font-family="Times,serif" font-size="14.00">Trendline</text>
209<text text-anchor="middle" x="1054.71" y="-365.7" font-family="Times,serif" font-size="14.00">Estimator</text>
210</g>
211<!-- AGA&#45;&gt;TE -->
212<g id="edge6" class="edge">
213<title>AGA&#45;&gt;TE</title>
214<path fill="none" stroke="black" d="M838.45,-377.79C844.42,-377.67 850.46,-377.57 856.21,-377.5 910.2,-376.86 923.71,-376.97 977.71,-377.5 987.57,-377.6 998.15,-377.77 1008.2,-377.96"/>
215<polygon fill="black" stroke="black" points="1008.08,-381.45 1018.15,-378.15 1008.22,-374.46 1008.08,-381.45"/>
216<text text-anchor="middle" x="916.96" y="-380.7" font-family="Times,serif" font-size="14.00">InterGroupDelayDelta</text>
217</g>
218<!-- RC -->
219<g id="node8" class="node">
220<title>RC</title>
221<polygon fill="lightyellow" stroke="black" points="1400,-415.5 1314.25,-415.5 1314.25,-374.5 1400,-374.5 1400,-415.5"/>
222<text text-anchor="middle" x="1357.12" y="-398.2" font-family="Times,serif" font-size="14.00">Rate Control</text>
223<text text-anchor="middle" x="1357.12" y="-381.7" font-family="Times,serif" font-size="14.00">(AIMD)</text>
224</g>
225<!-- TE&#45;&gt;RC -->
226<g id="edge7" class="edge">
227<title>TE&#45;&gt;RC</title>
228<path fill="none" stroke="black" d="M1089.68,-377.54C1133.36,-376.06 1211.49,-374.79 1277.96,-381 1286.07,-381.76 1294.61,-382.91 1302.94,-384.24"/>
229<polygon fill="black" stroke="black" points="1302.17,-387.66 1312.62,-385.88 1303.34,-380.76 1302.17,-387.66"/>
230<text text-anchor="middle" x="1204.83" y="-400.7" font-family="Times,serif" font-size="14.00">BandwidthUsage</text>
231<text text-anchor="middle" x="1204.83" y="-384.2" font-family="Times,serif" font-size="14.00">(overuse/normal/underuse)</text>
232</g>
233<!-- RC&#45;&gt;DC -->
234<g id="edge8" class="edge">
235<title>RC&#45;&gt;DC</title>
236<path fill="none" stroke="black" d="M1313.86,-407.22C1302.32,-410.02 1289.74,-412.59 1277.96,-414 1042.74,-442.18 981.67,-418.41 744.96,-409 684.87,-406.61 668.75,-412.61 609.96,-400 606.43,-399.24 602.82,-398.31 599.23,-397.26"/>
237<polygon fill="black" stroke="black" points="600.59,-394.02 589.99,-394.29 598.44,-400.68 600.59,-394.02"/>
238<text text-anchor="middle" x="916.96" y="-426.83" font-family="Times,serif" font-size="14.00">estimated bitrate</text>
239</g>
240<!-- ABE&#45;&gt;DC -->
241<g id="edge10" class="edge">
242<title>ABE&#45;&gt;DC</title>
243<path fill="none" stroke="black" d="M367.8,-342.89C407.61,-350.72 465.31,-362.06 505.37,-369.94"/>
244<polygon fill="black" stroke="black" points="504.46,-373.33 514.95,-371.82 505.81,-366.46 504.46,-373.33"/>
245<text text-anchor="middle" x="444.58" y="-387.83" font-family="Times,serif" font-size="14.00">instantaneous</text>
246<text text-anchor="middle" x="444.58" y="-371.33" font-family="Times,serif" font-size="14.00">bitrate</text>
247</g>
248<!-- ABE&#45;&gt;LC -->
249<g id="edge11" class="edge">
250<title>ABE&#45;&gt;LC</title>
251<path fill="none" stroke="black" d="M367.63,-319.02C375.73,-316.53 384.12,-314.09 392.08,-312 438.2,-299.9 453.9,-310.21 497.08,-290 505.36,-286.13 513.51,-280.77 520.88,-275.14"/>
252<polygon fill="black" stroke="black" points="523,-277.93 528.58,-268.92 518.6,-272.49 523,-277.93"/>
253<text text-anchor="middle" x="444.58" y="-331.7" font-family="Times,serif" font-size="14.00">instantaneous</text>
254<text text-anchor="middle" x="444.58" y="-315.2" font-family="Times,serif" font-size="14.00">bitrate</text>
255</g>
256<!-- LC&#45;&gt;SSBE -->
257<g id="edge12" class="edge">
258<title>LC&#45;&gt;SSBE</title>
259<path fill="none" stroke="red" stroke-width="2" d="M588.7,-240.76C629.06,-233.61 695.48,-221.85 741.03,-213.78"/>
260<polygon fill="red" stroke="red" stroke-width="2" points="741.36,-217.27 750.6,-212.08 740.14,-210.38 741.36,-217.27"/>
261<text text-anchor="middle" x="668.46" y="-240.05" font-family="Times,serif" font-size="14.00">loss estimate</text>
262</g>
263<!-- PC -->
264<g id="node11" class="node">
265<title>PC</title>
266<polygon fill="plum" stroke="black" points="581.08,-116.5 523.83,-116.5 523.83,-75.5 581.08,-75.5 581.08,-116.5"/>
267<text text-anchor="middle" x="552.46" y="-99.2" font-family="Times,serif" font-size="14.00">Probe</text>
268<text text-anchor="middle" x="552.46" y="-82.7" font-family="Times,serif" font-size="14.00">Control</text>
269</g>
270<!-- PC&#45;&gt;SSBE -->
271<g id="edge14" class="edge">
272<title>PC&#45;&gt;SSBE</title>
273<path fill="none" stroke="black" d="M581.5,-109.19C590.46,-113.05 600.5,-117.03 609.96,-120 660.65,-135.91 682.82,-114.93 726.96,-144.5 738.78,-152.42 735.11,-160.71 744.96,-171 745.13,-171.18 745.3,-171.36 745.47,-171.53"/>
274<polygon fill="black" stroke="black" points="742.99,-174.01 752.68,-178.29 747.78,-168.9 742.99,-174.01"/>
275<text text-anchor="middle" x="668.46" y="-147.7" font-family="Times,serif" font-size="14.00">ProbeClusterConfig</text>
276</g>
277<!-- PE&#45;&gt;SSBE -->
278<g id="edge19" class="edge">
279<title>PE&#45;&gt;SSBE</title>
280<path fill="none" stroke="purple" stroke-width="2" d="M586.71,-57.89C590.88,-60.83 595.02,-63.9 598.83,-67 604.23,-71.38 603.79,-74.78 609.96,-78 656.83,-102.45 688.38,-63.35 726.96,-99.5 750.87,-121.91 726.77,-143.74 744.96,-171 745.03,-171.11 745.11,-171.23 745.18,-171.34"/>
281<polygon fill="purple" stroke="purple" stroke-width="2" points="742.39,-173.46 751.54,-178.8 747.72,-168.92 742.39,-173.46"/>
282<text text-anchor="middle" x="668.46" y="-102.7" font-family="Times,serif" font-size="14.00">ProbeResult</text>
283</g>
284<!-- LCE -->
285<g id="node14" class="node">
286<title>LCE</title>
287<polygon fill="wheat" stroke="black" points="368.21,-220.5 274.96,-220.5 274.96,-179.5 368.21,-179.5 368.21,-220.5"/>
288<text text-anchor="middle" x="321.58" y="-203.2" font-family="Times,serif" font-size="14.00">Link Capacity</text>
289<text text-anchor="middle" x="321.58" y="-186.7" font-family="Times,serif" font-size="14.00">Estimator</text>
290</g>
291<!-- PE&#45;&gt;LCE -->
292<g id="edge24" class="edge">
293<title>PE&#45;&gt;LCE</title>
294<path fill="none" stroke="orange" d="M517.35,-55.1C513.32,-58.55 509.72,-62.51 507.08,-67 493.77,-89.7 515.68,-166.38 497.08,-185 481.02,-201.08 424.22,-203.5 379.73,-202.72"/>
295<polygon fill="orange" stroke="orange" points="380.02,-199.23 369.94,-202.49 379.85,-206.23 380.02,-199.23"/>
296<text text-anchor="middle" x="444.58" y="-206.05" font-family="Times,serif" font-size="14.00">ALR probe results</text>
297</g>
298<!-- ALR&#45;&gt;LC -->
299<g id="edge22" class="edge">
300<title>ALR&#45;&gt;LC</title>
301<path fill="none" stroke="black" d="M352.99,-138.72C397.16,-136.08 476.1,-134.15 497.08,-152 512.35,-165 498,-178.12 507.08,-196 511.04,-203.8 516.46,-211.38 522.14,-218.21"/>
302<polygon fill="black" stroke="black" points="519.15,-220.11 528.4,-225.28 524.4,-215.47 519.15,-220.11"/>
303<text text-anchor="middle" x="444.58" y="-171.7" font-family="Times,serif" font-size="14.00">ALR state</text>
304<text text-anchor="middle" x="444.58" y="-155.2" font-family="Times,serif" font-size="14.00">(start time)</text>
305</g>
306<!-- ALR&#45;&gt;PC -->
307<g id="edge21" class="edge">
308<title>ALR&#45;&gt;PC</title>
309<path fill="none" stroke="black" d="M336.26,-120.01C348.58,-103.21 368.37,-80.87 392.08,-71 435.16,-53.06 451.49,-61.02 497.08,-71 502.38,-72.16 507.79,-73.89 513.03,-75.91"/>
310<polygon fill="black" stroke="black" points="511.52,-79.06 522.09,-79.76 514.26,-72.62 511.52,-79.06"/>
311<text text-anchor="middle" x="444.58" y="-90.7" font-family="Times,serif" font-size="14.00">ALR state</text>
312<text text-anchor="middle" x="444.58" y="-74.2" font-family="Times,serif" font-size="14.00">(start time)</text>
313</g>
314<!-- LCE&#45;&gt;LC -->
315<g id="edge25" class="edge">
316<title>LCE&#45;&gt;LC</title>
317<path fill="none" stroke="orange" stroke-width="2" d="M368.53,-218.04C376.3,-220.65 384.36,-223.1 392.08,-225 428.87,-234.05 471.41,-239.69 503.28,-242.98"/>
318<polygon fill="orange" stroke="orange" stroke-width="2" points="502.93,-246.47 513.23,-243.96 503.62,-239.5 502.93,-246.47"/>
319<text text-anchor="middle" x="444.58" y="-245.19" font-family="Times,serif" font-size="14.00">capacity estimate</text>
320</g>
321<!-- Pacer&#45;&gt;Network -->
322<g id="edge27" class="edge">
323<title>Pacer&#45;&gt;Network</title>
324<path fill="none" stroke="blue" stroke-width="2" d="M1113.99,-106C1162.2,-106 1230.94,-106 1282.87,-106"/>
325<polygon fill="blue" stroke="blue" stroke-width="2" points="1282.66,-109.5 1292.66,-106 1282.66,-102.5 1282.66,-109.5"/>
326<text text-anchor="middle" x="1204.83" y="-125.7" font-family="Times,serif" font-size="14.00">paced packets</text>
327<text text-anchor="middle" x="1204.83" y="-109.2" font-family="Times,serif" font-size="14.00">(with cluster ID)</text>
328</g>
329<!-- Pacer&#45;&gt;SSBE -->
330<g id="edge17" class="edge">
331<title>Pacer&#45;&gt;SSBE</title>
332<path fill="none" stroke="purple" d="M1033.98,-135.07C1020.35,-152.65 1000.6,-173.77 977.71,-185 954.43,-196.42 887.64,-201.38 841.01,-203.49"/>
333<polygon fill="purple" stroke="purple" points="840.98,-199.99 831.14,-203.91 841.27,-206.99 840.98,-199.99"/>
334<text text-anchor="middle" x="916.96" y="-222.42" font-family="Times,serif" font-size="14.00">probe complete</text>
335<text text-anchor="middle" x="916.96" y="-205.92" font-family="Times,serif" font-size="14.00">(cluster_id)</text>
336</g>
337<!-- PacerCtrl&#45;&gt;Pacer -->
338<g id="edge26" class="edge">
339<title>PacerCtrl&#45;&gt;Pacer</title>
340<path fill="none" stroke="black" d="M820.66,-100.62C831.69,-98.76 844.5,-96.91 856.21,-96 910.04,-91.8 923.82,-92.47 977.71,-96 979.76,-96.13 981.84,-96.29 983.94,-96.46"/>
341<polygon fill="black" stroke="black" points="983.49,-99.93 993.77,-97.39 984.14,-92.96 983.49,-99.93"/>
342<text text-anchor="middle" x="916.96" y="-115.7" font-family="Times,serif" font-size="14.00">pacing_rate</text>
343<text text-anchor="middle" x="916.96" y="-99.2" font-family="Times,serif" font-size="14.00">padding_rate</text>
344</g>
345</g>
346</svg>