Skip to content

Commit 6bf62b4

Browse files
authored
Converted Markdown tables to HTML (#8027)
1 parent ff4bbd5 commit 6bf62b4

File tree

1 file changed

+288
-36
lines changed

1 file changed

+288
-36
lines changed

source/configure/calls-deployment.md

Lines changed: 288 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,88 @@ This document provides information on how to successfully make the Calls plugin
3636

3737
### Network
3838

39-
```{tip}
40-
Scroll horizontally to see additional columns in the table below.
41-
```
42-
43-
| Service | Ports | Protocols | Source | Target | Purpose |
44-
|---------|-------|-----------|--------|--------|---------|
45-
| API (Calls plugin) | 80,443 | TCP (incoming) | Mattermost clients (web/desktop/mobile) | Mattermost instance (Calls plugin) | To allow for HTTP and WebSocket connectivity from clients to Calls plugin. This API is exposed on the same connection as Mattermost, so there's likely no need to change anything. |
46-
| RTC (Calls plugin or `rtcd`) | 8443 | UDP (incoming) | Mattermost clients (Web/Desktop/Mobile) | Mattermost instance or `rtcd` service | To allow clients to establish connections that transport calls related media (e.g. audio, video). This should be open on any network component (e.g. NAT, firewalls) in between the instance running the plugin (or `rtcd`) and the clients joining calls so that UDP traffic is correctly routed both ways (from/to clients). |
47-
| RTC (Calls plugin or `rtcd`) | 8443 | TCP (incoming) | Mattermost clients (Web/Desktop/Mobile) | Mattermost instance or `rtcd` service | To allow clients to establish connections that transport calls related media (e.g. audio, video). This should be open on any network component (e.g. NAT, firewalls) in between the instance running the plugin (or `rtcd`) and the clients joining calls so that TCP traffic is correctly routed both ways (from/to clients). This can be used as a backup channel in case clients are unable to connect using UDP. It requires `rtcd` version >= v0.11 and Calls version >= v0.17. |
48-
| API (`rtcd`) | 8045 | TCP (incoming) | Mattermost instance(s) (Calls plugin) | `rtcd` service | To allow for HTTP/WebSocket connectivity from Calls plugin to `rtcd` service. Can be expose internally as the service only needs to be reachable by the instance(s) running the Mattermost server. |
49-
| STUN (Calls plugin or `rtcd`) | 3478 | UDP (outgoing) | Mattermost Instance(s) (Calls plugin) or `rtcd` service | Configured STUN servers | (Optional) To allow for either Calls plugin or `rtcd` service to discover their instance public IP. Only needed if configuring STUN/TURN servers. This requirement does not apply when manually setting an IP or hostname through the [ICE Host Override](https://docs.mattermost.com/configure/plugins-configuration-settings.html#ice-host-override) config option. |
39+
<style>
40+
table.network-requirements {
41+
border-collapse: collapse;
42+
width: 100%;
43+
font-size: 0.95em;
44+
}
45+
table.network-requirements th, table.network-requirements td {
46+
border: 1px solid #888;
47+
padding: 6px 8px;
48+
vertical-align: top;
49+
}
50+
/* Dark mode border color */
51+
body:not([data-custom-theme="light"]) table.network-requirements th,
52+
body:not([data-custom-theme="light"]) table.network-requirements td {
53+
border-color: #666;
54+
}
55+
table.network-requirements th {
56+
background: #f2f2f2;
57+
font-weight: bold;
58+
text-align: left;
59+
}
60+
/* Dark mode support for table headers */
61+
body:not([data-custom-theme="light"]) table.network-requirements th {
62+
background: #444;
63+
color: #fff;
64+
}
65+
</style>
66+
67+
<table class="network-requirements">
68+
<thead>
69+
<tr>
70+
<th>Service</th>
71+
<th>Ports</th>
72+
<th>Protocols</th>
73+
<th>Source</th>
74+
<th>Target</th>
75+
<th>Purpose</th>
76+
</tr>
77+
</thead>
78+
<tbody>
79+
<tr>
80+
<td>API (Calls plugin)</td>
81+
<td>80,443</td>
82+
<td>TCP (incoming)</td>
83+
<td>Mattermost clients (web/desktop/mobile)</td>
84+
<td>Mattermost instance (Calls plugin)</td>
85+
<td>To allow for HTTP and WebSocket connectivity from clients to Calls plugin. This API is exposed on the same connection as Mattermost, so there's likely no need to change anything.</td>
86+
</tr>
87+
<tr>
88+
<td>RTC (Calls plugin or <code>rtcd</code>)</td>
89+
<td>8443</td>
90+
<td>UDP (incoming)</td>
91+
<td>Mattermost clients (Web/Desktop/Mobile)</td>
92+
<td>Mattermost instance or <code>rtcd</code> service</td>
93+
<td>To allow clients to establish connections that transport calls related media (e.g. audio, video). This should be open on any network component (e.g. NAT, firewalls) in between the instance running the plugin (or <code>rtcd</code>) and the clients joining calls so that UDP traffic is correctly routed both ways (from/to clients).</td>
94+
</tr>
95+
<tr>
96+
<td>RTC (Calls plugin or <code>rtcd</code>)</td>
97+
<td>8443</td>
98+
<td>TCP (incoming)</td>
99+
<td>Mattermost clients (Web/Desktop/Mobile)</td>
100+
<td>Mattermost instance or <code>rtcd</code> service</td>
101+
<td>To allow clients to establish connections that transport calls related media (e.g. audio, video). This should be open on any network component (e.g. NAT, firewalls) in between the instance running the plugin (or <code>rtcd</code>) and the clients joining calls so that TCP traffic is correctly routed both ways (from/to clients). This can be used as a backup channel in case clients are unable to connect using UDP. It requires <code>rtcd</code> version >= v0.11 and Calls version >= v0.17.</td>
102+
</tr>
103+
<tr>
104+
<td>API (<code>rtcd</code>)</td>
105+
<td>8045</td>
106+
<td>TCP (incoming)</td>
107+
<td>Mattermost instance(s) (Calls plugin)</td>
108+
<td><code>rtcd</code> service</td>
109+
<td>To allow for HTTP/WebSocket connectivity from Calls plugin to <code>rtcd</code> service. Can be expose internally as the service only needs to be reachable by the instance(s) running the Mattermost server.</td>
110+
</tr>
111+
<tr>
112+
<td>STUN (Calls plugin or <code>rtcd</code>)</td>
113+
<td>3478</td>
114+
<td>UDP (outgoing)</td>
115+
<td>Mattermost Instance(s) (Calls plugin) or <code>rtcd</code> service</td>
116+
<td>Configured STUN servers</td>
117+
<td>(Optional) To allow for either Calls plugin or <code>rtcd</code> service to discover their instance public IP. Only needed if configuring STUN/TURN servers. This requirement does not apply when manually setting an IP or hostname through the <a href="https://docs.mattermost.com/configure/plugins-configuration-settings.html#ice-host-override">ICE Host Override</a> config option.</td>
118+
</tr>
119+
</tbody>
120+
</table>
50121

51122
#### Air-gapped deployments
52123

@@ -136,31 +207,212 @@ Here are the results from internally conducted performance and ceiling tests on
136207

137208
#### Results
138209

139-
```{tip}
140-
Scroll horizontally to see additional columns in the table below.
141-
```
142-
143-
| Calls | Participants/call | Unmuted/call | Screen sharing | CPU (avg) | Memory (avg) | Bandwidth (in/out) | Instance type (RTCD) |
144-
|-------|-------------------|--------------|----------------|-----------|--------------|---------------------|----------------------|
145-
| 1 | 1000 | 2 | no | 47% | 1.46GB | 1Mbps / 194Mbps | c7i.xlarge |
146-
| 1 | 800 | 1 | yes | 64% | 1.43GB | 2.7Mbps / 1.36Gbps | c7i.xlarge |
147-
| 1 | 1000 | 1 | yes | 79% | 1.54GB | 2.9Mbps / 1.68Gbps | c7i.xlarge |
148-
| 10 | 100 | 1 | yes | 74% | 1.56GB | 18.2Mbps / 1.68Gbps | c7i.xlarge |
149-
| 100 | 10 | 2 | no | 49% | 1.46GB | 18.7Mbps / 175Mbps | c7i.xlarge |
150-
| 100 | 10 | 1 | yes | 84% | 1.73GB | 171Mbps / 1.53Gbps | c7i.xlarge |
151-
| 1 | 1000 | 2 | no | 20% | 1.44GB | 1.4Mbps / 194Mbps | c7i.2xlarge |
152-
| 1 | 1000 | 2 | yes | 49% | 1.53GB | 3.6Mbps / 1.79Gbps | c7i.2xlarge |
153-
| 2 | 1000 | 1 | yes | 73% | 2.38GB | 5.7Mbps / 3.06Gbps | c7i.2xlarge |
154-
| 100 | 10 | 2 | yes | 60% | 1.74GB | 181Mbps / 1.62Gbps | c7i.2xlarge |
155-
| 150 | 10 | 1 | yes | 72% | 2.26GB | 257Mbps / 2.30Gbps | c7i.2xlarge |
156-
| 150 | 10 | 2 | yes | 79% | 2.34GB | 271Mbps / 2.41Gbps | c7i.2xlarge |
157-
| 250 | 10 | 2 | no | 58% | 2.66GB | 47Mbps / 439Mbps | c7i.2xlarge |
158-
| 1000 | 2 | 2 | no | 78% | 2.31GB | 178Mbps / 195Mbps | c7i.2xlarge |
159-
| 2 | 1000 | 2 | yes | 41% | 2.6GB | 7.23Mbps / 3.60Gbps | c7i.4xlarge |
160-
| 3 | 1000 | 2 | yes | 63% | 3.53GB | 10.9Mbps / 5.38Gbps | c7i.4xlarge |
161-
| 4 | 1000 | 2 | yes | 83% | 4.40GB | 14.5Mbps / 7.17Gbps | c7i.4xlarge |
162-
| 250 | 10 | 2 | yes | 79% | 3.49GB | 431Mbps / 3.73Gbps | c7i.4xlarge |
163-
| 500 | 2 | 2 | yes | 71% | 2.54GB | 896Mbps / 919Mbps | c7i.4xlarge |
210+
<table class="network-requirements">
211+
<thead>
212+
<tr>
213+
<th>Calls</th>
214+
<th>Participants/call</th>
215+
<th>Unmuted/call</th>
216+
<th>Screen sharing</th>
217+
<th>CPU (avg)</th>
218+
<th>Memory (avg)</th>
219+
<th>Bandwidth (in/out)</th>
220+
<th>Instance type (RTCD)</th>
221+
</tr>
222+
</thead>
223+
<tbody>
224+
<tr>
225+
<td>1</td>
226+
<td>1000</td>
227+
<td>2</td>
228+
<td>no</td>
229+
<td>47%</td>
230+
<td>1.46GB</td>
231+
<td>1Mbps / 194Mbps</td>
232+
<td>c7i.xlarge</td>
233+
</tr>
234+
<tr>
235+
<td>1</td>
236+
<td>800</td>
237+
<td>1</td>
238+
<td>yes</td>
239+
<td>64%</td>
240+
<td>1.43GB</td>
241+
<td>2.7Mbps / 1.36Gbps</td>
242+
<td>c7i.xlarge</td>
243+
</tr>
244+
<tr>
245+
<td>1</td>
246+
<td>1000</td>
247+
<td>1</td>
248+
<td>yes</td>
249+
<td>79%</td>
250+
<td>1.54GB</td>
251+
<td>2.9Mbps / 1.68Gbps</td>
252+
<td>c7i.xlarge</td>
253+
</tr>
254+
<tr>
255+
<td>10</td>
256+
<td>100</td>
257+
<td>1</td>
258+
<td>yes</td>
259+
<td>74%</td>
260+
<td>1.56GB</td>
261+
<td>18.2Mbps / 1.68Gbps</td>
262+
<td>c7i.xlarge</td>
263+
</tr>
264+
<tr>
265+
<td>100</td>
266+
<td>10</td>
267+
<td>2</td>
268+
<td>no</td>
269+
<td>49%</td>
270+
<td>1.46GB</td>
271+
<td>18.7Mbps / 175Mbps</td>
272+
<td>c7i.xlarge</td>
273+
</tr>
274+
<tr>
275+
<td>100</td>
276+
<td>10</td>
277+
<td>1</td>
278+
<td>yes</td>
279+
<td>84%</td>
280+
<td>1.73GB</td>
281+
<td>171Mbps / 1.53Gbps</td>
282+
<td>c7i.xlarge</td>
283+
</tr>
284+
<tr>
285+
<td>1</td>
286+
<td>1000</td>
287+
<td>2</td>
288+
<td>no</td>
289+
<td>20%</td>
290+
<td>1.44GB</td>
291+
<td>1.4Mbps / 194Mbps</td>
292+
<td>c7i.2xlarge</td>
293+
</tr>
294+
<tr>
295+
<td>1</td>
296+
<td>1000</td>
297+
<td>2</td>
298+
<td>yes</td>
299+
<td>49%</td>
300+
<td>1.53GB</td>
301+
<td>3.6Mbps / 1.79Gbps</td>
302+
<td>c7i.2xlarge</td>
303+
</tr>
304+
<tr>
305+
<td>2</td>
306+
<td>1000</td>
307+
<td>1</td>
308+
<td>yes</td>
309+
<td>73%</td>
310+
<td>2.38GB</td>
311+
<td>5.7Mbps / 3.06Gbps</td>
312+
<td>c7i.2xlarge</td>
313+
</tr>
314+
<tr>
315+
<td>100</td>
316+
<td>10</td>
317+
<td>2</td>
318+
<td>yes</td>
319+
<td>60%</td>
320+
<td>1.74GB</td>
321+
<td>181Mbps / 1.62Gbps</td>
322+
<td>c7i.2xlarge</td>
323+
</tr>
324+
<tr>
325+
<td>150</td>
326+
<td>10</td>
327+
<td>1</td>
328+
<td>yes</td>
329+
<td>72%</td>
330+
<td>2.26GB</td>
331+
<td>257Mbps / 2.30Gbps</td>
332+
<td>c7i.2xlarge</td>
333+
</tr>
334+
<tr>
335+
<td>150</td>
336+
<td>10</td>
337+
<td>2</td>
338+
<td>yes</td>
339+
<td>79%</td>
340+
<td>2.34GB</td>
341+
<td>271Mbps / 2.41Gbps</td>
342+
<td>c7i.2xlarge</td>
343+
</tr>
344+
<tr>
345+
<td>250</td>
346+
<td>10</td>
347+
<td>2</td>
348+
<td>no</td>
349+
<td>58%</td>
350+
<td>2.66GB</td>
351+
<td>47Mbps / 439Mbps</td>
352+
<td>c7i.2xlarge</td>
353+
</tr>
354+
<tr>
355+
<td>1000</td>
356+
<td>2</td>
357+
<td>2</td>
358+
<td>no</td>
359+
<td>78%</td>
360+
<td>2.31GB</td>
361+
<td>178Mbps / 195Mbps</td>
362+
<td>c7i.2xlarge</td>
363+
</tr>
364+
<tr>
365+
<td>2</td>
366+
<td>1000</td>
367+
<td>2</td>
368+
<td>yes</td>
369+
<td>41%</td>
370+
<td>2.6GB</td>
371+
<td>7.23Mbps / 3.60Gbps</td>
372+
<td>c7i.4xlarge</td>
373+
</tr>
374+
<tr>
375+
<td>3</td>
376+
<td>1000</td>
377+
<td>2</td>
378+
<td>yes</td>
379+
<td>63%</td>
380+
<td>3.53GB</td>
381+
<td>10.9Mbps / 5.38Gbps</td>
382+
<td>c7i.4xlarge</td>
383+
</tr>
384+
<tr>
385+
<td>4</td>
386+
<td>1000</td>
387+
<td>2</td>
388+
<td>yes</td>
389+
<td>83%</td>
390+
<td>4.40GB</td>
391+
<td>14.5Mbps / 7.17Gbps</td>
392+
<td>c7i.4xlarge</td>
393+
</tr>
394+
<tr>
395+
<td>250</td>
396+
<td>10</td>
397+
<td>2</td>
398+
<td>yes</td>
399+
<td>79%</td>
400+
<td>3.49GB</td>
401+
<td>431Mbps / 3.73Gbps</td>
402+
<td>c7i.4xlarge</td>
403+
</tr>
404+
<tr>
405+
<td>500</td>
406+
<td>2</td>
407+
<td>2</td>
408+
<td>yes</td>
409+
<td>71%</td>
410+
<td>2.54GB</td>
411+
<td>896Mbps / 919Mbps</td>
412+
<td>c7i.4xlarge</td>
413+
</tr>
414+
</tbody>
415+
</table>
164416

165417
```{note}
166418
- The tests focused on a single, vertically scaled RTCD instance to understand the processing limits within a single node. Scaling the RTCD service horizontally should be sufficient to support a higher number of calls.

0 commit comments

Comments
 (0)