네트워크 설계 및 실험 실습 제목 : 5 장 트래픽 생성과 추적 파일 분 석 1
보고서 목차 1. 실습 목적 2. 실습 환경 3. 실습 내용 및 방법 4. 실험 전 학습준비 5. 실습 결과 및 고찰 6. 기타 - 참여원 활동내역 - 실습결과물
1. 실습목적 - NS-2 에서 트래픽을 생성하는 방법과 네트워크의 각 노드와 링크를 지 나가는 패킷을 담은 파일인 추적 (trace) 파일을 분석하는 방법을 파악 하여 네트워크의 성능 및 품질 평가에 활용하고자 한다. ◎ 주된 실습 내용 - ns-2 에서 링크와 큐 (queue) 구조 및 추적파일 포맷 이해 - ns-2 에서 트래픽을 생성하는 기본 방법 네 가지와 ftp 방법 사용 - tracefile 제작. 확인용 c 프로그램 작성 - ns-2 의 추적파일 분석 : 동적속도, 패킷손실율 및 ftp 업로드 속도 계산
2. 실습환경 기종 및 사양 : AMD Athlon(tm) 64 X2 Dual Core Processor GHz, 1.86GB RAM 운영체제 : Microsoft Windows XP Professional Version 2002 Service Pack 12 gcc, gdb, ns-2( 버전 2.30), awk, gnuplot, 셀 (shell) 프로그래 밍 Simtl
3. 실습내용 및 방법 순번진행 사항기타 사항 1 Ns-2 의 링크, 큐, ftp 방법 등의 자료 준비 확인자료 ( 준비사항 ) 확인 2 사전 준비된 자료의 유용한 정보 추출 및 공유자료 검토 및 공유 3 추출된 자료를 서로 간의 연계자료 연계 4 프로그램 실행 및 결과물 추출실습 5 산출된 결과 및 준비된 자료를 바탕으로 보고서 작성보고서 작성 6 실습 완료완료
4. 실습 전 학습 준비 (1) otcl 과 샘플 tcl 프로그램 이해 (2) ns-2 에서 링크와 큐 (queue) 구조 및 추적 (trace) 파일 포 맷 공부 (3) ns-2 에서 트래픽을 생성하는 기본 방법 네 가지와 ftp 사 용 방법 공부 (4) 패킷 drop 비율 ( 손실율 ) 및 ftp 속도 계산 awk 프로그램 작성 (5) shell 프로그램 참조 (do_chap5) (6) 실험절차에 따른 선행실험
(1) otcl 과 샘플 tcl 프로그램 이해 1)Otcl 개요 otcl 은 MIT 에서 구현한 Object tcl 을 말하는 것으로 Tcl/Tk(X-Window Toolkit) 를 오브젝트 기반 프로그래밍을 위해 확장한 것이다. otcl 구조의 특징은 tcl 과 같이 철저하게 동적으로 확장할 수 있도록 설계되었으며, 다른 언어를 포함 하기 보다는 tcl 문법과 개념을 바탕으로 개발된 것으로써 강력한 오브젝트 프로그래밍 시스템에 비해 간결하고 이식이 가능한 구조를 갖고 있다 키워드 -Class: class 정의 -instproc: class 의 메소드 정의 -instvar: class 의 멤버 변수정의 -self: 자신을 가리키는 객체 ( this 와 같음 ) -next: next-most shadowed method( 자신에서 가장 가까운 instance procedure) -new: 객체 생성후 레퍼런스 리턴 (c++ new 와 유사함 )
(2) ns-2 에서 링크와 큐 (queue) 구조 및 추적 (trace) 파일 포맷 1) 링크 단방향 링크 (Simplex Link) 단방향 링크는 한쪽 방향으로만 데이터를 보낼 수 있는 링크의 형태로 ns 명령과 옵션에 의 해서 대역폭, 전송지연, 링크의 큐 형태가 결정된다. 노드 사이에 임의의 대역폭과 전송지연, 그리고 해당 링크의 큐 형태를 결정하는 ns 명령어는 다음과 같은 형태를 갖는다. - $ns simplex-link node1 node2 bw delay queue_type 위 명령은 node1 과 node2 사이에 대역폭 bw, 전송지연 delay, 큐는 queue_type 에 의해서 선 택되는 큐 (queue) 의 형태를 갖는 단방향 링크를 생성하도록 한다. Queue_type 에 의해 정의 될 수 있는 큐 형태로는 Drop-Tail, RED, CBQ, WFQ, SFQ 등이 있으며, 앞의 큐 형태에서 변 화된 큐도 사용된다. 일반적으로 ns 시뮬레이터에는 각 옵션에 대한 디폴트 값이 정해져 있 다. 대역폭의 디폴트 값은 1.5Mbits/sec 로 정의되어 있고 시간지연의 디폴트 값은 100ms 로 정해져 있지만, 이러한 옵션은 사용자가 원하는 값으로 변화시켜 사용할 수 있다. ( 그림 1) 은 노드 n0 와 노드 n1 사이에 대역폭이 8Mbps, 전송지연이 0.1ms, 그리고 drop-tail 큐 형태를 갖는 단방향 링크를 설정하는 예를 보여주고 있다.
양방향 링크 (Duplex Link) 한쪽 방향으로만 데이터를 보낼 수 있는 단방향 링크와는 달리 양쪽 방향으 로 데이터를 전송할 수 있는 링크를 양방향 링크라고 정의한다. 링크 특성을 정의하기 위해 사용되는 옵션은 단방향 링크에서와 같다. 양방향 링크를 정 의하기 위해 사용되는 명령어는 다음과 같다. - $ns duplex-link node1 node2 bw delay queue_type 위 명령은 node1 과 node2 사이에 대역폭 bw, 전송지연 delay, 큐는 queue_type 에 의해서 선택되는 큐 형태를 갖는 양방향 링크를 생성하도록 한다. 각 옵션에 대한 디폴트 값과 큐 형태는 단방향 링크의 경우와 동일하다. ( 그림 2) 는 노드 r0 와 노드 r1 사이에 대역폭이 800Kbps, 전송지연이 100ms, 그리고 drop-tail 큐 형태를 갖는 양방향 링크를 설정하는 예를 보여주고 있다.
2) 큐 (queue) 큐란 ? 각 노드들 사이 link 구간의 문이라 봐도 무관. 즉 상단 그림에서 node I 와 j 사이에 링크 i-j 의 양 끝 부분 ( 노드 內 연결된 부분 ) 으로 노드 I 에서 packet 이 노드 j 를 거치는 과정상 패킷에 발생된 event 를 구체적으로 표현 해줄 수 있다 3) trace 파일 포맷 ns-2 에서 각 packet 들이 각 node 와 큐를 지나면서 발생된 사건 (event) 정보를 하 나의 레코드내에 관리하며 예를 들면 하단의 그림과 같다. 열을 기준으로 봤을 때, 1 열은 이벤트의 종류 ( 상단의 파란글씨 ), 2 열은 이벤트 발 생시간, 3 열은 송신노드 번호, 4 열은 수신노드 번호, 5 열은 패킷 종류, 6 열은 패킷 크기, 7 열은 구분자, 8 열은 흐름 식별자, 등등 이 된다
(3) ns-2 에서 트래픽을 생성하는 기본 방법 네 가 지와 ftp 사용 방법 1) exponential ON/OFF traffic ON 동안은 패킷크기 (size) 에 정의된 크기의 패킷을 속도 (rate) 에 정의된 데이 터 전달속도로 동일한 시간 간격으로 발생시키고, OFF 동안은 트래픽 발생 을 중단한다. ON 과 OFF 의 지속시간은 서로 독립적인 지수분포를 따르며, 이 들의 평균은 각각 burst 와 idle 에 정의된 값으로 설정된다. 아래 그림에서 볼 때 평균 burst 시간 =1/α, 평균 idle 시간 =1/β 이 된다.
2) Pareto ON/OFF traffic exponential ON/OFF traffic 과 동일하나 ON 과 OFF 의 지속시간이 서로 독립 적인 파레토 분포를 따르며, 이들의 평균은 각각 burst 와 idle 값에 의해 결 정된다. 파레토 분포는 지수분포보다 tail 분포의 값이 큰 특징을 갖는데, shape 에 의해 파레토 분포의 구체적 특성이 결정된다. 그림 5.3 에서 shape=α 가 된다. ON 동안은 패킷크기 (size) 에 정의된 크기의 패킷을 속도 (rate) 에 정의된 데이터 전달속도로 동일한 시간 간격으로 발생시키고, OFF 동안은 트래픽 발생을 중단한다.
3) CBR traffic 패킷크기 (size) 에 정의된 크기의 패킷을 속도 (rate) 에 정의된 데이터 전달속도로 동일한 시간 간격으로 발생시킨다. 다시 말해서 exponential ON/OFF 에서 OFF 구간이 없는 경우와 동일하다. 참고로 CBR traffic 하에서 발생 패킷간 시간 간격은 일정하게 또는 램덤하게 할 수 있다. 4) Tracefile traffic 실제 측정한 트래픽 데이터로 인가할 트래픽을 생성하는 방법이다
5) 기본 트래픽 흐름 생성 (4 가지 ) 이번 실험을 위해 4 가지 기본 트래픽 흐름 ( 세션 ) 생성 함수를 다음과 같이 procedure 로 구성하였다 ns 는 simulator object, src 와 dst 는 발. 착신 노드번호, burst 와 idle 은 트 래픽이 발생 / 중단되는 구간의 평균 시간간격, size 는 패킷의 크기, rate 는 평균 데이터 전달 속도, 그리고 fid 는 흐름 id 로 nam 에서 흐름 의 색깔을 구분하기 위한 것이다 proc create_exp_flow {ns src dst burst size idle rate fid } proc create_pareto_flow {ns src dst burst size idle rate shape fid} proc create_cbr_flow {ns src dst size rate fid} proc create_tracefile_flow {ns src dst tracefile fid}
6) ftp 흐름생성 ns-2 에서는 ftp 와 telnet 응용을 제공하고 있는데, 본 과목에서는 ftp 를 사용하여 다운로드, 업로드 속도를 측정한다. ftp 흐름 ( 세션 ) 생성 함수를 다음과 같이 procedure 로 구성하였다. proc create_ftp_flow {ns src dst fid} 여기서 ns 는 simulator object, src 와 dst 는 발. 착신 노드번호이다. fid 는 흐름 id 로 nam 에서 흐름의 색깔을 구분하기 위한 것이다. 프로그램 코드와 사용 예는 샘플 tcl 프로그램을 참조하기 바란다. 참고로 ns-2 에서 TCP 가 수용할 수 있는 최대 패킷크기 packetSize_ 는 1000 바이트의 기본값을 갖는다. 이 값을 어떤 값, 예로 1500 바이트로 변경하려면 다음과 같이 한다. Agent/TCP set packetSize_ 1500
5. 실습 결과 및 고찰 1) 샘플네트워크 생성 및 일반 트래픽 생성
(2) 큐 크기 조정 및 패킷 DROP 확인
(3) 동적 트랙픽 속도 계산 및 그래프 작성
(4) 패킷 DROP 율 계산 (5) ftp uproad 속도 계산
조원역할 및 활동내역 이연화 ( 조장 ) ns-2 에서 트래픽을 생성하는 기본 방법 네 가지 학습과 보고 서 작성 및 발표 김성태패킷 drop 비율 ( 손실율 ) 및 ftp 속도 계산 awk 프로그램 작성 임시목 ftp 사용 방법과 shell 프로그램 참조 최서수 ns-2 에서 링크와 큐 (queue) 구조 및 추적 (trace) 파일 포맷 학습 김진현 otcl 과 샘플 tcl 프로그램 이해 참여원 활동 내역