Wake on LAN, czyli komputerowa pobudka: Trochę teorii


 

Każdy „leniwy” administrator ma już pewnie tak skonfigurowane wszystkie urządzenia, aby móc zarządzać nimi zdalnie. Ze swojego centrum dowodzenia może zrobić praktycznie wszystko. W takich przypadkach najbardziej irytujące są momenty gdy coś jest odpięte od sieci, bądź nie jest włączone. O ile problemów warstwy pierwszej nie da się ostatecznie wyeliminować, to z samym włączeniem komputera jesteśmy w stanie sobie poradzić. Najprzydatniejszą i najbardziej rozpowszechnioną metodą na ożywianie PC-tów jest Wake on LAN (WoL). W tym kilku odcinkowym cyklu napiszę nieco o:
– teorii dotyczącej WoL
– programach umożliwiających budzenie
– przygotowaniu komputerów do budzenia
– konfigurowaniu bardziej rozbudowanych sieci aby umożliwić WoL
– alternatywnych metodach budzenia

Dziś zajmiemy się teorią. Technika „Wake on LAN” została opracowana w połowie lat dziewięćdziesiątych przez IBM i zapewne jest dziełem jakiegoś „leniwego” inżyniera, który miał już dość wstawania od biurka, żeby włączyć serwer w pokoju obok. Powiedzenie, że potrzeba jest matką wynalazków jest słuszne jednak, aby być bardziej ścisłym należy dodać, że ojcem jest lenistwo. Obecnie WoL zaimplementowany jest praktycznie we wszystkich komputerach.

Jak to właściwie możliwe, że zdalnie włączamy komputer? Zasada jest dość prosta. Całym procesem rządzi karta sieciowa. Podczas gdy komputer jest wyłączony (ale cały czas doprowadzone ma zasilanie) karta sieciowa działa w trybie czuwania (standby) i nie robi nic oprócz nasłuchiwania. Bombardowana jest całą masą różnych, rozgłaszanych w sieci ramek, ale czeka cierpliwie na tą jedną, jedyną, przeznaczoną tylko dla niej. Ta ramka to „magic packet”. Jeżeli karta takową rozpozna, wie, że powinna wysłać do płyty głównej sygnał do pobudki. Dalej wszystko wygląda tak samo jak byśmy sami uruchamiali kompa.

Aby spełniała swoje zadanie, ramka rozgłaszana jest w całej sieci (tradycyjny broadcast), więc aby nie spowodować przypadkowych „obudzeń” zbudowana jest dość specyficznie. Na samym początku 6 bajtów samych jedynek (binarnych), a później szesnaście razy adres MAC docelowego komputera. W sumie jeden magic packet to 102 bajty. Jak już pewnie zauważyliście kluczowym elementem potrzebnym do budzenia będzie MAC adres naszego celu. Jeżeli wysyłamy pakiet z innej podsieci to potrzebny będzie również adres i maska sieci docelowej. Niektóre urządzenia zaimplementowaną mają opcję „SecureOn”, która po włączeniu wymaga hasła do rozpoczęcia budzenia, takie hasło dołączane jest na końcu ramki. Mimo tego, że specyfika sieci bezprzewodowych różni się nieco od kablowych, to dostępna jest również metoda na budzenie komputerów używających karty bezprzewodowej jako głównego interfejsu sieciowego. Metoda nazywa się dość intuicyjnie – Wake on wireless LAN (WoWLAN).

W dobie Green IT i wymagań co do energooszczędności warto zastanowić się również nad WoL pod kontem wykorzystania energii elektrycznej. Jak już wcześniej wspominałem, aby WoL zadziałało potrzebujemy karty sieciowej w trybie nasłuchiwania, a to wymaga prądu. Szacuje się, że komputer w takim stanie potrzebuje od 2 do 8 Watów, choć są już opracowane rozwiązania, które wymagają jedynie 42mW dla samej funkcji WoL. Warto więc podliczyć sobie jakie będą koszty używania Wake on LAN zanim podejmiemy ostateczną decyzję. Uwierzcie mi, przy kilku setkach komputerów jest na czym zaoszczędzić. Pewnie znalazłyby się obszary gdzie można by urwać dużo więcej Watów to jednak warto brać pod uwagę wszystko.

Karta sieciowa będzie obsługiwała proces budzenia jeżeli ją o tym poinformujemy. Zazwyczaj należy ustawić to w BIOS-e, ale system również dorzuca swoje 3 grosze i też powinien być odpowiednio skonfigurowany aby WoL działało poprawnie. Przy wyłączaniu system przechodzi w odpowiedni stan zasilania i wysyła stosowne komunikaty do urządzeń, w tym do karty sieciowej. Od tych instrukcji tak naprawdę zależy, czy karta będzie nasłuchiwała magicznych pakietów, czy po prostu pójdzie spać. Poniżej zestawienia stanów zasilanie systemu oraz urządzeń. Warto dodać, że Wake on LAN powoduje przejście do stanu S0 z poniższych, czyli zarówno z uśpienia, hibernacji jak i „miekkiego” wyłączenia (S5).

