반응형

OS: Linux 11.04 (32bit)

확인해본 USB 무선랜카드: IPTIME (Ralink) RT2501/RT2573 Wireless Adapter, IPTIME N150UA (Ralink RT3070)


노트북에 USB 무선랜카드를 하나씩 추가해서, 멀티 라디오 라우팅을 테스트하다 보면 가끔 USB 무선랜카드로부터 아무 패킷도 받지 못하는 현상이 발생한다.

이 때 ifconfig를 통해서는 무선랜 인터페이스가 정상적으로 인식되며, 고정IP도 정상적으로 세팅되어 있다. 하지만 프로그램 상에서 테스트해 보면 아무 패킷도 받지 못할 뿐더러 아무 패킷도 보내지 못한다.


확실치는 않지만, 그 때마다 iwconfig를 통해서 보면 애드혹 네트워크에서 ESSID 영역이 "Not associated"로 되어 있었던 것 같다. 단순히 노트북을재부팅하는 것만으로는 여전히 위와 같이 먹통인 상태인 것을 확인했다.


현재로써는 두 가지 해결방법이 가장 무식하지만 가장 확실하다.

1) USB 무선랜카드를 분리하고 잠시 있다가 다시 연결 (USB plug out + plug in)

2) 노트북을 재부팅하지 말고, 아예 전원을 완전히 껐다가 다시 부팅 (shutdown + turn on)


전공이 전자과도 아니고 장비에 익숙하지 않아서 원인을 알 수 없지만,

굳이 추측하자면 컴퓨터에 연결된 채 오랫동안 많은 명령(사실 많은 트래픽도 아니다. 나는 단지 라우팅 프로토콜을 구현해서 plain text 형태의 라우팅 메세지, ping 메세지 정도만 반복적으로 주고받았으니까.)을 보내다 보면 여전히 낮은 확률이지만 먹통 현상이 발생한다.




반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 계열 (11 이상에서 테스트했으나 이하 버전도 아마 가능할 듯)


컴퓨터에 USB 무선랜카드를 여러 개를 번갈아 가면서 쓰다 보면, wlan0, wlan1, wlan2 등 여러 개의 무선 네트워크 인터페이스가 존재하는 것으로 인식될 뿐만 아니라 인터페이스 번호도 뒤죽박죽이 되는 경우가 있다.

또한 네트워크 관련 프로그래밍을 하다 보면 의도적으로 인터페이스 이름을 지정해야 하는 경우도 생기는데, 인터페이스 번호가 달라서 실행하지 못하는 문제가 발생하기도 한다.


이 때는 /etc/udev/rules.d/70-persistent-net.rules 파일을 열어서 인터페이스 번호를 수정할 수 있다.


# This file maintains persistent names for network interfaces.

# See udev(7) for syntax.

#

# Entries are automatically added by the 75-persistent-net-generator.rules

# file; however you are also free to add your own entries.


# PCI device 0x8086:0x10f5 (e1000e)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1f:16:08:98:a5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


# PCI device 0x8086:0x4236 (iwlagn)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:ea:b1:9d:a4", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"


# USB device 0x148f:0x2573 (usb)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:08:9f:fd:55:4b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"


위에서 빨간색 표시된 영역을 원하는 인터페이스 이름으로 수정할 수 있다. 

만약 현재 쓰지 않는 네트워크 인터페이스일 경우에는 #을 이용해서 주석처리할 수도 있다.

또는 아예 운영체제가 자동으로 네트워크 인터페이스 이름을 처음부터 새로 잡아주길 바란다면 위 파일을 삭제하고 재부팅하는 방법도 있다.




반응형
블로그 이미지

Bryan_

,
반응형

(Software)

OS: Ubuntu 11.04 desktop (32bit)

Kernel: linux-2.6.38.8-generic

