This shows you the differences between two versions of the page.
isrm:laboratoare:11 [2019/05/17 15:56] mbarbulescu |
isrm:laboratoare:11 [2019/05/17 16:25] (current) mbarbulescu |
||
---|---|---|---|
Line 11: | Line 11: | ||
<code bash> | <code bash> | ||
- | nmcli radio wifi off | + | root@pr706-pc:~# nmcli radio wifi off |
- | rfkill unblock wifi | + | root@pr706-pc:~# rfkill unblock wifi |
- | rfkill unblock all | + | root@pr706-pc:~# rfkill unblock all |
- | killall wpa_supplicant | + | root@pr706-pc:~# killall wpa_supplicant |
</code> | </code> | ||
Line 20: | Line 20: | ||
<code bash> | <code bash> | ||
- | systemctl stop NetworkManager | + | root@pr706-pc:~# systemctl stop NetworkManager |
- | dhclient eno1 | + | root@pr706-pc:~# dhclient eno1 #doar daca nu mai avem conectivitate la Internet |
</code> | </code> | ||
Acum trebuie să pornim daemonul ''hostapd'' pentru a activa AP-ul nostru. E nevoie de doi pași simpli: | Acum trebuie să pornim daemonul ''hostapd'' pentru a activa AP-ul nostru. E nevoie de doi pași simpli: | ||
- | - Copiați fișierul hostapd.conf de aici, salvați-l în ''/etc/hostapd/hostapd.conf'' | + | - 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'': | - Rulați comanda de mai jos, output-ul trebuie să vă spună ''AP-ENABLED'': | ||
Line 49: | Line 49: | ||
root@pr706-pc:~# tcpdump -s0 -ni mon0 | root@pr706-pc:~# tcpdump -s0 -ni mon0 | ||
</code> | </code> | ||
- | - -s0 capturează toată lungimea pachetelor | + | - ''-s0'' capturează toată lungimea pachetelor |
- | - -n nu rezolvă DNS | + | - ''-n'' nu rezolvă DNS |
- | - -i indică interfața | + | - ''-i'' indică interfața |
<code bash> | <code bash> | ||
Line 85: | Line 85: | ||
<code bash> | <code bash> | ||
root@pr706-pc:~# iw dev wlp2s0 connect <yourSSID> | root@pr706-pc:~# iw dev wlp2s0 connect <yourSSID> | ||
- | root@pr706-pc:~# iwconfig #to check/validate association | + | 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> | </code> | ||