понедельник, 2 мая 2011 г.

Настройка программной Wi-Fi точки доступа по стандартам IEEE 802.11g и IEEE 802.11n

В качестве основного компьютера использую дома неттоп zotac zbox HD22-U. Производительности данного неттопа мне хватает вполне. Электроэнергии потребляет он мало. Тихий. Само собой возникло желание использовать его не только как рабочую станцию, но и как Wi-Fi точку доступа. Собственно вот и вся предыстория.
Прежде чем начинать что либо делать, необходимо выяснить что из себя представляет доступное вам аппаратное обеспечение. Если вы только планируете приобрести - обязательно выясните сертифицировано ли оно для работы в сетях Wi-Fi, и для каких стандартов. К примеру, встроенный в неттоп адаптер AzureWave AW-NE766 в списке сертифицированных Wi-Fi устройств я не нашел. Более того, на сайте AzureWave такого адаптера тоже нет. Перед покупкой адаптера обязательно прочтите всю статью, что бы ориентироваться в параметрах и технологиях стандарта IEEE 802.11n. Дело в том, что устройства стандарта 802.11n могут быть реализованы с разными наборами опций, или же устройства могут соответствовать черновому стандарту 802.11n draft 2.0. Если ваше оборудование не соответствует стандарту IEEE 802.11n, даны рекомендации по настройке точки доступа по предыдущему стандарту IEEE 802.11g.
Перечислим необходимые требования. Драйвер Wi-Fi адаптера должен поддерживать API cfg80211 и уметь работать в режиме точки доступа (Access Point, AP). Ядро должно быть версии не ниже чем 2.6.26, это требование накладывает ПО compat-wireless, которое мы будем собирать самостоятельно. В примерах будет использоваться два wi-fi адаптера: AzureWave AW-NE766 (встроен в неттоп, интерфейс подключения pci-e) и TP-LINK TL-WN822N (подключается по шине USB). Все ниже написанное было выполнено на Fedora 14.

Определение чипсета адаптера и используемого драйвера.
Для определения возможностей адаптера необходимо выяснить какой картой вы обладаете, и какой используете драйвер. Для встроенного адаптера Wi-Fi:

zbox$ lspci -v
...
04:00.0 Network controller: RaLink RT2860
 Subsystem: Device 1a3b:1059
 Flags: bus master, fast devsel, latency 0, IRQ 19
 Memory at febf0000 (32-bit, non-prefetchable) [size=64K]
 Capabilities: [40] Power Management version 3
 Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+
 Capabilities: [70] Express Endpoint, MSI 00
 Capabilities: [100] Advanced Error Reporting
 Kernel driver in use: rt2800pci
 Kernel modules: rt2800pci

Обратите внимание на строчку где содержится "Network controller", в данном случае у меня адаптер на основе RaLink RT2860, и используемый драйвер - rt2800pci. Для usb адаптера:

zbox$ lsusb
...
Bus 002 Device 003: ID 0cf3:1002 Atheros Communications, Inc. TP-Link TL-WN821N v2 [Atheros AR9001U-(2)NG]

К сожалению в выводе команды не присутствует драйвер устройства. Для того что бы его узнать, можно заглянуть в файл /proc/bus/usb/devices, ищите секцию где будет совпадать номер шины (Bus 002) и номер устройства (Device 003). У меня выглядит так:

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
P:  Vendor=0cf3 ProdID=1002 Rev= 1.06
S:  Manufacturer=ATHER
S:  Product=USB2.0 WLAN
S:  SerialNumber=12345
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=ar9170usb
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=125us
E:  Ad=04(O) Atr=03(Int.) MxPS=  64 Ivl=125us

Для адаптера TP-LINK в Fedora 14 используется драйвер - ar9170usb.
Выяснив, на каком оборудовании построены Wi-Fi адаптеры, и какие используется драйверы, можно переходить к проверке возможности карточки работать в режиме AP. Проверить можно здесь, в таблице перечислены драйверы и возможности ими поддерживаемые. Как вы заметили, драйвер rt2800pci имеет возможность работать в режиме AP, а вот драйвер ar9170usb - нет. В ядре 2.6.40 он будет удален, и ему на замену есть драйвер carl9170. Драйвер carl9170 входит в состав последних версий cоmpat-wireless, его мы соберем из исходников.
Произведем общую настройку системы для реализации AP, а затем перейдем уже к частностям реализации и планирования развертывания Wi-Fi сети по стандартам 802.11g и 802.11n.