Stany zasilania systemu operacyjnego

Stan ACPI Opis
Normalna praca S0 System jest włączony i pracuje normalnie
Uśpienie S1

S2

S3

System jest w trybie uśpienia, większość urządzeń jest wyłączonych, zapotrzebowanie na energię elektryczną znacznie zmniejszone. Im niższy poziom uśpienia tym więcej czasu system potrzebuje na obudzenie.
Hibernacja S4 System jest w stanie hibernacji, zapotrzebowanie na prąd jest najniższe, system przenosi zawartość pamięci do pliku, dzięki temu stan systemu będzie mógł byc odtworzony po uruchomieniu.
Miękkie wyłączenie S5 System jest wyłączony, nie można odtworzyc stanu systemu sprzed wyłączenia. Tylko niektóre urządzenia są zasilana, m.in. karta sieciowa.
Twarde wyłączenie G3 System wyłączony całkowicie, nie pobiera prądu.

Stany zasilania urządzeń

Stan ACPI Opis
Normalna praca D0 Urządzenie włączone, normalne zapotrzebowanie na energię
Stan pośredni D1

D2

Urządzenie pobiera mniejsze porcje energii, jest to uzależnione konkretnych urządzeń
Wyłączenie miękkie D3 Hot Urządzenie jest wyłączone, lecz w przypadku gdy doprowadzone jest do niego dodatkowe zasilanie, potrafi reagować na rozkaz i przejść w wyższy stan zasilania
Wyłączenie twarde D3 Cold Urządzenie wyłączone, nie pobiera energii, nie ma możliwości przejścia w wyższy stan dopóki nie zostanie podane zasilanie.

Microsoft podjął (jak zwykle?) za nas decyzję. W Windows 7 WoL nie jest oficjalnie wspierany (choć zazwyczaj działa). Za to już w najnowszym OS-ie, czyli Windows 8, WoL nie działa, ponieważ system podczas wyłączania wprowadza się w stan S4 lub S5, a wszystkim urządzeniom nakazuje wejść w stan D3 (całkowite wyłączenie). W ten sposób urządzenie nie pobiera energii po wyłączeniu, co jest jak najbardziej pożądane w urządzeniach mobilnych (platforma docelowa Win8), ale niestety niekonieczne w przypadku komputerów stacjonarnych.

W zasadzie wykorzystywanie WoL w małej sieci nie stanowi większego problemu. Operujemy na drugiej warstwie, ponieważ ramkę wysyłamy z tej samej sieci. Komputery też zazwyczaj mają włączoną możliwość budzenia przez LAN. Ciekawie zaczyna robić się dopiero gdy administrujemy bardziej rozbudowaną siecią, z wieloma podsieciami, VLANami i kilkoma setkami komputerów. Właśnie z takiej perspektywy postaram się podejść do tematu, administratorzy małych sieci będą po prostu mieli łatwiej i mogą pominąć niektóre kwestie ;).

Tematem następnego wpisu o Wake on LAN będą aplikacje służące do generowania magicznych ramek oraz bardziej rozbudowane do zarządzania budzeniem. Jeżeli macie jakieś pytania bądź sugestie dajcie znać w komentarzach.

Seria „Wake on LAN, czyli komputerowa pobudka” zawiera:
Trochę teorii
Programy
Przygotowanie urządzeń
Vlany i konfiguracja urządzeń Cisco
WoL przez Internet
Konfiguracja WoL na Livebox


  • arciu

    Czy jest jakikolwiek obejście aby komputer z systemem Windows 8 można obudzić ze stanu S4??
    Z góry dziękuję za odpowiedź.

    • Dariusz Góra

      Tak, funkcja WoL dostała rykoszetem przez wprowadzone w Win8 szybkie bootowanie. Jeżeli wyłączysz tę opcję (Panel sterowania > Opcje zasilania > Wybierz działanie przycisków zasilania > Włącz szybkie uruchamianie), WoL powinno działać. Zajrzyj jutro na bloga, będzie o tym krótki artykulik.

  • Rafał Ho

    Witam,
    Mam mały problem, gdy komputer wchodzi w stan uśpienia, bądź hibernacji WoL działa bez zarzutu, natomiast, jeżeli wyłączę komputer normalnie już budzenie go przez sieć nie działa.

    Widać po diodach karty (która dalej jest aktywna), że jakieś informacje docierają w momencie, kiedy próbuję użyć WoL, natomiast komputer nie reaguje.

    Jakaś sugestia jak rozwiązać ten problem?!

    (Windows 7)