Tcl 언어 설정 기반 간단 한 네트워크 환경 프로 세 스 분석

1.Tcl 스 크 립 트 파일 circle.tcl 코드 주석

#           
set val(chan) Channel/WirelessChannel
set val(prop) Propagation/TwoRayGround
set val(netif) Phy/WirelessPhy
set val(mac) Mac/802_11
#       DSR  ,         CMUPriQueue
set val(ifq) CMUPriQueue
set val(ll) LL
set val(ant) Antenna/OmniAntenna
set val(ifqlen) 50
#         0,     。          ,       。
set val(nn) 0
set val(rp) DSR
#         1000*1000
set val(x) 1000
set val(y) 1000
#         400
set val(r) 400
#                 ns circle.tcl         
proc usage {} {
  global argv0
  puts "
usage: $argv0 \[-nn nodes\] \[-r r\] \[-x x\] \[-y y\]
" puts "note: \[-nn nodes\] is essential, and the others are optional.
" } # proc getval {argc argv} { global val lappend vallist nn r x y z #argc ,argv for {set i 0} {$i < $argc} {incr i} { # arg argv i , set arg [lindex $argv $i] # “-” , #string range $arg m n $arg m n if {[string range $arg 0 0] != "-"} continue set name [string range $arg 1 end] # ( , , ) set val($name) [lindex $argv [expr $i+1]] } } # getval getval $argc $argv # , ns circle.Tcl, 0 if { $val(nn) == 0 } { # usage exit } # set ns [new Simulator] # set tracefd [open circle.tr w] $ns trace-all $tracefd set namtracefd [open circle.nam w] $ns namtrace-all-wireless $namtracefd $val(x) $val(y) # trace nam proc finish { } { global ns tracefd namtracefd $ns flush-trace close $tracefd close $namtracefd exec nam circle.nam & exit 0 } set topo [new Topography] $topo load_flatgrid $val(x) $val(y) create-god $val(nn) # 。 ,addressType def $ns node-config -addressType def\ -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac)\ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agenttrace ON \ -routertrace ON \ -mactrace OFF \ -movementtrace OFF # for {set i 0} {$i < $val(nn)} {incr i} { # set node_($i) [$ns node] $node_($i) random-motion 0 # , $node_($i) set X_ [expr $val(r) * cos($i * 2 * 3.14159 / $val(nn))] $node_($i) set Y_ [expr $val(r) * sin($i * 2 * 3.14159 / $val(nn))] $node_($i) set Z_ 0 # nam , ,nam $ns initial_node_pos $node_($i) [expr $val(x) / 10] } # node_(0) UDP set tcp [new Agent/UDP] $ns attach-agent $node_(0) $tcp # node(0) set null [new Agent/Null] $ns attach-agent $node_([expr $val(nn)/2]) $null # CBR , 500B, 0.05s set cbr [new Application/Traffic/CBR] $cbr set packetSize_ 5000 $cbr set interval_ 0.05 # UDP Null $cbr attach-agent $tcp $ns connect $tcp $null # 0.1s ,3.0s ,5.0s finish $ns at 0.1 "$cbr start" $ns at 3.0 "$cbr stop" $ns at 5.0 "finish" $ns run
2.gawk 스 크 립 트 코드 analysis.awk 주석

BEGIN {
#      
num_D = 0;	#   
num_s = 0;	#    
num_r = 0	;	#    

rate_drop = 0;	#   
sum_delay = 0;	#     
average_delay = 0;	#      

}
{
	#  trace    
	event = $1;	#        (s    ,r    )
	time = $2;	#        
	node = $3;	#       
	trace_type = $4;	#       
	flag = $5;	#       
	uid = $6;	#        
	pkt_type = $7;	#       
	pkt_size = $8;	#        

#  
	if (event == "s" && trace_type == "AGT" && pkt_type == "cbr")
	{	send_time[uid] = time;	#          
		num_s++;		#       
	}
	if (event == "r" && trace_type == "AGT" && pkt_type =="cbr")
	{	delay[uid] = time - send_time[uid];	#          
		num_r++;		#       
	}
	if (event == "D" && pkt_type == "cbr")
		delay[uid] = -1;	#-1     ,          
}

END {
	#         
	num_D =num_s-num_r;	#    
	rate_drop = num_D / num_s * 100.0;	#     
	
	#    
	for ( i = 0; i < num_s; i++)
		{if (delay[i] >= 0)
			sum_delay += delay[i];
		}#     
	average_delay = sum_delay / num_r;	#      

	#    
	printf("number of packets droped: %d 
",num_D); printf("number of packets sent: %d
",num_s); printf("drop rate: %.3f%%
",rate_drop); printf("average delay time: %.9f
",average_delay); }
3.실험 결과
(1)
네트워크 노드 수 를 12 로 설정 하고 실행 결 과 는 다음 과 같 습 니 다.두 개의 기록 파일 nam 파일 과 trace 파일 을 생 성 했 습 니 다.

이 때 trace 파일 크기 는 91.8kb 이 고 nam 파일 크기 는 76.0kb 입 니 다.


다음은 gawk 도 구 를 통 해 생 성 된 trace 파일 을 분석 합 니 다.gawk 도구 가 설치 되 어 있 지 않 으 면 명령 sudo apt-get install gawk 를 사용 하여 설치 합 니 다.
그 결과 네트워크 시 뮬 레이 션 과정의 하 도 급 수,하 도 급 수,하 도 급 률 과 평균 지연 을 얻 었 다.

(2)노드 수 를 8 로 다시 수정 하고 실행 결 과 는 다음 과 같 습 니 다.그러나 이 폴 더 에는 추가 적 인 circle.nam 과 circle.tr 파일 이 추가 되 지 않 았 습 니 다.

두 파일 의 속성 을 보 니 크기 가 바 뀌 었 습 니 다.새로 만 든 네트워크 시 뮬 레이 션 환경의 기록 파일 이 겹 쳐 졌 음 을 설명 합 니 다.


생 성 된 trace 파일 을 gawk 에 적용 하여 분석 합 니 다.네트워크 노드 수가 증가 함 에 따라 하 도 급 률 과 평균 지연 시간 이 모두 증가 한 것 을 발견 했다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기