Общее конфигурирование системы
Скачайте последнюю версию compat-wireless, распакуйте ее. Для сборки необходимо установить:

zbox# yum install gcc kernel-devel

Если у вас один Wi-Fi адаптер и не планируется другой, то можно сэкономить время собрав только нужный драйвер, или в противном случае соберите все (т.е. не выполняя пункт выбора драйвера скриптом driver-select):

zbox$ bunzip2 compat-wireless-2.6.tar.bz2
zbox$ tar -xf compat-wireless-2.6.tar
zbox$ cd compat-wireless-2011-04-19
zbox$ ./scripts/driver-select carl9170
zbox$ make
zbox# make install

Настоятельно рекомендуется собрать драйвер из последней версии compat-wireless, даже если тот который стоит в системе уже поддерживает функции AP. Если у вас будут наблюдаться проблемы (дело в том что последняя версия compat-wireless - это версия на переднем крае разработки), то можно собрать последнюю стабильную версию.
Для того что бы иметь возможность использовать драйвер carl9170, нужно скачать для него прошивку и поместить ее в каталог /lib/firmware:

zbox# mv carl9170-1.fw /lib/firmware

Для драйвера rt2800pci, вполне работоспособная прошивка уже должна быть в каталоге с остальными прошивками. Предыдущий драйвер ar9170usb, для адаптера TP-LINK, необходимо поместить в блеклист:

zbox# echo blacklist ar9170usb >> /etc/modprobe.d/blacklist.conf

Перегрузите систему, и убедитесь что используется новый драйвер. Для этого можно определить его как написано выше, или просто посмотреть загруженные модули ядра:

zbox$ lsmod | grep carl9170
carl9170               62533  0 
ath                    12028  1 carl9170
mac80211              211715  4 carl9170,rt2800lib,rt2x00pci,rt2x00lib
cfg80211              117801  4 carl9170,ath,rt2x00lib,mac80211
compat                  5965  4 carl9170,rt2x00lib,mac80211,cfg80211

Теперь можно перейти к настройке wi-fi интерфейса, для простоты я считаю что у меня стоит только один Wi-Fi адаптер, а не два сразу.  Выполните, для того что бы определить как называется интерфейс:

zbox$ iwconfig
...
wlan0     IEEE 802.11bgn  ESSID:off/any
             Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
             Retry  long limit:7   RTS thr:off   Fragment thr:off
             Power Management:off

Ниже приведена конфигурация сетевого интерфейса wlan0, будьте внимательны и впишите свой MAC адрес. Для сети беспроводных устройств я использую подсеть 192.168.1.32/28, первый ip адрес из этой сети будет адресом wi-fi карты:

zbox$ cat /etc/sysconfig/network-scripts/ifcfg-wlan0
DEVICE=wlan0
HWADDR=74:F1:6D:10:34:19
IPADDR=192.168.1.33
NETMASK=255.255.255.240
ONBOOT=YES
Type=Ethernet
NM_CONTROLLED=no

Применим настройки:

zbox# chkconfig network on
zbox# /etc/init.d/network restart

Параметр NM_CONTROLLED используется для того что бы NetworkManager не пытался управлять wi-fi интерфейсом.
Установим и настроим dnsmasq для раздачи адресов wi-fi клиентам и обслуживания dns запросов от клиентов:

zbox# yum install dnsmasq

dnsmaq умеет регистрировать имена dhcp клиентов в dns. Имя dhcp клиента должно предоставляется самим клиентом при аренде адреса, или dnsmasq берет имя самостоятельно из конфигурационного файла. Существуют некоторые ограничения на имена клиентов накладываемые dnsmasq, имя не должно содержать доменной части или точек. Доменный суффикс допускается только в том случае если он соответствует опции "domain". Конфигурация dnsmasq:

zbox$ grep -v '^#\|^$' /etc/dnsmasq.conf 
domain-needed
bogus-priv
interface=wlan0
bind-interfaces
expand-hosts
domain=#
dhcp-range=192.168.1.34,192.168.1.46,255.255.255.240,12h
conf-dir=/etc/dnsmasq.d

zbox# chkconfig dnsmasq on
zbox# /etc/init.d/dnsmasq start

