转自:www.zhaocs.info
由于自己在家里装了台服务器,需要远程访问,但发现telnet访问会有hang的现象。
删除字符,或是输入字符都会有停顿的现象。
局域网也有通向的问题,只要用无线就有问题,如果换有线就没问题。
经测试,怀疑路由器性能问题(TL-WR641G/642G),毕竟用了2年多了,再加上TP link工程师也测试过,发现确实有这种问题,但不是明显。所以就买了个linksys WRH54G来做测试。
不巧的是,问题可能出在网卡驱动上(TL-WN650G),而不是Router本身的问题(暂时是这样)
下面是故障的详细troubleshooting过程:
注:我的服务器是Ubuntu 9.04 64bit,Linux效率高!
打个比方,在T60的windows上dynamips可以模拟6台,Linux环境,可以模拟到13台
安装Madwifi网卡驱动
在测试中,发现Linux下网卡的信号很差,只有46/100
默认情况下,ubuntu使用ath5k来做无线网卡的驱动。
Google后发现Madwifi的驱动支持的会好些。
但没有现成的64bit的Madwifi驱动,只能自己直接编译,看下面步骤:
1.下载Madwifi
去官方网站(http://madwifi-project.org/)下载madwifi的最新驱动,注意黑体说明:
“In case you use kernel 2.6.25 or newer, you need to get this snapshot”
2. 查看ubuntu的内核:
root@frank-desktop:~# uname -a
Linux frank-desktop 2.6.28-12-generic #43-Ubuntu SMP Fri May 1 19:31:32 UTC 2009 x86_64 GNU/Linux
3. 查看网卡型号:
root@frank-desktop:~# lspci
01:05.0 Ethernet controller: Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter (rev 01)
4. 安装:
root@frank-desktop:/tmp# tar zxvf madwifi-0.9.4-current.tar.gz
root@frank-desktop:/tmp# cd madwifi-0.9.4-r4110-20100119/
root@frank-desktop:/tmp/madwifi-0.9.4-r4110-20100119# make
root@frank-desktop:/tmp/madwifi-0.9.4-r4110-20100119# make install
root@frank-desktop:/tmp/madwifi-0.9.4-r4110-20100119#init – 6
重启后进入系统,选hardware driver,激活madwifi,再重启ok。
5. 前后对比:
之前ath5k驱动下的网卡数据
从网关ping server,平均延迟2.2ms
————————————————–
root@frank-desktop:~# iwconfig wlan0
wlan0 IEEE 802.11bg ESSID:”linksys”
Mode:Managed Frequency:2.437 GHz Access Point: 00:23:69:C7:F4:C3
Bit Rate=18 Mb/s Tx-Power=20 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Encryption key:E559-9200-641F-DA2D-2D20-2A1B-FB37-E60F-B362-0195-D258-9429-FFE9-B46E-4DEC-F9D3 [2] Security mode:open
Power Management:off
Link Quality=46/100 Signal level:-53 dBm Noise level=-83 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
现在Madwifi驱动下的网卡数据
从网关ping server,平均延迟1.2ms以下
————————————————–
root@frank-desktop:~# iwconfig ath0安装ath9k网卡驱动
ath0 IEEE 802.11g ESSID:”linksys” Nickname:””
Mode:Managed Frequency:2.437 GHz Access Point: 00:23:69:C7:F4:C3
Bit Rate:36 Mb/s Tx-Power:16 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Encryption key:FF70-9B7F-D639-C91B-5A2C-64B8-939A-C048 Security mode:restricted
Power Management:off
Link Quality=42/70 Signal level=-41 dBm Noise level=-83 dBm
Rx invalid nwid:76 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
可以看到性能提升到了60%,但是不很明显,而且这种情况是近距离测试,如果隔两堵墙(间隔不到8米),信号还会下降。
在网上查到资料,kernel 2.6.29加载ath9k性能会从65%提高到80%,看了很诱人,可以参考:
Now my signal quality has gone up from ~65% to ~80% with ath9k (2.6.29) vs ndiswrapper (2.6.28). I must add that I’m using the beta wpa_supplicant from AUR, but I don’t think that will add to the stability of the connection…
正好可以借此机会把我的Ubuntu 9.04升级到9.10,现在9.10的kernel已经到2.6.31了。
升级还算顺利,虽然碰到些问题—_—!…
升级后发现默认驱动效果很不好,所以用Madwifi试试,发现也不稳定,还不及ubuntu9.04稳定。
郁闷。。。查了很多文章,有的说默认ubuntu9.10默认是用ath9k的,并且推荐用ndiswrapper(可以在Linux中使用WinXP下的驱动,但缺点是不稳定,首次链接困难)。
在安装ndiswrapper的过程中,发现了我默认的无线网卡驱动不是ath9k,而是ath_pci。。。无语中
Google…Google…如何安装ath9k,功夫不负有心人,终于被我找到了,可以通过下面的方法加载ath9k。
注:这里有个小插曲,由于Linux是module化得,所以ath9k也算是模块之一。
关于Linux模块加载的知识,大家可以参考文章后面的链接。
查看wlan加载的是什么驱动模块
root@frank-desktop:/# lsmod |grep wlan
wlan_tkip 12224 0
wlan_wep 6816 1
wlan_scan_sta 14560 1
wlan 224288 6 wlan_tkip,wlan_wep,wlan_scan_sta,ath_rate_sample,ath_pci
启动ath9k
更改wlan的驱动模块,默认ubuntu9.10集成了ath9k,直接用就可以了
root@frank-desktop:/etc# more modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with “#” are ignored.lp
rtc
ath_pci
在这里把“ath_pci”改成“ath9k”,重启后大喜~~发现信号强度已经上升到80%以上了。
root@frank-desktop:/# iwlist wlan0 scanning
wlan0 Scan completed :
Cell 01 – Address: 00:14:78:88:2B:CA
Channel:6
Frequency:2.437 GHz (Channel 6)
Quality=60/70 Signal level=-50 dBm
Encryption key:on
ESSID:”TP-LINK”
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
12 Mb/s; 24 Mb/s; 36 Mb/s
Bit Rates:9 Mb/s; 18 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=000000014186a547
Extra: Last beacon: 40ms ago
IE: Unknown: 000754502D4C494E4B
IE: Unknown: 010882848B960C183048
IE: Unknown: 030106
IE: Unknown: 0706434E20010D14
IE: Unknown: 2A0100
IE: Unknown: 32041224606C
IE: Unknown: DD0900037F01010008FF7F
IE: Unknown: DD1A00037F0301000000001478882BCA021478882BCA64002C010808
总结
终于解决了这个问题,不过还在测试中。