Pred nedávnom som dostal úlohu, prepojiť sieťovo, na úrovni ethernetu 2 objekty. Tieto objekty, resp. budovy sa nachádzajú v rámci jedného areálu na súkromnom pozemku. Budovy su od seba vzdialené asi 60m. Najprv sme uvažovali bezdrôtový spoj PtP, ale rýchlo sme sa priklonili k fyzickému spojeniu. Ethernetové káble by boli fajn, ale bolo by nutné riešiť vonkajšiu ochranu pred bleskom a to by spoj značne predražilo. Nakoniec sme sa zhodli na optike.
V tomto blogu nebude dôležité ako sme spoj realizovali, ale čo sme namerali na oboch koncoch vedenia. Spoj je zložený fyzicky z dvoch media konvertorov a jedného optického vlákna, presnejšie povedané
- 1x Optic patchcord SC/PC – SC/PC 100m, 3mm, G.657A2, simplex, outdoor
- 2x Cudy MC220, Media konvertor, SFP, 1x GLAN
- 1x MaxLink SFP modul 1,25Gbps, 3km, WDM, DDM, TX1310/RX1550 (SC/SM)
- 1x MaxLink SFP modul 1,25Gbps, 3km, WDM, DDM, TX1550/RX1310 (SC/SM)
Cena za optický kábel je v dnešnej dobe porovnateľná s FTP káblom a dovolím si tvrdiť, že v niektorých prípadoch je lacnejšia. Nám sa podarilo kúpiť opticky kábel (patchcord s koncovkami SC/PC na koncoch) za 0.4€/m s DPH a to nie je vôbec zlá cena. Ďalej bolo potrebné na oboch koncoch nasadiť prevodníky z optického signálu na elektrické signály. V tomto prípade sme použili lacnejšie varianty, konkrétne Cudy MC220 (18€ za kus s DPH) vrátane napájacích adaptérov. Obidva prevodníky je potrebne osadiť SFP modulmi. Na jednej strane je modul MaxLink TX1310/RX1550 a na druhej MaxLink TX1550/RX1310. Cena za modul sa pohybuje 6.4€ s DPH za kus.
Poďme si teda pripraviť spoj na meranie. media konvertory osadíme SFP modulmi a prepojíme ich optickým káblom (patchcordom). Do LAN RJ45 konektorov na prevodníkoch zapojíme LAN káble a prepojíme ich s počítačmi. Ja som mal k dispozícii 2 notebooky s Gigabit siťovými kartami. Na jednom bol Linux Mint 21 a na druhom Windows 10 (to bola chyba, vysvetlím neskôr).
Na oboch NTB som nainštaloval šikovný nástroj na testovanie rýchlosti siete. Tu máme iperf3 pre Windows a pre linux stačí nainštalovať z repo (napr. pre OS založené na Debiane)
sudo apt update && sudo apt install iperf3 -y
iperf3 -v
Na OS Win je potrebne iperf3 spustiť z príkazového riadku.
Na NTBs som nastavil sieť na statické IP adresy (192.168.1.2 a 192.168.1.3). Na jednej strane sa iperf3 nastaví ako server a na druhej ako klient. To je jedno, korý NTB bude klient a ktorý server. Pri ďalšom meraní sa môžu otočiť, alebo sa použije parameter -R.
NTB s Win 10 nastavím napr. ako server, ktorý počúva na predvolenom porte 5201
iperf3 -s
NTB s OS linux bude potom klient. Príkaz hovorí, že spusť iperf3 ako klient a posielaj data na IP adresu 192.168.1.3 po dobu 10 sekúnd. Mimochodom 10 sekúnd je predvolená hodnota, čiže ju môžeme zmeniť napr. na 5, alebo na 20.
iperf3 -c 192.168.1.2 -t 10
Výsledky z OS Linux
Connecting to host 192.168.1.2, port 5201
[ 5] local 192.168.1.3 port 36506 connected to 192.168.1.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 72.3 MBytes 606 Mbits/sec 0 151 KBytes
[ 5] 1.00-2.00 sec 75.5 MBytes 633 Mbits/sec 0 151 KBytes
[ 5] 2.00-3.00 sec 76.6 MBytes 643 Mbits/sec 0 151 KBytes
[ 5] 3.00-4.00 sec 76.4 MBytes 641 Mbits/sec 0 151 KBytes
[ 5] 4.00-5.00 sec 76.6 MBytes 643 Mbits/sec 0 151 KBytes
[ 5] 5.00-6.00 sec 76.3 MBytes 640 Mbits/sec 0 151 KBytes
[ 5] 6.00-7.00 sec 76.6 MBytes 643 Mbits/sec 0 151 KBytes
[ 5] 7.00-8.00 sec 76.7 MBytes 643 Mbits/sec 0 151 KBytes
[ 5] 8.00-9.00 sec 76.3 MBytes 640 Mbits/sec 0 151 KBytes
[ 5] 9.00-10.00 sec 76.8 MBytes 644 Mbits/sec 0 151 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 760 MBytes 638 Mbits/sec 0 sender
[ 5] 0.00-10.00 sec 760 MBytes 637 Mbits/sec receiver
iperf Done.
Tieto výsledky sa mi vôbec nepáčia. Prečo dosahujem na GigaBytovej sieti priemerné hodnoty 640 Mbit/s ? Očakával som niečo cez 900 Mbit/s ale 640 je skutočne málo. Zmienil som sa v jednom diskusnom fóre, kde je zakopaný pes a bolo mi doporučené aby som skúsil linux proti linuxu. Tu sú výsledky
iperf3 -c 192.168.1.3 -t 10 --bidir
Connecting to host 192.168.1.3, port 5201
[ 5] local 192.168.1.2 port 35980 connected to 192.168.1.3 port 5201
[ 7] local 192.168.1.2 port 35982 connected to 192.168.1.3 port 5201
[ ID][Role] Interval Transfer Bitrate Retr Cwnd
[ 5][TX-C] 0.00-1.00 sec 107 MBytes 900 Mbits/sec 0 595 KBytes
[ 7][RX-C] 0.00-1.00 sec 109 MBytes 915 Mbits/sec
[ 5][TX-C] 1.00-2.00 sec 111 MBytes 932 Mbits/sec 0 595 KBytes
[ 7][RX-C] 1.00-2.00 sec 111 MBytes 928 Mbits/sec
[ 5][TX-C] 2.00-3.00 sec 112 MBytes 938 Mbits/sec 0 595 KBytes
[ 7][RX-C] 2.00-3.00 sec 110 MBytes 922 Mbits/sec
[ 5][TX-C] 3.00-4.00 sec 111 MBytes 930 Mbits/sec 0 629 KBytes
[ 7][RX-C] 3.00-4.00 sec 110 MBytes 921 Mbits/sec
[ 5][TX-C] 4.00-5.00 sec 111 MBytes 933 Mbits/sec 0 662 KBytes
[ 7][RX-C] 4.00-5.00 sec 110 MBytes 925 Mbits/sec
[ 5][TX-C] 5.00-6.00 sec 111 MBytes 933 Mbits/sec 0 662 KBytes
[ 7][RX-C] 5.00-6.00 sec 110 MBytes 925 Mbits/sec
[ 5][TX-C] 6.00-7.00 sec 111 MBytes 933 Mbits/sec 0 662 KBytes
[ 7][RX-C] 6.00-7.00 sec 111 MBytes 930 Mbits/sec
[ 5][TX-C] 7.00-8.00 sec 111 MBytes 933 Mbits/sec 0 662 KBytes
[ 7][RX-C] 7.00-8.00 sec 111 MBytes 929 Mbits/sec
[ 5][TX-C] 8.00-9.00 sec 111 MBytes 933 Mbits/sec 0 662 KBytes
[ 7][RX-C] 8.00-9.00 sec 111 MBytes 930 Mbits/sec
[ 5][TX-C] 9.00-10.00 sec 111 MBytes 933 Mbits/sec 0 662 KBytes
[ 7][RX-C] 9.00-10.00 sec 111 MBytes 928 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval Transfer Bitrate Retr
[ 5][TX-C] 0.00-10.00 sec 1.08 GBytes 930 Mbits/sec 0 sender
[ 5][TX-C] 0.00-10.04 sec 1.08 GBytes 924 Mbits/sec receiver
[ 7][RX-C] 0.00-10.00 sec 1.08 GBytes 928 Mbits/sec 0 sender
[ 7][RX-C] 0.00-10.04 sec 1.08 GBytes 922 Mbits/sec receiver
iperf Done.
iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.1.2, port 35978
[ 5] local 192.168.1.3 port 5201 connected to 192.168.1.2 port 35980
[ 8] local 192.168.1.3 port 5201 connected to 192.168.1.2 port 35982
[ ID][Role] Interval Transfer Bitrate Retr Cwnd
[ 5][RX-S] 0.00-1.00 sec 101 MBytes 845 Mbits/sec
[ 8][TX-S] 0.00-1.00 sec 108 MBytes 904 Mbits/sec 0 516 KBytes
[ 5][RX-S] 1.00-2.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 1.00-2.00 sec 111 MBytes 928 Mbits/sec 0 540 KBytes
[ 5][RX-S] 2.00-3.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 2.00-3.00 sec 109 MBytes 919 Mbits/sec 0 566 KBytes
[ 5][RX-S] 3.00-4.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 3.00-4.00 sec 110 MBytes 920 Mbits/sec 0 566 KBytes
[ 5][RX-S] 4.00-5.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 4.00-5.00 sec 111 MBytes 930 Mbits/sec 0 566 KBytes
[ 5][RX-S] 5.00-6.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 5.00-6.00 sec 111 MBytes 927 Mbits/sec 0 566 KBytes
[ 5][RX-S] 6.00-7.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 6.00-7.00 sec 111 MBytes 931 Mbits/sec 0 566 KBytes
[ 5][RX-S] 7.00-8.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 7.00-8.00 sec 110 MBytes 925 Mbits/sec 0 566 KBytes
[ 5][RX-S] 8.00-9.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 8.00-9.00 sec 111 MBytes 931 Mbits/sec 0 566 KBytes
[ 5][RX-S] 9.00-10.00 sec 111 MBytes 933 Mbits/sec
[ 8][TX-S] 9.00-10.00 sec 110 MBytes 923 Mbits/sec 0 566 KBytes
[ 5][RX-S] 10.00-10.04 sec 4.18 MBytes 924 Mbits/sec
[ 8][TX-S] 10.00-10.04 sec 4.85 MBytes 1.07 Gbits/sec 0 566 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval Transfer Bitrate Retr
[ 5][RX-S] 0.00-10.04 sec 1.08 GBytes 924 Mbits/sec receiver
[ 8][TX-S] 0.00-10.04 sec 1.08 GBytes 924 Mbits/sec 0 sender
Ako ste si všimli, v príkaze je ďalší parameter –bidir, ktorý by mal zabezpečiť simultánny prenos v oboch smeroch (Full duplex). Tu je už vidieť, že výsledky zodpovedajú reálnym rýchlostiam. Vo Win 10 je s iperf3 údajne nejaký problém. Tu sú informácie, prečo by sa iperf3 nemal používať v OS Win.
- Správca iperf – ESnet (Energy Sciences Network) – hovorí : „iperf3 nie je oficiálne podporovaný na Windows, ale iperf2 áno. Odporúčame vám použiť iperf2. Niektorí ľudia používajú Cygwin na spustenie iperf3 v systéme Windows, ale nie všetky možnosti budú fungovať.“
- iPerf3 je emulovaný v systéme Windows – iPerf3 nevykonáva volania natívneho API systému Windows, pretože vie, ako vykonávať iba hovory Linux/POSIX, čo môže ovplyvniť výkon.
- Zvyčajne si sťahujem iperf3 3.1.3 pre Windows vydaný v roku 2016 a Microsoft poznamenáva, že tá, ktorú ponúka ESnet (verzia 3.16), je novšia, ale stále je o 15 pozadu, takže používatelia nepoužívajú najnovšiu verziu nástrojov.
Podľa vyššie uvedených informácii tomu rozumiem tak, že iperf3 bol vytvorený pre unix-like systémy a na MS Win sa emuluje za pomoci knižnice Cygwin. Ja som sa už ďalej Windowsom nezaoberal a výsledky z linuxu sú veľmi uspokojivé. Nemôžem tvrdiť, že problém robí samotný Windows, možno som mal skúsiť iperf2, ale to som už nespravil. Mne išlo v podstate o test HW časti spoja, či sú v poriadku prevodníky a samotné optické vlákno. Pre mňa skončil test úspešne a spoj sa môže realizovať.