Некоторые пояснения, по конфигурации dnsmasq:
   domain-needed - не посылать запрос на разрешение имени к вышестоящим DNS серверам если имя простое, т.е. без доменного суффикса;
   bogus-priv - не производить обратное разрешение (reverse lookup) для частных сетей, т.е. если имя не будет найдено в /etc/hosts или в файле аренды DHCP то будет возращено - не найдено;
   interface=wlan0 - интерфейс который прослушивает dnsmasq;
   bind-interfaces - строгое ограничение использовать только указанный интерфейс, полезно особенно если у вас в автозапуске есть так же libvirtd;
   expand-hosts - добавить доменный суффикс к простому имени;
   domain - решетка здесь значит что в качестве доменного суффикса использовать суффикс из первой директивы "search" в /etc/resolve.conf;
   dhcp-range - список адресов для предоставления в аренду, маска и время аренды.
Для того что бы клиенты wi-fi могли выходить за пределы нашей сети нужно включить возможность пересылки пакетов и настроить nat.

zbox# echo 1 > /proc/sys/net/ipv4/ip_forward
zbox# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
zbox# iptables -t nat -A POSTROUTING -s 192.168.1.32/28 -o eth0 -j MASQUERADE

zbox# /etc/init.d/iptables save

Последнее что нам надо установить - hostapd, это даемон реализующий функции точки доступа и сервера аутентификации. Если подробнее то hostapd поддерживает аутентификацию IEEE 802.1X/WPA/WPA2/EAP и содержит RADIUS сервер/клиент. Точно так же как и с compat-wireless его лучше установить из исходных кодов последней стабильной версии. Перед сборкой убедитесь что версия библиотеки libnl соответствует 1.1 или выше:

zbox$ rpm -q libnl
libnl-1.1-14.fc14.i686

Установим необходимое для сборки:

zbox# yum install libnl-devel openssl-devel

Далее:

zbox$ gunzip hostapd-0.7.3.tar.gz
zbox$ tar -xf hostapd-0.7.3.tar
zbox$ cd hostapd-0.7.3/hostapd

Сделаем копию файла настроек по умолчанию, и уберем комментирование с параметров CONFIG_DRIVER_NL80211=y и CONFIG_IEEE80211N=y

zbox$ cp defconfig .config
zbox$ grep -v "^$\|^#" .config
CONFIG_DRIVER_HOSTAP=y
CONFIG_DRIVER_NL80211=y
CONFIG_IAPP=y
CONFIG_RSN_PREAUTH=y
CONFIG_PEERKEY=y
CONFIG_EAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_TLS=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_GTC=y
CONFIG_EAP_TTLS=y
CONFIG_PKCS12=y
CONFIG_IPV6=y
CONFIG_IEEE80211N=y

Соберем hostapd:

zbox$ make
zbox# make install

Стартовый скрипт можно взять из rpm:

zbox$ yumdownloader hostapd
zbox$ rpm2cpio hostapd-0.6.10-2.fc14.i686.rpm | cpio -id
zbox# cp -r ./etc /
zbox# cp -r ./var /

Не забудте сменить путь к исполняемому файлу hostapd в стартовом скрипте, т.е вместо

exec="/usr/sbin/hostapd"

должно

exec="/usr/local/bin/hostapd"

Общая часть закончилась. Прежде чем перейти к непосредственной настройке hostapd, давайте поговорим о планировании и развертывании сети по стандартам 802.11g и 802.11n.

IEEE 802.11g
Стандарт IEEE 802.11g был принят 2003г и характеризуется канальной скоростью 54МБ/с. Реальная пропускная способность составляет около 24МБ/с для TCP соединения при небольшом расстоянии между приемником и передатчиком и при отсутствии помех. Полоса пропускания составляет 83 МГц, а занимаемая полоса частот 2.400ГГц - 2.483ГГц. Весь выделенный диапазон частот делится на 13 каналов, шириной 22МГц. Центральные частоты каналов отстоят друг от друга на 5МГц. Таким образом каждый канал перекрывается как минимум с четырьмя соседними каналами. Во всей полосе частот получается только три взаимно непересекающихся канала 1 (центральная частота 2,412 ГГц), 6 (центральная частота 2,437 ГГц) и 11 (центральная частота 2,462 ГГц) каналы. Как вы уже догадались, в аппаратных точках доступа именно эти каналы стоят по умолчанию. Для того, что бы обеспечить наилучшие условия передачи данных для нашей сети, нужно определить каналы, и мощность излучения соседних точек доступа:

