====== Linux: TC - ograniczanie pasma, indukowanie błędów w transmisji i opóżnienia ======
programy wykorzystane do zrobienia pomiarów:
* https://man7.org/linux/man-pages/man8/tc.8.html
* https://github.com/tum-lkn/tcgui
===== Schemat Połączeniowy =====
{{:projekty:pasted:20250512-180657.png}}\\
Schemat wygenerowany za pomocą [[narzedzia:hyper-v_graph|mojego skryptu]]
^ Nazwa maszyny ^ Karta sieciowa ^ Adres ip ^ brama ^ Switch wirtualny ^
| ubuntu-tc | eth0 | 192.168.1.1/24 | X | NET-A |
| ::: | eth1 | 192.168.2.1/24 | X | NET-B |
| ubuntu-tc-A | eth0 | 192.168.1.10/24 | 192.168.1.1/24 | NET-A |
| ubuntu-tc-B | eth0 | 192.168.2.10/24 | 192.168.2.1/24 | NET-B |
===== Ustawienia na maszynie "Ubuntu-tc" =====
* włączenie forwardingu dla ipv4
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
* zrestartuj interfejsy sieciowe
* skopiowanie tc-gui na maszynę oraz uruchomienie
sudo apt install git
git clone https://github.com/tum-lkn/tcgui
cd tcgui
sudo python3 main.py --ip 127.0.0.1
* Otwieramy w przeglądarce firefox adres ''127.0.0.1:5000''
{{:projekty:pasted:20250512-192027.png?800}}
===== Ustawienia na reszcie maszyn =====
sudo apt-get update
sudo apt-get install iperf3
Musimy je jeszcze zaadresować statycznie za pomocą GUI albo za pomocą netplan
======= Tabela wyników testów =======
^ Opis Testu ^ protokół ^ straty ^ pasmo ^ opóznienie [ms] ^
^ Testy opóznień ^^^^^
| Test bez dodanego opóźnienia | icmp | 0% | --- | 1,131 |
| Test z dodanym opóźnieniem 10ms wynik z 100 pomiarów | icmp | 0% | --- | 11,020 |
| test z dodanym opóźnieniem 100ms wynik z 100 pomiarów | icmp | 0% | --- | 101,071 |
| test z dodanym opóźnieniem 1000ms wynik z 100 pomiarów | icmp | 0% | --- | 1000,911 |
^ Testy pasma UDP ^ protokół ^ Utracone/Wysłane ^ pasmo ^ opóznienie [ms] ^
| Test bez ograniczenia 30s (UDP 1Gbps iperf) | UDP | --- | 998 Mbps | --- |
| Ograniczenie pasma do 300Mbps 30s (UDP iperf) | UDP | 72% | 282 Mbps | --- |
| Ograniczenie pasma do 100Mbps 30s (UDP iperf) | UDP | 91% | 94,3 Mbps | --- |
| Ograniczenie pasma do 10Mbps 30s (UDP iperf) | UDP | 99% | 9,72 Mbps | --- |
| Ograniczenie pasma do 1Mbps 30s (UDP iperf) | UDP | 1e+02% | 972 kbps | --- |
^ Testy pasma TCP ^ protokół ^ retransmisje ^ pasmo ^ opóznienie [ms] ^
| Test bez ograniczenia 30s (TCP iperf) | TCP | 2 | 10,3 Gbps | --- |
| Ograniczenie pasma do 300Mbps 30s (TCP iperf) | TCP | 0 | 282 Mbps | --- |
| Ograniczenie pasma do 100Mbps 30s (TCP iperf) | TCP | 0 | 94,3 Mbps | --- |
| Ograniczenie pasma do 10Mbps 30s (TCP iperf) | TCP | 152 | 9,72 Mbps | --- |
| Ograniczenie pasma do 1Mbps 30s (TCP iperf) | TCP | 0 | 972 kbps | --- |
^ Inne Testy |||||
| Test łącza w obie strony 10Mbps, opóźnienie 2000ms, urata 3%, uszkodzone 10% (ping 100 pomiarów) | ICMP | 24% | --- | 4001,69 |
| Test łącza w obie strony 10Mbps, opóźnienie 600ms, utrata 3%, uszkodzone 10% (TCP iperf) | TCP | 23 | 82 kbps | --- |
| Test łącza w obie strony 10Mbps, opóźnienie 600ms, utrata 3%, uszkodzone 10% (UDP iperf) | UDP | 99% | 7,79 kbps | --- |
| Test łącza w obie strony 60Mbps, opóźnienie 600ms, utrata 5% (UDP iperf) | UDP | 98% | 14,7 Mbps | --- |
====== Testy opóźnień ======
===== Test bez dodanego opóźnienia =====
{{:projekty:pasted:20250512-191748.png}}
===== Test z dodanym opóźnieniem 10ms wynik z 100 pomiarów =====
{{:projekty:pasted:20250512-192614.png}}
===== test z dodanym opóźnieniem 100ms wynik z 100 pomiarów =====
{{:projekty:pasted:20250512-192846.png}}
===== test z dodanym opóźnieniem 1000ms wynik z 100 pomiarów =====
{{:projekty:pasted:20250512-193123.png}}
===== test z dodanym opóźnieniem 5000ms wynik z 100 pomiarów =====
====== Test ograniczeń pasma ======
===== Test bez ograniczenia 30s (UDP 1Gbps iperf)=====
{{:projekty:pasted:20250512-193901.png}}
===== Ograniczenie pasma do 300Mbps 30s (UDP iperf)=====
{{:projekty:pasted:20250512-194303.png}}
===== Ograniczenie pasma do 100Mbps 30s (UDP iperf)=====
{{:projekty:pasted:20250512-194446.png}}
===== Ograniczenie pasma do 10Mbps 30s (UDP iperf)=====
{{:projekty:pasted:20250512-194638.png}}
===== Ograniczenie pasma do 1Mbps 30s (UDP iperf)=====
{{:projekty:pasted:20250512-194817.png}}
===== Test bez ograniczenia 30s (TCP iperf) =====
{{:projekty:pasted:20250512-195147.png}}
===== Ograniczenie pasma do 300Mbps 30s (TCP iperf)=====
{{:projekty:pasted:20250512-195304.png}}
===== Ograniczenie pasma do 100Mbps 30s (TCP iperf)=====
{{:projekty:pasted:20250512-195357.png}}
===== Ograniczenie pasma do 10Mbps 30s (TCP iperf)=====
{{:projekty:pasted:20250512-195451.png}}
===== Ograniczenie pasma do 1Mbps 30s (TCP iperf)=====
{{:projekty:pasted:20250512-195622.png}}
====== Test łącza w obie strony 10Mbps, opóźnienie 2000ms, urata 3%, uszkodzone 10% (ping 100 pomiarów) ======
{{:projekty:pasted:20250512-200427.png}}
====== Test łącza w obie strony 10Mbps, opóźnienie 600ms, utrata 3%, uszkodzone 10% (TCP iperf) ======
{{:projekty:pasted:20250512-200706.png}}
====== Test łącza w obie strony 10Mbps, opóźnienie 600ms, utrata 3%, uszkodzone 10% (UDP iperf) ======
{{:projekty:pasted:20250512-200817.png}}
====== Test łącza w obie strony 60Mbps, opóźnienie 600ms, utrata 5% (UDP iperf) ======
{{:projekty:pasted:20250512-201405.png}}