Programowanie interaktywnych stron internetowych

Transkrypt

Programowanie interaktywnych stron internetowych
2007
Poznańskie Warsztaty Telekomunikacyjne
Poznań 6 - 7 grudnia 2007
P O Z NPOZNAN
A N U N IV
E R S IT Y OOF
F TTECHNOLOGY
E C H N O LO G YACADEMIC
A C A D E MJOURNALS
IC J O U R N A LS
UNIVERSITY
No 54
Electrical Engineering
2007
Adam Pieprzycki*
Konfiguracja i pomiary w sieci WLAN na przykładzie
systemu operacyjnego Linux
Celem artykułu jest analiza możliwości wykorzystania systemu operacyjnego
GNU/Linux do uzyskiwania informacji o parametrach fizycznych łącza bezprzewodowego
w sieciach WLAN (802.11).
Zagadnienia tutaj omawiane dotyczą programistycznego sposób uzyskiwania informacji
o wybranych parametrach fizycznych połączenia. Przedstawione zostały także podstawowe
(inżynierskie) informacje dotyczące planowania sieci 802.11 – ich zasięgu, a także
wiadomości dotyczące konfiguracji sieci. Uwaga została skupiona na sieciach 802.11b, ale
część informacji jest wspólna dla innych standardów [1]. Wszystkie zaprezentowane
przykłady zostały uruchomiane w dystrybucji Knoppix, chociaż poruszana tematyka
dotyczy ogólnie systemów Linux-owych.
Słowa kluczowe: wlan,warstwa fizyczna, uzyskiwanie parametrów łącza.
1. Wprowadzenie
Motywacją przeprowadzania pomiarów w sieciach bezprzewodowych jest
określenie zasięgu i jakość dostępu w sieciach WLAN. Jest to istotne podczas
zestawiania połączeń do sieci (np. dla nowych użytkowników), określania
możliwośći używania sieci na określonym obszarze lub innych rozważań
propagacyjnych.
Podłączenie do komputera PC karty bezprzewodowej (np. PCMCIA)
wymaga zainstalowania odpowiedniego sterownika Linux-owego. Poleceniem
modconf można uruchomić konfigurację modułów i wybrać te odpowiedzialne za
sprzęt bezprzewodowy. Jeżeli mamy karę, która wymaga innego sterownika należy
go zainstalować. Istnieje kilka popularnych sterowników Linux-owych (np. wlanng, HostAP, Madwifi, Orinoco) działających z określonym typem chipsetu, a
najmniej problemów z konfiguracją pod Linuxem sprawiają karty oparte na
chipsetach: Atheros, Hermes czy Prism 2/2.5.
Uzyskiwanie informacji i konfiguracja interfejsu bezprzewodowego odbywa się
programem iwconfig pochodzącym z pakietu wireless-tools [2], który został
napisany przez Jeana Tourrilhes'a, a najnowsza to wersja numer 29 i beta 30.
Narzędzia wchodzące w skład pakietu są standardowym elementem każdego
systemu operacyjnego GNU/Linux.
__________________________________________
* Państwowa Wyższa Szkoła Zawodowa w Tarnowie [email protected]
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
1/8
Adam Pieprzycki
Samo używanie polecenia iwconfig może sprowadzać się do ustawień interfejsu
bezprzewodowego, jak i uzyskiwania informacji o parametrach połaczenia.
Rysunek 1 Działanie iwconfig – interfejs eth1
Oprócz iwconfig w pakiecie wireless-tools znajdują się programy: iwevent –
wyświetlanie komunikatów generowanych przez sterownik (też do zmiany
ustawień karty), iwgetid – służące do pobierania adresów i nazw ESSID, iwlist –
które umożliwia pobranie dokładnych informacji z wybranego interfejsu( także
skanowanie sieci), iwpriv – za jego pomocą można konfigurować prywatne
parametry interfejsu i opcjonalnych (prywatnych) parametrów interfejsu, iwspy narzędzie służące do wyszukiwania szczegółów dotyczących sieci.
Innym narzędziem służącym do znajdowania sieci bezprzewodowych jest AP
Radar. Program umożliwia także łączenie się z wykrytymi punktami dostępowymi
(ang. Access Point).
2. KONFIGURACJA SIECI BEZPRZEWODOWEJ
Najczęściej, konfiguracja karty bezprzewodowej sprowadza się do wydania
odpowidnich poleceń:
iwlist wlan0 scanning - dostępność sieci bezprzewodowej
ifconfig wlan0 up //gdy tryb Ad hoc to ifconfig wlan0 192.168.1.1 up
iwconfig wlan0 essid nazwa_AP _identyfikator SSID
iwconfig wlan0 key klucz_szesnastkowo
iwconfig wlan0 mode Ad-Hoc //tryb Ad-Hoc, Managed, Master
iwpriv wlan0 authmode 2 (1 - open, 2 - shared)
ifconfig wlan0 adres_ip netmask maska_podsieci
route add default gateway adres_bramy
dhclient wlan0 - gdy używany jest serwer DHCP lub wpis serwera dhcp w
pliku /etc/resolv.conf
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
2/8
Konfiguracja i pomiary w sieci WLAN na przykładzie systemu operacyjnego Linux
W zależności o typu sterownika (i chipsetu) nazwa interfejsu może być inna np.:
eth0 (1), ath0(1), wlan0(1) i inne.
W zależności od typu karty i użytego sterownika, to samo polecenie (iwconfig)
może generować różne informacje.
3. PARAMETRY ŁĄCZA FIZYCZNEGO WLAN
Parametry i bilans łącza bezprzewodowego WLAN są analogiczne innych sposobów
komunikacji bezprzewodowej. Z inżynierskiego punktu widzenia, należy tak dobrać
parametry urządzeń (zazwyczaj odbiornika i anten), aby przez większość czasu uzyskać
wymagany poziom sygnału. Poziom sygnału na wejściu odbiornika z uwzględnieniem
marginesu na zaniki [6] (RSL_FM w dBm – ang. Receive Signal Level – Fade Margin)
możemy obliczyć jako:
RSL_FM [dBm]= poziom sygnał na zaciskach nadajnika [dBm] - starty sygnału
w przewodzie i w złączach [dB] + zysk anteny nadawczej [dBi] - starty sygnału (w
wolnej przestrzeni)[dB] + zysk anteny odbiorczej [dBi] - starty sygnału w
przewodzie i w złączach odbiornika [dB] – margines na zaniki [dB]
(1)
Wartości podanych parametrów zależą od parametrów technicznych sprzętu, odległości
pomiędzy nadajnikiem i odbiornikiem (straty sygnału zgodnie z przyjętym modelem
propagacyjnym) oraz z założonymi czy rzeczywistymi zanikami sygnału. Szacunkowo
można przyjąć, że w paśmie 2.4 GHz na dystansie 1 km tłumienie wynosi 100.4 dB. Warto
też pamiętać, że dwukrotny przyrost odległości pomiędzy nadajnikiem a odbiornikiem
powoduje wzrost tłumienia sygnału o 6 dB.
Ważnym zagadnieniem, którego nie będziemy tu poruszać, jest wysokość
umiejscowienia anten (strefa Fresnela, krzywizna ziemi, przeszkody itp.).
Informacje o parametrach połączenia można także bezpośrednio uzyskać ze standardowego
interfejsu jądra systemu czyli edytując plik /proc/net/wireless [3] (Rys. 3). Informacje te są
wykorzystywane przez standardowe narzędzia bezprzewodowe oraz inne dodatkowe
programy monitorujące wydajność połączenia np. Wavemon.
Rysunek 2 iwconfig oraz edycja pliku /proc/net/wireless
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
3/8
Adam Pieprzycki
Jakość łącza – Quality podawana jest jako jakość połączenia – link, szumów – noise,
oraz level – jako suma jakości łącza i szumów. Należy zauważyć że wartości te w różny
sposób są obliczane. Wartość jakości połączenia (ang. Quality link) z /proc/net/wireless
jest analogiczna z mocą sygnału (ang. Signal Strenght) linux-owego programu
KwiFiMenager (Rys. 2).
Po stronie routera (Linksys także posiada system operacyjny Linux) możemy
dowiadywać się co do stanu połączenia (Rys.4) wykorzystując wywołania dostępne w
pakiecie wl.
Rysunek 3 Uzyskiwanie informacji z routera Linksys
4. OBLICZANIE ZASIĘGU ŁĄCZA BEZPRZEWODOWEGO
Sprzęt: Punkt dostępowy (AP) Linksys wrt54gl v1.1,który posiada chipset radiowy:
Broadcom BCM2050KML, używa procesora Broadcom BCM5352EKPB 200 MHz [9]. AP
posiada dwie odkręcane anteny ze złączem R-TNC (żeńskim) o zysku 2dBi oraz moc
nadajnika na poziomie18 dBm (64mW). Używając sprzętu z alternatywnym firmwearem
(np. HyperWRT) istnieje możliwość podwyższenia mocy AP ponad dopuszczalny (100
mW) poziom aż do 251 mW. Po drugiej stronie testowano laptop z kartą bezprzewodową
„PCMCIA Cabletron Systems” na chipsecie Hermes I, która posiada złącze MC (mccard)
pozwalające na dodanie anteny zewnętrznej – jednakże takowej nie zastosowano. Czułość
karty PCMCIA dla poszczególnych przepływności wynos kolejno dla 1,2,5.5i 11 Mbit/s:
-93, -90, -87 i –84 dBm.
Dla połączenia z przepływnością 11 Mbit/s zgodnie ze wzorem (1) mamy:
RSL_FM [dBm]= 18 [dBm] (moc nadawnia) + 2[dBi] (zysk anteny)- starty sygnału (w
wolnej przestrzeni)[dB] + zysk anteny odbiorczej [dBi] - starty sygnału w przewodzie i w
złączach odbiornika [dB] – 10 [dB] (szumy)>-84 dBm
(2)
W wolnej przestrzeni dla częstotliwość 2.4 GHz, można przyjąć że tłumienie wynosi:
L[dB] = 100.4 + 20log10 (d), gdzie d – odległość w [km]
(3)
Z prostych obliczeń wynika, że w zastosowanym sprzęcie, można zestawić połączenie na
odległość 478.6 [m].
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
4/8
Konfiguracja i pomiary w sieci WLAN na przykładzie systemu operacyjnego Linux
W drugą stronę mamy następujące parametry: przy mocy nadawania 15 dBm (32 mW)
[10] i czułość [7] AP (Linksys) dla 802.11b i transmisji: 1Mbit/s – 91 dBm, dla 11 Mbit/s
wynosi -80dBm [15], a dla transmisji 54 Mbit/s (802.11g/OFDM) wynosi –65 dBm.
Analogiczne rozważania bazujące na prostym modelu propagacyjnym doprowadzają nas do
następujących odległości między AP a kartą bezprzewodową: przepływności 1 Mbit/s
759.6 [m], a przy 11 Mbit/s 213.8 [m].
Różnice w możliwych „osiągach” wynikają z maksymalnej mocy nadawania i progu
czułości odbiornika po jednej i drugiej stronie toru komunikacyjnego. W użytym sprzęcie,
to właśnie mniejsze wartości odległości będą tymi parametrami konstrukcyjnymi.
Należy zauważyć, że czułość urządzenia zależy od oferowanej przepływności (parametr
podawany przez producenta danego urządzenia). Gdybyśmy chcieli zestawić połączenie na
większą odległość np. 2 km musielibyśmy użyć anten [7] o większym zysku
energetycznym. Parametry anten (np. zysk energetyczny) wynika z typu używanych anten i
bezpośrednio z bilansu mocy w danym połączeniu.
W przypadku używanej karty PCMCIA, antenę można podłączyć do gniazda MC.
Od strony AP też nie jest to trudna sprawa, ponieważ urządzenie wyposażone jest w dwa
złącza R-TNC. Dodatkową antenę można przykręcić w miejsce dowolnej odkręconej z AP.
5. UZYSKIWANIE PARAMETRÓW ŁĄCZA FIZYCZNEGO
Bazując na znajomości pliku źródłowego iwconfig.c można napisać przykładowy program,
który w pętli nieskończonej co 1 s będzie wypisywać interesujące – z punktu widzenia
analizy warstwy fizycznej parametry połączenia. Prosty program (wifi.c) ma za zadanie
bieżące informowanie o parametrach dotyczących: jakości łącza, mocy sygnału, mocy
szumów, przepływności i częstotliwości. W programie tym wykorzystywane są funkcje
zadeklarowane w iwlib.h.
Kod programu: wifi.c
#include "iwlib.h"
#include <unistd.h>
/* Naglowek */
// inne elementy
int main(int argc, char ** argv)
{
int skfd;
/* niskopoziomowy deskryptor giazda*/
int goterr = 0;
/* utworzenie połczenia do jądra */
if((skfd = iw_sockets_open()) < 0)
{
perror("socket");
exit(-1);
}
iw_enum_devices(skfd, &print_info, NULL, 0);
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
5/8
Adam Pieprzycki
char buffer[128];
char buff[1024];
iw_enum_handler fn= &print_info;
struct ifconf ifc;
struct ifreq *ifr;
int i;
char *args[]={NULL};
int count=0;
ifc.ifc_len=sizeof(buff);
ifc.ifc_buf=buff;
while(1)
{
if(ioctl(skfd,SIOCGIFCONF,&ifc)<0)
{
fprintf(stderr,"siocgifconf %s\n",strerror(errno));
return 1;
}
ifr=ifc.ifc_req;
for(i=ifc.ifc_len / sizeof(struct ifreq);--i >=0;ifr++)
{
char *ifname=ifr->ifr_name;
struct wireless_info info;
struct wireless_info *infop;
int
rc;
rc = get_info(skfd, ifname,&info);
if(rc==0)
{
infop=&info;
if((infop)->has_stats)
{
printf("%d/%d %d %d ", (&infop->stats.qual)->qual, (&infop->range)->max_qual.qual, (&infop>stats.qual)->level - 0x100, (&infop->stats.qual)->noise - 0x100);
}
if(infop->b.has_freq)
{
double freq=infop->b.freq;
int channel=-1;
if(infop->has_range && (freq< KILO))
{
channel=iw_channel_to_freq((int)freq,&freq,&infop->range);
}
char vbuf[10];
iw_print_freq_value(vbuf,sizeof(vbuf),freq);
printf(" %s ",vbuf);
}
if(infop->has_bitrate)
{
iw_print_bitrate(buffer, sizeof(buffer), infop->bitrate.value);
printf(" bitrate%c%s \n",(infop->bitrate.fixed ? '=' : ':'), buffer);
}
}
}
sleep(1);
}
/* Zamkniecie gniazda */
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
6/8
Konfiguracja i pomiary w sieci WLAN na przykładzie systemu operacyjnego Linux
iw_sockets_close(skfd);
return(goterr);
}
Do skompilowania kodu można użyć dołączonego (lub zmodyfikowanego) Makefile.
Jeżeli nie chcemy używać programu make, możemy skompilować program w poniższy
(przykładowy) sposób:
gcc –c wifi.c
gcc –shared –o libiw.so.28 –Wl, -soname,libiw.so.28 –lm –lc iwlib.so
gcc –o wlan wifi.o libiw.so.28 –lm
Rysunek 4 Działanie zamieszczonego programu (wifi.c) oraz KwiFiMenager
W przedstawionym programie wykorzystano funkcje iw_sockets_open() – otwarcie
gniazda oraz ioctl() – funkcja [8] o kontrolowania zachowania różnych urządzeń, może być
używana do zmieniania atrybutów gniazd, pobierania listy interfejsów itd. W przykładzie
uruchomiona jest z opcją: SIOCGIFCONF – która pobiera listę interfejsów sieciowych
obecnych w systemie.
W systemie Linux dużą popularności zyskał program Kismet [5], który oferuje duże
możliwości jeśli chodzi o wykrywanie sieci wlan. Nie bez znaczenia jest licencja GPL na
której Kismet jest wydany – mamy wgląd w cały kod programu. Program ten umożliwia
uzyskiwanie wielu informacji o wykrytych sieciach. Umożliwia on także podsłuchiwanie
ruchu w sieci standardów: 802.11b, 802.11a oraz 802.11g. Oprócz możliwości analizy sieci
w warstwie 2 (łącza danych), program też podaje wskaźnik poziomu mocy odbieranego
sygnału radiowego RSSI. – ang. Received Signal Strength Indication. Wskaźnik ten (RSSI)
jest odniesiony do miejsca pomiaru więc jest także : Relative Signal Strength Indicator.
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
7/8
Adam Pieprzycki
Wartości RSSI zależą od używanego sprzętu, a zakres wartości jest mocno zróżnicowany.
Czasami producenci sprzętu podają swój sposób przeliczania RSSI na dBm [4], lub podają
swój sposób obliczania siły sygnału np. (4) – gdzie noise jest to zmierzony szum.
mocsygnalu = ((rssi[x] - noise[x])⋅1.5) + ((rssi[x] +90)⋅1.5)
(4)
Rysunek 5 Jednoczesna działanie przedstawionego programu (wifi.c) oraz Kismet
6. Podsumowanie
System operacyjny Linux dobrze nadaje się do przeprowadzania podstawowych
pomiarów w sieci WLAN. W tym celu możemy używać dostępne programy, modyfikować
już istniejące lub pisać swoje. Tak jak w innych systemach operacyjnych, w Linux-ie
możemy skutecznie przeprowadzać pomiary parametrów (fizycznych) zestawionych
połączeń bezprzewodowych. Przy braku bardziej profesjonalnych narzędzi, metody i takie
narzędzia pomiarowe mogą być wstępem (przyczynkiem) do bardziej dokładnych
rozważań propagacyjnych dla częstotliwości dla których pracują omawiane sieci WLAN
(2.4 GHz).
REFERENCES
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
A. Pieprzycki „Przegląd aktualnych standardów sieci WLAN” Biuletyn SEP 26
czerwiec 2006
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wireless.Extensions.
html
http://www.wildpackets.com/elements/whitepapers/Converting_Signal_Strength.pdf
http://www.kismetwireless.net/
P. Roshan, J. Leary “Bezprzewodowe sieci LAN 802.11 Podstawy” Mikom 2004
Anonim „Internet Agresja i Ochrona” Wydanie II Robomatic 2003
http://www.linuxpl.org/LPG/node91.html
http://www.openlinksys.info/readarticle.php?article_id=22
http://www.voxtechnologies.com/enterasys_files/pdf/4062_01.pdf
http://caia.swin.edu.au/reports/030403A/CAIA-TR-030403A.pdf
R.Fickenger, R. Weeks „100 sposobów na sieci bezprzewodowe” Helion 2007
PWT 2007 - POZNAŃ 6-7 GRUDNIA 2007
8/8