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,...
    • 애드혹라우팅 프로토콜이>
    • -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 값 리턴

'Network > Ns2_Lecture' 카테고리의 다른 글

R:[ns] Route to base_stn not known: dropping pkt  (0) 2009.01.18
Making NS-2 simulate an 802.11b link  (0) 2009.01.18
NS2 - OTcl linkage  (0) 2009.01.18
NS2 trace  (0) 2009.01.18
awk  (0) 2009.01.18
And