Network Simulator 2 성균관대학교 모바일컴퓨팅 연구실

Slides:



Advertisements
Similar presentations
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Advertisements

CHAP. 2 안드로이드 개발 도구 설치. © 2012 생능출판사 All rights reserved 개발 과정의 개요.
ReadyNAS Surveillance for x86 platform (Version ) NETGEAR.
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
네트워크 설계 및 실험 실습 제목 : 5 장 트래픽 생성과 추적 파일 분 석 1. 보고서 목차 1. 실습 목적 2. 실습 환경 3. 실습 내용 및 방법 4. 실험 전 학습준비 5. 실습 결과 및 고찰 6. 기타 - 참여원 활동내역 - 실습결과물.
2016 유성환 Hybrid MOBILE.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
“ 안드로이드 ” 개발 환경 설정 [ 컨버전스팀 ] ㈜한 싹 2011 년 01 월 03 일.
NS–2 (Network Simulator)
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
Term Project iTUTOR를 이용한 PIC 동작 검증 보고서와 모든 소스코드 압축하여 제출
GTK 프로그래밍 ( 1 ) SNSLAB 발표 : 문동규.
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
Image & Video processing
Database Laboratory, Hong Ik University
Power Java 제3장 이클립스 사용하기.
Chapter 6. 리눅스 백도어 황 선 환.
Network Lab. Young-Chul Hwang
Cross Compiler를이용한 커널 컴파일 및 포팅
MYSQL 설치.
CUDA Setting : Install & Compile
조 병 규 Software Quality Lab. 한국교통대학교
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
Ubiquitous Computing Practice - Part I (Installation) -
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
C / C++ Programming in multi platform
Visual Basic .NET 처음 사용하기.
FTP 프로그램 채계화 박재은 박수민.
제 2 장 WML 시뮬레이터 및 무선인터넷 서버 설치
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
Cross Compiler 설치.
제9장 네트워크 성능 및 품질 평가 과 목 : 네트워크 설계 및 실험 조 명 : 1 조
Wireless Java Programming
환경 : Windows7 64bit 버전 : apache-ant-1.9.7
Grade Server Team14. Attention Seeker
Cross Compiler를이용한 커널 컴파일 및 포팅
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
솔라리스10 3장. 솔라리스 패키지 관리.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
Device Driver 임베디드 시스템 I.
Go Lang 리뷰 이동은.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
툴 설치 가이드 PrimeTime SynopsysMentor.
툴 설치 가이드 Formality SynopsysMentor.
Endnote 이용 안내 2010 중 앙 도 서 관.
웹디자인
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
PL/SQL 코드 생성 및 수행 1 여러가지 환경 DOS에서 sqlplus Windows에서의 sqlplusw
리눅스 커널 프로그래밍 환경 구축 IT EXPERT 리눅스 커널 프로그래밍 Author : Byungki Kim
Packet sniffing 응용 레벨이 아닌 네트워크 디바이스 레벨에서의 데이타을 얻는 것 네트워크 상의 트래픽을 분석
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
OpenCV 설정 2.21 만든이 딩딩.
암호학 응용 Applied cryptography
05. General Linear List – Homework
3. 모듈 (5장. 모듈).
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
3. 윈도우 미디어 플레이어 6.4 옵션(환경) 설정 변경
Platform Builder 사용법.
7 생성자 함수.
JAVA 프로그래밍 16장 JNLP.
BoardGame 보드게임 따라가기.
Presentation transcript:

Network Simulator 2 성균관대학교 모바일컴퓨팅 연구실 http://csn.skku.ac.kr 안 혜환 hyehwan@ece.skku.ac.kr

목차 NS-2 역사 NS-2 설치 방법 NS-2 사용 목적 NS – 2 동작 원리 더욱 간단한 NS-2 동작원리 왜 2 가지 언어를 사용하는가? NS, Otcl, C++ 와의 관계 간단한 OTcl 과 복잡한 C++ NS, Otcl, C++ 의 디렉토리 위치 소스 코드 상속 구조 새로운 요소 추가시 컴파일 방법 이벤트 스케쥴러 간단한 예제 간단한 시뮬레이션 코드 구성방식 시뮬레이션 영상툴 NAM 성능평가를 위한 파일 추출 및 파일 내부 성능평가를 위한 파일로 부터 그래프 그리기 1/2 성능평가를 위한 파일로 부터 그래프 그리기 2/2 참고 자료

NS-2 역사 1989 년 REAL network simulator 의 세부연구로 시작. 여러 기관이 참여하는 (LBL, Xerox, PARC, UCB, USC/ISI) VINT (Virtual InterNetwork Testbed ) 프로젝트 를 통해 DARPA 의 지원으로 1995 NS 개발 시작 현재 NS 개발은 CONSER (Collaborative Simulation for Education and Research) 과 함께 NSF 를 통해 SAMAN (Simulation Agumented by Measurement and Analysis for Networks) 과 함게 DARPA 를 통해 지원하고 있다.

