1단계 – madwifi 설치하기

설치환경:

시스템 – Intel Mac with Atheros ar5008
운영체제 – ubuntu 10.10 (커널버젼: 2.6.35-22-generic)
사용한 드라이버 – http://snapshots.madwifi-project.org/madwifi-0.9.4-current.tar.gz
(madwifi 0.9.4-r4133-20100922 수정버젼)

설치전 작업:
– 시냅틱 꾸러미 관리자를 사용하여 linux-headers, build-essential, bin86, sharutils 설치

# make

qdwe@ubuntu:~/Mobile/madwifi-0.9.4-r4133-20100922$
make
Checking requirements… ok.
Checking kernel configuration… ok.
make -C /lib/modules/2.6.35-22-generic/build
SUBDIRS=/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922 modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic’
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath/if_ath.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath/if_ath_pci.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath/ath_pci.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal/ah_os.o
HOSTCC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal/uudecode
UUDECODE
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal/i386-elf.bin
UNMANGLE
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal/i386-elf.hal.o
LD [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal/ath_hal.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/amrr/amrr.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/amrr/ath_rate_amrr.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/minstrel/minstrel.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/minstrel/ath_rate_minstrel.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/onoe/onoe.o
LD [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/onoe/ath_rate_onoe.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/sample/sample.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/sample/ath_rate_sample.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/if_media.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_beacon.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_crypto.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_crypto_none.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_input.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_node.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_output.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_power.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_proto.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_scan.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_wireless.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_linux.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_monitor.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_rate.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_acl.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_crypto_ccmp.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_scan_ap.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_scan_sta.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_crypto_tkip.o
CC [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_crypto_wep.o
CC [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/ieee80211_xauth.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_wep.o
LD [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_tkip.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_ccmp.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_acl.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_xauth.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_scan_sta.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_scan_ap.o
Building modules, stage 2.
MODPOST 14 modules
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath/ath_pci.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath/ath_pci.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal/ath_hal.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal/ath_hal.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/amrr/ath_rate_amrr.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/amrr/ath_rate_amrr.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/minstrel/ath_rate_minstrel.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/minstrel/ath_rate_minstrel.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/onoe/ath_rate_onoe.mod.o
LD [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/onoe/ath_rate_onoe.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/sample/ath_rate_sample.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/sample/ath_rate_sample.ko
CC      /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_acl.mod.o
LD [M]  /home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_acl.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_ccmp.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_ccmp.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_scan_ap.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_scan_ap.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_scan_sta.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_scan_sta.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_tkip.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_tkip.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_wep.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_wep.ko
CC
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_xauth.mod.o
LD [M]
/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211/wlan_xauth.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic’
make -C ./tools  all || exit 1
make[1]: Entering directory
`/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/tools’
gcc -o athstats -g -O2 -Wall -I. -I../hal -I.. -I../ath  athstats.c
athstats.c: In function ‘main’:
athstats.c:285: warning: format not a string literal and no format arguments
athstats.c:287: warning: format not a string literal and no format arguments
athstats.c:307: warning: format not a string literal and no format arguments
athstats.c:309: warning: format not a string literal and no format arguments
athstats.c:344: warning: format not a string literal and no format arguments
gcc -o 80211stats -g -O2 -Wall -I. -I../hal -I..  80211stats.c
80211stats.c: In function ‘main’:
80211stats.c:290: warning: format not a string literal and no format
arguments
gcc -o athkey -g -O2 -Wall -I. -I../hal -I..  athkey.c
gcc -o athchans -g -O2 -Wall -I. -I../hal -I..  athchans.c
gcc -o athctrl -g -O2 -Wall -I. -I../hal -I..  athctrl.c
gcc -o athdebug -g -O2 -Wall -I. -I../hal -I..  athdebug.c
gcc -o 80211debug -g -O2 -Wall -I. -I../hal -I..  80211debug.c
gcc -o wlanconfig -g -O2 -Wall -I. -I../hal -I..  wlanconfig.c
wlanconfig.c: In function ‘if_find_unit’:
wlanconfig.c:297: warning: ignoring return value of ‘fgets’, declared with
attribute warn_unused_result
wlanconfig.c: In function ‘list_keys’:
wlanconfig.c:830: warning: ignoring return value of ‘system’, declared with
attribute warn_unused_result
wlanconfig.c: In function ‘ieee80211_status’:
wlanconfig.c:946: warning: ignoring return value of ‘system’, declared with
attribute warn_unused_result
make[1]: Leaving directory
`/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/tools’
qdwe@ubuntu:~/Mobile/madwifi-0.9.4-r4133-20100922$

# make install

qdwe@ubuntu:~/Mobile/madwifi-0.9.4-r4133-20100922$
sudo make install

password for qdwe:
sh scripts/find-madwifi-modules.sh -r 2.6.35-22-generic
for i in ath/ ath_hal/ ath_rate/ net80211/; do \
make -C $i install || exit 1; \
done
make[1]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath’
test -d //lib/modules/2.6.35-22-generic/net || mkdir -p //lib/modules/2.6.35-22-generic/net
install -m 0644 ath_pci.ko //lib/modules/2.6.35-22-generic/net
make[1]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath’
make[1]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal’
test -d //lib/modules/2.6.35-22-generic/net || mkdir -p //lib/modules/2.6.35-22-generic/net
install -m 0644 ath_hal.ko //lib/modules/2.6.35-22-generic/net
make[1]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_hal’
make[1]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate’
for i in amrr/ onoe/ sample/ minstrel/; do \
make -C $i install || exit 1; \
done
make[2]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/amrr’
test -d //lib/modules/2.6.35-22-generic/net || mkdir -p //lib/modules/2.6.35-22-generic/net
install -m 0644 ath_rate_amrr.ko //lib/modules/2.6.35-22-generic/net
make[2]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/amrr’
make[2]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/onoe’
test -d //lib/modules/2.6.35-22-generic/net || mkdir -p //lib/modules/2.6.35-22-generic/net
install -m 0644 ath_rate_onoe.ko //lib/modules/2.6.35-22-generic/net
make[2]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/onoe’
make[2]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/sample’
test -d //lib/modules/2.6.35-22-generic/net || mkdir -p //lib/modules/2.6.35-22-generic/net
install -m 0644 ath_rate_sample.ko //lib/modules/2.6.35-22-generic/net
make[2]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/sample’
make[2]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/minstrel’
test -d //lib/modules/2.6.35-22-generic/net || mkdir -p //lib/modules/2.6.35-22-generic/net
install -m 0644 ath_rate_minstrel.ko //lib/modules/2.6.35-22-generic/net
make[2]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate/minstrel’
make[1]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/ath_rate’
make[1]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211′
test -d //lib/modules/2.6.35-22-generic/net || mkdir -p //lib/modules/2.6.35-22-generic/net
for i in wlan.o wlan_wep.o wlan_tkip.o wlan_ccmp.o wlan_acl.o wlan_xauth.o wlan_scan_sta.o wlan_scan_ap.o; do \
f=`basename $i .o`; \
install -m 0644 $f.ko //lib/modules/2.6.35-22-generic/net; \
done
make[1]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/net80211′
(export KMODPATH=/lib/modules/2.6.35-22-generic/net; /sbin/depmod -ae 2.6.35-22-generic)
WARNING: -e needs -E or -F
make -C ./tools  install || exit 1
make[1]: Entering directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/tools’
install -d /usr/local/bin
for i in athstats 80211stats athkey athchans athctrl athdebug 80211debug wlanconfig; do \
install $i /usr/local/bin/$i; \
strip /usr/local/bin/$i; \
done
install -d /usr/local/man/man8
install -m 0644 man/*.8 /usr/local/man/man8
install ../scripts/madwifi-unload /usr/local/bin/madwifi-unload
make[1]: Leaving directory `/home/qdwe/Mobile/madwifi-0.9.4-r4133-20100922/tools’
qdwe@ubuntu:~/Mobile/madwifi-0.9.4-r4133-20100922$

# sudo gedit /etc/modules
마지막줄에 ath_pci 추가.





2단계 – UDP 스트리밍
Application

  • 서버-클라리언트 구조의 파일(데이터) 전송 프로그램 구현
  • 소스 파일 udp_project 폴더 참조
  • Client  폴더 : 클라이언트 파트 소스 파일 (파일 Sender 측)
  • Sever 폴더 : 서버 파트 소스 파일 (파일 Receiver 측)
  • Include
    폴더 : 클라이언트 및 서버 공통
    정의 파일

  1. 4개의 Raw Data File들을 UDP 방식으로 클라이언트에서 서버로 전송
  2. 4개의 파일을 순차적으로 전송 각 파일의 전송 프레임은 요구사항에 맞춰 파일에 따라서 다르게 설정됨.
  3. 서버측 프로그램은 전송 받은 데이터를
    파일로 저장함.

  • 프로그램 빌드 및 실행
  • Server
    파트 : make clean; make;
    ./udp_server

정상적으로 실행되면 Client 접속 대기 상태로 전환
클라이언트가 접속하면 클라이언트에서 접속한 파일을 전송받아 파일로 작성.

  • Client
    파트 : make clean; make;
    ./udp_client [ipaddress]

Ex.) ./udp_client 192.168.0.45
정상적으로 실행되면 Server에 접속하여 지정된 4개의 파일을 UDP로 전송

  • 작업 스크린 샷
  • Server and Client Application Build (Make)

  • 클라이언트 파트에서 서버에 접속하여 4개의 데이터 파일을 순차적으로 전송.

  • 클라이언트의 접속을 대기중인 상태

클라이언트와
접속이 된 후, 파일을 생성하고, 순차적으로 전송 받음.

UDP 전송이기 때문에 트래픽으로 인해 패킷이 손실되어 전송 받은 파일의 사이즈가 원본 사이즈와 달라지는 경우가 발생하기도 함.

3단계 – MSU VMT를 사용하여 비디오품질 측정하기

사용한 프로그램:

– YUVPlayer – http://www.yuvplayer.com/ 에서
제공하는 YUV 동영상파일 플레이어 (v2.6.4)

– MSU VMT – MSU에서 제공하는 video quality measurement tool (v2.7)

1. YUVPlayer 를 이용한비디오 품질비교

(1) 기준 비디오 – 352×288, 30fps

프레임수:
정상전송의 경우 – 300frame이 손실없이 그대로 전송됨
iperf -b 100m -n 30m – 239fram이 전송됨 (전송률: 79.67%)
iperf -b 1000m -n 30m – 127frame이 전송됨 (전송률: 42.33%)

(2) 기준 비디오 – 352×288, 15fps

프레임수:
정상전송의 경우 – 150frame이 손실없이 그대로 전송됨
iperf -b 100m -n 30m – 103frame이 전송됨 (전송률: 68.67%)
iperf -b 1000m -n 30m – 64frame이 전송됨 (전송률: 42.67%)

(3) 기준 비디오 – 176×144, 15fps

프레임수:
정상전송의 경우 – 150frame이 손실없이 그대로 전송됨
iperf -b 100m -n 30m – 126frame이 전송됨 (전송률: 84%)
iperf -b 1000m -n 30m – 66frame이 전송됨 (전송률: 44%)

(4) 기준 비디오 – 176×144, 7.5fps

프레임수:
정상전송의 경우 – 75frame이 손실없이 그대로 전송됨
iperf -b 100m -n 30m – 41frame이 전송됨 (전송률: 54.67%)
iperf -b 1000m -n 30m – 32frame이 전송됨 (전송률: 42.67%)

2. MSU Video Quality Measurement Tool을 이용한 비디오 품질비교

분석결과:

모든 비디오파일에서 상당히 큰 오차가 있었다. 위의 분석파일에서 알
수 있듯, 처음의 10여 프레임을 지나고 난 이후로는 완전히
알아보기 힘든 비디오 파일이 되어버린 것을 알 수 있다. 그러나 반대로 생각하면 5프레임 이내의 짧은 길이의 경우 무난하게 전송이 가능한 것을 알 수 있었다.

4단계 – 비디오품질 개선을
위한 알고리즘 제안

백그라운드 트래픽의 차이가 클수록 화질이 망가지는 현상을 볼 수 있었던 만큼,
우선순위의 부여가 중요하다고 생각할 수 있었다. 또한,
N/S의 비율이 높아질수록 화질이 빨리 망가졌다. 화질의 개선이 첫번째 우선순위를 가지는
만큼, QoS의 구현을 위해서는 반드시 우선순위를 보여줄 수 있어야 한다고 생각한다.

QoS Implementation for video streaming
태그:                     

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.