zbox# iw dev wlan0 scan | grep "signal\|channel"
signal: -58.00 dBm
DS Parameter set: channel 1
signal: -78.00 dBm
DS Parameter set: channel 11
signal: -70.00 dBm
DS Parameter set: channel 1
signal: -70.00 dBm
DS Parameter set: channel 6
signal: -72.00 dBm
DS Parameter set: channel 1
signal: -80.00 dBm
DS Parameter set: channel 6
signal: -74.00 dBm
DS Parameter set: channel 11
signal: -80.00 dBm
DS Parameter set: channel 6
signal: -80.00 dBm
DS Parameter set: channel 6

Из полученных данных надо выбрать канал, на котором мощность принимаемого сигнала от соседнего передатчика будет минимально максимальной. Для данного случая на канале 1 работают три передатчика, максимальная мощность сигнала составляет -58.00 дБм. На канале 6 - 4 передатчика, максимальная мощность -70.00дБм. На канале 11 - 2 передатчика, с максимальной мощностью -74 дБм. Получается что минимально максимальная мощность излучения составляет -74 дБм на 11 канале. Для справки, максимальная мощность передатчика разрешенная в Европе составляет 20дБм. Минимальная пороговая величина, при которой возможен прием сигнала для большинства Wi-Fi устройств составляет -80дБм.
Настроим hostapd для работы по стандарту 802.11g:

zbox$ grep -v "^$\|^#" /etc/hostapd/hostapd.conf
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
rsn_pairwise=CCMP
wpa_passphrase=testtest
driver=nl80211
interface=wlan0
hw_mode=g
channel=11
ssid=zbox-wlan

Это минимальный конфигурационный файл. Основные параметры настройки:
   wpa=2 -использовать только вторую версию набора алгоритмов и протоколов для защиты Wi-Fi сети;
   rsn_pairwise=CCMP - использовать исключительно протокол шифрования CCMP, если не указать то будет использоваться по умолчанию более слабый TKIP;
   wpa_passphrase=testtest - аутентификационный  ключ, естественно он должен быть более сложным чем в примере;
   driver=nl80211 - тип интерфейса драйвера;
   interface=wlan0 - интерфейс на котором будет работать hostapd;
   hw_mode=g - используемый стандарт для передачи данных, может быть: a, b, или g;
   channel=11 - используемый номер канала;
   ssid=zbox-wlan - service set indentifier, идентификатор зоны обслуживания, иначе говоря имя сети.
Запустим hostapd:

zbox# /usr/local/bin/hostapd -d /etc/hostapd/hostapd.conf

Подключимся клиентом к AP и посмотрим канальную скорость подключения:

zbox$ iw dev wlan0 station dump
Station 53:e6:fc:89:ee:d2 (on wlan0)
inactive time: 12453 ms
rx bytes: 337704460
rx packets: 275512
tx bytes: 131794555
tx packets: 207722
tx retries: 11914
tx failed: 62
signal:   -19 dBm
signal avg: -20 dBm
tx bitrate: 54.0 MBit/s

Реальную производительность передачи TCP будем мерить с помощью iperf:

zbox# yum install iperf

На стороне клиента:

zbox# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.34 port 5001 connected with 192.168.1.33 port 44898
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.2 sec  24.8 MBytes  20.4 Mbits/sec

На стороне точки доступа:

client# iperf -c 192.168.1.34
------------------------------------------------------------
Client connecting to 192.168.1.34, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.33 port 44898 connected with 192.168.1.34 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec  24.8 MBytes  20.6 Mbits/sec

Измеренная производительность составила 20.5Мб/с, что является типичным показателем, поскольку клиент и точка доступа находятся в зоне прямой видимости и достаточно близко к друг-другу. Если на пути следования сигнала есть препятствия (стены, окна, деревья или просто много мебели в комнате) или другая сеть на том же канале (соседнем перекрывающемся канале), то реальная скорость передачи будет ниже.
У кого возникнет желание ознакомится со стандартом поближе, тех отсылаю к стандарту IEEE 802.11g-2003 

