position 옵션을 생성하면 노드의 Mobility가 동작하지 않습니다.
propagationModel.py에서 position(‘x, y, z’) 코드를 작성하면 노드의 Mobility가 생성되지 않고 그 위치에 고정된다. 설령, propagationModel.py에 RandomWayPoint Mobility model이 있더라도 노드가 움직이지 않습니다.


다시 position 옵션을 지워주게 되면 노드 움직임이 되살아나, RandomWayPoint Mobility model이 작동하게 됩니다.
propagationModel.py 파일을 이용하여, sta1, sta2, sta3 위치를 고정시켜 움직이지 못하게 하였습니다.
ap1에서 멀어질 수록 rssi 신호 감쇠가 심해집니다.
1. py sta1.wintfs[0].rssi :-74 dB
2. py sta2.wintfs[0].rssi :-81 dB
3. py sta3.wintfs[0].rssi : -86 dB
ap1에서 멀어질 수록 rssi 신호 감쇠가 심해집니다.
friis 채널에서 감쇠가 있는 것은 logDistance 채널과 동일하나, 감쇠 값이 덜 심함을 확인할 수 있습니다. 왜냐하면, friis 채널은 자유 공간을 모델링하고 logDistance 채널은 채널 간섭이 있는 실제 공간을 모델링하였기 때문입니다.
net.setPropagationModel(model="logDistance", exp=4)
RandomWayPoint mobility 모델 적용이 되어 노드 위치는 시간에 따라 변화하게 되며, 이는 ap1과 각 sta 사이의 거리가 시간에 따라 변화한다는 것을 의미합니다.
py sta1.wintfs[0].rssi: -87 dB
net.setPropagationModel(model="friis", exp=4)
RandomWayPoint mobility 모델 적용이 되어 노드 위치는 시간에 따라 변화하게 되며, 이는 ap1과 각 sta 사이의 거리가 시간에 따라 변화한다는 것을 의미합니다.
py sta1.wintfs[0].rssi: -48dB
friis 채널은 rssi가 -48dB로 logDistance 채널의 rssi -87dB보다 훨씬 더 신호 감쇠가 덜 합니다. 왜냐하면, friis 채널은 자유 공간을 모델링하고 logDistance 채널은 채널 간섭이 있는 실제 공간을 모델링하였기 때문입니다.
노드 이동에 따른 무선 채널 변화와 토폴로지 변화 체크 가능
tutorial #1: position.py -> sudo python position.py
2차원 그래프
- sta1은 ap1의 전송 반경 안에 위치하고 있으며, sta2는 ap1의 전송 반경 안에 위치하고 있음
- sta1, sta2, ap1은 고정된 노드

3차원 그래프: net.plotGraph() 함수에 max_z 옵션을 추가


handover_sckim.py 예제 코드를 통한 토폴로지 이해하기


코드 분석
# handover_sckim.py
#!/usr/bin/env python
"""Example for Handover"""
import sys #sckim
import time
from mininet.node import Controller
from mininet.log import setLogLevel, info
from mn_wifi.cli import CLI
from mn_wifi.net import Mininet_wifi
def topology():
"Create a network."
net = Mininet_wifi(controller=Controller)
info("*** Creating nodes\n")
sta1 = net.addStation('sta1', mac='00:00:00:00:00:02', ip='10.0.0.2/8', range=20)
ap1 = net.addAccessPoint('ap1', ssid='ssid-ap1', mode='g', channel='1', position='20,30,0', range=30)
ap2 = net.addAccessPoint('ap2', ssid='ssid-ap2', mode='g', channel='6', position='80,30,0', range=30)
s1 = net.addSwitch('s1')
s2 = net.addSwitch('s2')
h1 = net.addHost('h1', ip='10.0.0.3/8')
c1 = net.addController('c1')
net.setPropagationModel(model="logDistance", exp=5)
info("*** Configuring wifi nodes\n")
net.configureWifiNodes()
info("*** Creating links\n")
net.addLink(ap1, sta1, bw=25, delay='25ms')
net.addLink(ap2, sta1, bw=10, delay='70ms')
net.addLink(ap1, s1, bw=25, delay='25ms')
net.addLink(ap2, s2, bw=10, delay='70ms')
net.addLink(s1, h1, bw=60)
net.addLink(s2, h1, bw=60)
net.plotGraph(max_x=100, max_y=100)
net.startMobility(time=0)
net.mobility(sta1,'start', time=1, position='20,30,0')
net.mobility(sta1,'stop', time=80, position='80,30,0')
net.stopMobility(time=181)
info("*** Starting network\n")
net.build()
c1.start()
ap1.start([c1])
ap2.start([c1])
s1.start([c1])
info("*** Running CLI\n")
CLI(net)
info("*** Stopping network\n")
net.stop()
if __name__== 'main':
setLogLevel('info')
topology()



h1: 10.0.0.3: server의 역할을 하는 호스트
sta1: 10.0.0.2: 클라이언트의 역할을 하는 sta1
xterm sta1 h1

[서버측 성능] h1 server 역할에 대한 iperf 성능 점검


1. Friis 채널 모델과 Log Distance 채널 모델의 주요 차이점은 무엇인가요?
friis는 자유공간을 모방하여 노이즈가 적은 이상적인 네트워크 환경입니다. 그에 반해 Log Distance는 실제 네트워크 환경을 모방하여 fiis보다 신호 감쇠(rssi)가 심합니다.
2. 노드가 이동하지 않도록 고정하려면 어떤 Python 코드를 사용해야 하나요?
sta1.setPosition('x,y,z')
3. Log Distance 채널 모델과 Friis 채널 모델을 비교하여 RSSI 감쇠 차이를 설명하시오.
friis는 자유공간을 모방하여 노이즈가 적은 이상적인 네트워크 환경입니다. 그에 반해 Log Distance는 실제 네트워크 환경을 모방하여 fiis보다 신호 감쇠(rssi)가 심합니다.
4. Mininet-WiFi에서 핸드오버(handover)를 테스트하려면 어떤 예제 파일을 사용해야 하나요? 실행 명령어를 포함하여 작성하시오.
sudo python handover.py
5. 핸드오버가 발생하는 과정을 설명하고, AP 전송 반경과 노드의 이동 경로가 핸드오버에 미치는 영향을 논하시오.
1. 노드가 AP1의 전송 반경에서 시작하여 AP2로 이동.
2. 중간 단계에서 두 AP의 전송 반경에 모두 포함.
3. AP1 전송 반경을 벗어나면 AP2로 연결 변경.
전송 반경이 좁으면 핸드오버 빈도가 증가하여 네트워크 지연 발생 가능.
6. AP(ap1)의 전송 반경을 30m로 설정하고, STA(sta1)의 전송 반경을 20m로 설정하는 명령어를 작성하시오.
ap1 = net.addAccessPoint('ap1', ssid='ssid-ap1', range=30)
sta1 = net.addStation('sta1', range=20)
7. 핸드오버 시 AP1에서 AP2로 이동하는 STA(sta1)의 시작 및 종료 위치를 설정하는 명령어를 작성하시오.
net.mobility(sta1, 'start', time=1, position='20,30,0')
net.mobility(sta1, 'stop', time=80, position='80,30,0')
8. Mininet-WiFi에서 핸드오버를 시뮬레이션할 때 사용되는 이동 모델은 무엇인가요?
RandomWayPoint
9. Friis 채널 모델을 사용하는 네트워크에서 STA(sta1)의 RSSI 값을 확인하는 Python 명령어를 작성하시오.
py sta1.wintfs[0].rssi