Routre podporujuce WoL
Jan Waclawek
konfera na efton.sk
Čtvrtek Duben 13 00:00:12 CEST 2017
> Před pár léty jsem udělal s WoL zajímavou zkušenost. Zkusil jsem to v PC
> BIOSu nastavit, napsal jsem si prográmek a probouzel PC z notebooku. No
> a po čase jsem na to samo sebou zapomněl a pak jsem se divil, že se mi
> PC probouzí skoro pravidelně kolem třetí hodiny odpoledne. Naštěstí jsem
> si na své někdejší pokusy vzpomněl, WoL v BIOSu vypnul a byl pokoj.
> Ale dodneška nemám uspokojivé vysvětlení proč se vlastně to PC
> probouzelo. Zřejmě právě ta motyka střílela.
Ked uz je ten piatok...
Sietove protokoly, ten vrcholny vydobytok ludstva, ten vysledok
tisicroci civilizacneho vyvoja, ten technologicky zazrak, na ktorom
stoji a pada dnesny moderny svet, je v skutocnosti jeden velky
neusporiadany chaos. Je to nasledok mnohorocneho usilia, pre ktore su
slova klasika MK "lepenie hovna k hovnu" lichotivym eufemizmom.
Vysledkom je hromada hnoja, stolice, vykalov, hovien a sraciek,
doplnena niekolkymi hrstami zlatych nugetov a zahustena poriadnou
davkou dlazdic z cesty veducej do horucich pekiel. To cele je naliate
do kostry neusporiadane pozvaranych zeleznych dielov tej
najrozmanitejsej kvality, miestami nahradenych bambusom, pricom slabsie
zvary pripadne praskliny su vylepsene vrstvami lepiacej pasky. Ano, v
tej hmote sa najdu aj pevnejsie vrstvy zhutnene mnohorocnymi
intenzivnym miesenim a spracovavanim, vacsina vsak je pochopitelne
polotekutej konzistencie. Samozrejme toto nemoze udrzat pohromade
hrstka inzinierov, mohutne im v tom vsak pomaha armada blizsie- aj
dalej-vychodnych spolupracovnikov. To vsetko bedlivo strazene krdlom
pravnikov, ktori vzdy, ked niekto najde jeden z tych zlatych nugetov,
okamzite preskumaju, ci nahodou nepochadza z prave nimi patetovaneho
hovienka. No a vzdy je dostatok manazerskych typov, ktori sa snazia
vymysliet sposob, ako z toho doliatim dalsej davky podla moznosti co
najredsich sraciek ziskat prave tie zlate nugety.
Bohuzial, WoL a spol. patria do nezahustenej vacsiny, rovnako ako ine
protokoly a technologie z kategorie "uzitocne, ale zriedkave". Preto im
je venovana len taka ledabola pozornost typicky ustiaca do "mame to
implementovane, aj tak to nikto nebude pouzivat" a "nejako sa to
nastavuje a nejako to funguje". Ono vlastne tie routre su vynikajuci
priklad tejto skupiny - zhruba 50-90% featur ktore tie routre
"predavaju" su tohto charakteru - zdrojaky sa castokrat kopiruju z
depozitarov bez snahy o vyskusanie nieto este pochopenie, no a potom
pochopitelne nikto poriadne nevie, ako to funguje; realna dokumentacia
neexistuje, len pseudokecy typu "WoL - touto volbou zapnete WoL".
Predovsetkym, WoL - ako je to v nasej branzi zvykom - nema nejaku pevnu
definiciu, ale v skutocnosti sa tym oznacuje cela skupina podobnych
protokolov ci technologii (hoci pravnicke typy okamzite poukazu na to
ze prave ta ICH varianta je jedina ktora si zasluzi toto oznacenie, z
viac alebo menej absurdnych dovodov). Ledabole hladanie vrati asi pol
tucta suvisiacich patentov, pricom sa jedna o vselico mozne - metody
zalozene na konkretnom mediu resp. na nizsich vrstvach protokolu
(Wake-on-Link, takto napriklad moze zobudit PC nejaky polointeligentny
switch), metody vyuzivajuce ETH ramce a sietovy hardware ktory vsak
kvoli spotrebe funguje len v zjednodusenom rezime (to su tie "ozajstne"
WoL, vid nizsie), metody vyuzivajuce kompletny ETH dekoding, ba dokonca
az pomerne nezmyselne metody vyuzivajuce ciastocne zijuci IP stack (do
urcitej miery to moze davat zmysel pri hw offloadingu toho IP stacku).
V tomto poradi maju tie metody vacsiu spotrebu t.j. mensiu mieru
uspania, ale tiez vacsiu sancu prejst roznymi vrstvami sieti, t.j. sa
zvysuje "vzdialenost" na ktoru sa tak da pocitac zobudit, a znizuje
potrebna snaha na konfigurovanie jednotlivych medzikusov.
Tie "ozajstne" WoL su asi najrozsirenejsie dva. Ten prvy vyuziva "magic
packet"(TM) (http://www.google.com/patents/US5835719 - mozno to co
uvadzam nie su primarne patenty, nechce sa mi to dohladavat do
dosledkov) - cielove zariadenie sa zobudi, ak *kdekolvek* v pakete
uvidi tesne za sebou 6xFF a potom 16x svoju MAC adresu. Na prvy pohlad
to znie, ze takto by sa mal dat zobudit ten komp uplne odkialkolvek,
staci nejako prepasovat do lokalnej siete hocijaky paket s tymto
obsahom. Problemom je, ze pakety adresovane niekomu inemu switche
neprepustia k inkriminovanemu pocitacu. Vlastne k nemu mozu neprepustit
aj unicasty adresovane (predovsetkym na ETH urovni) priamo jemu, kedze
on uz nejaku dobu moze spat a switchom jeho MAC adresa mohla vypadnut z
pamate. Preto vlastne sa aj v ramci LAN implementuje ten magic packet
typicky ako (ETH) broadcast. (To, ze sa castokrat pouziva IP a to
UDP/TCP na port 9 je len taka perlicka - IP znova prechadza roznymi
medzikusmi lepsie ako nejaky nestandardny ETH, a ak by nahodou cielove
zariadenie nespalo, no tak nech mu to neurobi zle a zahodi sa to
riadenym sposobom - TCP port 9 je Discard Protocol, a u UDP sa ticho
predpoklada nieco podobne.) No lenze routre z principu broadcast
neprenasaju, takze musia to generovanie magic packetov akosi "vediet".
Su dve varianty - jedna je ta horsia a podla vsetkeho rozsirenejsia, ze
sa clovek musi zvonka prihlasit bud cez web rozhranie alebo telnet/ssh,
a kliknut/zadat prikaz "posli WoL s MAC adresou tou a tou". Ta lepsia a
zriedkavejsia je, ze sa da na routri nastavit ze pri prichode paketu
zvonka na jeho port X ho preposle do LAN ako broadcast. (Mimochodom,
tajne som dufal, ze onen neexistujuci zoznam bude obsahovat aj taketo
detaily o konkretnej implementacii toho WoL v tom-ktorom routri...)
Kedze magic packet obsahuje konkretnu MAC adresu zobudzaneho
zariadenia, zda sa mi dost nepravdepodobne, aby ktokolvek v sieti bez
toho aby na to bol nastavovany len tak cvicne odpocul tu MAC adresu a o
24 hodin neskor skusil na nu iniciativne poslat magic packet (hoci
vsetko je mozne, a v sietiach aj viac nez vsetko).
Ta druha alternativa WoL (alebo "LAN Wakeup") je
http://www.google.com/patents/US6134665 kde sa packetu kontroluje
cielova MAC adresa (co v modernej sieti so switchami je zbytocne)
pricom je dovoleny aj broadcast, no a potom sa vyberu konfigurovatelnou
maskou niektore byty z paketu, spocita sa na nich CRC16 a porovna s
ulozenou hodnotou. Takto sa da pomerne lahko zobudzat na paket viac ci
menej obskurneho protokolu (pochopitelne budu aj nejake falosne
zobudenia, ale to obvykle nevadi, a tie napokon budu aj pri tom magic
packete, mozeme spekulovat ze co je castejsie), kde je nejaka sanca ze
sa da prepasovat trebars aj nepriamo cez router (napriklad sa da
zobudzat na ARP dotaz na nejaku konkretnu IP adresu - to bude ETH
broadcast takze prejde switchmi). Problem je, ze tento protokol je az
prilis flexibilny co znamena, ze to treba pomerne komplikovane
nastavovat na zobudzanej aj zobudzajucej strane (nastavit masku
kontrolovanych bytov a ocakavany obsah, z ktoreho sa spocita to CRC),
takze to bezny uzivatel robit nebude, a tak ak toto je podporovane tak
pravdepodobne ako nejaka nedokumentovana kombinacia masky a CRC, tazko
povedat na co presne. Takze ak napriklad toto je driverom sietovky
alebo nejakou vrstvou OS na *nieco* nastavene pri zakliknuti toho WoL v
PC, a to *nieco* je potom *niekym* v sieti vysielane len tak cvicne
(napr. broadcast "je tu niekto kto vie moj obskurny protokol?"), no tak
na to to PC zareaguje, a nikto nikdy sa uz nedozvie, kto, co, preco, a
aj kebyze sa nejako dozvie, tato informacia mu je nanic pre dalsie
pouzitie, lebo kazde dalsie PC/sietovy HW/ovladac/OS to moze mat uplne
inak.
wek
Další informace o konferenci Hw-list