This shows you the differences between two versions of the page.
isrm:laboratoare:11 [2014/12/15 07:27] dragos.niculescu |
isrm:laboratoare:11 [2019/05/17 16:25] (current) mbarbulescu |
||
---|---|---|---|
Line 1: | Line 1: | ||
==== Laboratorul 11 ==== | ==== Laboratorul 11 ==== | ||
+ | |||
+ | Acest laborator este o introducere în crearea unui setup practic AP (access point) - STA (stație) folosind calculatoarele din PR706. Acestea au montate pe PCI placa Wifi Intel AC7260 care suportă dual band 2.4GHz/5GHz și 802.11a/b/g/n/ac (Legacy/HT/VHT). Calculatoarele fiind dotate cu Linux ne vom folosi de utilitarele userspace pentru a ne crea infrastructura. | ||
+ | |||
+ | În acest laborator vom lucra în echipe de minim 2 studenți, maxim 3. | ||
+ | |||
+ | |||
+ | === Pregătirea access pointului (AP) === | ||
+ | |||
+ | Pentru a putea porni cu succes daemon-ul de AP trebuie rulate următoarele comenzi (ca ''root''). Puteți rula un ''sudo su'' înainte. | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# nmcli radio wifi off | ||
+ | root@pr706-pc:~# rfkill unblock wifi | ||
+ | root@pr706-pc:~# rfkill unblock all | ||
+ | root@pr706-pc:~# killall wpa_supplicant | ||
+ | </code> | ||
+ | |||
+ | S-ar putea ca ''NetworkManager'' din Ubuntu încă se ne încurce așa că recomandăm oprirea lui. Dacă pierdeți accesul la internet rulați dhclient pe ''eno1'': | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# systemctl stop NetworkManager | ||
+ | root@pr706-pc:~# dhclient eno1 #doar daca nu mai avem conectivitate la Internet | ||
+ | </code> | ||
+ | |||
+ | Acum trebuie să pornim daemonul ''hostapd'' pentru a activa AP-ul nostru. E nevoie de doi pași simpli: | ||
+ | - Copiați fișierul [[https://github.com/isrm-lab/isrm-lab-sol/blob/master/lab-11/hostapd.conf|hostapd.conf de aici]], salvați-l în ''/etc/hostapd/hostapd.conf'' | ||
+ | - Rulați comanda de mai jos, output-ul trebuie să vă spună ''AP-ENABLED'': | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# hostapd /etc/hostapd/hostapd.conf | ||
+ | Configuration file: /etc/hostapd/hostapd.conf | ||
+ | Using interface wlp2s0 with hwaddr ac:fd:ce:22:77:9d and ssid "ISRMLABORATOR" | ||
+ | wlp2s0: interface state UNINITIALIZED->ENABLED | ||
+ | wlp2s0: AP-ENABLED | ||
+ | </code> | ||
+ | |||
+ | <note warning> | ||
+ | Recomandăm tuturor echipelor de studenți să schimbe ''ssid=ISRMLABORATOR'' din ''hostapd.conf'' pentru a evita conectarea accidentală la AP-ul altora. Puneți orice SSID doriți. | ||
+ | </note> | ||
+ | |||
+ | == Modul monitor == | ||
+ | |||
+ | <note warning>Pe Intel AC7260 care sunt in laborator merge modul monitor doar pe AP. Recomandarea însă pentru a prinde toate pachetele din aer e să fie făcut pe un calculator separat</note> | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# iw phy phy0 interface add mon0 type monitor flags control otherbss | ||
+ | root@pr706-pc:~# ifconfig mon0 up | ||
+ | root@pr706-pc:~# tcpdump -s0 -ni mon0 | ||
+ | </code> | ||
+ | - ''-s0'' capturează toată lungimea pachetelor | ||
+ | - ''-n'' nu rezolvă DNS | ||
+ | - ''-i'' indică interfața | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# tcpdump -s0 -ni mon0 -w ./m.pcap | ||
+ | root@pr706-pc:~# wireshark ./m.pcap | ||
+ | </code> | ||
+ | |||
+ | Examinați pachetele capturate și recunoașteți pachetele/protocoalele/câmpurile discutate la curs și în articole. | ||
+ | |||
+ | <note tip> | ||
+ | Comenzile de Linux pentru modul monitor le aveți și la [[https://sandilands.info/sgordon/capturing-wifi-in-monitor-mode-with-iw | ||
+ | |acest link]] | ||
+ | </note> | ||
+ | |||
+ | |||
+ | === Pregătirea stației (STA) === | ||
+ | |||
+ | Și aici trebuie oprite ''NetworkManager'' și ''wpa_supplicant''. Vom folosi întâi utilitarul ''iw'' apoi ''wpa_supplicant'' cu propriul fișier de configurare pentru a ne conecta la AP: | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# systemctl stop NetworkManager | ||
+ | root@pr706-pc:~# killall wpa_supplicant | ||
+ | </code> | ||
+ | |||
+ | Pentru a face o scanare activă (asigurați-vă că folosiți modul monitor și capturați pachetul - ce tip de pachet va trimite stația?) rulați comanda: | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# iw dev wlp2s0 scan | grep -i <yourSSID> -A 50 -B 20 | ||
+ | </code> | ||
+ | |||
+ | Pentru a vă asocia la AP-ul pornit anterior folosiți: | ||
+ | |||
+ | <code bash> | ||
+ | root@pr706-pc:~# iw dev wlp2s0 connect <yourSSID> | ||
+ | root@pr706-pc:~# iwconfig #to check/validate association | ||
+ | </code> | ||
+ | |||
+ | === Exerciții extra === | ||
+ | - Rulați o sesiune ''iperf'' TCP între cele două stații pentru a determina bandwidth-ul maxim la care TCP se simte bine. Serverul este receptor de date, Clientul e transmițător. Rulați server pe AP și client pe STA. Ce valoare are aceasta? Suntem în ''802.11b'', care e throughput maxim la acesta și la ce MCS (data rate)? | ||
+ | <code bash> | ||
+ | root@pr706-pc:~# iperf -s -i1 | ||
+ | root@pr706-pc:~# iperf -c <ip_AP> | ||
+ | </code> | ||
+ | - Rulați o sesiune ''iperf'' UDP între cele două stații cu cel mai mare packet length (1472 Bytes). Serverul este receptor de date, Clientul e transmițător. Rulați server pe AP și client pe STA. e valoare are aceasta? Suntem în ''802.11b'', care e throughput maxim la acesta și la ce MCS (data rate)? | ||
+ | <code bash> | ||
+ | root@pr706-pc:~# iperf -s -i1 -u | ||
+ | root@pr706-pc:~# iperf -c <ip_AP> -b54M -u -i1 -l1472 | ||
+ | </code> | ||
+ | - Pentru exercițiile anterioare urmăriți în PCAP câmpul ''Data rate'' din 802.11 radio tap header. Ce observați? Ce se întâmplă cu acesta dacă vom mișca antena? | ||
+ | <note tip> | ||
+ | Dacă nu mișcăm antenele observăm creșterea monotonă data rate (a MCS-ului) grație algoritmului de rate adaption. Intel folosește [[https://github.com/torvalds/linux/blob/master/drivers/net/wireless/intel/iwlwifi/dvm/rs.c|iwl-agn-rs]]. În Linux upstream se folosește algoritmul [[https://wireless.wiki.kernel.org/en/developers/documentation/mac80211/ratecontrol/minstrel|Minstrel]] pentru vendorii care nu au dezvoltat propriul algoritm în driver/firmware. | ||
+ | |||
+ | Dacă mișcăm antenele pe lângă evoluție ne-monotonă a data rate throughputul iperf e afectat. | ||
+ | </note> | ||
+ | - Pe AP configurați ''802.11n'' (ca extra feature). Re-rulați iperf și urmăriți PCAP-urile. Ce apare în plus la MCS? Dar la frame format: apare formatul HT. Mai jos aveți ce trebuie pus în ''hostapd.conf'': | ||
+ | <code bash> | ||
+ | # 802.11n | ||
+ | wmm_enabled=1 | ||
+ | ieee80211n=1 | ||
+ | ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40][DSSS_CCK-40][DSSS_CCK-40] | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <hidden> | ||
=== Multihop, autointerferență === | === Multihop, autointerferență === | ||
Line 36: | Line 151: | ||
* Ce dimensiune are coada unei interfețe wireless? | * Ce dimensiune are coada unei interfețe wireless? | ||
* Se poate obține throughput mai bun mărind coada? | * Se poate obține throughput mai bun mărind coada? | ||
+ | |||
+ | </hidden> |