FEC tunneling for very lossy links » History » Version 1
manawyrm, 04/24/2022 11:08 PM
1 | 1 | manawyrm | h1. FEC tunneling for very lossy links |
---|---|---|---|
2 | |||
3 | The open-source https://github.com/wangyu-/UDPspeeder project aims to be a UDP proxy which adds FEC (forward error correction) and interleaving to arbitrary UDP protocols. |
||
4 | This can be used for OCTOI as well, but more testing has to be done with real-life internet connections. |
||
5 | |||
6 | h2. Usage for OCTOI |
||
7 | |||
8 | As UDPspeeder is a proxy service, you'll need to run a server instance on a machine with very stable and loss-free internet connection (like a server in a datacenter). |
||
9 | Ideally, you'll get close to the nearest OCTOI TDM hub (currently Berlin, Germany). |
||
10 | |||
11 | Install UDPspeeder on both machines: |
||
12 | <pre><code class="shell"> |
||
13 | git clone "https://github.com/wangyu-/UDPspeeder" |
||
14 | cd UDPspeeder |
||
15 | make -j 16 |
||
16 | </code></pre> |
||
17 | |||
18 | On the server run: |
||
19 | <pre><code class="shell"> |
||
20 | ./speederv2 -s -l0.0.0.0:4096 -r 90.187.20.185:10010 -f4:1 --timeout 8 -i 10 |
||
21 | </code></pre> |
||
22 | <code>90.187.20.185:10010</code> is the OCTOI TDM hub in this example. You will need to change this to the parameters provided to you. |
||
23 | This will listen on the UDP port 4096 on your server. |
||
24 | |||
25 | On the client run: |
||
26 | <pre><code class="shell"> |
||
27 | ./speederv2 -c -l0.0.0.0:4096 -r 138.201.47.85:4096 -f4:1 --timeout 8 -i 10 |
||
28 | </code></pre> |
||
29 | <code>138.201.47.85:4096</code> needs to be replaced with your server running UDPspeeder. |
||
30 | |||
31 | Then configure your osmo-e1d instance to connect to localhost: |
||
32 | <pre><code class="shell"> |
||
33 | octoi-client 127.0.0.1 4096 |
||
34 | </code></pre> |
||
35 | |||
36 | The parameters can then be tweaked to better accommodate your internet connection: |
||
37 | |||
38 | <code class="shell">-f4:1</code> - send 4 redundant packets for every packet |
||
39 | <code class="shell">--timeout 8</code> - wait up to 8ms for the packets |
||
40 | <code class="shell">-i 10</code> - interleave 10ms of packets (order randomly on the wire), this is to help with bursty losses. |
||
41 | |||
42 | If you play around with the parameters, ensure to change both sides at the same time, otherwise very strange things will happen. |