Ubiquitous Computing Lab NS-3 Basic 박성진
C ontents 2 1. Starting ns-3 3 II. Key abstraction 6 III. Logging 8 IV. Command Line Argument 10 V. TCP in ns-3 11 VI. Term Project 23
Starting ns-3 Ubiquitous Computing Lab ns-3 는 ? Discrete event network simulator 실제 환경과 매우 유사한 가상의 네트워크를 구축 교육과 연구 목적으로 오픈 소스로 제공 계층 구조를 가지며 패킷 기반의 통신 프로토콜 3
Starting ns-3 Ubiquitous Computing Lab 리눅스 환경 구축 (windows 에서 사용할 경우 ) virtual machine : VirtualBox, Vmware ubuntu 최신 버전 (v.14.04) 설치 ns-3 설치 홈페이지 ( 최신 버전 (ns ) download 후에 압축풀기 빌드 테스트 4
Starting ns-3 Ubiquitous Computing Lab 실행하기 5
Key abstraction Ubiquitous Computing Lab Node Computing device, host, end system Represented in C++ by the class Node Application Ns-3 applications run on Nodes to drive simulations Represented in C++ by the class Application ex) UdpEchoClientApplication, UdpEchoServerApplication Channel One connects a Node to an object representing a communication channel Represented in C++ by the class Channel ex) CsmaChannel, PointToPointChannel, WifiChannel 6
Key abstraction Ubiquitous Computing Lab Net Device NIC(Network Interface Card) Represented in C++ by the class NetDevice a Node may be connected to more than one channel via multiple NetDevices Topology Helpers Combine many distinct operations into an easy to use Create a NetDevice, add a Mac address Install that net device on a Node, configure the node’s protocol stack Connect the NetDevice to a Channel 7
Logging Ubiquitous Computing Lab Define a log component NS_LOG_COMPONENT(name); Enable a log component LogComponentEnable(name, level); Log Type LOG_ERROR : log error messages LOG_WARN : log warning messages LOG_DEBURG : log relatively rare, ad-hoc debugging messages LOG_INFO : log informational messages about program progress LOG_FUNCTION : log a message describing each function called LOG_LOGIC : log messages describing logical flow LOG_ALL : log everything mentioned above 8
Logging Ubiquitous Computing Lab Log component instances ml ml 9
Command Line Arguments Ubiquitous Computing Lab OverridingDefault Attributes declare the command line parser CommandLine cmd; cmd.parse (argc, argv);./waf --run“scratch/first --ns3::PointToPointNetDevice::DataRate=5Mbps” Hooking Your Own Values uint32_t nPackets = 1; CommandLine cmd; cmd.AddValue(“nPackets”, “Number of packets to echo”, nPackets); cmd.parse (argc, argv);./waf --run“scratch/first --nPackets=2” 10
TCP in ns-3 Ubiquitous Computing Lab Sending procedure of TCP examples/tcp/tcp-large-transfer.cc (Ln 207) Send src/internet/model/tcp-socket-base.cc (Ln 618) SendPendingData 11
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-socket-base.cc (Ln 2120) SendDataPacket 12
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-socket-base.cc (Ln 2007) TCP header and option 13
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-socket-base.cc (Ln 2040) SendPacket 14
TCP in ns-3 Ubiquitous Computing Lab Congestion control of TCP src/internet/model/tcp-l4-protocol.cc (Ln 65) 15
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-tahoe.cc (Ln 104) 16
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-tahoe.cc (Ln 113) Slow start Congestion avoidance 17
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-tahoe.cc (Ln 137) Fast retransmit 18
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-tahoe.cc (Ln 157) Time out 19
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-reno.cc (Ln 165) Fast recovery 20
TCP in ns-3 Ubiquitous Computing Lab src/internet/model/tcp-reno.cc (Ln 123) Fast recovery 21
TCP in ns-3 Ubiquitous Computing Lab TCP comparison in ns-3 examples/tcp/tcp-variants-comparison.cc(Ln 223) 22
Term Project Ubiquitous Computing Lab TCP 프로토콜 제안 및 성능 비교 시나리오 (examples/tcp/tcp-variants-comparison.cc) 시나리오 파일을 scratch 폴더로 복사 P2P 통신 (source -> gateway -> sink) MTU(Maximum Transmission Unit) : 400 총 전송 시간 : 100 초 Source Gateway Sink Flow1 Flow2 23
Term Project Ubiquitous Computing Lab TCP 프로토콜 제안 및 성능 비교 Burst Error Model 에러 발생 비율을 설정 24
Term Project Ubiquitous Computing Lab TCP 프로토콜 제안 및 성능 비교 에러 모델 참조 : src/network/utils/error-model.cc 25
Term Project Ubiquitous Computing Lab TCP 프로토콜 제안 및 성능 비교 Flow monitor 26
Term Project Ubiquitous Computing Lab TCP 프로토콜 제안 및 성능 비교 성능 비교 : 실패한 패킷의 개수, 총 지연 시간 27
Term Project Ubiquitous Computing Lab 소스코드 및 헤더 파일 추가 src/internet/wscript 파일에 작성 28
Term Project Ubiquitous Computing Lab 소스코드 및 헤더 파일 추가 src/internet/wscript 파일에 작성 29
Term Project Ubiquitous Computing Lab 채점 방식 완성도 (30) 제안한 프로토콜이 더 나은 성능을 보이는가 ? 프로토콜 분석 (30) 프로토콜에 대한 이해 및 분석이 제대로 이루어졌는가 ? 역할 분담 (10) 역할 분담이 고른가 ? 구성원들의 참여도가 고른가 ? 보고서 및 코드 주석 (20) 발표 (10) 30
Term Project Ubiquitous Computing Lab 일정 조원 구성 : 3 인 ( 단, 조 편성이 안되었을 경우 임의로 편성, 메일로 통지 ) 문의 사항 : 박성진, 조구성 ~ 11 월 10 일 구현 최종 발표 보고서 및 코드제출 기말고사 1 주일 이후 31
Q&A Thank you 32