IEEE 802.11n
Стандарт IEEE 802.11n был принят 2009г. Стандарт поддерживает работу в двух диапазонах, относящихся к стандартам 802.11g - 2.4ГГц (2,4ГГц - 2,4835ГГц, полоса пропускания 83МГц) и  802.11a - 5ГГц (5.150ГГц - 5.350ГГц, 5.725ГГц - 5.825ГГц, полоса пропускания 300МГц). Следует отметить, что в диапазоне частот относящихся к 802.11a доступны 12 непересекающихся каналов. Это примерные характеристики используемых диапазонов частот, для устройств имеющихся в свободном доступе (внимательно смотрите на диапазон 5ГГц, на разных устройствах полоса пропускания может быть разной). Для России недавно вышел приказ, регламентирующий использование Wi-Fi оборудования, где полоса частот для стандарта 802.11n несколько другая.
Основные особенности стандарта:
   Объединение каналов (Channel Bonding) - объединение двух 20МГц каналов в один 40МГц может привести к удвоению пропускной способности. Однако, учитывая что в диапазоне 2.4ГГц всего 3 непересекающихся канала, использовать каналы по 40МГц рекомендуется только в диапазоне 5ГГц;
   Сосуществование каналов шириной 20/40МГц (20/40 MHz Channels and Coexistence) - при подключении клиент и АР обмениваются информацией (HT Information and Capabilities Elements), которая включает в себя ширину канала, номер первичного канала, и смещение вторичного канала шириной 40МГц. Для мирного сосуществования, точка доступа стандарта 802.11n должна переходить на другой канал или переключится на использование канала шириной в 20МГц, если другая точка доступа начинает передачу в одной из половин канала 40МГц первой АР.
   MIMO (multiple input multiple output) и SP (spatial multiplexing) - повышение пропускной способности за счет передачи сигнала по нескольким частотам (пространственным потокам, spatial streams) и последующего приема с объединением в один поток данных. Это возможно при использовании на один поток собственной антенны и тракта приема/передачи на каждой стороне. Каждый поток данных распостраняется по своему пути (к примеру возможно не прямое прохождение сигнала от приемника к передатчику а с использованием отражения). В зависимости от пути распостранения сигнала, потоки могут приходить на приемник с разным уровнем мощности сигнала и разной задержкой. Принято пользоватся обозначением "MxN", где M - число потоков на передачу, а N - число потоков на прием. При использовании конфигурации 4x4 потока MIMO канальная скорость составит 600МБ/с;
   Space-Time Block Coding (STBC) - блочное пространственно-временное кодирование, улучшает надежность приема данных, за счет передачи дублирующихся данных по разным пространственным потокам с разным кодированием;
   SGI (Short Guard Interval) - задержка между передаваемыми символами для предотвращения интерференции передающегося сигнала. Стандартное значение составляет 800нс, короткое составляет 400нс. Использование SGI может увеличить пропускную способность на 10%.
По сравнению с предыдущими стандартами, стандарт 802.11n имеет несколько значимых отличий на канальном уровне, использование которых может удвоить пропускную способность:
   Агрегирование пакетов (Packet Aggregation) - несколько TCP пакетов могут быть объеденены в один фрейм канального уровня, уменьшая тем самым накладные расходы;
   Блочное подтверждение (Block Acknowledgements) - доставка нескольких пакетов может быть подтверждена на канальном уровне как один блок, уменьшая тем самым количество посланных фреймов подтверждения.
Как было уже упомянуто, при подключении клиента к AP производится согласование параметров подключения. Наборы параметров подключения индексированны, и выражаются простым числом MCS (Modulation and Coding Scheme) - индекс модуляции и схемы кодирования. Посмотреть таблицу можно здесь. Каждая строка таблицы состоит из индекса MCS которому в соответствие поставлены параметры текущего соединения, основные из них:
   Number of spatial streams - количество пространственных потоков;
   Modulation - тип модуляции потока;
   Coding rate - эффективность кодирования, т.е. отношение полезных данных к общему количеству кода;
   Data Rate - значения скорости передачи данных в Мб/с, при разном значении задержки защитного интервала (GI = 800ns или GI = 400ns).
Значение индекса MCS от 0 до 31 определяют тип модуляции и схемы кодирования, которые будут использоваться одновременно для всех потоков. Значение индекса с 32 по 77 описывают смешанные комбинации модуляций потоков.
Стандарт 802.11n регламентирует три типа работы точки доступа:
   High Throughput (HT) или Greenfield Mode - режим с высокой пропускной способностью, в котором могут работать только клиенты поддерживающие стандарт 802.11n;
   Non-HT (Legacy) Mode - наследуемый режим, все фреймы отправленные точкой доступа оформлены по старой спецификации стандартов 802.11b/g. Ширина канала может быть только 20 МГц.
   HT Mixed Mode - смешанный режим, при котором используются преимущества режима с высокой пропускной способностью вместе с механизмом реализующим возможность работать со старыми клиентами. Как минус - для клиентов 802.11n пропускная способность ниже чем в HT режиме. Механизм совместной работы заключается в том, что на канальном уровне устройства 802.11n передают фрейм с преамбулой старого формата, следующей за преамбулой формата 802.11n. Преамбула старого формата позволяет клиентам протоколов 802.11b/g передавать и принимать данные от точки доступа.
