Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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>​
isrm/laboratoare/11.txt · Last modified: 2019/05/17 16:25 by mbarbulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0