NS-2 설치 방법 [데모 시청] Windows, Linux, FreeBSD 등등 여러 플렛폼을 지원하나 리눅스를 권장. 다운받을화일 “ns-allinone-2.xx.tar.gz” 를 적당한 위치에 압출을 푼다. 압축을 푼 곳에 가서 “./install” 이라고 입력함으로 인해서 설치를 완료. GCC 버전 문제로 컴파일 에러가 날수 있으니 리눅스 에 설치시 wowlinux 7.3 이나 레드헷 7.3 버전에는 설치하는 것을 권장함 .

NS-2 사용 목적 왜 NS-2 를 사용하는가 ? - 공식적인 기관이나 단체가 연합하여 제작 - 매우 신뢰성 있는 성능평가 큰 사이즈의 네트워크 성능평가 - 실제로 성능평가 할 경우 매우 많은 경비와 시간이 소모 되나 시뮬레이션 툴을 사용함으로 인해서 경비절감 새로운 프로토콜 성능평가 - 새로운 프로토콜의 검증 - 자신의 새로운 아이디어 성능평가

NS – 2 동작 원리 1/2 Scheduling Otcl (내부동작) Event Otcl (외부동작) C++ (내부동작) #Create a simulator object set ns [new Simulator] #Create four nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] #Create links between the nodes $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail #Set Queue Size of link (n2-n3) to 10 $ns queue-limit $n2 $n3 10 #Setup a TCP connection set tcp [new Agent/TCP] $tcp set class_ 2 $ns attach-agent $n0 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1 #Schedule events for the CBR and FTP agents $ns at 0.1 "$cbr start" $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" $ns at 4.5 "$cbr stop" #Call the finish procedure after 5 seconds of simulation time $ns at 5.0 "finish" #Run the simulation $ns run Otcl (내부동작) Event Otcl (외부동작) C++ (내부동작)

NS – 2 동작 원리 2/2 코드 작성시 반드시 알고 있어야 할 동작 원리 ns 내부에서 Thread 등의 사용 금지 Windows 코드 동작원리 NS 와 OS 간 코드 동작원리

더욱 간단한 NS-2 동작원리 확률 분포에 따른 주기적 패킷 생성 트래픽 생성기 코드 위치 Ns-allinonexxx/ ns-2.xx/tcl/lib/ ns-source.tcl

왜 2 가지 언어를 사용하는가? C++ 사용 이유 [ 패킷 처리] - 패킷 처리 프로세서 구현 - 자세한 프로토콜 구현 [ OSI 7 구현 ] - Otcl 에 비해서 매우 빠른 처리 속도 Otcl 사용 이유 [ 실시간 이벤트 처리 ] - 이미 구현된 C++ 객체를 사용 하는것 (ex: ns-mobilenode.tcl 부록 1) - 다양한 파라미터 설정 (패킷 사이즈 등등) - 다양한 설정화일 가짐 (노드 콘피그 등등) - 네트워크 요소를 사용한 모델을 다양하게 변화 - C++ 에 비해서 매우 느린 처리속도 어려움 쉬움

NS, Otcl, C++ 와의 관계

간단한 OTcl 과 복잡한 C++ [전지 분석 자료 참고] NODE.cc #include <stdio.h> #include <stdarg.h> #include "address.h" #include "config.h" #ifdef HAVE_STL #include "nix/nixnode.h" #endif //HAVE_STL #include "node.h" static class LinkHeadClass : public TclClass { public: LinkHeadClass() : TclClass("Connector/LinkHead") {} TclObject* create(int, const char*const*) { return (new LinkHead); } } class_link_head; LinkHead::LinkHead() : net_if_(0), node_(0), type_(0) { } int32_t LinkHead::label() { if (net_if_) return net_if_->intf_label(); printf("Configuration error: Network Interface missing\n"); exit(1); // Make msvc happy return 0; ………………….. #Create a simulator object set ns [new Simulator] #Create four nodes set n0 [$ns node] ..................... 아이디어 삽입 네트웍구성 Otcl (쉬움) X O C++ (어려움)

NS, Otcl, C++ 의 디렉토리 위치 ☞ 2 가지 기능을 가지는 TCL 의 위치 1. 시뮬레이션 구성

소스 코드 상속 구조 TclObject Scheduler NsObject Node Process Connector Classifier Application FTP Queue Delay Agent Trace DropTail RED TCP Enq Deq Drop AddrClassifier PortClassifier Reno SACK Vegas

새로운 요소 추가시 컴파일 방법 xxx.cc C++ 코드 추가시 - “ns-allinone2.xx/ns-2.xx/Makefile” 내부에 “OBJ_CC = xxx.o” 추가 xxx.h header 코드 추가시 - 추가 한후 새로운 패킷 타입이 다루는 자료구조 선언 xxx.tcl OTcl 라이브 러리 추가시 - “ns-allinone2.xx/ns-2.xx/Makefile” 내부에 “NS_TCL_LIB=xxx.tcl” 추가 새로운 Application 추가시 - “ns-allinone2.xx/ns-2.xx/packet.h” 내부에 “PT_NEW” 패킷 타입 추가