Как вы уже поняли, реальная пропускная способность стандарта 802.11n сильно зависит не только от количества каналов MIMO и ширины канала, но и от реализаций дополнительных возможностей стандарта. В большинстве случаев от конфигурации MIMO 2x2 можно ожидать скорость передачи TCP трафика около 100Мб/с.
Пожалуй закончим с теорией, и перейдем к практике. Если у вас возникнут затруднения, вот на всякий случай ссылка на стандарт IEEE 802.11n. Для настройки hostapd для работы по стандарту 802.11n необходимо посмотреть какие опции стандарта поддерживают устройства.
Для AzureWave AW-NE766 (вывод команды приведен не полностью):

zbox$ iw list
Wiphy phy0
        Band 1:
                Capabilities: 0x272
                        HT20/HT40
                        Static SM Power Save
                        RX Greenfield
                        RX HT20 SGI
                        RX HT40 SGI
                        RX STBC 2-streams
                        Max AMSDU length: 3839 bytes
                        No DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 2 usec (0x04)
                HT RX MCS rate indexes supported: 0-15, 32
                TX unequal modulation not supported
                HT TX Max spatial streams: 1
                HT TX MCS rate indexes supported may differ
                Frequencies:
                        * 2412 MHz [1] (20.0 dBm)
                        * 2417 MHz [2] (20.0 dBm)
                        * 2422 MHz [3] (20.0 dBm)
                        * 2427 MHz [4] (20.0 dBm)
                        * 2432 MHz [5] (20.0 dBm)
                        * 2437 MHz [6] (20.0 dBm)
                        * 2442 MHz [7] (20.0 dBm)
                        * 2447 MHz [8] (20.0 dBm)
                        * 2452 MHz [9] (20.0 dBm)
                        * 2457 MHz [10] (20.0 dBm)
                        * 2462 MHz [11] (20.0 dBm)
                        * 2467 MHz [12] (20.0 dBm) (passive scanning, no IBSS)
                        * 2472 MHz [13] (20.0 dBm) (passive scanning, no IBSS)
                        * 2484 MHz [14] (20.0 dBm) (passive scanning, no IBSS)
                Bitrates (non-HT):
                        * 1.0 Mbps
                        * 2.0 Mbps (short preamble supported)
                        * 5.5 Mbps (short preamble supported)
                        * 11.0 Mbps (short preamble supported)
                        * 6.0 Mbps
                        * 9.0 Mbps
                        * 12.0 Mbps
                        * 18.0 Mbps
                        * 24.0 Mbps
                        * 36.0 Mbps
                        * 48.0 Mbps
                        * 54.0 Mbps
        max # scan SSIDs: 4
        max scan IEs length: 2257 bytes
        Coverage class: 0 (up to 0m)
        Available Antennas: TX 0 RX 0
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
...

Что важного можно узнать из данных? Адаптер поддерживает каналы шириной в 20МГц и 40МГц (HT20/HT40). При обоих каналах поддерживается короткий защитный интервал (RX HT20 SGI и RX HT40 SGI). Адаптер может принимать два пространственных потока (RX STBC 2-streams) а передавать только один (HT TX Max spatial streams: 1). Поддерживаемый адаптером диапазон частот - 2.4Ггц.  Итого можно сделать заключение что формула MIMO - 2x1, максимальная скорость приема - 300МБ/с а передачи 150МБ/с.
Давайте теперь взглянем на второй адаптер:

