Zabawy z Onion Omega 2

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:

27394066_1602885673097819_81576568_oOnion, Arduino micro, Arduino uno, Orange PI one, Raspberry Pi 3.

~

Schemat zabawy:

  1. 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)
  2. Instalujemy htop
  3. Testujemy obciążenie przez jmeter

Przygotowania

input_kable

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)…

zasilaczOnion przyjmuje 3.3 V, lepiej nie ustawiajcie 3.5 V jeśli wierzycie temu co wskazuje wasz zasilacz.

stylowy_radiatorRadiator, 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.

Screenshot from 2018-01-26 23-31-30https://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ę:

Screenshot from 2018-01-26 23-42-15

Po tym zostaje faktycznie wrzucić stronę w to miejsce:
Screenshot from 2018-01-26 21-56-54

…i zrestartować serwer:

Screenshot from 2018-01-26 23-48-42

Po paru chwilach można spróbować wejść na stronę:
Screenshot from 2018-01-26 20-14-27

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:
Screenshot from 2018-01-26 23-58-30

Dalej zostaje wykonać opkg update, potem opkg install htop i włączyć htopa:

Screenshot from 2018-01-26 20-29-49

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:

https://pastebin.com/57U1Tvfv

Screenshot from 2018-01-26 21-41-15Test 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.

Screenshot from 2018-01-26 21-59-43Onion 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?

Screenshot from 2018-01-26 22-01-48

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?

Screenshot from 2018-01-27 09-49-38

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.

Screenshot from 2018-01-26 22-11-01

Start. Wynik – obciążenie zarówno w pierwszej, w drugiej, dziesiątej i następnych minutach nie przekracza 65 %.

Screenshot from 2018-01-26 22-12-07W 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:

https://askubuntu.com/questions/173317/how-to-determine-which-wifi-technology-is-currently-used-in-connection

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s