Onion to de facto router, za 45 zł, z gpio i przerobionym przez producenta openwrt. Rozmiary + cena oniona przewraca mój świat do góry nogami.
Żeby pokazać jakie to jest maleństwo zestawiłem od lewej:
Onion, Arduino micro, Arduino uno, Orange PI one, Raspberry Pi 3.
~
Schemat zabawy:
- Stawiamy na onionie serwer http (uhttpd) hostujący angularową stronę, którą można podejrzeć na http://www.c-y-r-k-i-e-l.pl (ta jest akurat hostowana na prawdziwych serwerach)
- Instalujemy htop
- Testujemy obciążenie przez jmeter
Przygotowania
Plus i minus jest na dwóch pierwszych pinach od strony z wcięciem.
Absurdem jest, że rozszerzenie do zasilania oniona po usb kosztuje więcej niż sam onion. Całe szczęście mamy zasilacz renomowanej chińskiej marki (sugestywna cisza)…
Onion przyjmuje 3.3 V, lepiej nie ustawiajcie 3.5 V jeśli wierzycie temu co wskazuje wasz zasilacz.
Radiator, model π-FF-KO, wariant 500ML
Celowo pomijam etap konfiguracji, przechodzenie go przez przewodnik hostowany przez oniona w jego sieci to droga przez mękę, polecam od razu połączyć się przez ssh na root@192.168.3.1 (hasło onioneer), skonfigurować dostęp oniona do internetu przez inną sieć wifi poleceniem wifisetup, wykonać polecenie oupgrade, poczekać parę minut na ściągnięcie i flashowanie nowym firmwarem i zacząć się bawić.
Stawiamy stronę
Defaultowo praktycznie cała pamięć jest zaalokowana na pliki tymczasowe.
https://en.wikipedia.org/wiki/Df_(Unix)
Nie mam wspomnianego rozszerzenia usb żeby wypalić własny obraz na onionie, więc improwizuję i wrzucam stronę do /tmp/www (taaak, zniknie po rebootcie) i edytuję /etc/config/uhttpd (uhttpd jest zainstalowany defaultowo, do hostowania wizarda).
Edytuję tylko jedną linię:
Po tym zostaje faktycznie wrzucić stronę w to miejsce:
…i zrestartować serwer:
Po paru chwilach można spróbować wejść na stronę:
HTTP z zapytaniem o zadania nadal trafia do domeny c-y-r-k-ie-l.pl, ale chcę w przyszłości postawić na onionie jakiś mikro serwer z bazą. Tak czy inaczej, można odwiedzić cyrkiel z oniona.
Instalujemy htop
Z niezrozumiałych dla mnie powodów, defaultowe repozytoria jakie są dodane (onionowe, od producenta) nie mają htopa, ale w manualu wskazują jak dodać repo od oryginalnego open-wrt.
Wystarczy więc dodać na koniec pliku /etc/opkg.conf linię:
http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/packages
Cały plik będzie wtedy wyglądał w ten sposób:
Dalej zostaje wykonać opkg update, potem opkg install htop i włączyć htopa:
Htop przyda nam się do następnego punktu.
Testujemy obciążenie przez jmeter
Jmeter można pobrać bezpośrednio ze strony Apache (i ten sposób polecam, wcześniej pobrałem przez apt, brakowało template-ów które przydały mi się potem).
Otworzyłem szablon do testowania webserwisów i zmieniłem opcje tak, żeby jmeter pobierał wyłącznie stronę główną + wszystkie powiązane pliki.
Podążałem tym tutorialem:
http://jmeter.apache.org/usermanual/build-ws-test-plan.html
Jeśli ktoś chce gotowy scenariusz testowy (chyba za dużo powiedziane ) który z tego wyszedł to wklejam tutaj:
Test zaczynam od 20 wątków, ramp-up period to czas w jakim wszystkie mają wystartować (5s/20, jeden wątek musi być tworzony co 250 ms żeby wypełnić podany ramp-up). Onion w prawym górnym rogu, jeszcze niczego się nie spodziewa. START.
Onion w maximum wykorzystania zasobów w trakcie testu, 67 % CPU, średnio 45-55%, max natężenie prądu 0.33 A (w bezczynności oscyluje wokół ~0.17A), cały test trwał mniej niż minutę.
Poradził sobie z 20 wątkami, czemu nie ustawić więc 40?
Tu po raz pierwszy pojawia się na chwilę myśl – obciążenie CPU pozostało takie samo, być może nie uda mi się zagotować Oniona takimi testami, bo standard 802.11 jest bottleneckiem?
Rzucam okiem w docsy: onion wspiera b/g/n, Thinkpad T430 a/b/g/n, jakie szybkości oferuje n?
Wystarczające żeby przesyłać 75 MB na sekundę max, a minimum 12.5 MB, ergo to nie standard jest problemem tylko karta sieciowa na onionie – przetwarza pakiety na tyle wolno, że kernel zwyczajnie nie dostanie aż tyle pakietów do obsłużenia żeby zapełnić go na 100%!
Do ostatecznego dowodu ustawiam z 40 na 1000 wątków z ramp-up na 1s. Loop-count na 200, tak, aby test trwał minimum kilkanaście minut.
Start. Wynik – obciążenie zarówno w pierwszej, w drugiej, dziesiątej i następnych minutach nie przekracza 65 %.
W prawym górnym rogu znajduje się licznik aktywnych wątków wykonujących test.
Wniosek:
1) Nie upieczesz oniona przez ddos
2) Jak bardzo się postarasz i upieczesz to masz nowego za 45 zł
Edit:
Nie potwierdziłem nigdzie, że faktycznie podłączyłem się do 802.11 w wersji ‘n’, post można uzupełnić tym linkiem:
Przydatne linki:
Paczki jakie być może uruchomią się na Omedze, a nie ma ich w defaultowym repo:
https://downloads.lede-project.org/releases/packages-17.01/mipsel_24kc/packages/
Wylistowane komendy busyboxa:
https://busybox.net/downloads/BusyBox.html
Cross-compiling na oniona (stawianie dockera i kompilacja na nim, dopiero potem przerzucenie go na płytkę, upieeeerdliwe)
https://onion.io/2bt-cross-compiling-c-programs-part-1/
Doc od uhttpd:
https://wiki.openwrt.org/doc/uci/uhttpd
Doc opkg:
https://wiki.openwrt.org/doc/techref/opkg
JVM na Onionie, pewnie wypróbuję kiedyś:
http://community.onion.io/topic/36/java-on-omega-with-wrappers/13