zbox$ iw list
Wiphy phy0
        Band 1:
                Capabilities: 0x184e
                        HT20/HT40
                        SM Power Save disabled
                        RX HT40 SGI
                        No RX STBC
                        Max AMSDU length: 7935 bytes
                        DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 8 usec (0x06)
                HT TX/RX MCS rate indexes supported: 0-15, 32
                Frequencies:
                        * 2412 MHz [1] (20.0 dBm)
                        * 2417 MHz [2] (20.0 dBm)
                        * 2422 MHz [3] (20.0 dBm)
                        * 2427 MHz [4] (20.0 dBm)
                        * 2432 MHz [5] (20.0 dBm)
                        * 2437 MHz [6] (20.0 dBm)
                        * 2442 MHz [7] (20.0 dBm)
                        * 2447 MHz [8] (20.0 dBm)
                        * 2452 MHz [9] (20.0 dBm)
                        * 2457 MHz [10] (20.0 dBm)
                        * 2462 MHz [11] (20.0 dBm)
                        * 2467 MHz [12] (20.0 dBm)
                        * 2472 MHz [13] (20.0 dBm)
                        * 2484 MHz [14] (disabled)
                Bitrates (non-HT):
                        * 1.0 Mbps
                        * 2.0 Mbps (short preamble supported)
                        * 5.5 Mbps (short preamble supported)
                        * 11.0 Mbps (short preamble supported)
                        * 6.0 Mbps
                        * 9.0 Mbps
                        * 12.0 Mbps
                        * 18.0 Mbps
                        * 24.0 Mbps
                        * 36.0 Mbps
                        * 48.0 Mbps
                        * 54.0 Mbps
        max # scan SSIDs: 4
        max scan IEs length: 2257 bytes
        Coverage class: 0 (up to 0m)
        Available Antennas: TX 0 RX 0
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * monitor
                 * P2P-client
                 * P2P-GO
...

Адаптер TP-LINK TL-WN822N поддерживает каналы шириной в 20МГц и 40МГц. На приеме для канала шириной 40МГц поддерживается короткий защитный интервал. Поддерживаемый адаптером диапазон частот - 2.4Ггц. К сожалению нет ни слова о количестве пространственных потоков.
Проведем два варианта реализации AP. При первом будем использовать адаптер AzureWave для точки доступа, а адаптер TP-LINK для клиента.
Посмотрите в директории, где вы собирали hostapd, конфигурационный файл hostapd.conf. Еще точнее, на раздел о настройке 802.11n, выберите опции которые поддерживаются вашим адаптером. В конфигурацию hostapd, для адаптера AzureWave добавим следующие строки для включения 802.11n:

zbox# cat /etc/hostapd/hostapd.conf
...
wmm_enabled=1
ieee80211n=1
ht_capab=[HT40-][GF][SHORT-GI-20][SHORT-GI-40][RX-STBC12]

здесь:
   wmm_enabled=1 - включить технологию WMM (WiFi Multimedia), она обеспечивает приоритезацию мультимедиа трафика (голос, звук, видео);
   ieee80211n=1 - включить поддержку стандарта 802.11n;
   ht_capab=[HT40-][GF][SHORT-GI-20][SHORT-GI-40][RX-STBC12] - перечень поддерживаемых опций:
   [HT40-] - поддержка канала шириной 20МГц и 40МГц, при этом второй канал MIMO будет использован с меньшим номером канала;
   [GF] - поддержка "чистого" HT режима;
   [SHORT-GI-20] и [SHORT-GI-40] - поддержка короткого защитного интервала:
   [RX-STBC12] - поддержка приема одного или двух каналов с кодированием STBC.
Запустите hostapd, подключитесь клиентом к AP. Так как в качестве клиента выступает другой PC с адаптером TP-LINK, имеющий другие наборы опций, давайте посмотрим параметры подключения, на AP:

zbox# /usr/local/bin/hostapd -d /etc/hostapd/hostapd.conf

zbox# iw dev wlan0 station dump
Station 54:e6:fc:87:ee:d2 (on wlan0)
inactive time: 12034 ms
rx bytes: 129559951
rx packets: 84569
tx bytes: 3637506
tx packets: 42322
tx retries: 3001
tx failed: 15
signal:   -25 dBm
signal avg: -28 dBm
tx bitrate: 150.0 MBit/s MCS 7 40Mhz short GI

На стороне клиента:

client# iw dev wlan0 station dump
Station 74:f0:6d:10:94:19 (on wlan0)
inactive time: 0 ms
rx bytes: 4040140
rx packets: 46952
tx bytes: 129558725
tx packets: 84526
tx retries: 199
tx failed: 0
signal:   -24 dBm
signal avg: -19 dBm
tx bitrate: 300.0 MBit/s MCS 15 40Mhz short GI

