NS2 - 무선환경 시뮬레이션

|

유선과 무선 환경의 차이

  • 노드 사이의 명시적인 링크가 존재하지 않음
    • 라디오의 전송 범위 내에 노드들이 위치하면 통신 가능
  • 무선상에서는 MAC 기술이 아주 중요
    • NS2 유선 시뮬레이션 환경은 MAX이 존재하지 않음
  • 무선상에서 노드는 이동성이 존재
  • 라우팅
    • 유선상에서는 특별히 라우팅을 설정하지 않아도 링크 설정관계를 통해서 최단 경로가 선택
    • 무선에는 반드시 라우팅이 존재해야 함
  • 주소
    • 유선에서는 flat address
    • 무선만 존재하면 flat address
    • 유무선 연동인 경우는 hierarchical address

NS2에서의 유선과 무선의 차이

  • C++ 상에서의
    • 유선 : class Node
    • 무선 : class MobileNode
  • 노드 생성은 유무선 모두 $ns node로 하지만 무선에서는 node-config라는 추가 작업이 필요
  • Trace
    • $ns/common 에서
      • 유선 : trace.{h, cc}
      • 무선 : cmu-trace.{h, cc}
  • 이동성
    • 무선에서는 이동성을 지원
    • 위치 정보가 중요
      • 유선에서는 연결 구조가 중요, 노드의 배치는 중요하지 않음
      • 무선에서는 위치에 따라서 전송 범위 내에 있는지 여부가 결정
  • 그 외에는 유무선 모두 같은 네트워크 컴포넌트를 사용

node-config

역활
 * $ns가 앞으로 만들어질 노드에 대한 설정 정보들을 저장, 이후 만들어지는 노드들은 그 설정 정보들로부터 생성됨
 * -adhocRouting 설정 정보로부터 유선 노드와 무선 노드 구별
 * node-config를 이용해서 노드 설정을 바뀌었다면 바뀐 설정은 새로 만들어지는 노드부터 적용
Topography
 * 지형도
 * 영역을 만듦 ->무선 환경에서는 위치가 중요 정보
 * set topo [new Topography]
 * $topo load_flatgrid <x축 크기> <y축 크기>
God 객체
 * Simulater와 마찬가지로 단 하나의 인스턴스만 존재, 없다면 에러
 *  노드간 연결(라우팅 가능한지) 정보 제공
 * 예) set god_ [create-god <모바일 노드 개수>]
 * God 인스턴스 이름은 god_로 해야함 (일부 $god_로 사용)

  • -adhocRouting : 라우팅 프로토콜 설정
    • DSDV, AODV, TORA,, FLOODING,...
  • -llType : 링크 레이어 설정
    • LL
  • -macType : 맥프로토콜 설정
    • Mac/802_11, Mac/SMAC
  • -propType : 경로손실타입
    • Propagation/twoRayGround, Propagation/FreeSpace, Propagation/Shadowing,...
  • -ifqType : 큐타입
    • Queue/DropTail/PriQueue,...
    • 애드혹라우팅 프로토콜이 DSR인 경우 반드시 CMUPriQueue로 해야 함
  • -ifqLen : 큐길이
    • 패킷 개수
  • -phyType : 피지컬레이어타입
    • Phy/WirelessPhy,...
  • -antType : 안테나 타입
    • Antenna/OmniAntenna
  • -channel : 현재는 없어짐
    • Channel/WirelssChannel
  • -topoInstance : 전체 영역
    • $topo
  • -agentTrace : 트레이스 설정
    • ON or OFF
  • -routerTrace : 트레이스 설정
    • ON or OFF
  • -macTrace : 트레이스 설정
    • ON or OFF
  • -movementTrace : 트레이스 설정
    • ON or OFF



NS2 무선환경 시뮬레이션 스크립터

set ns [new Simulator]
set trfd [open prac10.tr w]
$ns trace-all $trfd
set namfd [open prac10.nam w]
$ns namtrace-all-wireless $namfd 1000 1000
set topo [new Topography]
$topo load_flatgrid 1000 1000
set god_ [create-god 25]
$ns node-config -adhocRouting AODV \
                -llType LL \
                -macType Mac/802_11 \
                -propType Propagation/TwoRayGround \
                -ifqType Queue/DropTail/PriQueue \
                -ifqLen 50 \
                -phyType Phy/WirelessPhy \
                -antType Antenna/OmniAntenna \
                -channel [new Channel/WirelessChannel] \
                -topoInstance $topo \
                -agentTrace ON \
                -routerTrace ON \
                -macTrace ON \
                -movementTrace ON
for {set i 0} {$i < 25} {incr i} {
        set node_($i) [$ns node]
        $node_($i) set X_ [expr $i % 5 * 200]
        $node_($i) set Y_ [expr $i / 5 * 200]
        $node_($i) set Z_ 0
        $ns initial_node_pos $node_($i) 150
}
set udp [new Agent/UDP]
$ns attach-agent $node_(0) $udp
set cbr [new Application/Traffic/CBR]
$cbr set packetSize_ 500
$cbr set interval_ 0.1
$cbr attach-agent $udp
set null [new Agent/Null]
$ns attach-agent $node_(24) $null
$ns connect $udp $null
set tcp [new Agent/TCP]
$ns attach-agent $node_(20) $tcp
set ftp [new Application/FTP]
$ftp attach-agent $tcp
set tcpSink [new Agent/TCPSink]
$ns attach-agent $node_(4) $tcpSink
$ns connect $tcp $tcpSink
$ns at 0.5 "$cbr start"
$ns at 5.0 "$cbr stop"
$ns at 2.0 "$ftp start"
$ns at 4.0 "$ftp stop"
#$ns at 1.0 "$node_(24) setdest 500 800 20"
$ns at 6.0 "$ns halt"
$ns run


 Max/802_11 Bandwidth

  • basic rate, data rate 두가지 존재
    • basic reate : RTS, CTS, ACK 을 전송하는 속도
    • data rate : 실제 데이터를 전송하는 속도
  • 설정하는 방법
    • Mac/802_11 set basicRate_ 1Mb
    • Mac/802_11 set dataRate_ 1Mb
    • 기본값은 둘다 1Mbps

범위 설정

  • 전송 범위 : 데이터가 성공적으로 수신되는 범위
  • 캐리어 감지 범위 : 데이터를 성공적으로 수신하지는 못하지만 신호만 감지하는 범위 -> CSMA/CA 프로토콜의 CA
  • 전송 범위와 캐리어 감지 범위는 수신 노드에서 받는 전파세기와 쓰레쉬홀드에 의해서 결정
  • $ns/tcl/lib/ns-default.tcl
 Phy/WirelessPhy set CPThresh_ 10.0
 Phy/WirelessPhy set CSThresh_ 1.559e-11  # 수신한 전파의 세기가 이 값 이상이면 감지
 Phy/WirelessPhy set RXThresh_ 3.652e-10 # 수신한 전파의 세기가 이 값 이상이면 성공적인 수신
 Phy/WirelessPhy set bandwidth_ 2e6
 Phy/WirelessPhy set Pt_ 0.28183815
 Phy/WirelessPhy set freq_ 914e+6
 Phy/WirelessPhy set L_ 1.0

  • 다른 설정은 변경하지 않고 위 두개의 threshold만 변화시켜 범위 조절 가능
  • $ns/indep-utils/propagation/threshold.cc
    • 컴파일 후 threshold -m <경로손실모델> <범위> ->threshold

And