„Gospodarka, głupcze” – pod tym hasłem Bill Clinton wygrał w 1992 roku kampanię prezydencką. Miałem ochotę sparafrazować to hasło i dać temu wpisowi tytuł „Hardware, głupcze”, ale niektórzy nie zagłębiając się w treść i nie rozumiejąc kontekstu, gotowi byliby się obrazić, bo teraz wszyscy tacy delikatni i wrażliwi się stali. Skończyło się więc na wersji łagodniejszej. Aczkolwiek idea pozostaje aktualna – świadome korzystanie z rozwiązań IT oznacza nie tylko umiejętność skonfigurowania ich od strony programowej, ale przede wszystkim wymaga zrozumienia ich działania na poziomie hardware.
Miało być o interfejsach
W istocie rzeczy ten odcinek miał być o interfejsach VLAN i BRIDGE. I obiecuję, taki odcinek na pewno się pojawi, ale w trakcie pisania przypomniałem sobie, że Ubiquiti nie rekomenduje mostkowania interfejsów na części platform sprzętowych. Czy „nie rekomenduje” oznacza, że nie należy ich stosować? I czemu dotyczy to części, a nie wszystkich routerów z linii EdgeRouter? Tak dochodzimy do tematu dzisiejszego odcinka.
Hardware Offloading
Wysoka wydajność routerów EdgeRouter jest konsekwencją zastosowania mechanizmów Hardware Offloading. Pod tym trudnym hasłem kryją się mechanizmy sprzętowego realizowania wybranych funkcji, zamiast przetwarzania przez oprogramowanie na procesorze. Dzięki wyeliminowaniu CPU wydajność platformy nie jest zależna od jego obciążenia ani wydajności, osiągane są mniejsze opóźnienia i większa przepustowość. Przykładowo sprzętowe przetwarzanie pakietów IPv4 na EdgeRouter Lite (ERL) pozwala „przerzucić” 950 Mbps. Przy wyłączeniu mechanizmu offloading i programowym przetwarzaniu pakietów na CPU ta wydajność spada do około 300 Mbps. Niestety ponieważ Ubiquiti stosuje SoC od dwóch dostawców – MediaTek i Cavium – występują pewne różnice w dostępnych mechanizmach „odciążania” w zależności od producenta chipa w danym modelu routera.
MediaTek vs Cavium
Zatem które modele routerów oparto na SoC których producentów? Które mechanizmy realizowane są bezpośrednio przez hardware zamiast przez software? I jak włączyć lub – jeśli zajdzie taka uzasadniona potrzeba – wyłączyć offloading? Na szczęście Ubiquiti przygotowało tabele, które w czytelny sposób dają odpowiedź na te pytania.
IPsec Offloading
Sprawa jeszcze się nieco komplikuje, gdy zagłębić się w szczegóły. Otóż silną stroną routerów EdgeRouter jest akceleracja sprzętowa IPseca, która daje wyraźny wzrost wydajności w przypadku budowy tuneli site-to-site czy zastosowaniach client-to-site. Rzecz w tym, że tu znowu zachodzą pewne drobne, acz istotne różnice między platformami, trzeba też świadomie dobierać algorytmy szyfrowania i funkcje haszujące (skrótu). Dla bardzo dociekliwych dodam, że offloading dotyczy ruchu ESP. Ruch IKE nie jest „odciążany”, ale ponieważ negocjacja kluczy zachodzi na etapie inicjowania tuneli i ewentualnie okresowo jest ponawiana, nie ma to znaczenia dla ogólnej wydajności VPN.
Włączamy/Wyłączamy
Niestety włączenie lub wyłączenia mechanizmów offloadingu też wygląda nieco inaczej w urządzeniach opartych na SoC od Cavium, od tych zbudowanych z użyciem SoC dostarczonego przez MediaTek.
MediaTek Devices: ER-X / ER-X-SFP / EP-R6:
Włączenie mechanizmów akceleracji sprzętowej hwnat i ipsec (pierwsza tabela):
configure set system offload hwnat enable set system offload ipsec enable commit ; save
I wyłączenie:
configure set system offload hwnat disable set system offload ipsec disable commit ; save
UWAGA: zmiany dotyczące IPseca wymagają restartu urządzenia.
Cavium Devices: ER-4 / ER-6P / ERLite-3 / ERPoE-5 / ER-8 / ERPro-8 / EP-R8 / ER-8-XG:
Włączenie mechanizmów akceleracji sprzętowej IPv4/IPv6 i ipsec (pierwsza tabela):
configure set system offload ipv4 forwarding enable set system offload ipv4 gre enable set system offload ipv4 pppoe enable set system offload ipv4 vlan enable set system offload ipv6 forwarding enable set system offload ipv6 pppoe enable set system offload ipv6 vlan enable set system offload ipsec enable commit ; save
I wyłączenie:
configure set system offload ipv4 forwarding disable set system offload ipv4 gre disable set system offload ipv4 pppoe disable set system offload ipv4 vlan disable set system offload ipv6 forwarding disable set system offload ipv6 pppoe disable set system offload ipv6 vlan disable set system offload ipsec disable commit ; save
UWAGA: obecnie nie jest możliwe równoczesne włączenie wspomagania sprzętowego dla PPPoE oraz VLANów dla protokołu IPv6. Zmiany dotyczące IPseca wymagają restartu urządzenia.
Czy to działa?
Działanie mechanizmów offloadingu można łatwo sprawdzić:
admin@CERBER:~$ show ubnt offload IP offload module : loaded IPv4 forwarding: enabled vlan : enabled pppoe : disabled gre : disabled bonding : disabled IPv6 forwarding: enabled vlan : enabled pppoe : disabled bonding : disabled IPSec offload module: loaded Traffic Analysis : export : enabled dpi : enabled
Na zakończenie
Tym artykułem chciałbym zapoczątkować nową serię poświęconą Ubiquiti. Trochę bardziej zaawansowaną – dla użytkowników, których nie przeraża CLI i nie trzeba im wyjaśniać, jak połączyć się po SSH z użyciem PuTTYego. W razie pytań lub wątpliwości zapraszam do dyskusji na forum Ubiquiti Polska.
Komentarze