Параметры соединения подтверждают характеристики MIMO 2x1 адаптера AzureWave, адаптер TP-LINK продемонстрировал что он поддерживает конфигурацию потоков 2х2 и поддерживает короткий защитный интервал. Протестируем реальную скорость передачи TCP трафика:

zbox# iperf -s 
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.33 port 5001 connected with 192.168.1.34 port 39309
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec   117 MBytes  96.9 Mbits/sec

client# iperf -c 192.168.1.33
------------------------------------------------------------
Client connecting to 192.168.1.33, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.34 port 39309 connected with 192.168.1.33 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   117 MBytes  97.6 Mbits/sec

В обратном направлении:

zbox# iperf -c 192.168.1.34
------------------------------------------------------------
Client connecting to 192.168.1.34, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.33 port 47558 connected with 192.168.1.34 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  75.1 MBytes  62.9 Mbits/sec

client# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.1.34 port 5001 connected with 192.168.1.33 port 47559
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec  76.9 MBytes  64.1 Mbits/sec

Достигнутая скорость передачи от AP к клиенту - 63Мб/с, а от клиента к AP составила 97Мб/с. Учитывая конфигурацию потоков для точки доступа (2x1) это очень неплохой результат.
Второй вариант точки доступа, адаптер точки доступа TP-LINK, адаптер клиента - AzureWave. Как вы уже поняли, при этом варианте осталось по сути все прежнее, изменились лишь скорости от клиента к точке доступа и наоборот. Я не буду приводить результаты измерений, приведу только изменения в конфигурационном файле hostapd.conf

zbox# cat /etc/hostapd/hostapd.conf
...
wmm_enabled=1
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-40]

После того как вы провели все тесты не забудьте настроить службу hostapd в автозапуск:

zbox# chkconfig --add /etc/init.d/hostapd
zbox# chkconfig hostapd on
zbox# /etc/init.d/hostapd start

Перейдем к решению проблем. Почему если отношение сигнал/шум хорошее, а скорость передачи низкая? Для понимания механизма передачи данных в Wi-Fi сетях надо ознакомится с обработкой коллизий.

Механизм обработки коллизий.
В беспроводных сетях стандарта IEEE 802.11 для обнаружения коллизий используется механизм CSMA/CA (Carrier Sense Multiple Access With Collision Avoidance) - множественный доступ с контролем несущей и избежанием коллизий. В Wi-Fi сети передача данных осуществляется в полудуплексном режиме, все участники передают и принимают на одном канале. Таким образом, для избежания коллизий передача осуществляется только тогда, когда отправитель уверен в том что канал свободен. Каждый фрейм должен быть подтвержден, если подтверждения не было - то считается что произошла коллизия и фрейм передается через некоторое время повторно. Ситуация осложняется тем что может быть ситуация "скрытого узла", когда два клиента подключены к одной точке доступа, но при этом не знают о существовании друг-друга (сигнал от одного клиента не доходит до другого, но достигает AP). Для устранения проблемы применяется следующий алгоритм: клиент перед передачей данных посылает AP пакет RTS (Ready-to-send), который содержит значение времени занятия канала. Точка доступа отвечает CTS (Clear-to-send). Все другие участники сети получив пакет CTS должены воздержатся от передачи данных на заданное время. Подведу итог, каждый передатчик, использующий тот же канал что и ваше оборудование, может серьезно снизить скорость передачи данных. Если ваше оборудование использует 2x2 потока MIMO, то для осуществления приема/передачи используется почти весь диапазон 2.4ГГц. Естественно все соседние точки доступа будут оказывать негативное влияние на скорость передачи. Если вы обратите внимание, при старте hostapd выдает список узлов, которые находятся в одной полосе частот:

Received scan results (7 BSSes)
40 MHz affected channel range: [2417,2467] MHz
Neighboring BSS: 70:71:bc:24:c1:fe freq=2437 pri=0 sec=0
Neighboring BSS: 94:0c:6d:ee:11:b8 freq=2437 pri=0 sec=0
Neighboring BSS: 00:1e:8c:d9:e6:89 freq=2437 pri=0 sec=0
Neighboring BSS: 00:16:e3:8d:74:5a freq=2462 pri=0 sec=0
Neighboring BSS: 00:1f:c6:61:87:34 freq=2462 pri=0 sec=0
Completing interface initialization

Вывод тут один, высокоскоростные беспроводные сети нужно строить в диапазоне 5ГГц.