[Slackware]Hostapd a velocità massima

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
rik70
Iper Master
Iper Master
Messaggi: 2492
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

[Slackware]Hostapd a velocità massima

Messaggio da rik70 »

Noto che da queste parti molti usano hostapd.

Partendo da alcuni esperimenti con openwrt + raspberry, ho deciso che era il caso di provare a "portare" i risultati ottenuti anche su slackware e metterli a disposizione.

L'obiettivo è raggiungere la velocità teorica dello standard 80211n. A questo scopo ho messo a punto una patch per hostapd, prendendo il materiale dai sorgenti di openwrt e correggendo gli errori. La patch funziona, però è da considerare sperimentale, dato che abbiamo proceduto a occhio cercando di capire cosa serviva e cosa no. Quindi attenzione, a vostro rischio e pericolo. Se vedete che qualcosa non torna, modificatela.
Di fatto viene aggiunta la possibilità di forzare l'attivazione del canale secondario a 40MHZ presente in molti adattatori wireless in commercio.

Ma andiamo con ordine, innanzitutto la patch:

Codice: Seleziona tutto

http://pastebin.com/GdPksBk1
Poi serve hostapd versione 2.3
Scaricatelo da SBO e aggiungete nello slackbuild la stringa per applicare la patch. Io ho messo una cosa del genere, subito dopo il comando che estrae il tarball:

Codice: Seleziona tutto

# HT 80211n patch
( cd $PRGNAM-$VERSION
  cat $CWD/80211n.noscan.patch | patch -p1 --verbose || exit 1 
)
Compilate e installate.

Ora veniamo all'adattatore wireless: nel mio caso si tratta di un netgear wna1100 - driver ath9k_htc: è un 150n. L'hardware deve supportare alcune caratteristiche che si possono individuare col comando 'iw'. Incollo quelle che interessano:

Codice: Seleziona tutto

$ iw list
Wiphy phy0
	Band 1:
		Capabilities: 0x116e
			HT20/HT40
			SM Power Save disabled
			RX HT20 SGI
			RX HT40 SGI
			RX STBC 1-stream
			Max AMSDU length: 3839 bytes
			DSSS/CCK HT40
Adesso passiamo al file di configurazione di hostapd. Come sopra, ci soffermiamo sulle opzioni importanti, aggiungendo qualche commento chiarificatore - spero.
hostapd.conf

Codice: Seleziona tutto

hw_mode=g

# attivazione supporto al codice di localizzazione
ieee80211d=1
country_code=IT

# canale di trasmissione
channel=5

#abilitazione modalità 80211n
ieee80211n=1
wmm_enabled=1

# forse la parte più importante: modalità HT con canale secondario a 40Mhz
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][RX-STBC1][DSSS_CCK-40]

#forza l'attivazione del canale a 40Mhz anche se lo scan da esito negativo
noscan=1

interface=ath9k0
ctrl_interface=/var/run/hostapd
disassoc_low_ack=1
preamble=1
ignore_broadcast_ssid=0
wpa_passphrase=passphrasewpa2
auth_algs=1
wpa=2
wpa_pairwise=CCMP
ssid=Il_vostro_ssid
okc=0
disable_pmksa_caching=1
bssid=indirizzo_mac_del_vostro_adattatore_wireless
In sostanza:
hostapd lavora sul canale 5, poi aggiunge il secondo canale a 40MHZ (vedi la parte ht_capab= della configurazione), il numero 9 (5+4=9), e forza l'attivazione grazie all'opzione noscan=1. Diversamente il risultato sarebbe stato negativo nel 99% dei casi, per via dello standard 80211n. Autenticazione: solo WPA2.

Ora avviate hostapd e provate a collegarvi da un altro pc con una periferica wireless che supporti lo standard in questione - nel mio caso un'altra chiavetta 150N.
Date questo comando sull'host dove è in esecuzione hostapd:

Codice: Seleziona tutto

