유선과 무선 환경의 차이
- 노드 사이의 명시적인 링크가 존재하지 않음
- 라디오의 전송 범위 내에 노드들이 위치하면 통신 가능
- 무선상에서는 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}
- $ns/common 에서
- 이동성
- 무선에서는 이동성을 지원
- 위치 정보가 중요
- 유선에서는 연결 구조가 중요, 노드의 배치는 중요하지 않음
- 무선에서는 위치에 따라서 전송 범위 내에 있는지 여부가 결정
- 그 외에는 유무선 모두 같은 네트워크 컴포넌트를 사용
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_로 사용)
* $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
$ns trace-all $trfd
set namfd [open prac10.nam w]
$ns namtrace-all-wireless $namfd 1000 1000
$ns namtrace-all-wireless $namfd 1000 1000
set topo [new Topography]
$topo load_flatgrid 1000 1000
$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
-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]
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
$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
$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
$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 attach-agent $node_(24) $null
$ns connect $udp $null
set tcp [new Agent/TCP]
$ns attach-agent $node_(20) $tcp
$ns attach-agent $node_(20) $tcp
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp attach-agent $tcp
set tcpSink [new Agent/TCPSink]
$ns attach-agent $node_(4) $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 5.0 "$cbr stop"
$ns at 2.0 "$ftp start"
$ns at 4.0 "$ftp stop"
$ns at 4.0 "$ftp stop"
#$ns at 1.0 "$node_(24) setdest 500 800 20"
$ns at 6.0 "$ns halt"
$ns run
$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
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
'Computer_language > Comfile' 카테고리의 다른 글
[Tip] win32k.sys 덤프가 뜰 경우..(메모리 테스트 프로그램들) [출처] [Tip] win32k.sys 덤프가 뜰 경우..(메모리 테스트 프로그램들) (0) | 2009.01.12 |
---|---|
프로그램 덤프 뜨기... (0) | 2009.01.12 |
[디버깅] core dump file을 분석해 보자 (0) | 2009.01.12 |
[EJB] 객체지향과 컴포넌트 프로그래밍 [출처] [EJB] 객체지향과 컴포넌트 프로그래밍|작성자 젠센쭈 (0) | 2009.01.12 |