라우팅 프로토콜: aodv-uu-0.9.6 (http://sourceforge.net/projects/aodvuu/files/AODV-UU/0.9.6/)


(Hardware)

IBM X40, IBM X60s, Lenovo X200 (3대)



1. Ad-hoc 네트워크 설정

각 노트북에서 /etc/network/interfaces 파일에 아래와 같이 설정을 추가한다. (무선랜 인터페이스가 wlan0일 경우)

아래 설정은 하나의 예시이며, address, wireless-channel, wireless-essid는 원하는 대로 변경할 수 있다. 대신 address는 모든 기기가 같은 subnet 안에 있도록 맞출 필요가 있다.

(IBM X40)

auto wlan0

iface wlan0 inet static

address 192.168.0.3

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


(IBM X200)

auto wlan0

iface wlan0 inet static

address 192.168.0.4

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


(Lenovo X60s)

auto wlan0

iface wlan0 inet static

address 192.168.0.5

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


interfaces 파일을 저장하고 하고 나서 네트워크를 재시작한다. 사실 가장 확실한 방법은 재부팅이다. 
$ sudo /etc/init.d/networking restart

만약 Ubuntu 11.04 desktop을 쓰는 경우 우측 상단에 있는 네트워크 아이콘은 무시하는 것이 좋다. Interfaces 파일을 직접 고칠 경우 GUI 상에서 "어느 네트워크에 연결되었다"는 메세지가 보이지 않고 부채꼴 모양의 아이콘 모양도 연결된 모양으로 바뀌지 않는다. 하지만 애드혹 네트워크에 이미 참여해 있을 가능성이 높다.

어떤 경우에는 재부팅하고 나서 ifconfig 명령을 쳐봐도 무선랜 인터페이스가 보이지 않을 때도 있다. 그럴 때는 networking restart 명령을 입력한다. 우선 모두 서로 신호가 닿는 가까운 거리에 두고(one hop) 서로 ping을 보내서 응답이 오는지 테스트한다.
서로 인식되는 경우 멀티홉이 가능하도록 2대를 가능한 한 거리를 멀리 두거나 복도, 코너 등 실내 구조를 이용한다. 그래도 여전히 3대가 서로 신호가 닿을 경우에는 iwconfig를 이용해서 아래와 같이 신호 세기를 조절한다.
$ sudo iwconfig wlan0 txpower 10.0

보통 무선랜 어댑터의 신호세기가 15dBm~20dBm 정도 되는데, 조금씩 줄여 가면서 테스트할 필요가 있다. 주변에 있는 다른 신호나 벽의 위치, 공간의 폐쇄 여부에 따라서 성능이 많이 달라지기 때문에 정답이 없는 것 같다.


2. AODV 소스코드 빌드 및 실행

이어서 다운로드 받은 aodv-uu-0.9.6.tar.gz 파일을 적당한 위치에 압축을 푼다.

aodv-uu 디렉토리에 가서, 빌드를 새로 해주고 나면 aodv 데몬을 바로 실행할 수 있다.

$ make clean; make

$ make install

$ sudo ./aodvd -l -r 5

(-l 옵션은 /var/log/aodvd.log 파일에 로그를 남기는 것이고,

-r 옵션은 라우팅 테이블을 매 몇 초마다 파일에 기록할지 정하는 것이다.)



(여기부터는 내가 했던 삽질들에 대한 기록이다. ㅠㅠ)

*사실 좀더 최신 버전의 우분투(12.04 또는 12.10)를 쓰고자 했으나, aodv-uu 소스코드를 에러 없이 빌드하기 위한 조건이 커널 버전 2.6이기 때문에 커널 3.0 이상을 쓰는 최근 버전은 쓸 수 없었다.


*본 글에서 언급한 구형 노트북들보다 훨씬 성능 좋은 최신 노트북을 네트워크에 참여시키고자 했으나, (삼성 시리즈9, NT900X3C) 우분투 11.04 이하 버전을 설치하자 내장 무선랜카드가 인식되지 않았다. 그래서 어렵지만 우분투 12.04를 먼저 설치하고, (기본으로 커널 3.2만 깔린다) 커널 2.6을 빌드해서 부팅했더니 무선랜카드를 또다시 인식하지 못했다. 게다가 i5 CPU 중에서 2개의 코어가 지속적으로 80~90%의 자원을 점유하며 발열이 심해지는 현상이 발생하여 포기했다. ㅜㅜ


*게다가 우분투 12.04에서조차 시리즈9 노트북의 내장 무선랜카드는 오작동을 보였다. 그냥 내장 무선랜을 포기하고 시리즈9에 우분투 11.04를 설치하고 나서, 잘 인식되는 USB 무선랜카드를 새로 구입하기로 했다.



반응형
블로그 이미지

Bryan_

,
반응형

Windows 7 ISO 이미지를 가상 씨디롬 드라이브로 열고, sources\idwbinfo.txt 파일을 연다.


32비트는 BuildArch=x86

64비트는 BuildArch=amd64

이렇게 적혀 있다.


반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu Desktop 12.04 (64bit)


윈도우에서 메모장을 통해 저장한 텍스트 문서를 gedit에서 아무런 설정 변경 없이 읽으면 한글이 깨져 보인다. 윈도우에서 아무 설정 변경 없이 텍스트 문서를 저장하면 ANSI 인코딩으로 저장하는데, 우분투는 기본적으로 UTF-8을 쓰기 때문에 생기는 문제이다.


해결하려면 gedit가 한글 인코딩을 추가로 고려하도록 설정을 변경한다.

먼저 우분투 소프트웨어 센터로 가서 dconf editor를 검색해서 설치한다.

실행하면 보이는 왼쪽 목록에서 org > gnome > gedit > preferences > encodings 선택한다.

오른쪽에 보이는 Name-Value 목록에서 "auto-detected"에 해당하는 값의 맨 앞에 'UHC'를 추가한다.





반응형
블로그 이미지

Bryan_

,