´ UC ˇ EN´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA ELEKTROTECHNIKY A KOMUNIKACN ´ USTAV TELEKOMUNIKAC´I FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS
ˇR ˇ EN´I VZDA ´ LENOST´I STANIC PROSTR ˇ EDNICTV´IM ME ICMP PROTOKOLU V IP S´IT´ICH
´ RSK ˇ A ´ PRACE ´ BAKALA BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2008
ˇ A ´ LUCIE JAROSOV
´ UC ˇ EN´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY ˇ ´ICH TECHNOLOGI´I A KOMUNIKACN ´ USTAV TELEKOMUNIKAC´I FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS
ˇR ˇ EN´I VZDA ´ LENOST´I STANIC PROSTR ˇ EDNICTV´IM ME ICMP PROTOKOLU V IP S´IT´ICH HOST DISTANCE MEASUREMENT USING ICMP PROTOCOL IN IP NETWORKS
´ RSK ˇ A ´ PRACE ´ BAKALA BACHELOR’S THESIS
´ AUTOR PRACE
ˇ A ´ LUCIE JAROSOV
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2008
ING. RADIM BURGET
´ ´I ZADAN
Seznamte se s n´astroji pro mˇeˇren´ı vzd´alenost´ı v s´ıti. Seznamte se s protokolem ICMP. Proved’te n´avrh aplikace popiˇste a v jazyce C ˇci C++ implementujte. Vytvoˇrte automatick´e skripty pro mˇeˇren´ı RTT vzd´alenost´ı. Proved’te mˇeˇren´ı vzd´alenost´ı mezi mnoˇzinou server˚ u a vytvoˇrte tr´enovac´ı data. Posud’te z´avislost parametru RTT na vzd´alenosti na mapˇe.
ABSTRAKT Souˇcasn´y Internet se ˇc´ım d´al ˇcastˇeji pot´yk´a s probl´emem spr´avn´eho urˇcen´ı vzd´alenost´ı mezi jednotliv´ymi stanicemi. Nejˇs´ırˇs´ı dopad m´a znalost t´eto veliˇciny v oblastech optim´aln´ıho rozloˇzen´ı s´ıtˇe aplikaˇcn´ıho multicastu, spr´avn´eho v´ybˇeru u´ˇcastn´ıka peer-to-peer s´ıtˇe, nebo pˇri prost´em rozhodov´an´ı koncov´eho uˇzivatele, kter´e z nejbliˇzˇs´ıch zrcadel pouˇz´ıt pro staˇzen´ı nˇejak´ych dat. Nejbliˇzˇs´ı v tomto smyslu vˇsak nemus´ı nutnˇe znamenat geograficky nejbliˇzˇs´ı - vzd´alenosti na Internetu jsou typicky vyjadˇrov´any ve veliˇcin´ach jako je latence nebo ˇs´ıˇrka p´asma. Vˇsechny tyto pˇr´ıklady maj´ı spoleˇcnou snahu o u´sporu ˇs´ıˇrky p´asma a t´ım p´adem ekonomickou u´sporu. Metody odhadu pozice v s´ıti pracuj´ı na z´akladˇe mˇeˇren´ı parametru latence. V t´eto pr´aci budou vytvoˇreny n´astroje pro mˇeˇren´ı tohoto parametru a z´aroveˇn s pomoc´ı tˇechto n´astroj˚ u uk´az´ano, jak moc spolu koresponduj´ı veliˇciny geografick´a vzd´alenost a latence.
ˇ A ´ SLOVA KL´ICOV ICMP protokol, ping, latence, RTT, IDMaps, GNP
ABSTRACT Current internet more and more often faces the problem of the right definition of distance between the single hosts. The knowledge of this quantity influences the areas of the optimal lay-out of overlay multicast networks, the right selection of peer-to-peer network participant, or the simple decision of the end user: which one of the nearest mirrors to use for downloading datas. The nearest one doesn’t have to mean the nearest in geographical point of view - the distance on Internet is usually expressed by quantities as latency or bandwidth. All these examples have got the saving of bandwidth in common and therefore economical saving. The methods of host position prediction in networks work on the basis of measuring latency parameter. The tools for measuring of this parameter will be set up in this thesis and at the same time it will be shown how geographical distance and latency correspond with each other.
KEYWORDS ICMP protocol, ping, latency, RTT, IDMaps, GNP
ˇ A ´ L. Mˇeˇren´ı vzd´alenost´ı stanic prostˇrednictv´ım ICMP protokolu v IP s´ıt´ıch. JAROSOV ´ UCEN ˇ ´I TECHNICKE ´ V BRNE, ˇ FAKULTA ELEKTROTECHNIKY A Brno: VYSOKE ˇ ´ICH TECHNOLOGI´I, USTAV ´ KOMUNIKACN TELEKOMUNIKAC´I, Rok vyd´an´ı: 2008. Poˇcet stran 63. Vedouc´ı bakal´aˇrsk´e pr´ace Ing. Radim Burget
ˇ ´ ´I PODEKOV AN ´ Dˇekuji vedouc´ımu bakal´aˇrsk´e pr´ace Ing. Radimu Burgetovi z Ustavu telekomunikac´ı FEKT VUT v Brnˇe za velmi uˇziteˇcnou metodickou pomoc a cenn´e rady pˇri zpracov´an´ı bakal´aˇrsk´e pr´ace. D´ale dˇekuji sv´emu pˇr´ıteli Pavlovi Fojtovi za neziˇstn´e koment´aˇre a podporu v pr˚ ubˇehu tvorby t´eto pr´ace. V Brnˇe dne . . . . . . . . . . . . . . .
........................... podpis autora
´ SEN ˇ ´I PROHLA Prohlaˇsuji, ˇze svou bakal´aˇrskou pr´aci na t´ema Mˇeˇren´ı vzd´alenost´ı stanic prostˇrednictv´ım ICMP protokolu v IP s´ıt´ıch jsem vypracoval samostatnˇe pod veden´ım vedouc´ıho bakal´aˇrsk´e pr´ace a s pouˇzit´ım odborn´e literatury a dalˇs´ıch informaˇcn´ıch zdroj˚ u, kter´e jsou vˇsechny citov´any v pr´aci a uvedeny v seznamu literatury na konci pr´ace. Jako autor uveden´e bakal´aˇrsk´e pr´ace d´ale prohlaˇsuji, ˇze v souvislosti s vytvoˇren´ım t´eto bakal´aˇrsk´e pr´ace jsem neporuˇsil autorsk´a pr´ava tˇret´ıch osob, zejm´ena jsem nezas´ahl nedovolen´ym zp˚ usobem do ciz´ıch autorsk´ych pr´av osobnostn´ıch a jsem si plnˇe vˇedom n´asledk˚ u poruˇsen´ı ustanoven´ı § 11 a n´asleduj´ıc´ıch autorsk´eho z´akona ˇc. 121/2000 Sb., vˇcetnˇe moˇzn´ych trestnˇepr´avn´ıch d˚ usledk˚ u vypl´yvaj´ıc´ıch z ustanoven´ı § 152 trestn´ıho z´akona ˇc. 140/1961 Sb.
V Brnˇe dne
...............
.................................. (podpis autora)
OBSAH ´ Uvod
11
1 Teoretick´ y z´ aklad pro mˇ eˇ ren´ı vzd´ alenost´ı v s´ıt´ıch 1.1 Zpoˇzdˇen´ı (latency) . . . . . . . . . . . . . . . . . . 1.2 ICMP . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Mˇeˇren´ı RTT . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Aplikace ping . . . . . . . . . . . . . . . . . 1.3.2 Faktory ovlivˇ nuj´ıc´ı mˇeˇren´ı RTT . . . . . . . 1.4 Odhad geografick´e polohy ze znalosti IP adresy . .
. . . . . .
13 13 14 16 16 17 18
. . . . . . . . . . . .
20 20 20 20 22 22 22 23 24 25 26 26 28
. . . . . . . . . . .
30 30 30 30 31 31 33 33 34 35 35 36
2 Predikce pozice stanice v s´ıti 2.1 Projekty Remos a SPAND . . . . . 2.1.1 Remos . . . . . . . . . . . . 2.1.2 SPAND . . . . . . . . . . . 2.2 IDMaps . . . . . . . . . . . . . . . 2.2.1 Sonar a HOPS . . . . . . . 2.2.2 Metrika . . . . . . . . . . . 2.2.3 Zp˚ usoby mˇeˇren´ı . . . . . . . 2.2.4 Tracery . . . . . . . . . . . 2.2.5 Rozloˇzen´ı tracer˚ u . . . . . . 2.2.6 Virtu´aln´ı spojen´ı . . . . . . 2.2.7 V´ ykonnost syst´emu . . . . . 2.3 Global Network Positioning (GNP)
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
3 N´ astroje pro mˇ eˇ ren´ı latence 3.1 Vytvoˇren´ı zdrojov´ ych k´od˚ u aplikace ping . . . . . . . . . 3.1.1 Implementace . . . . . . . . . . . . . . . . . . . . 3.1.2 Ovˇeˇren´ı funkˇcnosti . . . . . . . . . . . . . . . . . 3.2 Vytvoˇren´ı skript˚ u pro mˇeˇren´ı RTT a zpracov´an´ı v´ ysledk˚ u 3.2.1 S´ıt’ PlanetLab . . . . . . . . . . . . . . . . . . . . 3.2.2 Vytvoˇren´ı seznamu stanic . . . . . . . . . . . . . 3.2.3 Skript pro mˇeˇren´ı RTT . . . . . . . . . . . . . . . 3.2.4 Poˇc´ıt´an´ı geografick´e vzd´alenosti . . . . . . . . . . 3.2.5 Odstranˇen´ı duplicit . . . . . . . . . . . . . . . . . 3.2.6 Traceroute . . . . . . . . . . . . . . . . . . . . . . 3.3 Datab´aze namˇeˇren´ ych hodnot . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . . . . . . .
. . . . . .
. . . . . . . . . . . .
. . . . . . . . . . .
4 Zpracov´ an´ı namˇ eˇ ren´ ych hodnot 4.1 Zmˇena z´avislosti RTT vzhledem k 4.2 D´elka mˇeˇren´ı . . . . . . . . . . . 4.3 Anal´ yza referenˇcn´ıho grafu . . . . 4.4 Anal´ yza evropsk´ ych uzl˚ u . . . . . 4.5 Anal´ yza americk´ ych uzl˚ u . . . . . 4.6 Zhodnocen´ı namˇeˇren´ ych v´ ysledk˚ u
denn´ı dobˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
37 37 40 43 45 45 45
5 Z´ avˇ er
48
Reference
49
Seznam symbol˚ u, veliˇ cin a zkratek
51
Seznam pˇ r´ıloh
52
A Zdrojov´ y k´ od aplikace PING
53
B Skript ping nodes random
57
C Funkce vzdalenost.bc pro poˇ c´ıt´ an´ı geografick´ e vzd´ alenosti
59
D Skript Count
60
E Skript remove dup
62
F Skript prepare nodes
63
´ ˚ SEZNAM OBRAZK U 1.1 2.1 2.2 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9
ICMP paket - struktura . . . . . . . . . . . . . . . . . . . . . . . . Sd´ılen´ı RTT u ´daj˚ u d´ıky mal´e vzd´alenosti . . . . . . . . . . . . . . . Optim´aln´ı rozloˇzen´ı tracer˚ u . . . . . . . . . . . . . . . . . . . . . . Z´avislot RTT na geografick´e vzd´alenosti - vˇsechny vzorky, 14.5.2008 Z´avislot RTT na geografick´e vzd´alenosti - detail, 14.5.2008 . . . . . Z´avislot RTT na geografick´e vzd´alenosti - 20.4.2008 . . . . . . . . . Z´avislot RTT na geografick´e vzd´alenosti - 22.4.2008 . . . . . . . . . Porovn´an´ı z´avislosti RTT v r˚ uznou dobu - 20.4.2008, 14.5.2008 . . . Z´avislost RTT na geografick´e vzd´alenosti - barevnˇe oddˇelˇen´e skupiny, 14.5.2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oblast nejvˇetˇs´ı koncentrace RTT, 14.5.2008 . . . . . . . . . . . . . Z´avislost RTT na geografick´e vzd´alenosti - Evropa, 14.5.2008 . . . . Z´avislost RTT na geografick´e vzd´alenosti - Amerika, 14.5.2008 . . .
. . . . . . . .
14 21 27 37 38 38 39 40
. . . .
44 45 46 46
SEZNAM TABULEK 1.1 3.1 4.1 4.2 4.3
Nejˇcastˇejˇs´ı typy ICMP paketu . . . . . . . . . . . . . . . . . . . . Porovn´an´ı linuxov´e a novˇe vytvoˇren´e aplikace v milisekund´ach . . Regresn´ı a korelaˇcn´ı koeficienty . . . . . . . . . . . . . . . . . . . Z´avislost RTT na poˇctu odeslan´ ych paket˚ u pro r˚ uzn´e vzd´alenosti Z´avislost RTT na poˇctu odeslan´ ych paket˚ u pro r˚ uzn´e vzd´alenosti -
. . . . . . I . II
15 31 39 41 42
´ UVOD V posledn´ı dobˇe vzr˚ ust´a potˇreba rychle a efektivnˇe urˇcovat vzd´alenosti mezi jednotliv´ ymi stanicemi v Internetu. D˚ uvodem je obecn´a snaha poskytovatel˚ u datov´ ych pˇrenos˚ u o co nejvˇetˇs´ı u ´sporu ˇs´ıˇrky p´asma a t´ım i u ´sporu n´aklad˚ u. Typick´ ym pˇr´ıkladem zmenˇsen´ı potˇrebn´e ˇs´ıˇrky p´asma m˚ uˇze b´ yt tzv. multicast. Multicast je metoda rozes´ıl´an´ı paket˚ u z jednoho zdrojov´eho stroje ke skupinˇe nˇekolika koncov´ ych stanic, pˇriˇcemˇz data vys´ılan´a zdrojem se replikuj´ı podle potˇreby v jednotliv´ ych smˇerovaˇc´ıch a pˇrepos´ılaj´ı se d´ale na ta s´ıt’ov´a rozhran´ı, za nimiˇz se nach´azej´ı registrovan´ı pˇr´ıjemci. Typick´e vyuˇzit´ı multicastu m˚ uˇze b´ yt napˇr´ıklad pˇri streamov´an´ı IPTV, kdy zdroj nemus´ı pos´ılat pro 1000 pˇr´ıjemc˚ u 1000 datov´ ych tok˚ u, coˇz obzvl´aˇst’ u videopˇrenosu m˚ uˇze znamenat v´ yraznou u ´sporu ˇs´ıˇrky p´asma jednotliv´ ych linek. Bohuˇzel multicastov´e protokoly st´ale nejsou v dneˇsn´ı dobˇe ze strany komerˇcn´ıch poskytovatel˚ u pˇriliˇs podporov´any, jeho vyuˇzit´ı z˚ ust´av´a sp´ıˇse na akademick´e p˚ udˇe (v´ yjimkou z˚ ust´av´aj´ı poskytovatel´e IPTV, avˇsak ani ti nepodporuj´ı mutlicastov´e vys´ıl´an´ı vz´ajemnˇe mezi sv´ ymi s´ıtˇemi; tuto situaci se pokouˇs´ı ˇreˇsit napˇr. N´arodn´ı centrum videa, kter´e umoˇzn ˇuje jednotliv´ ym poskytovatel˚ um pr´avˇe vz´ajemn´e propojen´ı a je potom pouze na nich, zda se rozhodnou tyto multicastov´e pˇrenosy distribuovat d´ale ve sv´e s´ıti). Jedn´ım z d˚ uvod˚ u mal´eho rozˇs´ıˇren´ı je fakt, ˇze pro klasick´e smˇerovaˇce je mnohem jednoduˇsˇs´ı pouze smˇerov´an´ı paket˚ u nam´ısto dalˇs´ıch rozhodovac´ıch mechanism˚ u a ˇ sen´ım se nab´ız´ı b´ replikace paket˚ u. Reˇ yt tzv. aplikaˇcn´ı (overlay) multicast. Princip spoˇc´ıv´a v tom, ˇze pˇr´ıjemce dat se z´aroveˇ n m˚ uˇze st´at jejich vys´ılaˇcem (pˇrepos´ılaˇcem) dalˇs´ım uzl˚ um, ˇc´ımˇz se v podstatˇe simuluje multicast. A pr´avˇe zde se st´av´a d˚ uleˇzitou znalost vzd´alenost´ı mezi stanicemi v s´ıti: Pomoc´ı n´ı se totiˇz m˚ uˇze mnohem l´epe optimalizovat struktura t´eto pˇrekryvn´e s´ıtˇe a t´ım p´adem zv´ yˇsit jej´ı v´ ykon. Znalost vzd´alenost´ı uzl˚ u je tak´e d˚ uleˇzit´a pro peer-to-peer s´ıtˇe, ve kter´ ych spolu jednotliv´ı u ´ˇcastn´ıci komunikuj´ı napˇr´ımo a navz´ajem si poskytuj´ı r˚ uzn´e sluˇzby. Je tedy nasnadˇe, ˇze dobr´ y odhad vzd´alenosti m˚ uˇze v´ yraznˇe usnadnit v´ ybˇer tˇechto jednotliv´ ych poskytovatel˚ u. Aˇckoliv jiˇz bylo provedeno nˇekolik r˚ uzn´ ych v´ yzkum˚ u t´ ykaj´ıc´ıch se t´eto problematiky, zat´ım neexistuje ˇz´adn´ y standardizovan´ y protokol pro mˇeˇren´ı vzd´alenost´ı mezi jednotliv´ ymi koncov´ ymi body. Existuje nˇekolik r˚ uzn´ ych metod, pomoc´ı kter´ ych se d´a odhadnout pozice jednotliv´ ych stanic v s´ıti. Mezi nejzn´amˇejˇs´ı patˇr´ı Spand, Remos project, IDMaps a GNP (kter´a d´av´a moment´alnˇe jedny z nejpˇresnˇejˇs´ıch v´ ysledk˚ u). Je velmi d˚ uleˇzit´e uvˇedomit si motivaci (d˚ uvod) mˇeˇren´ı vzd´alenost´ı, protoˇze r˚ uzn´e architektury poskytuj´ı r˚ uzn´e typy informac´ı a ne vˇsechny mohou b´ yt pouˇziteln´e pro konkr´etn´ı pˇr´ıpady. Aby byly tyto architektury pouˇziteln´e, je tˇreba, aby byly dostateˇcnˇe pˇresn´e, rychl´e a snadno rozˇs´ıˇriteln´e. Drtiv´a vˇetˇsina tˇechto metod m´a spoleˇcnou jednu vˇec - zab´ yvaj´ı se odhadem vz´ajemn´ ych vzd´alenost´ı na z´akladˇe
11
mˇeˇren´ı a vyhodnocen´ı parametru latence. Je to ˇcas, kter´ y uplyne od odesl´an´ı zpr´avy zdrojov´ ym uzlem po jej´ı pˇrijet´ı na uzlu c´ılov´em. Tato pr´ace si klade za c´ıl vytvoˇrit sadu n´astroj˚ u pro mˇeˇren´ı latence. S jejich pomoc´ı se pak na z´akladˇe namˇeˇren´ ych hodnot pokus´ı odpovˇedˇet na ot´azku, zda mezi veliˇcinami latence a geografick´e vzd´alenosti existuje nˇejak´a vz´ajemn´a souvslost, tedy zda lze pomoc´ı protokolu ICMP zmˇeˇrit nebo alespoˇ n odhadnout geografickou vzd´alenost jednotliv´ ych uzl˚ u v s´ıti. V kapitole 1 jsou shrnuty teoretick´e poznatky, d˚ uleˇzit´e pro mˇeˇren´ı vzd´alenost´ı v s´ıt´ıch - jsou zde definov´any d˚ uleˇzit´e pojmy metriky. Druh´a kapitola pˇredstavuje nejzn´amˇejˇs´ı dosud vytvoˇren´e architektury pro odhad pozice stanice v s´ıti. Kapitola 3 se zab´ yv´a vytvoˇren´ım a otestovan´ım aplikace, kter´a je schopna mˇeˇrit latenci a z´aroveˇ n popisuje skripty, kter´e byly naprogramov´any pro mˇeˇren´ı latence ve vˇetˇs´ı m´ıˇre a z´aroveˇ n namˇeˇren´a data zpracov´avaj´ı. Pomoc´ı tˇechto skript˚ u jsou d´ale v kapitole 4 namˇeˇren´a data vyhodnocena. V kapitole 5 jsou shrnuty v´ ysledky t´eto pr´ace.
12
1
´ ZAKLAD ´ TEORETICKY ´ ´I V S´IT´ICH VZDALENOST
PRO
ˇ REN ˇ ´I ME
Mezi kvalitativn´ı parametry s´ıtˇe pouˇziteln´e pˇri odhadech vzd´alenost´ı patˇr´ı napˇr´ıklad latence, jitter, ztr´atovost paket˚ u nebo propustnost. Jejich mˇeˇren´ı je v souˇcasn´e dobˇe t´emˇeˇr nezbytn´e, pouˇz´ıvaj´ı se jako identifik´atory stavu s´ıtˇe - m˚ uˇzeme pomoc´ı nich urˇcit, zda je nˇekde probl´em, ˇceho se t´ yk´a atd. Jitter pˇredstavuje variabilitu v doruˇcov´an´ı paket˚ u c´ılov´emu uzlu (tedy ve zpoˇzdˇen´ı pˇri pˇrenosu). Existuj´ı typy aplikac´ı, kter´ ym rozptyl nezp˚ usobuje ˇza´dn´e probl´emy, a naopak takov´e, kter´e trvaj´ı na konstantn´ım jitteru. Ztr´atovost paket˚ u je vyjadˇrov´ana vˇetˇsinou procenty a pˇredstavuje pr˚ umˇernou ztr´atu paket˚ u za urˇcit´e obdob´ı. Dalˇs´ı moˇznost´ı vyuˇzit´ı (konkr´etnˇe parametru latence) je moˇznost odhadovat pomoc´ı nˇeho virtu´aln´ı vzd´alenost jednotliv´ ych stanic v s´ıti.
1.1
Zpoˇ zdˇ en´ı (latency)
Latence je ˇcas, kter´ y uplyne od odesl´an´ı zpr´avy zdrojov´ ym uzlem po jej´ı pˇrijet´ı na uzlu c´ılov´em; zahrnuje zpoˇzdˇen´ı v pˇrenosov´e trase a na zaˇr´ızen´ıch, kter´e jsou jej´ı souˇc´ast´ı. Je nutn´e rozliˇsovat zpoˇzdˇen´ı jednosmˇern´e (tj. ˇcas mezi odesl´an´ım paketu zdrojem a jeho pˇrijet´ı c´ılem) a zpoˇzdˇen´ı obousmˇern´e, tzv. round-trip latency, zahrnuj´ıc´ı dva faktory: dobu cesty paketu tam i zpˇet a ˇcas na jeho zpracov´an´ı (napˇr. zak´odov´an´ı paketu pro jeho pˇrenos). Spodn´ı hranice zpoˇzdˇen´ı je dan´a vzd´alenost´ı, kterou paket mus´ı urazit, a rychlost´ı, kterou se sign´al ˇs´ıˇr´ı pˇrenosov´ ym m´ediem (typicky je to hodnota 70-95% rychlosti svˇetla, z´avis´ı na pouˇzit´em pˇrenosov´em m´ediu). Skuteˇcn´a velikost latence je samozˇrejmˇe mnohem vˇetˇs´ı. Parametr latence je d˚ uleˇzit´e monitorovat z toho d˚ uvodu, ˇze jeho n´ahl´ y n´ar˚ ust obvykle ukazuje na probl´emy v s´ıti (nejˇcastˇeji na pˇrenosov´em m´ediu). V s´ıt’ov´e praxi se nejˇcastˇeji vyuˇz´ıv´a pr´avˇe parametr round-trip latency nebo tak´e Round Trip Time (RTT), protoˇze jej lze zmˇeˇrit z jedn´e stanice. Jednoduch´ ym testovac´ım mechanismem pro zkouˇsen´ı dostupnosti uzlu je aplikace ping, kter´a pracuje na z´akladˇe odes´ıl´an´ı a pˇrij´ım´an´ı ICMP zpr´av (v´ıce viz kapitola 1.3.1).
13
1.2
ICMP
Sluˇzebn´ı protokol ICMP, definovan´ y specifikac´ı RFC7921 , je vyˇzadovanou souˇc´ast´ı IP protokolu. Slouˇz´ı k signalizaci neobvykl´ ych situac´ı v s´ıt´ıch, kter´e jsou postaveny na IP protokolu, napˇr. umoˇzn ˇuje zdrojov´ ym smˇerovaˇc˚ um a hostitel˚ um (obecnˇe uzl˚ um) vyuˇz´ıvaj´ıc´ım IP komunikaci ohlaˇsovat chyby a vymˇen ˇovat si omezen´e ˇr´ıd´ıc´ı a stavov´e informace. Aˇz na v´ yjimky nen´ı pouˇz´ıv´an s´ıt’ov´ ymi aplikacemi pˇr´ımo. Stejnˇe jako u protokolu UDP, informace o ztr´atˇe nebo zruˇsen´ı ICMP zpr´avy nej-
Obr´azek 1.1: ICMP paket - struktura sou pˇred´av´any. Z bezpeˇcnostn´ıch d˚ uvod˚ u jsou pomˇernˇe ˇcasto ICMP zpr´avy zahazov´any. Nejˇcastˇeji jsou tyto signalizaˇcn´ı zpr´avy generov´any pˇri chyb´ach v IP datagramech (viz specifikace RFC1122), pˇr´ıpadnˇe pro diagnostick´e nebo routovac´ı u ´ˇcely. Konkr´etn´ım pˇr´ıkladem m˚ uˇze b´ yt situace, kdy: – smˇerovaˇc v tabulce nem´a z´aznam o c´ılov´e s´ıti – smˇerovaˇc mus´ı zruˇsit paket, pokud dojde k pˇrekroˇcen´ı TTL – poˇzadovan´a sluˇzba nebo c´ıl nejsou dostupn´e, atd. K z´akladn´ım funkc´ım protokolu ICMP tedy patˇr´ı testov´an´ı dostupnosti a stavu c´ılov´eho uzlu s´ıtˇe, aktualizace smˇerov´ ych tabulek uzl˚ u, ˇr´ızen´ı zahlcen´ı s´ıtˇe a toku paket˚ u a odes´ıl´an´ı masky pods´ıtˇe. ICMP zpr´avy se pˇren´aˇs´ı v datov´e ˇc´asti IP datagramu. Aby se ICMP zpr´ava dostala zpˇet k p˚ uvodn´ımu odes´ılateli, je nutn´e, aby ji 1
RFC, request for comments. Pouˇz´ıv´a se pro oznaˇcen´ı ˇrady standard˚ u a dalˇs´ıch dokument˚ u popisuj´ıc´ıch Internetov´e protokoly, syst´emy atd. Vydan´e RFC se neruˇs´ı, v budoucnu m˚ uˇze upravit vyd´ an´ım novˇejˇs´ıho RFC.
14
Typ
K´ od
Popis
0 3
0
Echo Nedoruˇ citeln´ y IP datagram (destination unreachable)
8 11 13 14
0 1 2 3 5 6 7 0
Nedosaˇziteln´a s´ıt’ (Network unreachable) Nedosaˇziteln´ y uzel (Host unreachable) Nedosaˇziteln´ y protokol (Protocol unreachable) Nedosaˇziteln´ y port protokolu UDP (Port unreachable) Selhalo explicitn´ı smˇerov´an´ı (Source route failed) Adres´atova s´ıt’ je nezn´am´a (Destination network unknown) Adres´at˚ uv uzel je nezn´am´ y (Destination host unknown)
0 0
Poˇ zadavek na ˇ casovou synchornizaci (timestamp request)
ˇ adost o echo Z´ ˇ Cas vyprˇ sel (time exceeded) Odpovˇ ed’ na ˇ casovou synchronizaci (timestamp reply)
Tabulka 1.1: Nejˇcastˇejˇs´ı typy ICMP paketu IP vrstva zapouzdˇrila novou IP hlaviˇckou. Z´ahlav´ı ICMP paketu m´a vˇzdy velikost 8 byt˚ u. Prvn´ı ˇctyˇri bajty nesou informaci o k´odu zpr´avy, jej´ım typu a d´ale kontroln´ı CRC souˇcet (16 bit˚ u). Hrub´e rozdˇelen´ı paket˚ u se prov´ad´ı typem, konkr´etn´ı urˇcen´ı potom specifikuje k´od. Nejˇcastˇeji pouˇz´ıvan´e typy ICMP paketu obsahuje tabulka ˇc.1.1. Zpr´avy se velmi ˇcasto pouˇz´ıvaj´ı v kombinaci. Spojen´ı zpr´av ˇc.0 a 8 se vyuˇz´ıv´a v aplikaci ping, kter´a jednoduch´ ym zp˚ usobem testuje dostupnost uzlu (viz kapitola 1.3.1): – Echo request (typ 8) se pouˇz´ıv´a ke zjiˇstˇen´ı, zda je dan´ y uzel v s´ıti st´ale pˇr´ıtomen – Echo reply (typ 0) je odpovˇed´ı na echo request Dalˇs´ı obdobnou aplikac´ı vyuˇz´ıvaj´ıc´ı tyto zpr´avy je traceroute. Aplikace odes´ıl´a UDP datagramy se speci´alnˇe nastavenou ˇzivotnost´ı v pol´ıˇcku TTL IP hlaviˇcky a oˇcek´av´a ICMP zpr´avu typu 11 nebo 3. Zpr´avy ˇc.13 a 14 tvoˇr´ı mechanismus ke zjiˇst’ov´an´ı charakteristiky zpoˇzdˇen´ı pˇri pr˚ uchodu paketu s´ıt´ı. Zdrojov´ y uzel vkl´ad´a do datagramu timestamp (ˇcasovou znaˇcku) a pos´ıl´a ho jako request. C´ılov´ y uzel vkl´ad´a do datagramu timestamp pˇri pˇrijet´ı i odesl´an´ı a pos´ıl´a ho jako reply.
15
1.3
Mˇ eˇ ren´ı RTT
RTT neboli round-trip (delay) time je ˇcas, za kter´ y informace doraz´ı od zdroje k c´ıli a zpˇet. Pomˇernˇe ˇcasto je vyuˇz´ıv´an routovac´ımi algoritmy pro v´ ypoˇcet optim´aln´ı cesty. Pro kaˇzd´e mˇeˇren´ı RTT existuje teoretick´e minimum, kter´e nelze pˇrekonat. Jeho d˚ uvodem je fyzick´a vzd´alenost zdroje a c´ıle (tj. d´elka pˇrenosov´eho m´edia v cestˇe) a z´aroveˇ n rychlost ˇs´ıˇren´ı sign´alu v dan´em m´ediu. Bˇeˇznˇe se tento u ´daj pohyˇ ım vˇetˇs´ı je toto zpoˇzdˇen´ı, t´ım h˚ buje v ˇra´dech des´ıtek aˇz stovek milisekund. C´ uˇre se protokol˚ um transportn´ı vrstvy udrˇzuje velk´a ˇs´ıˇrka p´asma (viz RFC2679). V nˇekter´ ych pˇr´ıpadech se tak´e vyuˇz´ıv´a pouze tzv. jednosmˇern´e mˇeˇren´ı (one-way delay). Jeho v´ yhodou je fakt, ˇze cesta paketu s´ıt´ı nemus´ı b´ yt shodn´a v obou smˇerech, tj. v tomto pˇr´ıpadˇe by n´am klasick´ y RTT dal informaci pouze o pr˚ umˇern´e prodlevˇe. V pˇr´ıpadˇe zmˇeˇren´ı tˇechto cest nez´avisle je moˇzn´e z´ıskat lepˇs´ı pˇrehled o v´ ykonnostn´ıch rozd´ılech (kaˇzd´a z cest m˚ uˇze proch´azet pˇres r˚ uzn´e providery nebo dokonce zcela odliˇsn´e typy s´ıt´ı - napˇr. ATM versus SONET).
1.3.1
Aplikace ping
Program ping byl naps´an r. 1983 Mikem Muussem. PING (neboli Packet InterNet Grouper) slouˇz´ı k detekci ˇcasu odezvy s´ıt’ov´eho zaˇr´ızen´ı v IP s´ıti a patˇr´ı mezi standardn´ı n´astroje pro spr´avu s´ıtˇe. Ping pouˇz´ıv´a ICMP zpr´avy Echo request a Echo reply. Pomoc´ı DNS serveru je testovan´a URL adresa pˇreloˇzena na IP adresu a na ni je vysl´an ICMP datagram s ˇza´dost´ı o odpovˇed’. Ve stanoven´em limitu (bˇeˇznˇe cca 3 sekundy, jedn´a se o nastaviteln´ y parametr) aplikace ˇcek´a na odpovˇed’ Echo reply. Tuto odpovˇed’ lze identifikovat d´ıky poloˇzce icmp seq v tˇele ICMP zpr´avy (viz kapitola 1.2). S´ıt’ m˚ uˇzeme testovat pomoc´ı r˚ uznˇe dlouh´ ych paket˚ u, zjist´ıme tak optim´aln´ı hodnotu tzv. MTU (maximum transmisson unit). MTU je hodnota ud´avaj´ıc´ı maxim´aln´ı velikost pˇrenosov´e jednotky na u ´rovni vrstvy s´ıt’ov´eho rozhran´ı. Standardem z r.1990 (RFC1191) byla urˇcena maxim´aln´ı velikost paketu v s´ıt´ıch pouˇz´ıvaj´ıc´ıh standard Ethernet II na 1500 byte. V t´eto hodnotˇe je zahrnuta standartn´ı TCP a IP hlaviˇcka (40 byte). Typick´a hodnota je tedy 1500 byte, nejmenˇs´ı moˇzn´a je 576 byte. Za zm´ınku stoj´ı varianta u ´toku typu DoS2 vyuˇz´ıvaj´ıc´ı chyby v TCP/IP protokolu. Mnoho poˇc´ıtaˇcov´ ych syst´em˚ u neumˇelo zpracovat ping vetˇs´ı neˇz 65535 byt˚ u (coˇz je maxim´aln´ı velikost paketu v protokolu IP). Takto abnorm´alnˇe velk´ y paket m˚ uˇze u ´toˇcn´ık poslat do s´ıtˇe, kde zp˚ usob´ı chyby (obvykle tzv. pˇreteˇcen´ı z´asobn´ıku) vedouc´ı ˇ sen´ım je k selh´an´ı syst´em˚ u, kter´e nejsou proti takov´ ym chybn´ ym paket˚ um odoln´e. Reˇ 2
DoS neboli Denial of Service, technika u ´toku na internetov´e sluˇzby nebo str´anky. Doch´az´ı pˇri n´ı k zahlcen´ı poˇzadavky a p´ adu nebo minim´alnˇe nefunkˇcnosti a nedostupnosti pro ostatn´ı uˇzivatele.
16
kontrola opˇetovn´eho spojov´an´ı IP fragment˚ u. Mus´ı platit, ˇze souˇcet pol´ı Fragment Offset a Total Length v IP hlaviˇcce kaˇzd´eho fragmentu je menˇs´ı neˇz 65535 byt˚ u. Pokud je souˇcet vˇetˇs´ı, paket je neplatn´ y a IP fragment je ”zahozen”. Pakety ICMP typu echo maj´ı ve smˇerovaˇc´ıch i koncov´ ych uzlech ˇcasto nastavenou niˇzˇs´ı prioritu zpracov´an´ı v˚ uˇci ostatn´ım druh˚ um komunikace a to se m˚ uˇze projevit na v´ ysledc´ıch mˇeˇren´ı. Nav´ıc ping obvykle pouˇz´ıv´a mal´e pakety, takˇze i zde doch´az´ı ke znaˇcn´emu rozd´ılu pˇri jejich pr˚ uchodu s´ıt´ı v˚ uˇci velk´ ym TCP nebo UDP paket˚ um. Datov´e pakety maj´ı rozd´ılnou velikost, r˚ uzn´e priority, a r˚ uzn´e protokoly se v s´ıti chovaj´ı tak´e jinak. Pˇri vyuˇz´ıv´an´ı programu ping pro mˇeˇren´ı kvalitativn´ıch parametr˚ u s´ıtˇe je tedy nutn´e vz´ıt v u ´vahu vˇsechny tyto aspekty. V souˇcasn´e dobˇe jiˇz existuje velk´e mnoˇzstv´ı n´astroj˚ u pro mˇeˇren´ı RTT, nejjednoduˇsˇs´ı (ping implementovan´ y v OS Unix/Win) maj´ı pouze textov´ y v´ ystup, sloˇzitˇejˇs´ı nab´ız´ı grafick´e rozhran´ı se zobrazov´an´ım cesty paketu po zemˇekouli. Velmi pˇekn´ y grafick´ y v´ ystup poskytuje napˇr. program VisualRoute, slabinou vˇsak z˚ ust´av´a zp˚ usob zjiˇst’ov´an´ı pˇresn´e geografick´e polohy pingan´ ych host˚ u (viz kapitola 1.4).
1.3.2
Faktory ovlivˇ nuj´ıc´ı mˇ eˇ ren´ı RTT
Pˇri odhadu vzd´alenosti pomoc´ı RTT je tˇreba vz´ıt v u ´vahu nˇekolik faktor˚ u, kter´e jednotliv´a mˇeˇren´ı ovlivˇ nuj´ı. V´ ysledn´ y RTT je vˇzdy o nˇeco vˇetˇs´ı, neˇz minim´aln´ı fyzik´aln´ı hodnota, kter´e by teoreticky mohl dosahovat. Ne vˇsechny faktory se vˇsak daj´ı eliminovat, vliv nˇekter´ ych se d´a ˇca´steˇcnˇe predikovat. Jsou to zejm´ena: • velikost MTU, • povaha pˇrenosov´eho m´edia - zda se jedn´a o mˇed’en´ y dvoudr´at, optiku nebo tˇreba bezdr´atov´ y pˇrenos. R˚ uzn´a prostˇred´ı znamenaj´ı r˚ uzn´e rychlosti ˇs´ıˇren´ı sign´alu, napˇr. po Ethernetu (tedy mˇedˇen´ y dr´at) se sign´al ˇs´ıˇr´ı rychlost´ı 0,66 rychlosti svˇetla; • pˇrenosov´a rychlost, kterou je zdroj pˇripojen do Internetu (tedy ˇs´ıˇrka p´asma) • fyzick´a (geografick´a) vzd´alenost mezi zdrojem a c´ılem • poˇcet uzl˚ u mezi zdrojem a c´ılem (topologie s´ıtˇe) • aktu´aln´ı velikost provoz v s´ıti LAN, do kter´e je zapojen koncov´ y uˇzivatel • poˇcet jin´ ych poˇzadavk˚ u, kter´e jsou vyˇrizov´any mezilehl´ ymi uzly (souvis´ı s prioritizac´ı paket˚ u) • pˇr´ıtomnost interferenc´ı ve veden´ı Je zˇrejm´e, ˇze napˇr´ıklad zmˇenou MTU se d´a dos´ahnout lepˇs´ıho pr˚ uchodu testovac´ıch paket˚ u s´ıt´ı, naopak typ pˇrenosov´ ych m´edi´ı obzvl´aˇst’ u p´ateˇrn´ıch spoj˚ u nem´ame
17
moˇznost jakkoliv ovlivnit (jist´a moˇznost existuje u m´edia pouˇzit´eho na posledn´ı m´ıli). Je vˇsak d˚ uleˇzit´e uvˇedomit si, ˇze vˇetˇsina faktor˚ u se bude uplatˇ novat jak pˇri mˇeˇren´ı RTT, tak pˇri bˇeˇzn´em vyuˇzit´ı s´ıtˇe, takˇze zmˇeˇren´ y RTT n´am m˚ uˇze poskytnout pomˇernˇe dobr´ y obr´azek o stavu s´ıtˇe.
1.4
Odhad geografick´ e polohy ze znalosti IP adresy
Dnes nejpouˇz´ıvanˇejˇs´ı rodina internetov´ ych protokol˚ u TCP/IP je postaven´a tak, ˇze ˇc´ıseln´e IP adresy jsou pˇridˇelov´any nez´avisle na tom, kde se fyzicky nach´az´ı (tj. jak´a je jejich geografick´a poloha), a tak´e bez ohledu na to, jak´ ym zp˚ usobem jsou k Internetu pˇripojeny. Vzhledem k omezen´ ym moˇznostem z´ısk´av´an´ı informac´ı o lokalizaci IP adres je odhad pozice stanice v s´ıti na z´akladˇe t´eto metody velmi nepˇresn´ y. Vˇetˇsina aplikac´ı funguje na z´akladˇe ˇcten´ı u ´daj˚ u z mezin´arodn´ıch nebo (a) region´alˇ e n´ıch datab´az´ı, jako je ARIN, APNIC nebo LACNIC. Poskytovatel´e Internetu v Cesk´ republice vyuˇz´ıvaj´ı datab´azi RIPE, konkr´etnˇe NCC (Network Coordination Centre). Ta obsahuje kontaktn´ı a registraˇcn´ı u ´daje pro tzv. RIPE NCC service region (kam spad´a Evropa, Stˇredn´ı v´ ychod a ˇc´ast Asie). V RIPE datab´azi je moˇzno nal´ezt IP adresy, ˇc´ısla autonomn´ıch syst´em˚ u3 (AS), d´ale organizace nebo z´akazn´ıky spojen´e s tˇemito AS a kontaktn´ı u ´daje pro tyto s´ıtˇe (Points of Contact, POC). Kaˇzd´a organizace, kter´a dle RIPE drˇz´ı IP adresy, je zodpovˇedn´a za jejich aktu´alnost v datab´azi. Vˇsechny tyto informace jsou bˇeˇznˇe dostupn´e pˇr´ımo na www str´ank´ach RIPE, viz adresa www.ripe.net. Jak tedy konkr´etnˇe funguje odhad geografick´e pozice v s´ıti? Postup byl testov´an na IP adrese 62.168.37.105. Na str´ance http://www.ripe.net/whois zad´ame do formul´aˇre IP adresu, kterou chceme lokalizovat. Z v´ ypisu n´as nejv´ıce zaj´ım´a poloˇzka address, pˇr´ıpadnˇe jeˇstˇe netname. Pr´avˇe z adresy je moˇzno z´ıskat pˇredstavu o lokalizaci IP adresy. Pro n´aˇs konkr´etn´ı pˇr´ıpad jsme z´ıskali z´aznam addres: Brno a netname: BRNO-NET. Dle tohoto z´aznamu m˚ uˇzeme odhadnout, ˇze IP adresa je vyuˇz´ıv´ana v 4 Brnˇe. Dotazem na providera (kter´ y je v´ ypisu v poloˇzce address uveden rovnˇeˇz) bylo zjiˇstˇeno, ˇze odhad koresponduje s realitou a dan´a IP adresa je opravdu v Brnˇe. Nicm´enˇe uˇz pˇri testov´an´ı dalˇs´ı IP adresy, 62.84.132.211, byla zjiˇstˇena nesrovnalost. V´ ypis odkazuje na adresu Praha, opˇetovn´ ym dotazem na poskytovatele vˇsak bylo zjiˇstˇeno, ˇze tato IP adresa je pouˇz´ıv´ana opˇet v Brnˇe. Poloˇzka address by totiˇz mˇela obsahovat geografickou lokaci prohled´avan´e IP adresy, bohuˇzel velmi 3
Autonomn´ı syst´em je ˇc´ ast Internetu se spoleˇcnou smˇerovac´ı politikou, typicky ISP + jeho z´ akazn´ıci. 4 poskytovatel pˇripojen´ı k s´ıti Internet, jenˇz m´a tyto IP adresy pˇridˇeleny
18
ˇcasto v n´ı b´ yv´a uvedeno s´ıdlo poskytovatele Internetu, kter´ y vlastn´ı adresn´ı rozsah s touto IP adresou, nebo napˇr. adresa s´ıdla firmy, kter´a IP adresu vyuˇz´ıv´a - nikoliv jej´ı poboˇcky, kter´a ji opravdu pouˇz´ıv´a fyzicky na nˇekter´em zaˇr´ızen´ı. Mezi dalˇs´ı datab´aze funguj´ıc´ı obdobnˇe jako RIPE patˇr´ı ARIN (pro Severn´ı Ameriku), AFRINIC (Afrika), LACNIC (pro Latinskou Ameriku) a APNIC (Asie a Pacifik). Dalˇs´ı moˇznost´ı, jak zjistit geografickou polohu, m˚ uˇze b´ yt zjiˇstˇen´ı reverzn´ıho z´aznamu IP adresy (napˇr. pomoc´ı pˇr´ıkazu nslookup pod OS Win, host pod Linuxem). Pro testov´an´ı byla pouˇzita IP adresa 195.113.160.10 - jej´ı reverz byl zjiˇstˇen opˇet pomoc´ı programu nslookup: na pˇr´ıkazov´ y ˇra´dek (commandline) byl zad´an pˇr´ıkaz ˇ ast odpovˇedi s revezn´ım z´aznamem byla: nslookup 195.113.160.10. C´ N´ azev: gate.fnplzen.cz. Z toho je moˇzno usoudit, ˇze tato IP se pravdˇepodobnˇe nal´ez´a v Plzni. I tato metoda m´a vˇsak sv´a u ´skal´ı, vˇetˇs´ı neˇz pomoc´ı z´ısk´av´an´ı informace z RIPE: reverzn´ı z´aznam totiˇz nen´ı povinn´a poloˇzka (tj. mnoho adres ho nem´a v˚ ubec) a neexistuje prakticky ˇz´adn´a konvence, jak reverz zav´adˇet. Napˇr´ıklad z reverzn´ıho z´aznamu pro adresu 175.75.89.65 je zˇrejm´e, ˇze lokaci nem´ame ˇsanci zjistit (nelze naj´ ıt adresu 175.75.89.65: non-existent domain). Posledn´ı moˇznost´ı m˚ uˇze b´ yt vytv´aˇren´ı vlastn´ı datab´aze. Tato moˇznost je vˇsak pro bˇeˇzn´e uˇzivatele sp´ıˇse nere´aln´a a vzhledem k nutnosti neust´al´e aktu´alnosti i velmi syst´emovˇe n´aroˇcn´a. Vˇetˇsina softwaru nebo pˇr´ımo internetov´ ych str´anek ovˇeˇruj´ıc´ıch geografickou polohu IP adresy pracuje pr´avˇe na b´azi nˇekter´eho z v´ yˇse uveden´ ych mechanism˚ u. Na stejn´em principu pracuj´ı tak´e nejr˚ uznˇejˇs´ı grafick´e programy traceroute, kter´e s kaˇzd´ ym dalˇs´ım skokem vykresluj´ı jeho polohu na mapˇe. Pˇr´ıkladem sluˇzby, kter´a pracuje se svou vlastn´ı datab´az´ı, je sluˇzba IP2Location [12]. Tato sluˇzba pro v´ yˇse testovan´e IP adresy nevrac´ı vˇsechny u ´daje totoˇzn´e jako ve v´ ypisu z RIPE. Grafick´ y program traceroute lze nal´ezt napˇr. na adrese [13]. Jedin´ ym opravdu spolehliv´ ym zp˚ usobem zjiˇstˇen´ı pˇresn´e geografick´e lokace IP adresy tedy z˚ ust´av´a z´ısk´an´ı informac´ı od providera, kter´ y m´a tuto adresu ve sv´em rozsahu, pˇr´ıpadnˇe samozˇrejmˇe od pˇr´ım´eho uˇzivatele IP adresy.
19
2
PREDIKCE POZICE STANICE V S´ITI
V souˇcasn´e dobˇe existuje pomˇernˇe velk´e mnoˇzstv´ı r˚ uzn´ ych syst´emu, kter´e umoˇzn ˇuj´ı odhad vz´ajemn´e vzd´alenosti jednotliv´ ych uzl˚ u v s´ıti. Vzd´alenost v tomto pˇr´ıpadˇe neznamen´a pˇr´ımou geografickou vzd´alenost, metrikou je parametr latence. Aˇckoliv geografick´a vzd´alenost je jedn´ım z faktor˚ u, kter´e mˇeˇren´ı ovlivˇ nuj´ı, velmi ˇcasto se lze setkat s pˇr´ıpady, kdy geograficky vzd´alenˇejˇs´ı uzly maj´ı vz´ajemnˇe v´ yraznˇe lepˇs´ı dobu odezvy, neˇz nˇekter´e bliˇzˇs´ı. Z tohoto d˚ uvodu nelze vzd´alenost uzl˚ u mˇeˇrit v geografick´ ych jednotk´ach a je nutno pouˇz´ıvat ˇcasov´e odezvy. Syst´emy se dˇel´ı podle dvou z´akladn´ıch krit´eri´ı: zda se jedn´a o centralizovan´ y (GNP) nebo decentralizovan´ y (Vivaldi) syst´em, nebo zda vyuˇz´ıv´a aktivn´ıch (ID Maps) ˇci pasivn´ıch (SPAND) dat. Kaˇzd´ y z tˇechto syst´em˚ u m´a sv´a specifika, v´ yhody a nev´ yhody, a je nutn´e definovat si poˇzadavky tak, aby mohl b´ yt proveden spr´avn´ y v´ ybˇer architektury. Vˇetˇsina z tˇechto syst´em˚ u vyuˇz´ıv´a pro mˇeˇren´ı parametr latence RTT (viz kapitola 1.3). Mezi nejzn´amˇejˇs´ı patˇr´ı Spand, Remos project, IDMaps, Vivaldi nebo GNP (jehoˇz v´ yvoj zat´ım nebyl plnˇe dokonˇcen). N´asleduj´ıc´ı kapitola se detailnˇeji zab´ yv´a dvˇema rozˇs´ıˇren´ ymi syst´emy s rozd´ılnou architekturou, IDMaps a GNP.
2.1 2.1.1
Projekty Remos a SPAND Remos
Remos (Resource Monitoring System) [17], vyvinut´ y v r.2000, je rozhran´ı nab´ızej´ıc´ı s´ıt’ov´ ym aplikac´ım relevantn´ı informace ohlednˇe jejich okol´ı, pˇr´ıpadnˇe o konkr´etn´ıch uzlech v s´ıti nebo komunikaˇcn´ıch link´ach. Snaˇz´ı se o dosaˇzen´ı kompromisu mezi pˇresnost´ı (poskytovan´a informace je tzv. best-effort) a efektivitou. Sp´ıˇse neˇz na vlastn´ı implementaci je zamˇeˇren na rozhran´ı. Zdrojov´e informace o metrice z´ısk´av´a z nez´avisl´ ych zdroj˚ u - napˇr´ıklad pomoc´ı SNMP protokolu. Z tohoto d˚ uvodu je snaˇzˇs´ı celou aplikaci vytvoˇrit a implementovat (nezab´ yv´a se pˇr´ımo mˇeˇren´ım, pouze poskytov´an´ım z´ıskan´ ych informac´ı dalˇs´ım aplikac´ım). Remos funguje na z´akladˇe logick´e s´ıt’ov´e topologie. D˚ uleˇzit´ ym pojmem jsou toky (tzv. flows), coˇz jsou spojen´ı na u ´rovni aplikac´ı mezi dvˇema uzly (napˇr. audio nebo video). Toky jsou vyuˇz´ıv´any jako abstrakce fyzick´ ych spojen´ı, d´ıky ˇcemuˇz je Remos pouˇziteln´ y nez´avisle na detailech syst´emu.
2.1.2
SPAND
Na rozd´ıl od Remosu, SPAND (Shared PAssive Network Performance Discovery) [6] s´am pˇr´ımo prov´ad´ı pasivn´ı sd´ılen´e mˇeˇren´ı a jeho v´ ysledky uchov´av´a v centralizo-
20
van´e datab´azi. Pasivn´ı technika mˇeˇren´ı z´avis´ı pouze na datov´em provozu, kter´ y je generov´an aplikacemi pˇri komunikaci s ostatn´ımi uzly v Internetu. Sd´ılen´e mˇeˇren´ı se op´ır´a o tuto myˇslenku: v pˇr´ıpadˇe, ˇze jsou si dva stroje v s´ıti bl´ızk´e (topologicky), je pravdˇepodobn´e, ˇze budou sd´ılet stejnou pˇr´ıstupovou linku spojuj´ıc´ı je s nˇekter´ ym vzd´alen´ ym hostem. D´ıky tomu budou m´ıt oba dva k dispozici obdobnou ˇs´ıˇrku p´asma a informace o latenci nebudou pˇr´ıliˇs rozd´ıln´e a nen´ı tˇreba prov´adˇet tolik mˇeˇren´ı, staˇc´ı v´ ysledn´e u ´daje sd´ılet (viz obr´azek ˇc.2.1). Jednoznaˇcn´a v´ yhoda pasivn´ıho mˇeˇren´ı spoˇc´ıv´a v nezahlcov´an´ı s´ıtˇe dalˇs´ım pake-
Obr´azek 2.1: Sd´ılen´ı RTT u ´daj˚ u d´ıky mal´e vzd´alenosti tov´ ym provozem, na druhou stranu m´a nˇekter´a omezen´ı a nev´ yhody: pomoc´ı nˇej lze mˇeˇrit pouze takov´e oblasti Internetu, ve kter´ ych prob´ıhal v pˇredeˇsl´e dobˇe provoz. Napˇr´ıklad pokud se m´a nˇejak´ y klient rozhodnout, kter´e zrcadlo1 si vybrat pro staˇzen´ı dat, mus´ı vyˇzadovat informace o vzd´alenosti o vˇsech tˇechto zrcadlech. Syst´em zaloˇzen´ y na pasivn´ım monitorov´an´ı vˇsak poskytuje informace pouze o tˇech serverech, ke kter´ ym bylo jiˇz dˇr´ıve pˇristupov´ano. Dalˇs´ı nev´ yhodou m˚ uˇze b´ yt zmˇena s´ıt’ov´e topologie, protoˇze v tomto pˇr´ıpadˇe se st´avaj´ı data nepouˇziteln´a a zaktualizuj´ı se aˇz ve chv´ıli, kdy opˇet danou cestou poteˇce nˇejak´ y provoz. Pasivn´ı mˇeˇren´ı obvykle vyˇzaduje mˇeˇren´ı nebo pˇr´ımo snoopov´an´ı2 s´ıt’ov´eho provozu, coˇz m˚ uˇze b´ yt povaˇzov´ano za poruˇsen´ı bezpeˇcnostn´ıch pravidel. 1 2
Zrcadla neboli mirrory jsou servery se stejn´ ym (zrcadl´ıc´ım) obsahem. angl. snoop = ˇspehov´ an´ı, sl´ıdˇen´ı
21
2.2
IDMaps
Jedn´ım ze zp˚ usob˚ u, jak z´ıskat informace o vzd´alenosti aktivnˇe (tj. tato informace je mˇeˇrena pˇr´ımo hostem3 , kter´ y ji vyˇzaduje), je napˇr. vyuˇzit´ı aplikac´ı ping nebo traceroute. Tyto aplikace pracuj´ı na z´akladˇe tzv. aktivn´ıho mˇeˇren´ı - pro samotn´e mˇeˇren´ı jsou pouˇzita data odeslan´a pouze za t´ımto u ´ˇcelem. V´ yhodou tˇechto aplikac´ı je jejich jednoduchost, nicm´enˇe nezanedbateln´ y dopad na celou s´ıt’ m˚ uˇze m´ıt situace, kdy tato aktivn´ı mˇeˇren´ı bude neust´ale prov´adˇet vˇetˇs´ı poˇcet stanic - v´ yraznˇe vzroste datov´ y tok. Ide´alnˇe by tedy toto mˇeˇren´ı mˇel prov´adˇet jeden stroj a poskytovat je ostatn´ım.
2.2.1
Sonar a HOPS
Obˇe dvˇe tyto sluˇzby zpracov´avaj´ı data z´ısk´avan´a ze syst´emu IDMaps a pˇred´avaj´ı je d´al. Server SONAR poskytuje ostatn´ım stanic´ım informace o vzd´alenosti mezi n´ım a libovolnou vzd´alenou stanic´ı. HOPS distribuuje informace o vzd´alenosti mezi jednotliv´ ymi uzly hierarchicky, obdobnˇe jako napˇr. sluˇzba DNS. V´ ybˇer nejbliˇzˇs´ıho uzlu v tomto pˇr´ıpadˇe funguje na z´akladˇe nejmenˇs´ıho poˇctu skok˚ u (tedy do v´ ybˇeru nezahrnuje vlastnosti jednotliv´ ych pˇrenosov´ ych linek). Obˇe dvˇe sluˇzby jsou typu klient/server. Kaˇzd´ y ze server˚ u by mˇel poskytovat odpovˇed’ ve velmi kr´atk´em ˇcase nejl´epe ˇcerpat informace z´ıskan´e pˇri dˇr´ıvˇejˇs´ıch mˇeˇren´ıch, kter´e jsou aktu´alnˇe uloˇzeny v lok´aln´ıch pamˇet´ıch (nicm´enˇe nen´ı to podm´ınkou). Je d˚ uleˇzit´e si uvˇedomit, ˇze IDMaps je architekturou, kter´a poskytuje u ´daje o vzd´alenosti a pˇred´av´a je sluˇzb´am typu SONAR, kter´e s n´ı potom pracuj´ı d´ale. Tato separace je nutn´a z d˚ uvodu rozdˇelen´ı jednotliv´ ych poˇzadavk˚ u na dva syst´emy. Poˇzadavek na IDMaps je relativnˇe velk´a pˇresnost mˇeˇren´ı vzd´alenosti s co nejmenˇs´ımi n´aklady, zat´ımco poˇzadavky na sluˇzbu typu klient/server jsou rychl´e odezvy na dotazy, velk´e objemy zpracovan´ ych dotaz˚ u a odpov´ıdaj´ıc´ı velikost u ´loˇziˇstˇe dat.
2.2.2
Metrika
C´ılem IDMaps je tedy poskytovat co nejaktu´alnˇejˇs´ı informace o vzd´alenosti v mˇeˇr´ıtku latence (napˇr. informace o round-trip zpoˇzdˇen´ı), pˇr´ıpadnˇe ˇs´ıˇrky p´asma (tam, kde to lze). Nejv´ıce vyuˇz´ıvan´ y parametr pro odhad vzd´alenosti je pr´avˇe latence (viz kapitola 1.1). Lze ji totiˇz jednoduˇse mˇeˇrit - uˇz za pomoci mal´eho mnoˇzstv´ı paket˚ u (ˇra´dovˇe jednotky aˇz des´ıtky) jsme schopni z´ıskat v´ ysledek s dobrou vypov´ıdaj´ıc´ı hodnotou. ˇıˇrka p´asma je pro mnoho aplikac´ı rovnˇeˇz d˚ S´ uleˇzit´ ym u ´dajem, mˇeˇr´ı se vˇsak podstatnˇe 3
Host je v tomto smyslu jak´ ykoliv stroj na Internetu, at’ uˇz koncov´ y uˇzivatel, server atd.
22
obt´ıˇznˇeji. Jej´ı mˇeˇren´ı je draˇzˇs´ı, a d´ale je v´ıce citliv´e na pˇresn´ y v´ ybˇer cesty: linka s nejuˇzˇs´ım p´asmem v cestˇe paketu urˇcuje ˇs´ıˇrku p´asma pro celou tuto cestu (struˇcnˇe ˇreˇceno, nejvyˇsˇs´ı pˇrenosov´a rychlost je dan´a nejpomalejˇs´ım u ´sekem cesty). IDMaps se op´ıraj´ı o myˇslenku, ˇze velmi pˇresn´e odhady vzd´alenosti (s odchylkou cca 5% od skuteˇcn´e vzd´alenosti) je pro tak rozˇs´ıˇrenou (a st´ale se rozˇsiˇruj´ıc´ı) sluˇzbu, jakou Internet bezesporu je, t´emˇeˇr nemoˇzn´e prov´est pˇr´ıliˇs efektivnˇe. Aˇckoliv pro jednotliv´a mˇeˇren´ı konkr´etn´ıch cest je moˇzno vysok´e pˇresnosti dos´ahnout, odhad zaloˇzen´ y na triangulaci tˇechto mˇeˇren´ı (viz kapitola 2.2.4) v sobˇe bude kumulovat chyby.
2.2.3
Zp˚ usoby mˇ eˇ ren´ı
Je potˇreba vz´ıt v u ´vahu dva odliˇsn´e u ´daje o vzd´alenosti: za prv´e s ohledem na zat´ıˇzen´ı s´ıtˇe, a za druh´e tzv. ˇcistou vzd´alenost (raw distance - tj. vzd´alenost namˇeˇrenou pˇri nulov´em zat´ıˇzen´ı s´ıtˇe). Tato ˇcist´a vzd´alenost m˚ uˇze principielnˇe odpov´ıdat nejmenˇs´ı celkovˇe namˇeˇren´e hodnotˇe. V z´ajmu co nejvˇetˇs´ıho rozˇs´ıˇren´ı sluˇzby tato poˇc´ıt´a s aktualizacemi u ´daj˚ u o ˇcist´e vzd´alenosti v ˇr´adu dn˚ u, v pˇr´ıpadˇe potˇreby v ˇra´du hodin. To znamen´a, ˇze informace o vzd´alenosti nebudou pˇresnˇe kop´ırovat pˇrechodn´e dˇeje v s´ıti, sp´ıˇse budou porovn´avat dlouhodobˇejˇs´ı zmˇeny v s´ıt’ov´e topologii. Informace o okamˇzit´em stavu s´ıtˇe (v ˇr´adu max. des´ıtek vteˇrin) je t´emˇeˇr nemoˇzn´e poskytovat glob´alnˇe, obzvl´aˇst’ vezmeme-li v u ´vahu, ˇze se zrychluj´ıc´ım se Internetem se m˚ uˇze st´at mnohem v´ yznamnˇejˇs´ı zpoˇzdˇen´ı vznikl´e pˇri zpracov´an´ı informace neˇz jej´ı samotn´ y pˇrenos. V´ yˇse zm´ınˇen´e projekty Remos a SPAND poskytuj´ı informace o vzd´alenosti pouze mezi stanicemi nach´azej´ıc´ımi se bl´ızko serveru a vzd´alen´ ymi uzly (ˇzadatel mus´ı b´ yt tedy v bl´ızkosti server˚ u). Poskytov´an´ı takov´e sluˇzby m˚ uˇze b´ yt jednoduˇsˇs´ı z d˚ uvodu menˇs´ıho mnoˇzstv´ı dat, se kter´ ymi mus´ı servery pracovat, ve srovn´an´ı s mnoˇzstv´ım moˇzn´ ych destinac´ı (ˇr´adovˇe N ). IDMaps ale poskytuj´ı informace o vzd´alenosti mezi jak´ ymikoliv dvˇema platn´ ymi IP adresami, tj. ˇra´dovˇe N 2 . Mnoˇzstv´ı mˇeˇren´ ych dat vˇsak bude pravdˇepodobnˇe mnohem menˇs´ı, a to d´ıky glob´aln´ımu sd´ılen´ı informac´ı o vzd´alenostech a tak´e d´ıky technik´am komprese pomoc´ı graf˚ u. Jednou z moˇznost´ı, jak poskytovat informace o vzd´alenosti v s´ıti, je sestaven´ı graf˚ u (ide´alnˇe stromov´ ych) fyzick´ ych spojen´ı mezi jednotliv´ ymi uzly v s´ıti. Vzd´alenost mezi uzly se potom d´a odhadnout pomoc´ı jejich vzd´alenost´ı v tomto grafu. Tato metoda se naz´ yv´a hop-by-hop approach (postup skok za skokem, viz [3]). Postup spoˇc´ıv´a v pos´ıl´an´ı ICMP paket˚ u po tomto grafu. Aby se minimalizovaly moment´aln´ı ˇ odchylky v s´ıti, kaˇzd´ yu ´daj se sb´ır´a po urˇcitou dobu (napˇr. t´ ydny). Casto jsou vˇsak pokusy o toto mˇeˇren´ı zamˇen ˇov´any se SPAMov´ ymi u ´toky, pr´avˇe d´ıky d´elce mˇeˇren´ı. Nejjednoduˇsˇs´ı a z´aroveˇ n nejpˇresnˇejˇs´ı formou odhadu vzd´alenosti z˚ ust´av´a mˇeˇren´ı mezi vˇsemi koncov´ ymi IP adresami, nicm´enˇe je prakticky neprovediteln´e: v pˇr´ıpadˇe
23
N stanic bychom museli drˇzet informaci o velikosti N 2 (je nutn´e drˇzet informaci o vz´ajemn´ ych vzd´alenostech vˇsech u ´ˇcastn´ık˚ u mˇeˇren´ı). Vzhledem k velikosti Internetu - poˇctu jednotliv´ ych stanic (stovky milion˚ u a st´ale vzr˚ ust´a) - by ˇslo o velmi neefektivn´ı metodu (obdobnˇe jako neust´al´e vyhled´av´an´ı novˇe vznikl´ ych stanic). Druhou nejjednoduˇsˇs´ı formou je mˇeˇren´ı mezi jednotliv´ ymi adresov´ ymi prefixy4 (AP). V tomto pˇr´ıpadˇe je odhad vzd´alenosti mezi IP adresami trochu komplikovanˇejˇs´ı neˇz prvn´ı zp˚ usob: u kaˇzd´e IP adresy je nejprve zjiˇstˇeno, pod kter´ y AP patˇr´ı. Nicm´enˇe, objem dat v tomto pˇr´ıpadˇe st´ale z˚ ust´av´a neefektivnˇe velk´ y - celosvˇetov´ y poˇcet AP se m˚ uˇze pohybovat v ˇra´dech statis´ıc˚ u a opˇet st´ale nar˚ ust´a. Je tedy jasn´e, ˇze potˇrebujeme dalˇs´ı zjednoduˇsen´ı - napˇr. zjiˇstˇen´ı informac´ı vzd´alenost´ı mezi jednotliv´ ymi autonomn´ımi syst´emy (AS) - za pˇredpokladu, ˇze v r´amci jednotliv´ ych AS jsou vzd´alenosti mezi IP adresami ekvidistatn´ı. I pˇresto, ˇze co se poˇctu mˇeˇren´ ych informac´ı t´ yˇce se situace znaˇcnˇe zjednoduˇsila (v cel´em Internetu m˚ uˇzou existovat max. desetitis´ıce AS), ani tato varianta nen´ı optim´aln´ı: pomˇernˇe ˇcasto se st´av´a, ˇze nˇekter´e IP adresy jsou si velmi bl´ızko (at’ uˇz z hlediska latence nebo geografick´eho), ale z´aroveˇ n patˇr´ı k jin´ ym AS, zat´ımco velmi vzd´alen´e IP adresy mohou patˇrit pod stejn´e AS.
2.2.4
Tracery
Syst´em IDMaps vyuˇz´ıv´a k mˇeˇren´ı vzd´alenosti tzv. tracery, coˇz referenˇcn´ı jsou objekty velikostnˇe spadaj´ıc´ı mezi AS a AP. Tyto jsou rozm´ıstˇen´e po svˇetˇe tak, ˇze kaˇzd´ y AP je relativnˇe bl´ızko nˇekter´emu z tracer˚ u. Vzd´alenosti tracer˚ u jsou zmˇeˇren´e a zn´am´e, takˇze se aktualizuj´ı pouze u ´daje o vzd´alenosti AP od tracer˚ u. Vzd´alenosti jednotliv´ ych stanic se potom urˇc´ı jako suma vzd´alenost´ı AP1 −→ tracer1 −→ tracer2 −→ AP2 (pˇriˇcemˇz stanice ˇc.1 n´aleˇz´ı do AP1 a stanice ˇc.2 do AP2). V´ ysledn´a pˇresnost z´avis´ı na poˇctu tracer˚ u a jejich rozm´ıstˇen´ı. Za pˇredpokladu, ˇze m´ame moˇznost oba tyto faktory ovlivnit, z´ısk´av´ame takto n´astroj na zvyˇsov´an´ı pˇresnosti z´ıskan´ ych informac´ı. Z v´ yˇse uveden´ ych moˇznost´ı mˇeˇren´ı je pr´avˇe tato nejvhodnˇejˇs´ı z hlediska pˇresnosti odhadu, a proto byla vybr´ana pro architekturu IDMaps. Ta sest´av´a z tˇr´ı hlavn´ıch ˇc´ast´ı: tracery, AP a tzv. virtu´aln´ı linky neboli ˇcist´e vzd´alenosti. Pˇredpoklad, ˇze vzd´alenost mezi dvˇema body lze odhadnout jakoˇzto sumu vzd´alenost´ı mezi jednotliv´ ymi mezilehl´ ymi body, u ´zce souvis´ı s troj´ uheln´ıkovou nerovnost´ı. Ta ˇr´ık´a, ˇze m´ame-li v rovinˇe tˇri r˚ uzn´e body a, b, a c (vrcholy grafu), pak mus´ı platit: C(a, c) ≤ C(a, b) + C(b, c)
(2.1)
4
Adresn´ı prefix je definovan´ y jako po sobˇe jdouc´ı (n´asledn´ y) rozsah IP adres, pˇriˇcemˇz vzd´alenosti vˇsech host˚ u s IP adresami z toho AP jsou v˚ uˇci zbytku internetu ekvidistatn´ı.
24
kde funkce C je vzd´alenost´ı v dan´e metrice. Z rovnice (2.1) vypl´ yv´a, ˇze pokud zn´ame C(a, b) a C(b, c), pak C(a, c) leˇz´ı mezi C(a, b) + C(b, c) (omezen´ı shora) a ˇ ım menˇs´ı je rozd´ıl tˇechto dvou v´ |C(a, b) − C(b, c)| (omezen´ı zdola). C´ yraz˚ u, t´ım pˇresnˇejˇs´ı odhad z´ısk´ame. Podrobnˇejˇs´ı informace o triangulaci lze z´ıskat z literatury [5]. Do cel´e z´aleˇzitosti jeˇstˇe vstupuje routov´an´ı: to samo o sobˇe se samozˇrejmˇe nesnaˇz´ı nal´ezt pouze cestu s nejmenˇs´ı latenc´ı (tj. nejkratˇs´ı), v´ ysledn´a cesta je ovlivnˇen´a v´ıce faktory (typicky v routovac´ım protokolu OSPF - nejlepˇs´ı cesta je ta s nejniˇzˇs´ı souhrnnou cenou, pˇriˇcemˇz do ceny se zapoˇc´ıt´av´a propustnost spoj˚ u, n´aklady na spoje atd.). Pˇri vyv´ıjen´ı syst´emu IDMaps bylo provedeno pokusn´e mˇeˇren´ı, kter´e mˇelo potvrdit ˇci vyvr´atit, zda se triangulaˇcn´ı odhady daj´ı k odhadu vzd´alenost´ı v Internetu pouˇz´ıt. Spoˇc´ıvalo v trasov´an´ı (pomoc´ı aplikace traceroute) mezi vybran´ ymi hosty bud’ pˇr´ımo, a nebo pˇres dalˇs´ı hostitele. Na z´akladˇe tohoto mˇeˇren´ı bylo zjiˇstˇeno, ˇze 75-90% (v z´avislosti na vstupn´ıch podm´ınk´ach) vzd´alenost´ı C(a, b) + C(b, c) bylo maxim´alnˇe dvakr´at vˇetˇs´ı, neˇz je pˇr´ım´a vzd´alenost C(a, c) - opˇet v metrice latence.
2.2.5
Rozloˇ zen´ı tracer˚ u
Rozloˇzen´ı jednotliv´ ych tracer˚ u v´ yraznˇe ovlivˇ nuje v´ ysledky poskytovan´e syst´emem IDMaps. Pro optim´aln´ı v´ ypoˇcet se vyuˇz´ıvaj´ı dva algoritmy: k-HST a K-center (viz [9]). Na cel´ y probl´em se d´a naz´ırat dvˇema zp˚ usoby: mˇejme s´ıt’ G s N uzly a mez´ı ´ B. Ukolem je naj´ıt co nejmenˇs´ı poˇcet tracer˚ u tak, aby vzd´alenost mezi jak´ ymkoliv uzlem a nejbliˇzˇs´ım tracerem byla menˇs´ı nebo rovna B. ´ V druh´em pˇr´ıpadˇe mˇejme s´ıt’ G s N uzly a ˇc´ıslo K. Ukolem je nal´ezt takov´e rozm´ıstˇen´ı K -tracer˚ u, kter´e minimalizuje maxim´aln´ı vzd´alenost mezi uzlem a jeho nejbliˇzˇs´ım tracerem. Tento probl´em je zn´am´ y jako minimum K-centre problem. Oba dva v´ yˇse zm´ınˇen´e algoritmy mohou b´ yt pouˇzity pro ˇreˇsen´ı tˇechto dvou r˚ uzn´ ych pohled˚ u. Nezanedbateln´ ym faktem ovˇsem je, ˇze Internet se pomˇernˇe rychle dynamicky vyv´ıj´ı a my nezn´ame jeho pˇresnou topologii. Z tohoto d˚ uvodu nen´ı c´ılem urˇcit nejmenˇs´ı moˇzn´ y poˇcet tracer˚ u potˇrebn´ ych k precizn´ımu odhadu vzd´alenosti, ale sp´ıˇse zhodnocen´ı efektivity r˚ uzn´ ych um´ıstˇen´ı r˚ uzn´eho poˇctu tracer˚ u. V´ ysledky mˇeˇren´ı v [2] vˇsak prok´azaly, ˇze kvalita odhadu vzd´alenosti t´emˇeˇr nen´ı z´avisl´a na s´ıt’ov´e topologii, kterou oba dva tyto algoritmy vyˇzaduj´ı. Z tohoto d˚ uvodu se jimi nebudeme d´ale zab´ yvat, pˇr´ıpadn´e informace lze nal´ezt v literatuˇre [9]. Dalˇs´ım d˚ uleˇzit´ ym faktorem je typ AS, do kter´eho budou tracery um´ıstˇeny. V pˇr´ıpadˇe tzv. tranzitn´ıho AS5 vyb´ır´ame um´ıstˇen´ı tracer˚ u v r´amci AS tak, aby tyto mˇely 5
Tranzitn´ı AS je propojeno s minim´alnˇe dvˇema dalˇs´ımi AS a proch´az´ı pˇres nˇej provoz.
25
pˇr´ıstup k vysokokapacitn´ım link´am. Naopak v pˇr´ıpadˇe tzv. stub - AS6 vyb´ır´ame um´ıstˇen´ı se sp´ıˇse n´ızkokapacitn´ımi linkami.
2.2.6
Virtu´ aln´ı spojen´ı
Jakmile jsou tracery v s´ıti rozm´ıstˇeny, zaˇcnou vz´ajemnˇe sledovat sebe a jednotliv´a AP. V´ ysledn´e informace jsou pr˚ ubˇeˇznˇe oznamov´ana klient˚ um (SONAR a HOPS - viz 2.2.1). Tyto na z´akladˇe v´ ysledk˚ u sestavuj´ı mapy vzd´alenost´ı. Za pˇredpokladu, ˇze v s´ıti budeme m´ıt cca 5% tracer˚ u z celkov´eho poˇctu sledovan´ ych stanic, v pˇr´ıpadˇe s´ıtˇe Internet bychom museli kontinu´alnˇe sledovat a drˇzet informace o obrovsk´em mnoˇzstv´ı virtu´aln´ıch cest mezi tˇemito tracery. Nicm´enˇe vezmeme-li v u ´vahu jiˇz zm´ınˇenou troj´ uheln´ıkovou nerovnost a efektivn´ı routov´an´ı, nen´ı nezbytnˇe nutn´e drˇzet informaci o velikost B 2 (kde B je poˇcet tracer˚ u) k tomu, abychom dos´ahli postaˇcuj´ıc´ı pˇresnosti. Pˇripomeˇ nme, ˇze vˇsechny IP adresy v r´amci jednoho AP m˚ uˇzeme v˚ uˇci zbytku Internetu povaˇzovat za ekvidistantn´ı. Pokud nen´ı v konfiguraci dan´eho AP pˇr´ımo ˇreˇceno, ke kter´emu traceru patˇr´ı, mohou ho odhalit (a zmˇeˇrit vzd´alenost AP −→ tracer) pouze nejbliˇzˇs´ı tracery. Z toho vypl´ yv´a, ˇze prvn´ı tracer, kter´ y AP odhal´ı, pˇredpokl´ad´a, ˇze je nejbliˇzˇs´ı a svou vzd´alenost od AP zavede do datab´aze. Ostatn´ı tracery mohou pot´e zkouˇset, zda n´ahodou nejsou bl´ıˇze. V pˇr´ıpadˇe, ˇze ano, pˇrep´ıˇs´ı informaci v datab´azi, a p˚ uvodn´ı tracer pˇrest´av´a vz´ajemnou vzd´alenost mˇeˇrit. Dalˇs´ı ot´azkou je, zda je v˚ ubec dostaˇcuj´ıc´ı mˇeˇrit vzd´alenost AP pouze od jednoho traceru. Pokud je totiˇz AP routov´ano smˇerem ven do Internetu v´ıce cestami, mˇeˇren´a vzd´alenost pouze k jedin´emu traceru m˚ uˇze d´avat nepˇresnou informaci (data mohou mezi AP a zbytkem Internetu putovat i jinou cestou, neˇz je ta trasovan´a). AP se pot´ ykaj´ı s obdobn´ ym probl´emem jako AS, nicm´enˇe v menˇs´ım rozsahu. Jde o to, ˇze jednotliv´ı ISP mohou adresn´ı bloky propagovan´e protokolem BGP d´ale dˇelit na menˇs´ı podbloky (napˇr. pr´avˇe AP), kter´e jsou ovˇsem v r´amci topologie s´ıtˇe od sebe r˚ uznˇe vzd´alen´e. Jedin´ ym zp˚ usobem, jak zjistit adresn´ı rozsahy tˇechto podblok˚ u, je dotazov´an´ı na routery ISP pomoc´ı SNMP protokolu (viz RFC1157). Optim´aln´ı je, pokud s´am ISP urˇc´ı polohu traceru v jeho s´ıti - pokud moˇzno vˇetˇs´ıho poˇctu.
2.2.7
V´ ykonnost syst´ emu
V´ ykonnost syst´emu IDMaps m˚ uˇze b´ yt zhodnocena pomoc´ı krit´eria uˇziteˇcnosti poskytovan´e informace o vzd´alenosti pro jednotliv´e dotazuj´ıc´ı se aplikace. D´a se ovˇeˇrit praktick´ ym pˇr´ıkladem: klient m´a za u ´kol na z´akladˇe informac´ı z IDMaps vybrat jedno z nˇekolika zrcadel (nejbliˇzˇs´ı) v s´ıti. Tento klient by tedy mˇel b´ yt 6
Stub - AS je typ AS, kter´e je pˇripojeno pouze na jedno dalˇs´ı AS - je v podstatˇe hraniˇcn´ı.
26
Obr´azek 2.2: Optim´aln´ı rozloˇzen´ı tracer˚ u pˇresmˇerov´an na zrcadlo, kter´e m´a ve stromov´em grafu (zkonstruovan´em na z´akladˇe znalosti fyzick´e topologie) nejkratˇs´ı cestu. V´ ysledky testov´an´ı syst´emu po jeho dokonˇcen´ı prok´azaly nˇekolik v´ yznamn´ ych fakt˚ u: • v´ ybˇer zrcadel pomoc´ı informac´ı z IDMaps byl znatelnˇe lepˇs´ı neˇz ˇcistˇe n´ahodn´ y v´ ybˇer • s´ıt’ov´a topologie ˇc´asteˇcnˇe m˚ uˇze v´ ysledky ovlivnit • metoda rozm´ıstˇen´ı tracer˚ u, kter´a nez´avis´ı na znalosti s´ıt’ov´e topologie, ud´av´a stejnˇe dobr´e nebo dokonce lepˇs´ı v´ ysledky odhad˚ u neˇz algoritmy apriori znalost topologie vyuˇz´ıvaj´ıc´ı • zvyˇsov´an´ı poˇctu tracer˚ u (nad 2% poˇctu uzl˚ u v s´ıti) nen´ı co se v´ ysledku t´ yˇce efektivn´ı, uˇz 0,2% - pod´ıl tracer˚ u v s´ıti vrac´ı pˇresn´e odpovˇedi s velkou pravdˇepodobnost´ı (v´ıce neˇz 80%) pˇri 90% pokus˚ u • poˇcet virtu´aln´ıch link˚ u mezi tracery by nemˇel b´ yt v´ yraznˇe vyˇsˇs´ıho ˇr´adu, neˇz samotn´ y poˇcet tracer˚ u • se zvyˇsuj´ıc´ım se poˇctem tracer˚ u testuj´ıc´ıch jedno AP se z´aroveˇ n zvyˇsuje pˇresnost odhadu Syst´em IDMaps lze tedy velmi dobˇre vyuˇz´ıt pro urˇcov´an´ı vzd´alenost´ı jednotliv´ ych host˚ u v s´ıti a d´ıky tomu z´aroveˇ n poskytovat efektivn´ı informace pro dalˇs´ı sluˇzby pracuj´ıc´ı s t´ımto druhem informace.
27
2.3
Global Network Positioning (GNP)
Metoda odhadu pozice stanice v s´ıti, jenˇz je v souˇcasn´e dobˇe pravdˇepodobnˇe nejpˇresnˇejˇs´ı, je GNP (Global Network Positioning). Nejv´ yznamnˇejˇs´ı faktory ovlivˇ nuj´ıc´ı urˇcen´ı pozice pomoc´ı tohoto algoritmu jsou pˇresnost mˇeˇren´ı RTT (mˇeˇren´ı vzd´alenost´ı tedy prob´ıh´a pomoc´ı ICMP protokolu.), rozm´ıstˇen´ı orientaˇcn´ıch bod˚ u a pˇrevod vzd´alenost´ı v s´ıti do prostoru. Syst´em vyuˇz´ıv´a vypoˇc´ıtan´e vzd´alenosti k urˇcen´ı skuteˇcn´ ych vzd´alenost´ı. Prvn´ı krok odhadu spoˇc´ıv´a v rozm´ıstˇen´ı dostateˇcn´eho poˇctu orientaˇcn´ıch bod˚ u (tzv. landmarks), pˇriˇcemˇz jejich minim´aln´ı poˇcet je vˇzdy N + 1, kde N je dimenze (napˇr. N = 2 pro odhad v 2D-prostoru). Tyto orientaˇcn´ı body jsou urˇcit´e uzly v s´ıti, kter´e tvoˇr´ı kostru cel´eho v´ ypoˇctu. S jejich vyuˇzit´ım mohou vˇsechny stanice pˇredpovˇedˇet svou pozici v s´ıti a to aniˇz by byl generov´an zbyteˇcnˇe velk´ y tok dat. Obdobnˇe jako u syst´emu IDMaps existuje probl´em optim´aln´ıho rozloˇzen´ı tracer˚ u (viz ), GNP se rovnˇeˇz zab´ yv´a rozloˇzen´ım landmark˚ u [8]. Pro optim´aln´ı rozloˇzen´ı je tˇreba zn´at informace o jejich poˇctu, zmˇeˇrenou vzd´alenost mezi nimi (pomoc´ı RTT) a vz´ajemnou vypoˇc´ıtanou vzd´alenost, pˇriˇcemˇz je tˇreba hledat minimum funkce celkov´e sumy chyb. Jakmile jsou orientaˇcn´ı body ustaveny, lze zaˇc´ıt odhad pozice jednotliv´ ych uzl˚ u v s´ıti - postupuje se obdobn´ ym zp˚ usobem, jako pˇri urˇcov´an´ı souˇradnic samotn´ ych orientaˇcn´ıch bod˚ u. Nejprve jsou zmˇeˇreny vzd´alenosti mezi stanic´ı, jej´ıˇz polohu odhadujeme, a zn´am´ ymi landmarky a na z´akladˇe tˇechto u ´daj˚ u jsou vypoˇc´ıt´any jej´ı souˇradnice. V´ yhodou syst´emu GNP oproti IDMaps je architektura typu peer-to-peer. IDMaps funguj´ı jako klient-server, takˇze dotazy vys´ılan´e jednotliv´ ymi klienty mohou znamenat nav´ yˇsen´ı zpoˇzdˇen´ı, kter´e u peer-to-peer s´ıt´ı nevznik´a. U nich naopak doch´az´ı na vyˇza´d´an´ı jedn´e stanice k odesl´an´ı souˇradnic stanice druh´e, d´ıky ˇcemuˇz prvn´ı stanice je pak schopn´a vypoˇc´ıtat parametry spojen´ı k druh´e stanici. V ˇcl´anku [7] je uk´az´an tzv. scale factor, s jehoˇz pomoc´ı se d´a srovnat skuteˇcn´a vzd´alenost (geografick´a) se vzd´alenost´ı zmˇeˇrenou (RTT): 2· S=
P
Li ,Lj ∈Lk
N2
dsL
i ,Lj
dLi ,Lj
(2.2)
−2
V rovnici (2.2) N znamen´a prostorovou dimenzi, ds oznaˇcuje vypoˇc´ıtanou vzd´alenost a d vzd´alenost zmˇeˇrenou. Zde tedy pˇrich´az´ı v u ´vahu mˇeˇren´ı RTT vzd´alenost´ı a jejich porovn´an´ı se skuteˇcn´ ymi geografick´ ymi. Struˇcnˇe ˇreˇceno, metoda GNP se snaˇz´ı pˇriˇradit jednotliv´ ym uzl˚ um v s´ıti eukleidovsk´e souˇradnice na z´akladˇe mˇeˇren´ı RTT a znalosti korespondence latence a geografick´e vzd´alenosti. Zaj´ımavou myˇslenkou je umist’ov´an´ı jednotliv´ ych uzl˚ u do v´ıce neˇz 2D prostoru. V pˇr´ıpadˇe 2D je totiˇz potˇreba nˇekter´e stanice um´ıstit mnohem d´ale
28
od ostatn´ıch. V pˇr´ıpadˇe 3D prostoru tyto ”tˇeˇzko umistiteln´e” uzly m˚ uˇzeme l´epe polohovat pomoc´ı tˇret´ıho rozmˇeru. Obdobnˇe kaˇzd´a dalˇs´ı dimenze tento probl´em ˇreˇs´ı l´epe. Detailn´ı popis t´eto metody lze nal´ezt v jiˇz zmiˇ novan´e literatuˇre [8].
29
3
´ ˇ REN ˇ ´I LATENCE NASTROJE PRO ME
3.1 3.1.1
Vytvoˇ ren´ı zdrojov´ ych k´ od˚ u aplikace ping Implementace
Vytvoˇren´a aplikace ping je urˇcen´a pro pouˇzit´ı pod syst´emem Linux (pˇr´ıpadnˇe Unix). Naprogramov´an´ı bylo provedeno v jazyce C a pˇreklad za pomoc´ı kompil´atoru gccc++-3.3.2, kter´ y je souˇc´ast´ı distribuce Mandrake 10.0. Nejd˚ uleˇzitˇejˇs´ı souˇca´st´ı k´odu je tzv. socket, pomoc´ı kter´eho se vytv´aˇr´ı spojen´ı mezi jednotliv´ ymi stroji. Soket je mechanizmus zajiˇst’uj´ıc´ı komunikaci, kter´ y byl poprv´e implementov´an v operaˇcn´ım syst´emu BSD. Jedn´a se o velice obecn´ y n´astroj. Stejn´e funkce lze vyˇz´ıvat pro komunikaci pomoc´ı r˚ uzn´ ych protokol˚ u, nejˇcastˇeji vˇsak TCP/IP a UDP/IP. Vˇsechny operaˇcn´ı syst´emy na b´azi Unixu maj´ı shodn´e soketov´e API (tj. na vˇsech syst´emech unixov´eho typu by mˇely b´ yt k dispozici stejn´e funkce se stejn´ ymi parametry). Pˇri pouˇzit´ı soket˚ u na operaˇcn´ıch syst´emech typu MS Windows (tzv. WinSock) doch´az´ı k m´ırn´ ym zmˇen´am, nˇekter´e funkce maj´ı jin´e typy parametr˚ u, maj´ı m´enˇe (pˇr´ıpadnˇe jin´e) moˇznost´ı. D´ale je zde nˇekolik speci´aln´ıch funkc´ı, kter´e v unixov´em soketov´em API nejsou k dispozici. Po otestov´an´ı chybov´ ych stav˚ u dojde v aplikaci k vytvoˇren´ı socketu, naplnˇen´ı ICMP paketu a jeho vysl´an´ı. Z´aroveˇ n je zaznamen´an ˇcas. Jakmile pˇrijde odpovˇed’ (jednoznaˇcnˇe identifikovan´a v z´ahlav´ı ICMP paketu), opˇet je zaznamen´an ˇcas a vyps´ana statistika. K´od aplikace se struˇcnou dokumentac´ı viz pˇr´ıloha A. Podrobn´e informace o socketov´em programov´an´ı a aplikaci ping byly z´ısk´any za pomoc´ı literatury [1] a Internetu [16].
3.1.2
Ovˇ eˇ ren´ı funkˇ cnosti
Pro ovˇeˇren´ı spr´avn´e funkˇcnosti vytvoˇren´e aplikace bylo provedeno srovn´avac´ı mˇeˇren´ı. Srovn´an´ı prob´ıhalo s aplikac´ı ping, kter´a je pˇr´ımo implementovan´a v OS Linux, distribuce Mandrake 10.0. Testov´an´ı bylo prov´adˇeno na dvou r˚ uzn´ ych IP adres´ach, ˇ a jedn´e z USA. Na kaˇzdou IP adresu bylo ’ping´ano’ stokr´at za sebou jedn´e z CR z´aroveˇ n obˇema aplikacemi, ze stejn´eho stroje. V´ ysledky testu jsou zaznamen´any v tabulce ˇc.3.1. Zaznamen´av´a minim´aln´ı (min), maxim´aln´ı (max) a pr˚ umˇern´ y (avg) ˇcas zmˇeˇren´eho RTT (v milisekund´ach). Ping1 odpov´ıd´a aplikaci, kter´a je jiˇz implementovan´a v syst´emu Linux, ping2 novˇe vytvoˇren´e aplikaci. Z tabulky vypl´ yv´a, ˇze ˇ resp. 1,1% (USA). Novˇe pr˚ umˇern´e v´ ysledky mˇeˇren´ı RTT se od sebe liˇs´ı o 4,7% (CR)
30
c´ılov´ a IP adresa
aplikace
RTT min
RTT max
RTT avg
212.47.0.4
ping1 ping2 ping1 ping2
7,363 7,315 110,365 110,209
38,680 17,965 311,328 319,954
8,216 7,849 122,326 120,949
4.68.17.135
Tabulka 3.1: Porovn´an´ı linuxov´e a novˇe vytvoˇren´e aplikace v milisekund´ach naprogramovan´a aplikace tedy m˚ uˇze b´ yt pro bˇeˇzn´a mˇeˇren´ı RTT pouˇzita, zdrojov´e k´ody jsou funkˇcn´ı a jejich v´ ystupem jsou relevantn´ı hodnoty.
3.2
Vytvoˇ ren´ı skript˚ u pro mˇ eˇ ren´ı RTT a zpracov´ an´ı v´ ysledk˚ u
Jak jiˇz bylo v pˇredeˇsl´em textu ˇreˇceno, urˇcen´ı z´avislosti hodnoty RTT na geografick´e vzd´alenosti m˚ uˇze b´ yt efektivnˇe vyuˇzito jakoˇzto souˇc´ast algoritm˚ u GNP apod. Abychom byli schopni odpovˇedˇet na ot´azku, zda je v˚ ubec RTT moˇzno nˇejak´ ym zp˚ usobem mapovat na skuteˇcn´e vzd´alenosti, bylo nutno prov´est velk´ y poˇcet mˇeˇren´ı po cel´em svˇetˇe. Zˇrejmˇe nejvˇetˇs´ı probl´em s pˇresnou lokac´ı zahraniˇcn´ıch IP adres byl vyˇreˇsen pomoc´ı s´ıtˇe PlanetLab, ve kter´e mˇeˇren´ı latence prob´ıhalo.
3.2.1
S´ıt’ PlanetLab
PlanetLab [18] je celosvˇetov´a poˇc´ıtaˇcov´a s´ıt’, kter´a slouˇz´ı pro v´ yzkum distribuovan´ ych syst´em˚ u, s´ıt’ov´ ych aplikac´ı apod. Jednotliv´e uzly s´ıtˇe jsou rozloˇzeny po cel´e planetˇe (nutno podotknout, ˇze nikoliv rovnomˇernˇe - vyspˇel´e zalidnˇen´e oblasti jsou samozˇrejmˇe pokryty hustˇeji), ˇc´ımˇz umoˇzn ˇuj´ı testov´an´ı v re´aln´em prostˇred´ı celosvˇetov´eho Internetu. Projekt PlanetLab vznikl v r.2002 na nˇekolika americk´ ych uniˇ verzit´ach a v souˇcastnosti ˇc´ıt´a cca 800 uzl˚ u. V CR jsou dva uzly - jeden um´ıstˇen na FIT VUTBR a druh´ y na s´ıti CESNET. Do s´ıtˇe PlanetLabu maj´ı pˇr´ıstup pouze instituce a firmy, kter´e se na nˇem samy aktivnˇe pod´ılej´ı (tj. samy na sv´em pracoviˇsti vytvoˇr´ı alespoˇ n jeden z uzl˚ u t´eto s´ıtˇe). V souˇcasnosti existuje mnoho projekt˚ u, kter´e tuto s´ıt’ vyuˇz´ıvaj´ı (nam´atkou jmenujme CoDNS - distribuovan´ y DNS odolnˇejˇs´ı proti u ´tok˚ um; projekt RON zamˇeˇren´ y na tvorbu a optimalizaci routovac´ıch tabulek atd.). Pˇrednost PlanetLabu spoˇc´ıv´a pˇredevˇs´ım v moˇznosti vytv´aˇren´ı nez´avisl´ ych aplikac´ı, kter´e mohou bˇeˇzet v s´ıti vedle sebe a vytv´aˇret tak ucelen´e virtu´aln´ı vrstvy s´ıtˇe. Vrtsvy pouˇz´ıvaj´ı spoleˇcn´e uzly bez toho, aby se pˇri jejich uˇzit´ı jakkoliv vz´ajemnˇe ovlivˇ novaly.
31
Postup cel´eho mˇeˇren´ı bylo nutno rozdˇelit do nˇekolika z´akladn´ıch krok˚ u pˇribliˇznˇe takto: – vytvoˇren´ı skriptu, kter´ y bude schopn´ y po distribuci od PlanetLabu pingat na seznam host˚ u – vytvoˇren´ı skriptu odstraˇ nuj´ıc´ıho duplicity mˇeˇren´ı (protoˇze kaˇzd´ y ping´a na kaˇzd´eho, v ide´aln´ım pˇr´ıpadˇe tak z´ısk´av´ame kaˇzd´ y z´aznam vlastnˇe dvakr´at) – vytvoˇren´ı skriptu, kter´ y dok´aˇze spoˇc´ıtat skuteˇcnou geografickou vzd´alenost dvou m´ıst na zemˇekouli, pˇr´ıˇcemˇz na vstupu jsou souˇradnice. – vlastn´ı mˇeˇren´ı a n´asledn´e zpracov´an´ı dat Jednotliv´e skripty jsou detailnˇeji pops´any v n´asleduj´ıc´ıch kapitol´ach. V´ ysledn´a data (vzd´alenosti a zmˇeˇren´e RTT) je potˇreba k sobˇe spr´avnˇe nap´arovat, ˇc´ımˇz z´ısk´ame soubor dat vhodn´ y pro dalˇs´ı anal´ yzu. Protoˇze na drtiv´e vˇetˇsinˇe stanic, kter´e jsou souˇca´st´ı s´ıtˇe PlanetLab, je program ping implemetov´an jiˇz v z´akladu (ovˇeˇreno pomoc´ı n´avratov´ ych k´od˚ u PlanetLabu), nebyl pro mˇeˇren´ı RTT pouˇzit vlastn´ı zdrojov´ y k´od, ale pˇr´ımo implementovan´e aplikace. Postup mˇeˇren´ı prob´ıhal n´asleduj´ıc´ım zp˚ usobem: Nejprve byl z´ısk´an aktu´aln´ı seznam ˇziv´ ych (tj. aktivn´ıch) stanic s´ıtˇe - jejich poˇcet se pohyboval obvykle mezi 180-200. Tento seznam byl spoleˇcnˇe s vytvoˇren´ ymi skripty nahr´an do s´ıtˇe PlanetLab na vˇsechny tyto aktivn´ı stroje. Po nastaven´ı pˇr´ısluˇsn´ ych pr´av bylo provedeno mˇeˇren´ı pingu na vytvoˇren´ y seznam (doba mˇeˇren´ı se pohybovala okolo 20ti minut). Po zkonˇcen´ı mˇeˇren´ı byly v´ ysledky zaznamen´any do soubor˚ u a ty n´aslednˇe ze s´ıtˇe PlanetLab staˇzen´e. V t´eto f´azi ˇslo pouze o surov´a data, kter´a bylo nutno d´ale zpracovat pomoc´ı skriptu na vyˇrazen´ı duplicit a poˇc´ıtan´ı zemˇepisn´e vzd´alenosti. Tyto v´ ypoˇcty trvaj´ı pˇri uveden´em poˇctu mˇeˇren´ ych host˚ u cca 2 hodiny - pˇri kaˇzd´em mˇeˇren´ı (po vyˇrazen´ı duplicit) bylo z´ısk´ano pr˚ umˇernˇe 17000 unik´atn´ıch z´aznam˚ u. Nutno poznamenat, ˇze pro u ´ˇcely mˇeˇren´ı byl vybr´an vˇzdy jen jeden uzel v dan´e lokalitˇe (typicky mnoho univerzit disponuje napˇr. tˇremi i v´ıce uzly na stejn´e zemˇepisn´e adrese). Pˇri pouˇzit´ı vˇsech aktivn´ıch uzl˚ u by se jejich poˇcet pˇribliˇznˇe zdvojn´asobil, coˇz by znaˇcnˇe prodlouˇzilo dobu n´asledn´ ych zpracov´an´ı mˇeˇren´ ych dat. Metoda mˇeˇren´ı v s´ıti PlanetLab m´a vˇsak i sv´a u ´skal´ı. Prvn´ım z nich je fakt, ˇze pˇri odeˇc´ıt´an´ı souˇradnic jednotliv´ ych stanic jsme odk´az´ani na lidsk´ y faktor - souˇradnice jsou do syst´emu zad´av´any ruˇcnˇe. V nˇekter´ ych pˇr´ıpadech sch´azely u ´plnˇe a nepodaˇrilo se je urˇcit, v nˇekter´ ych pˇr´ıpadech je bylo moˇzno dohledat pomoc´ı sluˇzby Google Maps. Z d˚ uvodu ˇcasov´e n´aroˇcnosti vˇsak nebylo moˇzno ovˇeˇrit, zda vˇsechny jiˇz zadan´e souˇradnice do s´ıtˇe PlanetLab koresponduj´ı s realitou, nam´atkov´a kontrola vˇetˇsinovˇe potvrdila, ˇze ano. Druh´ ym probl´emem je samotnˇe mˇeˇren´ı v s´ıti PlanetLab. Tato s´ıt’ m´a sv´e koˇreny v
32
univerzitn´ıch s´ıt´ıch a postupnˇe se na n´ı nabalovaly v´ yznamn´e svˇetov´e firmy. Sv´ ym zp˚ usobem tento fakt m˚ uˇze ovlivnit topologii s´ıtˇe - mˇeˇren´ı v n´ı zkr´atka nemus´ı objektivnˇe reflektovat re´aln´e celosvˇetov´e podm´ınky s´ıtˇe Internet, mapuje sp´ıˇse jednu jej´ı specifickou ˇca´st. Bohuˇzel se vˇsak v pr˚ ubˇeho mˇeˇren´ı nepodaˇrilo z´ıskat dostateˇcn´e mnoˇzstv´ı dat z jin´ ych s´ıt´ı. Vˇsechny skripty byly z d˚ uvodu jednoduchosti naps´any pˇr´ımo v shellu Bash pod OS Linux, Mandrake 10.0. Pro pˇrehlednost byly rozdˇeleny do nˇekolika ˇca´st´ı:
3.2.2
Vytvoˇ ren´ı seznamu stanic
Nejprve bylo nutn´e vytvoˇrit vlastn´ı datab´azi, kter´a obsahuje na kaˇzd´em ˇra´dku n´azev uzlu a jeho geografick´e souˇradnice. Tato datab´aze je uloˇzena v souboru nodes.axis a vyuˇz´ıv´a se pro pˇr´ıpravu kaˇzd´eho mˇeˇren´ı. Byla vytvoˇrena ruˇcnˇe - informace o zemˇepisn´ ych souˇradnic´ıch jednotliv´ ych uzl˚ u se nach´az´ı na www str´ank´ach PlanetLabu. Datab´aze nen´ı koneˇcn´a a t´emˇeˇr pˇri kaˇzd´em mˇeˇren´ı je nutno do n´ı pˇridat dalˇs´ı z´aznamy, podle toho zda je ˇziv´ y nˇejak´ y nov´ y, dosud nepouˇzit´ y uzel. Tato datab´aze se pak porovn´av´a s aktu´aln´ım seznamem stanic (na vstupu), na ystupu kter´e budeme pingat, pomoc´ı skriptu prepare nodes, viz pˇr´ıloha F. Na v´ skriptu je tent´ yˇz seznam obohacen´ y o souˇradnice1 s n´azvem nodes.txt. Aktu´aln´ı seznam stanic PlanetLabu lze z´ıskat na www adrese http://comon.cs.princeton.edu/. Tento seznam je moˇzno r˚ uznˇe filtrovat podle potˇrebn´ ych krit´eri´ı: pouze ˇziv´e uzly, pouze jeden uzel v kaˇzd´e lokalitˇe nebo napˇr. pouze takov´e uzly, kter´e maj´ı dostateˇcnˇe velk´ y diskov´ y prostor (obzvl´aˇst’ tato moˇznost se uk´azala b´ yt velmi n´apomocnou - uzly maj´ıc´ı m´alo m´ısta na disku totiˇz vykazovaly chyby pˇri zapisov´an´ı hodnot do promˇenn´ ych, ˇc´ımˇz v´ yraznˇe ovlivˇ novaly v´ ysledky mˇeˇren´ı).
3.2.3
Skript pro mˇ eˇ ren´ı RTT
Tento skript (pojmenovan´ y jako ping nodes random, viz pˇr´ıloha B) m´a za u ´kol prom´ıch´an´ı vstupn´ıho seznamu host˚ u (nodes.txt), na kter´e se bude pingat, pot´e prov´est vlastn´ı ping na tento seznam. V´ ysledek je pˇred´an na v´ ystup do souboru 2 pojmenovan´eho jmeno stanice.result . Pˇri poˇctu cca 200 stanic ve vstupn´ım souboru bˇeˇz´ı tento skript pˇribliˇznˇe 20 minut, coˇz je zp˚ usobeno nastaven´ım parametr˚ u (poˇcet ping˚ u na jednotliv´e hosty, doba prodlevy pˇri neobdrˇzen´ı paketu; tyto parametry lze ve skriptu mˇenit dle potˇreby). 1
Nˇekter´e z´ aznamy vˇsak ve v´ ystupn´ım souboru m˚ uˇzou chybˇet, a to v pˇr´ıpadˇe, ˇze nebyl v souboru nodes.axis poˇzadovan´ y uzel nalezen. V tom pˇr´ıpadˇe je nutn´e ho doplnit a skript spustit znovu, pˇr´ıpadnˇe pokud jeho souˇradnice nezn´ame, u ´plnˇe ho vyˇradit ze vstupn´ıho souboru. 2 Jmeno stanice je nahrazeno konkretn´ım hostname dan´eho uzlu, ze kter´eho se ping´a.
33
Prom´ıch´an´ı vstupn´ıho souboru bylo provedeno z d˚ uvodu alespoˇ n ˇc´asteˇcn´eho odstranˇen´ı vlastn´ıho zat´ıˇzen´ı s´ıtˇe: pokud bychom soubor nodes.txt nahr´ali na vˇsechny stanice a ty by z´aroveˇ n zaˇcaly pingat od prvn´ı poloˇzky v seznamu, v´ ysledky mˇeˇren´ı by mohly b´ yt ovlivnˇeny pˇret´ıˇzen´ım (na zaˇc´atku by vˇsechny uzly pingaly na prvn´ı poloˇzku, pot´e na druhou atd., k posuvu by doch´azelo jen postupnˇe). K´od pro prom´ıch´an´ı (random shuffle) byl pˇrevzat z [14]. V´ ysledkem tohoto skriptu je tedy pro kaˇzdou stanici tolik soubor˚ u, kolik je z´aznam˚ u ve vstupn´ım souboru nodes.txt (m´ınus jeden, kter´ y odpov´ıd´a pr´avˇe t´eto stanici). V´ ysledn´e soubory bylo nutno ze s´ıtˇe PlanetLab st´ahnout pro dalˇs´ı zpracov´an´ı. Z´aznamy v souborech ve formˇe ˇr´adk˚ u maj´ı tento tvar: kupl1.ittc.ku.edu;38.9527;-95.2644;129.670;134.942;138.652;3.829;Tue May 13 09:22:10 UTC 2008 Prvn´ı z´aznam odpov´ıd´a c´ılov´e stanici, n´asleduje zemˇepisn´a ˇs´ıˇrka a d´elka zdrojov´e stanice (po n´ı je pojmenov´an cel´ y soubor), d´ale souˇradnice c´ılov´eho uzlu, hodnota pr˚ umˇern´eho zmˇeˇren´eho RTT (v ms) a ˇcas.
3.2.4
Poˇ c´ıt´ an´ı geografick´ e vzd´ alenosti
Prvn´ı zpracov´an´ı staˇzen´ ych soubor˚ u spoˇc´ıvalo v poˇc´ıt´an´ı skuteˇcn´e geografick´e vzd´alenosti mezi jednotliv´ ymi stanicemi. Pro vlastn´ı v´ ypoˇcet byl pouˇzit skript s n´azvem vzdalenost.bc, viz pˇr´ıloha C. Jak sama pˇr´ıpona napov´ıd´a, jde o posloupnost pˇr´ıkaz˚ u zad´avan´ ych v linuxov´e kalkulaˇcce bc. Nejprve je nutno zadefinovat funkce potˇrebn´e k v´ ypoˇctu, kter´e kalkulaˇcka standartnˇe nezn´a (radians, ac, as atd. - podrobnˇeji viz dokumentace pˇr´ımo ve skriptu). Vlastn´ı v´ ypoˇcet je tak´e novˇe definovan´a funkce s n´azvem vzdalenost, na jej´ımˇz vstupu jsou ˇctyˇri parametry (dvakr´at zemˇepisn´a ˇs´ıˇrka a d´elka, mezi kter´ ymi budeme vzd´alenost poˇc´ıtat). Do v´ ysledn´e promˇenn´e s n´azvem os je naˇcten v´ ysledek v´ ypoˇctu vzorce na urˇcen´ı vzd´alenosti na kouli pomoc´ı souˇradnic (vzd´alenost se mˇeˇr´ı jako nejkratˇs´ı d´elka ˇca´sti kruˇznice, kter´a dvˇe dan´a m´ısta na zemˇekouli spojuje). Podrobnˇejˇs´ı teorie v´ ypoˇctu vzd´alenosti viz [19], vzorec a definice funkc´ı byly vˇetˇsinovˇe pˇrevzaty z f´ora [20]. V´ ystupem toho skriptu je tedy vzd´alenost v km (s pˇresnost´ı na tˇri desetinn´a m´ısta) naˇcten´a do promˇenn´e. V´ ysledek lze ovlivnit nastaven´ım velikosti referenˇcn´ı koule (v naˇsem pˇr´ıpadˇe o polomˇeru 6371,1km). Zpracov´an´ı soubor˚ u s namˇeˇren´ ymi daty prob´ıhalo n´asleduj´ıc´ım zp˚ usobem: Do adres´aˇre (pˇredem definovan´eho ve skriptu count, viz pˇr´ıloha D) byl nahr´an soubor nodes.axis a d´ale vˇsechny v´ ysledn´e soubory jmeno stanice.result. Nejprve se ovˇeˇr´ı, zda pr´avˇe zpracov´avan´ y soubor je uveden v seznamu nodes.axis a pˇriˇrad´ı se mu jeho souˇradnice. V pˇr´ıpadˇe, ˇze nen´ı nalezen, skript se ukonˇc´ı s chybovou hl´aˇskou. V dalˇs´ım kroku se zpracov´av´a ˇra´dek po ˇra´dku - naˇctou se hodnoty vzd´alen´eho
34
uzlu (n´azev, souˇradnice, RTT) a poˇslou se na vstup v´ yˇse popsan´eho skriptu vzdalenost.bc pro spoˇc´ıt´an´ı vz´ajemn´e vzd´alenosti. V´ ysledek se je zaps´an do v´ ystupn´ıho souboru. T´ımto zp˚ usobem se zpracuj´ı vˇsechny ˇra´dky pr´avˇe otevˇren´eho souboru a potom se smyˇcka opakuje s dalˇs´ım souborem. Na v´ ystupu skriptu count je soubor result.dup obsahuj´ıc´ı ˇra´dky ve form´atu oddˇelen´em stˇredn´ıky (stanice1; stanice2; RTT; vzd´alenost v km): bob.cc.vt.edu;planet1.ecse.rpi.edu;18.582;839.152 Vzhledem k tomu, ˇze v pr˚ ubˇehu mˇeˇren´ı doˇslo k ping´an´ı mezi uzly A −→ B a tak´e B −→ A, po zpracov´an´ı skriptem count bylo nutno jeˇstˇe odstranit jednu z tˇechto hodnot jako duplicitu.
3.2.5
Odstranˇ en´ı duplicit
Pˇri vyˇrazov´an´ı duplicitn´ach z´aznam˚ u - tj. takov´ ych, ve kter´ ych vystupuj´ı vˇzdy tyt´eˇz stanice A a B - byl ponech´an z´aznam s menˇs´ı pr˚ umˇernou hodnotou RTT. Na ot´azku, zda odstranit vyˇsˇs´ı ˇci niˇzˇs´ı hodnotu RTT, bylo nahl´ıˇzeno t´ımto zp˚ usobem: aˇckoliv jednotliv´e uzly pingaj´ı na stejn´ y seznam ostatn´ıch (vyjma sebe sam´ ych), kter´ y je n´ahodnˇe prom´ıchan´ y, i pˇresto se snadno m˚ uˇze st´at, ˇze se sejde nˇekolik pingaj´ıc´ıch uzl˚ u na tent´ yˇz stroj, tj. vznikne vˇetˇs´ı neˇz bˇeˇzn´a z´atˇeˇz, kter´a je zp˚ usobena naˇs´ım mˇeˇren´ım. Z tohoto d˚ uvodu bylo pˇristoupeno k ponech´an´ı menˇs´ı hodnoty. Skript na odstranˇen´ı duplicit m´a n´azev remove dup, viz pˇr´ıloha E. Na jeho vstupu je soubor, kter´ y jsme z´ıskali pomoc´ı skriptu count, s n´azvem result.dup. Tento soubor se d´ale zpracov´av´a pomoc´ı pˇr´ıkazu awk. Sloupce s u ´daji stanice1 a stanice2 se porovn´avaj´ı ve dvou smyˇck´ach vz´ajemnˇe (naˇcte se prvn´ı ˇra´dek, jeho hodnoty stanice1 a stanice2 se porovnaj´ı s ostatn´ımi ˇra´dky, pokraˇcujeme druh´ ym ˇra´dkem atd.). V pˇr´ıpadˇe nalezen´ı shody se jeˇstˇe porovnaj´ı hodnoty RTT a na v´ ystup se poˇsle ˇra´dek s niˇzˇs´ı hodnotou. V pˇr´ıpadˇe nenalezen´ı shody se poˇsle na v´ ystup pˇr´ımo porovn´avan´ y ˇra´dek. V´ ysledn´ y soubor bez duplicit m´a n´azev output.txt. Tento skript funguje stejn´ ym zp˚ usobem i v pˇr´ıpadˇe, ˇze na vstupu stoj´ı soubor nav´ıc su ´dajem o poˇctu hop˚ u (viz 3.2.6).
3.2.6
Traceroute
Obdobnˇe jako skripty ping nodes random a count byl vytvoˇreny tyt´eˇz skripty s n´azvem ping nodes random trace a count trace. Pracuj´ı velice podobnˇe, rozd´ıl je pouze v tom, ˇze na v´ ystupu m´ame nav´ıc u ´daj o poˇctu skok˚ u mezi mˇeˇren´ ymi uzly; d´ale se generuje dalˇs´ı samostatn´ y soubor s kompletn´ım v´ ypisem z traceroute vˇzdy s oznaˇcen´ım failed nebo passed pro konkr´etn´ı vzd´alenou stanici (failed v pˇr´ıpadˇe, ˇze se v traceroute vyskytuj´ı nezjiˇstˇen´e skoky oznaˇcen´e - ”*” (odpov´ıd´a situaci, kdy se
35
nevr´at´ı ICMP paket). Podrobnˇejˇs´ı koment´aˇre spoleˇcnˇe se zdrojov´ ymi k´ody jsou pˇriloˇzeny elektronicky.
3.3
Datab´ aze namˇ eˇ ren´ ych hodnot
V´ ystupem v´ yˇse popsan´ ych skript˚ u je soubor s n´azvem output.txt, kter´ y obsahuje vˇsechna d˚ uleˇzit´a data (n´azev zdrojov´eho hostitele, c´ılov´eho hostitele, geografickou vzd´alenost mezi nimi a pr˚ umˇernou hodnotu RTT). T´ımto zp˚ usobem jsme tedy z´ıskali pomˇernˇe obs´ahlou datab´azi - pˇri mˇeˇren´ı na cca 200 stanic´ıch jsme po odstranˇen´ı duplicitn´ıch (pˇr´ıpadnˇe nekompletn´ıch) z´aznam˚ u z´ıskali kolem 18000 unik´atn´ıch z´aznam˚ u. Tento vzorek dat je dostateˇcnˇe velk´ y na n´asledn´e zpracov´an´ı. V pˇr´ıloze t´eto pr´ace lze nal´ezt jak namˇeˇren´a nepzracovan´a data (adres´aˇr mereni a v nˇem podadres´aˇre pojmenovan´e podle data mˇeˇren´ı), tak soubory stoj´ıc´ı na v´ ystupu skript˚ u (tedy result.dup a output.txt - v adres´aˇri vysledky, podadres´aˇre opˇet dle data mˇeˇren´ı).
36
4
´ ´I NAME ˇ REN ˇ ´ ZPRACOVAN YCH HODNOT
Namˇeˇren´e hodnoty byly zpracov´any (tabulkov´ ym procesorem Excell) a pomoc´ı programu GNUPlot z nich sestaveny grafy. Obr.ˇc.4.1 zobrazuje namˇeˇren´a data z 14.5.2008 07:45 UTC, s celkov´ ym poˇctem 20422 z´aznam˚ u. Z grafu jsou i bez
Obr´azek 4.1: Z´avislot RTT na geografick´e vzd´alenosti - vˇsechny vzorky, 14.5.2008 d˚ ukladnˇejˇs´ı anal´ yzy znateln´e nˇekter´e v´ yraznˇejˇs´ı oblasti a d´ale urˇcit´ y poˇcet r˚ uznˇe (t´emˇeˇr n´ahodnˇe) rozpt´ ylen´ ych hodnot leˇz´ıc´ıch mimo tyto oblasti. Podrobnˇejˇs´ı n´ahled proto ukazuje graf ˇc.4.2. Na prvn´ı pohled je z nˇej viditeln´ ych nˇekolik podstatn´ ych fakt˚ u: vˇetˇsina hodnot RTT spad´a do urˇcit´eho p´asu, kter´ y by mohl m´ıt pˇribliˇznˇe line´arn´ı z´avislost. Tento p´as je na nˇekter´ ych m´ıstech v´ yraznˇe pˇreruˇsen, a naopak v nˇekter´ ych m´ıstech se vytv´aˇr´ı v´ yznamn´e shluky i mimo nˇej. Tyto v´ yrazn´e ˇc´asti vˇetˇsinou odpov´ıdaj´ı komunikaci uvnitˇr kontinent˚ u nebo mezikontinent´aln´ımu pˇrenosu (viz kapitola 4.3).
4.1
Zmˇ ena z´ avislosti RTT vzhledem k denn´ı dobˇ e
Souˇca´st´ı pr´ace bylo tak´e mj. ovˇeˇren´ı, zda se z´avislost RTT na geografick´e vzd´alenosti ˇ veˇsker´ mˇen´ı v zavislosti na denn´ı dobˇe, pˇr´ıpadnˇe na dnu v t´ ydnu. Cas ych mˇeˇren´ı je uv´adˇen jako UTC. Grafy ˇc. 4.3 a 4.4 zobrazuj´ı obdobn´e mˇeˇren´ı jako graf ˇc.4.2, pouze v jin´e doby (a m´ırnˇe pozmˇenˇen´ y seznam stanic, na kter´ ych se mˇeˇrilo - vzhledem
37
Obr´azek 4.2: Z´avislot RTT na geografick´e vzd´alenosti - detail, 14.5.2008
Obr´azek 4.3: Z´avislot RTT na geografick´e vzd´alenosti - 20.4.2008
38
Obr´azek 4.4: Z´avislot RTT na geografick´e vzd´alenosti - 22.4.2008 datum mˇ eˇ ren´ı
rovnice pˇ r´ımky
spolehlivost R
korelaˇ cn´ı koeficient
20.4.2008 22.4.2008 14.5.2008
y = 0,0277x + 60,768 y = 0,0254x + 38,362 y = 0,0243x + 55,746
0,0522 0,0838 0,0705
0,228512781 0,289478763 0,265582378
Tabulka 4.1: Regresn´ı a korelaˇcn´ı koeficienty k tomu, ˇze nˇekter´e se staly aktivn´ımi a nˇekter´e naopak nedostupn´ ymi - ve vˇsech pˇr´ıpadech se vˇsak shoduje v´ıce neˇz 75% stanic). Z graf˚ u je na prvn´ı pohled zˇrejm´e, ˇze denn´ı doba nem´a na mˇeˇren´ı v´ yraznˇejˇs´ı vliv, v´ ysledn´e grafy jsou prakticky stejn´e (odliˇsnost m˚ uˇze b´ yt zp˚ usobena pr´avˇe zbylou ˇctvrtinou host˚ u, kter´a se mˇenila). Pro srovn´an´ı byla urˇcena line´arn´ı regrese (pomoc´ı aplikace Excell, metodou nejmenˇs´ıch ˇctverc˚ u). Spoleˇcnˇe s korelaˇcn´ım koeficientem pro jednotliv´e datumy je vidˇet v tabulce ˇc.4.1. Vzhledem k mal´e spolehlivosti v´ ypoˇctu (viz koeficient R) jsou tato data uv´adˇena sp´ıˇse orientaˇcnˇe. Z namˇeˇren´ ych dat byl vybr´an vzorek ze dvou dn˚ u (14.5.2008 a 20.4.2008) v detailu na komunikaci mezi Evropou a Asi´ı. Z tohoto vzorku jeˇstˇe byla odstranˇena ta mˇeˇren´ı, kter´a nebyla obsaˇzena v obou dvou datab´az´ıch (tzn. v´ ysledkem je vˇzdy jedna vzd´alenost se dvˇemi hodnotami RTT, pro dvˇe r˚ uzn´a mˇeˇren´ı). V´ ysledek zobrazuje graf ˇc.4.5. Aˇckoliv v celkov´em pohledu se grafy mohou zd´at podobn´e (barvy se pˇrekr´ yvaj´ı), jist´e odliˇsnosti se daj´ı vysledovat. Napˇr. vyznaˇcen´a oblast v modr´e elipse: jedn´a se stanice, kter´e vykazuj´ı t´emˇeˇr totoˇzn´e posunut´ı (korelaˇcn´ı koeficient
39
Obr´azek 4.5: Porovn´an´ı z´avislosti RTT v r˚ uznou dobu - 20.4.2008, 14.5.2008 mezi ˇcervenou a ˇcernou mnoˇzinou v elipse vych´az´ı cca 0,97). Pravdˇepodobnˇe se tedy jedn´a o oblast se stejnou topologi´ı, ve kter´e doˇslo k nˇejak´e zmˇenˇe (vyˇsˇs´ı/niˇzˇs´ı zat´ıˇzen´ı centr´aln´ıch router˚ u, u ´prava routov´an´ı atd.) Korelaˇcn´ı koeficient pro celou oblast Asie - Evropa je vˇsak 0,35, tzn. cel´a oblast spoleˇcn´e znaky posunut´ı nevykazuje.
4.2
D´ elka mˇ eˇ ren´ı
Obdobnˇe jako denn´ı doba, ani poˇcet vyslan´ ych (pˇrijat´ ych) paket˚ u v´ yraznˇeji neovlivˇ nuje pr˚ ubˇeh z´avislosti RTT na vzd´alenosti. Pro ovˇeˇren´ı tohoto faktu byl proveden test mˇeˇren´ı RTT v r´amci nˇekolika stanic na r˚ uzn´ ych kontinentech (Evropa, Asie, severn´ı a jiˇzn´ı Amerika). Na tyto uzly byl postupnˇe vys´ıl´an r˚ uzn´ y poˇcet paket˚ u od 3 aˇz po 2000 (odpov´ıd´a pˇribliˇznˇe ˇctyˇrhodinov´emu mˇeˇren´ı). V´ ysledky tohoto testu ukazuje tabulka ˇc.4.2 a 4.3. Namˇeˇren´e pr˚ umˇern´e hodnoty jednotliv´ ych stanic se od sebe v´ yraznˇe neliˇs´ı - vz´ajemn´a korelace jednotliv´ ych sloupeˇck˚ u je ve vˇsech pˇr´ıpadech vˇetˇs´ı neˇz 94%. Z toho vypl´ yv´a, ˇze 3 vyslan´e/pˇrijatˇe ICMP pakety jsou pro mˇeˇren´ı dostateˇcn´e. Nutno vˇsak podotknout, ˇze mˇeˇren´ı z´avislosti RTT na geografick´e vzd´alenosti je vhodn´e po urˇcit´em ˇcasov´em obdob´ı opakovat, a to z duvodu ovˇeˇren´ı platnosti dat. Topologie s´ıtˇe se neust´ale vyv´ıj´ı, pˇrib´ yv´a vysokorychlostn´ı optick´ ych spoj˚ u apod.
40
vzd´ alenost [km]
3 pakety [ms]
10 paket˚ u [ms]
20 paket˚ u [ms]
569,467 1603,444 1801,51 2220,87 3380,404 3945,239 5090,125 6498,663 6739,522 7335,219 7513,267 7855,952 8114,857 8276,357 8446,365 8806,548 8884,216 9015,553 9297,214 9846,301 10360,23 10632,184 11196,997 11545,679 11816,399 13363,292 14431,346 18949,668
31,797 69,622 64,587 100,408 118,091 145,935 158,133 120,285 111,763 335,143 159,92 147,531 162,11 142,956 222,198 299,458 227,934 235,278 330,848 380,499 261,523 197,609 196,764 326,225 335,965 305,398 490,353
31,402 68,958 64,208 100,249 117,463 139,345 157,053 120,142 111,66 334,986 159,836 147,471 150,966 142,805 374,856 299,25 224,414 386,443 330,266 380,096 260,413 197,508 196,877 311,22 297,292 333,342 283,814 564,314
31,435 69,139 64,236 100,131 118,27 147,707 157,02 120,257 111,621 335,118 162,688 147,413 158,833 142,741 375,808 299,325 224,55 387,813 330,256 380,116 260,999 202,052 196,773 312,651 297,579 333,682 283,634 565,051
Tabulka 4.2: Z´avislost RTT na poˇctu odeslan´ ych paket˚ u pro r˚ uzn´e vzd´alenosti - I
41
vzd´ alenost [km]
200 paket˚ u [ms]
1000 paket˚ u [ms]
2000 paket˚ u [ms]
569,467 1603,444 1801,51 2220,87 3380,404 3945,239 5090,125 6498,663 6739,522 7335,219 7513,267 7855,952 8114,857 8276,357 8446,365 8806,548 8884,216 9015,553 9297,214 9846,301 10360,23 10632,184 11196,997 11545,679 11816,399 13363,292 14431,346 18949,668
34,06 69,021 64,306 100,321 117,919 144,775 156,924 124,442 111,596 335,237 165,826 147,538 155,988 142,729 376,233 299,323 224,777 388,41 330,436 380,149 261,299 200,21 196,88 312,122 297,05 333,528 283,333 563,54
35,631 69,167 64,509 100,391 118,078 146,379 157,498 124,867 111,717 335,202 167,461 147,676 155,583 143,051 375,841 299,257 225,708 389,891 330,472 380,28 261,759 202,779 196,89 312,52 333,817 283,98 564,189
36,199 69,711 64,323 101,014 118,035 152,096 160,304 124,74 111,679 335,482 172,677 148,212 156,591 142,828 215,727 299,367 316,755 241,278 330,387 380,408 292,079 210,513 196,942 313,236 333,941 305,388 486,246
Tabulka 4.3: Z´avislost RTT na poˇctu odeslan´ ych paket˚ u pro r˚ uzn´e vzd´alenosti - II
42
4.3
Anal´ yza referenˇ cn´ıho grafu
Graf ˇc.4.6 byl postupnˇe rozdˇelen na jednotliv´e ˇcasti, barevnˇe odliˇseny. Vzhledem k tomu, ˇze vˇetˇsina host˚ u v s´ıti PlanetLab je soustˇredˇena v Evropˇe a Americe, dle pˇredpokladu prvn´ı ˇca´st grafu odpov´ıd´a vnitrokontinent´aln´ı komunikaci v Evropˇe a Americe (samozˇrejmˇe vzhledem k mal´ ym vzd´alenostem sem patˇr´ı drtiv´a vˇetˇsina intrakontinent´aln´ıch mˇeˇren´ı). Konkr´etnˇe tedy modr´a barva odpov´ıd´a komunikaci uvnitˇr Evropy, zelen´a uvnitˇr Ameriky, ˇzlut´a komunikaci mezi Amerikou a Evropou, ˇcern´a mezi Evropou a jiˇzn´ı Amerikou, ˇsed´a Asie - Evropa, fialov´a Asie - Amerika, atd. (jednotliv´e barvy se mohou pˇrekr´ yvat, jsou vrstven´e na sebe). Vymezen´ı jednotliv´ ych kontinent˚ u bylo provedeno na z´akladˇe zemˇepisn´ ych souˇradnic. Mezera mezi prvn´ı a druhou ˇca´st´ı odpov´ıd´a vzd´alenosti, kter´a nen´ı mezi uzly PlanetLabu v´ yraznˇeji zastoupena. V ide´aln´ım pˇr´ıpadˇe (pokud bychom neuvaˇzovali vˇsechny faktory ovlivˇ nuj´ıc´ı mˇeˇren´ı RTT, viz kapitola 1.3.2), bychom mohli pˇredpokl´adat, ˇze z´avislost RTT na geografick´e vzd´alenosti bude line´arn´ı - sign´al se ˇs´ıˇr´ı konstantn´ı rychlost´ı. Pro intrakontinent´aln´ı mˇeˇren´ı RTT spad´a vˇetˇsina z´aznam˚ u do oblasti vymezen´e tˇemito pˇr´ımkami: y1 = 0, 017333x a y2 = 0, 017333x + 40
(4.1)
Pˇr´ımky jsou rovnobˇeˇzn´e a vymezuj´ı interval o ˇs´ıˇrce 40ms (zat´ım se nepodaˇrilo ovˇeˇrit, proˇc je to pˇribliˇznˇe pr´avˇe tato hodnota). Konkr´etn´e pro geografick´e vzd´alenosti do 4673km do tohoto intervalu spad´a v´ıce neˇz 75% hodnot (pro mˇeˇren´ı z 14.5.2008 je to 78,8%, tato hodnota byla spoˇc´ıt´ana pomoc´ı eplikace Excell; viz obr.ˇc.4.7). Lze tedy odhadnout, ˇze pˇr´ımka y1 = 0, 017333x pˇribliˇznˇe tvoˇr´ı hranici, pod kterou se drtiv´a vˇetˇsina hodnot RTT pro danou vzd´alenost nedostane (pro ovˇeˇren´ı, zda se tato pˇr´ımka bliˇz´ı fyzik´aln´ı hranici, by bylo zapotˇreb´ı prov´est mˇeˇren´ı i v jin´ ych s´ıt´ıch). Pro cel´ y graf vˇsak interval rozptylu nen´ı moˇzn´e v rozumn´e m´ıˇre urˇcit - bud’ by byl pˇr´ıliˇs ˇsirok´ y a tud´ıˇz nepouˇziteln´ y, a nebo by do nˇej spadalo naopak pˇr´ıliˇs m´alo hodnot. Lze ho vˇsak urˇcit pro jednotliv´e u ´seky grafu, kter´e jsou barevnˇe oddˇeleny, podle toho, kter´a oblast n´as zaj´ıma (jedn´a se o jak´ ysi kompromis: ˇc´ım vˇetˇs´ı bude tento interval rozptylu, t´ım v´ıce hodnot do nˇej bude spadat, ale t´ım m´enˇe bude pouˇziteln´ y).
43
44 Obr´azek 4.6: Z´avislost RTT na geografick´e vzd´alenosti - barevnˇe oddˇelˇen´e skupiny, 14.5.2008
Obr´azek 4.7: Oblast nejvˇetˇs´ı koncentrace RTT, 14.5.2008
4.4
Anal´ yza evropsk´ ych uzl˚ u
Graf ˇc.4.8 zobrazuje pohled na komunikaci v r´amci Evropy (celkem 2790 mˇeˇren´ı). Korelaˇcn´ı koeficient m´a v pˇr´ıpadˇe pouze evropsk´ ych uzl˚ u hodnotu c = 0,162088199, pˇr´ımka metodou line´arn´ı regrese pak pˇredpis y = 0,1094x + 11,404 se spolehlivost´ı R = 0,0263.
4.5
Anal´ yza americk´ ych uzl˚ u
Vzhledem k faktu, ˇze vˇetˇs´ı ˇca´st stanic se nach´az´ı v Severn´ı Americe ve dvou seskupen´ıch - na v´ ychodn´ım a z´apadn´ım pobˇreˇz´ı, z grafu ˇc.4.9 je vidˇet, ˇze hustota mˇeˇren´ ych hodnot je nejvˇetˇs´ı u mal´ ych geografick´ ych vzd´alenost´ı, a d´ale doch´az´ı k jej´ımu m´ırn´emu zhuˇstˇen´ı naopak u vˇetˇs´ıch vzd´alenost´ı (coˇz odpov´ıd´a mˇeˇren´ı RTT mezi pobˇreˇz´ımi). Pˇri porovn´an´ı s grafem Evropy je vidˇet, ˇze tam jsou jednotliv´e uzly rozloˇzeny v´ıce rovnomˇernˇe (s nar˚ ustaj´ıc´ı vzd´alenost´ı kles´a hustota z´aznam˚ u).
4.6
Zhodnocen´ı namˇ eˇ ren´ ych v´ ysledk˚ u
Pomoc´ı vytvoˇren´ ych n´astroj˚ u se podaˇril nashrom´aˇzdit dostateˇcnˇe velk´ y vzorek dat, aby bylo moˇzno z jejich anal´ yzy udˇelat nˇekter´e konkr´etn´ı z´avˇery. Aˇckoliv pro cel´ y
45
Obr´azek 4.8: Z´avislost RTT na geografick´e vzd´alenosti - Evropa, 14.5.2008
Obr´azek 4.9: Z´avislost RTT na geografick´e vzd´alenosti - Amerika, 14.5.2008
46
soubor mˇeˇren´ı nejsou korelaˇcn´ı koeficienty zcela pˇr´ızniv´e, lze vymezit nˇekter´e oblasti, pro kter´e se z´avislost RTT na geografick´e vzd´alenosti jev´ı jako bl´ızk´a line´arn´ı z´avislosti (interkontinent´aln´ı mˇeˇren´ı), naopak nˇekter´e oblasti jsou t´emˇeˇr kruhovˇe symetrick´e (komunikace mezi Asi´ı a Evropou). Slabinou tohoto mˇeˇren´ı m˚ uˇze b´ yt fakt, ˇze prob´ıh´a ve specifick´e, t´emˇeˇr v´ yhradnˇe akademick´e s´ıti PlanetLab. Jednou z moˇznost´ı, jak z´ıskat nez´avisl´a data z jin´ ych s´ıt´ı pro mˇeˇren´ı, je vyuˇzit´ı sluˇzby Test Traffic Measurements (d´ale jen TTM) organizace RIPE (Reseaux IP Europeens, www.ripe.net). RIPE je neziskov´a organizace, kter´a mj. ˇr´ıd´ı pˇridˇelov´an´ı blok˚ u IP adres v Evropˇe, jej´ı z´abˇer ˇcinnost´ı je vˇsak ve skuteˇcnosti mnohem ˇsirˇs´ı. Jedn´ım z bˇeˇz´ıc´ıch projekt˚ u je pr´avˇe TTM. Tato sluˇzba dok´aˇze mˇeˇrit kl´ıˇcov´e parametry pˇripojen´ı mezi r˚ uzn´ ymi uzly v Internetu (slouˇz´ı tedy jako kontinu´aln´ı monitoring). Pro sv´a mˇeˇren´ı pouˇz´ıv´a zaˇr´ızen´ı vyhrazen´e pouze na tuto ˇcinnost, kter´e generuje mal´e mnoˇzstv´ı datov´eho provozu (tzn. zat´ıˇzen´ı s´ıtˇe nezaznamen´a v´ yraznˇejˇs´ı n´ar˚ ust). Samotn´e zˇr´ızen´ı se skl´ad´a z poˇc´ıtaˇce pˇripojen´eho na Internet a d´ale z GPS modulu, jeho instalace je velmi jednoduch´a. Namˇeˇren´a data z jednotliv´ ych box˚ u rozm´ıstˇen´ ych po svˇetˇe dle z´akazn´ık˚ u jsou k dispozici na www str´ank´ach RIPE, podl´ehaj´ı vˇsak licenˇcn´ım podm´ınk´am a nelze je pouˇz´ıt bez souhlasu autor˚ u. Ten se bohuˇzel bˇehˇem ˇreˇsen´ı t´eto pr´ace nepodaˇrilo zajistit, nicm´enˇe komunikace byla nav´az´ana a v budoucnu by pˇrich´azela v u ´vahu.
47
5
´ ER ˇ ZAV
Jak bylo naznaˇceno jiˇz v u ´vodu, hlavn´ım c´ılem t´eto pr´ace bylo vytvoˇren´ı n´astroj˚ u pro mˇeˇren´ı a zpracov´an´ı parametru latence v s´ıti a s jejich pomoc´ı prov´est konkr´etn´ı mˇeˇren´ı ovˇeˇruj´ıc´ı fakt, zda hodnota RTT nˇejak´ ym zp˚ usobem z´avis´ı na skuteˇcn´e geografick´e vzd´alenosti. Na z´akladˇe podrobnˇejˇs´ıho sezn´amen´ı se se sluˇzebn´ım protokolem ICMP a n´astroji pro vytvoˇren´ı soket˚ u byly vytvoˇreny zdrojov´e k´ody pro mˇeˇren´ı RTT v programovac´ım jazyku C a d´ale skripty v pˇr´ıkazov´em interpretu Bash pro zpracov´an´ı vˇetˇs´ıho mnoˇzstv´ı namˇeˇren´ ychy dat. Na vzorku mˇeˇren´ı byla ovˇeˇrena jejich pln´a funkˇcnost. Skripty i zdrojov´ y k´od je moˇzno nad´ale optimalizovat, pˇr´ıpadnˇe doplˇ novat o nov´e potˇrebn´e funkce. Interpretace namˇeˇren´ ych hodnot uk´azala, ˇze v celkov´em pohledu v´ ysledky prakticky nejsou z´avisl´e na denn´ı dobˇe, nicm´enˇe nˇekter´e oblasti mohou jevit spoleˇcn´e charakteristiky a je zapotˇreb´ı d˚ ukladnˇejˇs´ı anal´ yzy. Sp´ıˇse neˇz rozbor cel´eho souboru dat se tedy jev´ı b´ yt vhodnˇejˇs´ı posuzov´an´ı jednotliv´ ych (geografick´ ych) ˇca´st´ı zvl´aˇst’ - v z´avislosti na topologii s´ıtˇe maj´ı konkr´etn´ı vlastnosti, kter´e nejsou v celkov´em pohledu tolik zˇreteln´e. Mˇeˇren´ı samotn´e prok´azalo, ˇze z´avislost RTT na geografick´e vzd´alenosti neni ˇcistˇe nahodil´a, a proto m´a smysl se j´ı nad´ale zab´ yvat (podrobnˇejˇs´ı anal´ yzou namˇeˇren´ ych hodnot, pˇr´ıpadnˇe nov´ ymi mˇeˇren´ımi). V kaˇzd´em pˇr´ıpadˇe by vˇsak bylo vhodn´e prov´est vˇetˇs´ı objem mˇeˇren´ı tak´e v jin´ ych s´ıt´ıch, neˇz v dosud prov´adˇen´e s´ıti PlanetLab, aby bylo moˇzn´e vylouˇcit ovlivnˇen´ı v´ ysledk˚ u charakteristick´ ymi vlastnostmi t´eto specifick´e s´ıtˇe. V´ ysledky t´eto pr´ace mohou b´ yt pouˇzit´e napˇr. jako podklad pro metody predikce pozice stanic v s´ıt´ı, obzvl´aˇst’ GNP.
48
REFERENCE [1] Stevens, W.R. UNIX Network Programming Volume 1, Second edition. USA: Prentice Hall PTR, 1998. [2] Francis P., Jamin S., Jin Ch., Jin Y., Raz D., Shavitt Y., Zhang L. IDMaps: A Global Internet Host Distance Estimation Service EEE/ACM Trans. on Networking, Oct. 2001. [3] Govindan R. and Tangmunarunkit H. ”Heuristics for internet map discovery” in Proc. IEEE INFOCOM, vol. 3, 2000, pp.1371-1380. [4] Vazirani, V. Approximation Methods. New York. Springer-Verlag, 1999. [5] Guyton, J.D. and Schwartz, M.F. ”‘Locating nearby copies of replicated internet servers”’. in Proc. ACM SIGCOM, Aug. 1995, pp. 288-298. [6] Srinivasan Seshan, Mark Stemm, and Randy Katz ”Shared passive network performance discovery”’. In Proceedings of the USENIX Symposium on Internet Technologies and Systems, 1997. [7] Radim Burget, Dan Komosny, Vit Novotny ”Integration of Host Position Prediction into Hierarchical Aggregation” icn, pp. 740-745, Seventh International Conference on Networking (icn 2008), 2008 [8] Eugene Ng, T.S. and Hui Zhang ”Towards Global Network Positioning”. Extended Abstract, ACM SIGCOMM Internet Measurement Workshop 2001, San Francisco, CA, November 2001 [9] Hochbaum, Dorit S., Shmoys, David B. ”A best possible heuristic for the kCentre problem”. University of California, Berkley. [10] R. Cox, F. Dabek, F. Kaashoek, J. Li, and R. Morris ”Practical Distributed Network Coordinates”. In Proceedings of the ACM HotNets Workshop, November 2003 [11] Herold, Helmut awk & sed - Pˇr´ıruˇcka pro d´avkov´e zpracov´an´ı textu. Computer Press, 2004. [12] IP2Location.com Urˇcen´ı zemˇepisn´e polohy pomoc´ı reverzn´ıho z´aznamu Dostupn´e z URL:
[13] whatismyipaddress.com Grafick´y traceroute Dostupn´e z URL:
49
[14] shadegrowncode.com/ Funkce pro random shuffle, Bash Dostupn´e z URL: [15] wikibooks.org/ Informace o shellu Bash Dostupn´e z URL: [16] root.cz Tutori´aly programov´an´ı C++ Dostupn´e z URL: [17] cmu.edu REMOS Project Dostupn´e z URL: [18] planet-lab.org S´ıt’ PlanetLab Dostupn´e z URL: [19] rvp.cz Mˇeˇren´ı vzd´alenosti na gl´obusu Dostupn´e z URL: [20] mathforum.com V´ypoˇcet vzd´alenosti ze zemˇepisn´ych souˇradnic Dostupn´e z URL: [21] ripe.net Organizace RIPE Dostupn´e z URL: [22] army.mil Historie pingu Dostupn´e z URL: [23] cs.wikipedia.org Wikipedia Dostupn´e z URL:
50
˚ VELICIN ˇ SEZNAM SYMBOLU, A ZKRATEK RTT round-trip (delay) time je ˇcas, za kter´ y informace (obvykle paket) doraz´ı od zdroje k c´ıli a zpˇet ICMP Internet Control Message Protocol - jeho u ´ˇcelem je informov´an´ı zdrojov´eho uzlu o chyb´ach a nestandartn´ıch situac´ıch pˇri pˇrenosu TTL time to live, znamen´a dobu ˇzivota IP paketu MTU Maximum transmission unit, jedn´a se o oznaˇcen´ı maxim´aln´ı velikosti IP paketu, kter´ y je moˇzn´e pˇren´est z jednoho s´ıt’ov´eho zaˇr´ızen´ı na druh´e; obvykl´a hodnota MTU v pˇr´ıpadˇe Ethernetu je 1500 bajt˚ u PING Packet InterNet Grouper slouˇz´ı k detekci ˇcasu odezvy s´ıt’ov´eho zaˇr´ızen´ı v IP s´ıti a patˇr´ı mezi standardn´ı n´astroje pro spr´avu s´ıtˇe; vyuˇz´ıv´a ICMP TCP/IP transmition control protocol/Internet protocol, sada protokol˚ u pro komunikaci v poˇc´ıtaˇcov´e s´ıti UDP User Datagram Protocol je nespolehliv´ y nespojov´ y protokol nezaruˇcuje, zda se pˇren´aˇsen´ y datagram neztrat´ı, zda se nezmˇen´ı poˇrad´ı doruˇcen´ ych datagram˚ u nebo zda se nˇekter´ y datagram nedoruˇc´ı v´ıcekr´at SNMP Simple Network Management Protocol slouˇz´ı potˇreb´am n´astroj˚ u spr´avy s´ıt´ı FTP File Transfer Protocol, protokol aplikaˇcn´ı vrstvy z rodiny TCP/IP urˇcen´ y pro pˇrenos soubor˚ u mezi poˇc´ıtaˇci GNP Global Network Positioning, metoda odhadu pozice stanice v s´ıti RIPE R´eseaux IP Europ´eens (RIPE), f´orum pro z´ajemce o technick´ y rozvoj Internetu: jeho c´ılem komunity je zajiˇstˇen´ı koordinace spr´avy, u ´drˇzby a rozvoje Internetu AS
Autonomn´ı syst´em, mnoˇzina IP s´ıt´ı a router˚ u pod spoleˇcnou technickou spr´avou, kter´a reprezentuje v˚ uˇci Internetu spoleˇcnou routovac´ı politiku
AP
Adresn´ı prefix, definovan´ y jako po sobˇe jdouc´ı (n´asledn´ y) rozsah IP adres, pˇriˇcemˇz vzd´alenosti vˇsech host˚ u s IP adresami z toho AP jsou v˚ uˇci zbytku internetu ekvidistatn´ı
51
ˇ ´ILOH SEZNAM PR A Zdrojov´ y k´ od aplikace PING
53
B Skript ping nodes random
57
C Funkce vzdalenost.bc pro poˇ c´ıt´ an´ı geografick´ e vzd´ alenosti
59
D Skript Count
60
E Skript remove dup
62
F Skript prepare nodes
63
52
A #include #include #include #include #include #include #include #include #include #include #include #include #include
´ KOD ´ APLIKACE PING ZDROJOVY <sys/socket.h> <sys/types.h> <arpa/inet.h> <stdlib.h> <string.h> <sys/time.h> <signal.h> <stdio.h>
#define BUFSIZE 1024
static int G_break = 0; /* funkce checksum byla opsana z prislucnych RFC dokumentu */ unsigned short checksum(unsigned char *addr, int count) { register long sum = 0; while( count > 1 ) { /* This is the inner loop */ sum += * (unsigned short *) addr; addr+=2; count -= 2; } /* Add left-over byte, if any */ if( count > 0 ) sum += * (unsigned char *) addr; /* Fold 32-bit sum to 16 bits */ while (sum>>16 != 0) sum = (sum & 0xffff) + (sum >> 16); return ~sum; } // signal handler void catchsignal (int sig) { if (sig == SIGINT) { G_break = 1; } } int main(int argc, char *argv[]) { size_t size; hostent *host; icmphdr *icmp, *icmpRecv; iphdr *ip; int sock, length;
53
unsigned int ttl = 255; sockaddr_in sendSockAddr, receiveSockAddr; char buffer[BUFSIZE]; fd_set mySet; timeval tv; char *addrString; unsigned short int pid = getpid(), p; int c = 0; int s = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP); int x; double z = 0;
/* deklarace promennych pro statistiku */ double y = 0; double max = 0; double min = 1000000; double suma = 0; int counter = 0; if (argc != 2) { printf("Syntax:\n\t%s address\n",argv[0]); return -1; } /* zjistime info o vzdalenem pocitaci */ if ((host = gethostbyname(argv[1])) == NULL) { printf("Wrong address\n"); return -1; } /* vytvorime socket*/ if((sock = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP)) == -1) { printf("Can’t create socket\n"); return -1; } /* if (s == -1) { perror("Selhalo vytvoreni socketu."); exit(1); } printf("proslo to, s=%d\n", s);*/ setsockopt(sock, SOL_IP, IP_TTL, (const char *)&ttl, sizeof(ttl)); /* naplneni polozek ICMP hlavicky */ icmp = (icmphdr *)malloc(sizeof(icmphdr)); if (icmp == NULL) { printf("Not enought memory\n"); return -1; } icmp->type = ICMP_ECHO; icmp->code = 0; icmp->un.echo.id = pid; /* pripravime sendto */ sendSockAddr.sin_family = AF_INET; sendSockAddr.sin_port = 0;
54
memcpy(&(sendSockAddr.sin_addr), host->h_addr, host->h_length); // install signal handler for CTRL+C signal(SIGINT, catchsignal); for (p = 1; p <= 20000; p++) { if (G_break == 1) break; struct timeval out, in; icmp->checksum = 0; icmp->un.echo.sequence = p; icmp->checksum = checksum((unsigned char *)icmp, sizeof(icmphdr)); sendto(sock, (char *)icmp, sizeof(icmphdr), 0, (sockaddr *)&sendSockAddr, sizeof(sockaddr)); gettimeofday(&out, NULL); tv.tv_sec = 30; tv.tv_usec = 0; do { FD_ZERO(&mySet); FD_SET(sock, &mySet); if (select(sock + 1, &mySet, NULL, NULL, &tv) < 0) { printf("Select failed\n"); break; } if (FD_ISSET(sock, &mySet)) { size = sizeof(sockaddr_in); if ((length = recvfrom(sock, buffer, BUFSIZE, 0, (sockaddr *)&receiveSockAddr, &size)) == -1) { printf("Receiving data error\n"); } /* prisel blok dat: IP hlavicka + ICMP hlavicka. */ gettimeofday(&in, NULL); ip = (iphdr *) buffer; icmpRecv = (icmphdr *) (buffer + ip->ihl * 4); if ((icmpRecv->un.echo.id == pid) && (icmpRecv->type == ICMP_ECHOREPLY) && (icmpRecv->un.echo.sequence == p)) { addrString = strdup(inet_ntoa(receiveSockAddr.sin_addr)); host = gethostbyaddr(&receiveSockAddr.sin_addr, 4, AF_INET); printf("%d bytes from %s (%s)", length, (host == NULL? "?" : host->h_name), addrString); printf(": icmp_seq=%d ", icmpRecv->un.echo.sequence); y = 1e3*(in.tv_sec - out.tv_sec + 1e-6*(in.tv_usec - out.tv_usec)); z = z + y; max = (y > max)?y:max; min = (y < min)?y:min; suma+=y; printf("ttl=%d, rtt=%.3f ms\n", (int)ip->ttl, 1e3 * (in.tv_sec - out.tv_sec + 1e-6 * (in.tv_usec - out.tv_usec))); c++; free(addrString); } }
55
else { printf("- time exceeded -\n"); break; } } while (!((icmpRecv->un.echo.id == pid) && (icmpRecv->type == ICMP_ECHOREPLY) && (icmpRecv->un.echo.sequence == p))); sleep(1); } x = 100*(p-c-1)/(p-1); close(sock); printf("-- ping statistics for %s --\n", argv[1]); printf("%d packets transmitted, %d received, %d %% packet loss, total time was %f ms.\n", (p-1), c, x, z); printf("Statistics rtt: max/min/avg is %lf/%lf/%lf\n",max,min,suma/c); if (icmp != NULL) { free(icmp); icmp = NULL; } return 0; }
56
B
SKRIPT PING NODES RANDOM
#!/bin/bash # pokud je pri spusteny zadan argument "-show", tak vypise vystup i na obrazovku MY_HOST=‘hostname‘ RESULT=$MY_HOST.result INPUT="nodes.txt" INPUTR="nodes.rnd" TIMEOUT="-W 5" REPLACE1="/" REPLACE2=";" COUNT=1
#nacteni hostname do promenne #definice vystupniho soubboru #definice vstupnich souboru
if [ -f $RESULT ] then rm -f $RESULT fi
#pokud jiz existuje soubor s vysledky, smaze ho
#definice timeoutu pro ping #pomocne promenne #pocitadlo
if [ ! -e $INPUT ] #test zda mame vstupni soubor, pokud ne, tak se ukonci then echo "Input file: $INPUT not found!" exit 1 fi #funkce randomShuffle prevzata z http://www.shadegrowncode.com/ function randomShuffle { typeset -a elements typeset length=0 while read line do elements[$length]=$line length=$(($length + 1)) done typeset firstN=${1:-$length} if [ $firstN -gt $length ] then firstN=$length fi for ((i=0; $i < $firstN; i++)) do randPos=$(($RANDOM % ($length - $i) )) printf "%s\n" "${elements[$randPos]}" elements[$randPos]=${elements[$length - $i - 1]} done } #randomizace vstupniho souboru - vysledek zapsan do pomocneho souboru cat $INPUT | randomShuffle > $INPUTR #test zda byl vytvoren pomocny soubor, pokud ne, tak se ukonci if [ ! -e $INPUTR ] then echo "Input randomized file: $INPUTR not found!" exit 2 fi #hlavni smycka exec < $INPUTR
57
while read REMOTE_HOSTS; do #cteme zaznamy po radcich REMOTE_HOST=${REMOTE_HOSTS%%;*} #zapis do promenne if [ $REMOTE_HOST != $MY_HOST ] #test zda vzdaleny host nejsme my then #ping s nastavenymi parametry; zapis do promenne PING #pouze 4. sloupec (RTT - min/avg/max/mdev hodnoty) PING=‘ping $TIMEOUT -q -c 10 -n $REMOTE_HOST | gawk ’END {print $4}’‘ TIME=‘date -u‘ #uloz aktualni datum a cas UTC do promenne if [ "$PING" ] #test zda promenna obsahuje data then #vystup do souboru - vzdaleny host, RTT - AVRG, datum echo "$REMOTE_HOSTS;${PING//$REPLACE1/$REPLACE2};$TIME" >>$RESULT fi if [ -n "$1" ] #test zda byl zadan argument then if [ $1 == "-show" ] #test zda argument = "-show" then echo "Radek: $COUNT" echo "$REMOTE_HOSTS;${PING//$REPLACE1/$REPLACE2};$TIME" ((COUNT += 1)) fi fi else INSIDE=1 #pokud vzdalena stanice jsme my, tak do promenne zapis 1 fi done echo "$INSIDE" >>$RESULT
#kontrolni zapis na konec souboru zda jsme byli v seznamu
if [ -f $INPUTR ] then rm -f $INPUTR fi
#smaze pomocny soubor
58
C
FUNKCE VZDALENOST.BC PRO ˇ ´ITAN ´ ´I GEOGRAFICKE ´ VZDALENOSTI ´ POC #!/usr/bin/bc -l scale=100; define pi(){return(a(1)*4)}
; pi
= pi()
#prepocet stupnu na radiany: define radians(x) { return(x*(pi/180)) } #definice funkce arccos: define ac(x) { return 2*a(1)-as(x) } #definice funkce arcsin: define as(x) { if(abs(x)==1)return(2*a(1)*x)else return( a(x/sqrt(1-x^2)) ) } #definice funkce absolutni hodnoty: define abs(x) { if(x<0)return(-x)else return(x) } #zaokrouhleni na 3 desetinna mista: define int(x) { auto os;os=scale;scale=3;x/=1;scale=os;return(x) } #vlastni vzorec pro vypocet: define vzdalenost(x,y,m,n) { auto os; x=radians(x); y=radians(y); m=radians(m); n=radians(n); os=(ac(c(x)*c(y)*c(m)*c(n) + c(x)*s(y)*c(m)*s(n) + s(x)*s(m)) * 6371.1) return (int(os)) }
59
D
SKRIPT COUNT
#!/bin/bash INPUT_DIR="/home/jarosovl/planetlab/skripty/result/" INPUT_AXIS="/home/jarosovl/planetlab/skripty/nodes.axis" OUTPUT_FILE="$INPUT_DIR/result.dup" VZDALENOST_BC="/home/jarosovl/planetlab/skripty/vzdalenost.bc" #pokud jiz existuje soubor s vysledkem, smaze ho if [ -f $OUTPUT_FILE ] then rm -f $OUTPUT_FILE fi cd $INPUT_DIR #inicializace promennych i=1 FILE_COUNT=0 date #ulozi do promenne aktualni delku behu skriptu merime=$SECONDS #spocita pocet souboru s priponou .result for soubor in *.result; do test -f "$soubor" && ((FILE_COUNT +=1)) done #zacatek hlavni smycky for soubor in *.result; do #opakuj pro vsechny soubory s priponou .result: if [ -f "$soubor" ]; then #test, zda se opravdu jedna o soubor MYHOST=${soubor/%.result/} #do MYHOST nacti nazev souboru pred priponou radku_host=‘wc -l < $INPUT_DIR$soubor‘ #uloz do promenne pocet radku souboru LAT=0 LON=0 eval ‘gawk -F ";" -v mhost=$MYHOST ’{ if ($1 == mhost) print "LAT="$2"\n" "LON="$3"\n" }’ $INPUT_AXIS‘ #pozn.c.1 - viz dole if [ "$LAT" == "0" ] && [ "$LON" == "0" ] #jestlize nenajde souradnice aktualne #zpracovavaneho hosta, ukonci se then echo "!! ERROR - AXIS for HOST: $MYHOST not found !!" exit 1 fi for ((j=1; j <= $radku_host ; j++)) #cteme radek po radku do eval ‘gawk -F ";" -v line=$j ’FNR==line {print "REMOTEHOST="$1"\n" "LATR="$2"\n" "LONR="$3"\n" "AVRG="$5"\n"}’ $INPUT_DIR$soubor‘ #pozn.c.2 if [ $AVRG ] #test, zda se zmeril RTT then vzdalenost=‘echo "vzdalenost($LAT,$LON,$LATR,$LONR)" | $VZDALENOST_BC‘ #pozn.c.3 - viz dole echo "$MYHOST;$REMOTEHOST;$AVRG;$vzdalenost" >>$OUTPUT_FILE #vystup jde do souboru i=$((i + 1)) #spocita zazanmy fi done ((FILE_COUNT -=1)) #odecte hotovy soubor echo "$MYHOST - hotovo zaznamu: $i - zbyva souboru $FILE_COUNT - time:
60
$((SECONDS-merime))" merime=$SECONDS
#vypis na obrazovku #nulovani
fi done date echo "Done - celkem zaznamu: $i" #pozn.c.1 - na vstup prikazu gawk predame promennou MYHOST; ten ji hleda v souboru nodes.axis a pokud ho najde, do promennych LAT a LON vrati hodnoty #pozn.c.2 - na vstup prikazu gawk predame promennou s cislem radku ($j); ten vraci promenne REMOTEHOST, LATR, LONR, AVRG #pozn.c.3 - pomoci echa posilame vzdalenost do externiho skriptu vzdalenost.bc, vysledek se ulozi do promenne $vzdalenost
61
E
SKRIPT REMOVE DUP
#!/bin/bash INPUT_DIR="/home/jarosovl/planetlab/skripty" INPUT_FILE="$INPUT_DIR/result/result.dup" OUTPUT_FILE="$INPUT_DIR/output.txt" #pokud jiz existuje soubor s vysledkem, smaze ho if [ -f $OUTPUT_FILE ] then rm -f $OUTPUT_FILE fi #testovani shodnych zaznamu hostnamu v ruznych radcich; v pripade nalezeni shody #se porovnava RTT (avg) a na vystup je posilan radek s mensi hodnotou. V pripade #nenalezeni shody se radek na vystup posila rovnou awk -F ";" ’{ host1[NR] = $1 ; host2[NR] = $2 ; avrg[NR] = $3 ; radek[NR] = $0} END { if (NR > 1) { for (i=1; i<=NR; i=i+1) { test=0 for (j=NR; i<=j; j=j-1) { if (host1[i] == host2[j] && host1[j] == host2[i]) { if (avrg[i] > avrg[j]) { print radek[j] test=1 radek[j]="" } else { print radek[i] test=1 radek[j]="" } } } if (test < 1 && radek[i]!= "") print radek[i] } } }’ $INPUT_FILE >>$OUTPUT_FILE
62
F
SKRIPT PREPARE NODES
#!/bin/bash INPUT_AXIS="./nodes.axis" INPUT_NODES="./nodes.actual" OUTPUT_NODES="./nodes.txt" OUTPUT_NODES_NOAXIS="./nodes.noaxis" #ulozeni obsahu INPUT_NODES jiz bez duplicit do nodes_act nodes_act=‘sort -u $INPUT_NODES‘ #ulozeni poctu radku radku_nodes=‘echo "$nodes_act" | wc -l‘ #pokud jiz existuje soubor s vysledkem, smaze ho if [ -f $OUTPUT_NODES ] then rm -f $OUTPUT_NODES fi #pokud jiz existuje soubor nodes.noaxis, smaze ho if [ -f $OUTPUT_NODES_NOAXIS ] then rm -f $OUTPUT_NODES_NOAXIS fi #pro vsechny zaznamy v nodes_act delej: for node in $nodes_act do LAT=0 #nulovani LON=0 #nulovani # hledani node v souboru INPUT_AXIS + vraceni jeho prislusnych souradnic eval ‘gawk -F ";" -v mhost=$node ’{ if ($1 == mhost) print "LAT="$2"\n" "LON="$3"\n" }’ $INPUT_AXIS‘ if [ "$LAT" == "0" ] && [ "$LON" == "0" ] then #pokud nebyl nalezen -> souradnice jsou LAT=0 LAN=0 #tak zapis do souboru OUTPUT_NODES_NOAXIS echo "$node" >>$OUTPUT_NODES_NOAXIS else #pokud byl nalezen #zapsat do souboru OUTPUT_NODES echo "$node;$LAT;$LON" >>$OUTPUT_NODES fi #vypisy stavu zpracovani na obrazovku echo "Zbyva zpracovat: $radku_nodes - time: $((SECONDS-merime))" ((radku_nodes -= 1)) merime=$SECONDS done
63