iw nome_interfaccia_wirless station dump
Questo è il risultato:
Station ******9 (on ath9k0)
inactive time: 18 ms
rx bytes: 88419
rx packets: 749
tx bytes: 51699
tx packets: 270
tx retries: 0
tx failed: 0
signal: -43 dBm
signal avg: 83 dBm
tx bitrate: 15.0 MBit/s MCS 0 40MHz short GI
rx bitrate: 150.0 MBit/s MCS 7 40MHz short GI
authorized: yes
authenticated: yes
preamble: short
WMM/WME: yes
MFP: no
TDLS peer: no
Che dite, va? Asscociato a 150MBit/s.

Bene, facciamo alcuni test con iperf per verificare la velocità reale.
Sulla macchina con hostapd:

Codice: Seleziona tutto

iperf -s -i 1 -u
sul client:

Codice: Seleziona tutto

iperf -c indirizzo_lan_access_point -i 1 -u -t 10 -b 150M
Risultato:

Codice: Seleziona tutto

Sending 1470 byte datagrams
UDP buffer size:  176 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.101 port 40322 connected with 10.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  11.7 MBytes  98.0 Mbits/sec
[  3]  1.0- 2.0 sec  12.5 MBytes   104 Mbits/sec
[  3]  2.0- 3.0 sec  12.8 MBytes   107 Mbits/sec
[  3]  3.0- 4.0 sec  12.9 MBytes   108 Mbits/sec
[  3]  4.0- 5.0 sec  12.9 MBytes   108 Mbits/sec
[  3]  5.0- 6.0 sec  12.9 MBytes   108 Mbits/sec
[  3]  6.0- 7.0 sec  12.9 MBytes   109 Mbits/sec
[  3]  7.0- 8.0 sec  13.0 MBytes   109 Mbits/sec
[  3]  8.0- 9.0 sec  12.7 MBytes   106 Mbits/sec
[  3]  9.0-10.0 sec  13.0 MBytes   109 Mbits/sec
[  3]  0.0-10.0 sec   127 MBytes   107 Mbits/sec
[  3] Sent 90782 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec   127 MBytes   107 Mbits/sec   0.341 ms    0/90781 (0%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order
107 Megabit al secondo: non male!

Ora l'inverso - iperf in modalità server sul client:

Codice: Seleziona tutto

Sending 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.0.0.1 port 5001 connected with 10.0.0.101 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  12.7 MBytes   107 Mbits/sec
[  3]  1.0- 2.0 sec  12.6 MBytes   106 Mbits/sec
[  3]  2.0- 3.0 sec  12.3 MBytes   103 Mbits/sec
[  3]  3.0- 4.0 sec  12.7 MBytes   106 Mbits/sec
[  3]  4.0- 5.0 sec  12.7 MBytes   107 Mbits/sec
[  3]  5.0- 6.0 sec  12.3 MBytes   103 Mbits/sec
[  3]  6.0- 7.0 sec  12.5 MBytes   105 Mbits/sec
[  3]  7.0- 8.0 sec  12.5 MBytes   105 Mbits/sec
[  3]  8.0- 9.0 sec  12.5 MBytes   105 Mbits/sec
[  3]  9.0-10.0 sec  12.6 MBytes   106 Mbits/sec
[  3]  0.0-10.0 sec   125 MBytes   105 Mbits/sec
[  3] Sent 89504 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec   125 MBytes   105 Mbits/sec   0.293 ms    0/89503 (0%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order
Anche in questo caso il responso sembra più che soddisfacente: siamo sempre sopra i 100MBits/s

Non vi rimane che testare il tutto, se è di vostro interesse.

Alcune notazioni:
il comando iw presente nei pacchetti ufficiali di slackware riporta velocità non corrette. La versione è abbastanza datata. Scaricate e compilate l'ultima versione, nel mio caso è la 3.17.
Attenzione poi al canale che scegliete: 1-7 dovrebbero andare tutti bene. Sicuramente se andate oltre hostapd non parte.
Edit:
aggiungete alla lista software haveged.

E' tutto per ora.

Alla prossima.

Ciao.

Rispondi