이벤트 스케쥴러 Create event scheduler Schedule events (OTcl) set ns [new Simulator] Schedule events (OTcl) OTcl: $ns at <time> <TCL_command> C++: Scheduler::schedule(h,e, delay) - 2가지 용도로 사용됨 - 독립된 노드 실행 - Thread 대치 용도 Obtain simulation time OTcl: $ns now C++: Scheduler::clock() Start scheduler $ns run

간단한 예제 (데모 시청] 스케줄러 생성 에이젼트 생성 노드생성 트레이스 에플리 케이션 생성 링크생성 시뮬레이션 종료 에이젼트 간단한 예제 (데모 시청] 스케줄러 생성 set null0 [new Agent/Null] $ns attach-agent $n3 $null0 set null1 [new Agent/Null] $ns attach-agent $n1 $null1 $ns connect $udp0 $null0 $ns connect $udp1 $null1 $ns at 1.0 "$cbr0 start" $ns at 1.1 "$cbr1 start" set tcp [new Agent/TCP] $tcp set class_ 2 set sink [new Agent/TCPSink] $ns attach-agent $n0 $tcp $ns attach-agent $n3 $sink $ns connect $tcp $sink set ftp [new Application/FTP] $ftp attach-agent $tcp $ns at 1.2 "$ftp start" $ns at 1.35 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" puts [$cbr0 set packetSize_] puts [$cbr0 set interval_] $ns at 3.0 "finish" proc finish {} { global ns f nf $ns flush-trace close $f close $nf puts "running nam..." exec nam out.nam & exit 0 } $ns run set ns [new Simulator] $ns color 0 blue $ns color 1 red $ns color 2 white set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set f [open out.tr w] $ns trace-all $f set nf [open out.nam w] $ns namtrace-all $nf $ns duplex-link $n0 $n2 5Mb 2ms DropTail $ns duplex-link $n1 $n2 5Mb 2ms DropTail $ns duplex-link $n2 $n3 1.5Mb 10ms DropTail $ns duplex-link-op $n0 $n2 orient right-up $ns duplex-link-op $n1 $n2 orient right-down $ns duplex-link-op $n2 $n3 orient right $ns duplex-link-op $n2 $n3 queuePos 0.5 set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 set udp1 [new Agent/UDP] $ns attach-agent $n3 $udp1 $udp1 set class_ 1 set cbr1 [new Application/Traffic/CBR] $cbr1 attach-agent $udp1 에이젼트 생성 노드생성 트레이스 에플리 케이션 생성 링크생성 시뮬레이션 종료 에이젼트 생성 시뮬레이션 시작

간단한 시뮬레이션 코드 구성방식 스케쥴러 생성 노드 생성 트레이스 파일 생성 링크 생성 에이전트 생성 에플리케이션 생성 시뮬레이션 이벤트 생성 시뮬레이션 시작 시뮬레이션 종료 함수 생성

시뮬레이션 영상툴 NAM [데모 시청] NAM 파일 생성 …….. set f [open out.tr w] $ns trace-all $f set nf [open out.nam w] $ns namtrace-all $nf …….. NAM 파일을 통한 시뮬레이션 영상 재생 nam out.nam

성능평가를 위한 파일 추출 및 파일 내부 $ns trace-all [open out.tr w]

성능평가를 위한 파일로 부터 그래프 그리기 1/2 기존 방법 스크립트를 이용하여 tr 파일로 부터 그래프 파라미터 추출 스크립트후 나온 결과를 xgraph 사용하여 표현 예제 cat out.tr | grep " 2 3 cbr " | grep ^r | column 1 10 | awk '{dif = $2 - old2; if(dif==0) dif = ; if(dif > 0) {printf("%d\t%f\n", $2, ($1 - old1) / dif); old1 = $1; old2 = $2}}' > jitter.txt

성능평가를 위한 파일로 부터 그래프 그리기 2/2 [데모 시청] 성능평가를 위한 파일로 부터 그래프 그리기 2/2 [데모 시청] 새로운 방법 Matlab 6.0 이상 에서 운영되는 새로나온 tracegraph202 라는 툴 사용 (단점 : 1000 라인 이상 트레이스 파일 처리 못함) 자료 위치 http://www.geocities.com/tracegraph/

참고 자료 Ns Manual - http://www.isi.edu/nsnam/ns/ns-documentation.html Tcl - uist course: http://www.cs.huji.ac.il/~uist OTcl http://www.isi.edu/nsnam/otcl/README.html NS-2 - http://www.isi.edu/nsnam/ns/tutorial/index.html - http://www.isi.edu/nsnam/ns/ Trace Tool - http://www.geocities.com/tracegraph/

감사 합니다. Q & A

부록 1. ns-mobilenode.tcl