기본 설정 값
Mac/802_11 set CWMin_         31
Mac/802_11 set CWMax_         1023
Mac/802_11 set SlotTime_      0.000020        ;# 20us
Mac/802_11 set SIFS_          0.000010        ;# 10us
Mac/802_11 set PreambleLength_        144             ;# 144 bit
Mac/802_11 set PLCPHeaderLength_      48              ;# 48 bits
Mac/802_11 set PLCPDataRate_  1.0e6           ;# 1Mbps
Mac/802_11 set RTSThreshold_  0               ;# bytes
Mac/802_11 set ShortRetryLimit_       7               ;# retransmittions
Mac/802_11 set LongRetryLimit_        4               ;# retransmissions

임의 설정 값
Mac/802_11 set basiccRate_ 1Mb
Mac/802_11 set dataRate_ 11Mb
Mac/802_11 set RTSThreshold_ 500


런타임 로그 값
rts frame size = 44
rts frame tx time = 0.000352

cts frame size = 38
cts frame tx time = 0.000304

ack frame size = 38
ack frame tx time = 0.000304

TCP Data(MSS=1460)
data packet size = 1520
data frame size = 1578
data frame tx time = 0.001322

TCP ACK
data packet size = 40
data frame size = 98
data frame tx time = 0.000246


그 동안 뺑이치면서 계산한 건 뭐냐....
Posted by 배트
,

네트워크 시뮬레이터

Network Simulators

 

키워드: Networks simulators, 네트워크 시뮬레이터, NS-2, NS2, OPNET, GloMoSim, TOSSIM, NetSim

 

네트워크 시뮬레이터(Network Simulators)

네트워크 시뮬레이터는 실제 동작을 관찰하지 않고, 네트워크의 동작과 영향을 예측하고 분석하기 위한 장치 또는 소프트웨어다. 엔지니어는 이를 이용해서 DDoS와 같이 실제 일어나기 어려운 상황을 구성하거나, 대량의 센서 노드와 같이 비싼 실험 환경을 에뮬레이트하여 그 영향을 예측한다. 특히 새로운 네트워크 프로토콜을 테스트하거나, 기존의 프로토콜에 대한 환경의 영향을 테스트하는데 주로 사용한다.

현상을 검증하는 데는 수학적 분석, 실제 측정, 시뮬레이션 세 가지 접근 방식이 있다. 이 방식을 평가하는 기준은 현실성, 비용, 구현의 세 가지를 든다. 시뮬레이션은 이 세 가지 기준으로 봤을 때, 세 가지 방식 중에서 평균적으로는 가장 우수하다. 또한 시뮬레이션 방식은 연속 시간, 이산 시간, 이산 이벤트 방식으로 나눌 수 있는데, 대부분의 시뮬레이터가 이산시간 이벤트 방식을 이용한다.

일반적인 네트워크 시뮬레이터는 넓은 범위의 네트워크 기술을 포함하고, 노드와 링크를 기본 단위로 하여 복잡한 환경을 구축한다. 계층적인 네트워크 환경을 구성할 수도 있고, PC, 허브, 브릿지, 라우터, 무선 노드, 광케이블, 동축케이블 등의 구성요소를 사용할 수도 있다. 시뮬레이터의 구성요소는 일반적으로 스케쥴러, 프로토콜, 노드, 링크, 패킷으로 이루어져 작은 네트워크부터 대형 네트워크까지 유연하게 구성할 수 있다. 일부 시뮬레이터는 초대형 네트워크 환경을 지원하기도 하고, 어떤 시뮬레이터는 특정 네트워크 장비를 CPU 명령어 단위까지 에뮬레이션하여 아주 미세한 관찰을 가능하게 해주기도 한다.

 

네트워크 시뮬레이터의 종류

l  NS-2 (The Network Simulator -2)
NS-2는 연구용으로 개발된 오픈소스 시뮬레이터다. 현재 연구용으로는 가장 많이 사용되고 있으며, 다양한 분야의 인력들의 참여로 인해 성능과 품질이 우수하고, 다양한 기능을 지원한다. 이산 이벤트 시뮬레이션 방식을 사용하였고, 유무선을 모두 지원하고, 패킷 단위로 동작하며, 필요한 대부분의 프로토콜 레이어를 구현하였다. 오픈소스답게 기능과 네트워크 구성요소들이 철저히 모듈화되어 있어 일반 사용자도 기능을 수정하거나 새로운 프로토콜을 추가하기가 쉽다. 현재 NS-3 버전까지 나와있지만 아직까지 훨씬 많은 사람들이 NS-2를 사용하고 있다. 유닉스 환경의 대부분의 OS 플랫폼을 지원하고, 시뮬레이션 환경 구성에는 TCL이라는 스크립트 언어를 사용하며, NAM(NS AniMator) XGraph 같은 시각화 도구를 제공한다.

l  OPNET
OPNET은 최초의 상업 네트워크 시뮬레이터로써, 현재도 상용 분야에서 가장 높은 점유율을 차지하고 있다. OPNET은 객체 지향적 모델링을 지원하며, 프로세스 모델링, 노드 모델링, 장비 모델링, 네트워크 모델링의 흐름을 따른다. 또한 잘 짜여진 FSM(Finite State Machine)은 세부단계까지 제어가 가능해 거의 모든 상황을 재현할 수 있다. OPNET은 기능 제약 또는 분야에 따라 여러 버전이 존재하며, 자유도가 높은 버전은 모델링 할 수 있는 구성요소들의 소스 코드를 완전히 개방하여 사용자의 자유도를 최대로 보장하고 있다. 또한 현존하는 거의 모든 프로토콜을 지원하며, 표준장비의 라이브러리를 제공하고, 시뮬레이션 환경 개발에서 분석까지의 전 과정을 GUI 도구를 통해서 편리하게 할 수 있다. 이는 대부분의 윈도우 플랫폼과 솔라리스 플랫폼을 지원한다.

l  GloMoSim
GloMoSim은 대형 시뮬레이션 환경을 위해 개발되었다. 이는 병렬 컴퓨팅을 위한 이산 이벤트 컴퓨팅 시뮬레이터인 Parsec을 이용하여 개발하였다. 다른 시뮬레이터와 유사하게 OSI 계층에 따라 프로토콜을 모듈화하여 개발하였으며, 현재는 무선 네트워크만 지원한다.

l  TOSSIM
TOSSIM(TinyOS Simulator)은 센서 네트워크에 사용하는 못(Mote) OS TinyOS를 에뮬레이션하여 어플리케이션의 동작과 하드웨어의 영향을 분석하는 소프트웨어이다. 이는 엄밀한 네트워크 시뮬레이터의 범주에서는 벗어난다. 이는 OS CPU에 내리는 명령 하나까지 에뮬레이션 하기 때문에 매우 정밀한 분석이 가능하다.

l  NetSim
NetSim은 분석 도구가 아니라 네트워크 설정을 학습하기 위한 시뮬레이션 소프트웨어이다. 사용자와 상호작용을 위해 시뮬레이션은 실시간으로 이루어진다. 전송 프로토콜, MAC 프로토콜, 라우팅 프로토콜은 물론이고 스위치, 라우터, AP 등의 장비를 시뮬레이션할 수 있다.

 

참고자료

OPNET Modeler and Ns-2: Comparing the Accuracy Of Network Simulators for Packet-Level Analysis using a Network Testbed

http://privatewww.essex.ac.uk/~fleum/weas.pdf

 

The Network Simulator - ns-2

http://www.isi.edu/nsnam/ns/

 

OPNET Technologies

http://www.opnet.com/

 

GloMoSim

http://pcl.cs.ucla.edu/projects/glomosim/

 

TOSSIM

http://docs.tinyos.net/index.php/TOSSIM

Posted by 배트
,
$defaultRNG seed 99

이 문장 하나로 간단히 시뮬레이션 전체의 랜덤 시드를 변경할 수 있다.

$defaultRNG seed 0

시드 값을 0으로 주면, 현재 시간을 시드 값으로 사용한다.
Posted by 배트
,
Set node address in "Node/MobileNode instproc add-interface" in ns-mobilenode.tcl:
$mac node-addr [AddrParams addr2id [$self node-addr]]

Add to Mac class:
int node_addr_;
inline int node_addr() { return node_addr_; }

Read parameter in Mac::command()
if (strcmp(argv[1], "node-addr") == 0) {
     node_addr_= atoi(argv[2]);
     return TCL_OK;
}
(이거 잘 넣어야 함, 소스를 잘 봐가면서 첫번째 if에 넣어야 함-)

Get mobilenode instance:
MobileNode *mnode_ = (MobileNode *) Node::get_node_by_address(node_addr());


출처 :
FW: [ns] How to access MobileNode at Mac-802_11.cc ?
http://mailman.isi.edu/pipermail/ns-users/2005-May/049559.html
Posted by 배트
,
혹시 필요한 사림이 있을까봐.

Mac802_11 * mac = (void*)((BiConnector*)ifhead_.lh_first->uptarget())->uptarget();

How to access mac layer from mobile node object.
I'm not sure that it works with wired nodes.
Posted by 배트
,

ns-2 Full-TCP and Wireless

This is a hack to allow the use of Full-TCP in wireless simulations using DSDV routing. The basic problem is that the IP header is added at the wireless network layer and also accounted for at the Full-TCP transport layer. This code just checks a flag to see if the IP header should be added at the network layer.

To use this, just add Agent/DSDV set fulltcp_ 1 to your TCL script (before you do node-config) once you've made the following changes to the ns source and re-compiled.

Files Changed

  • dsdv/dsdv.cc
  • dsdv/dsdv.h
  • tcl/mobility/dsdv.tcl

    Note: These diffs are based on the ns-2.29 release.

    dsdv/dsdv.cc

    Index: dsdv.cc
    *** dsdv.cc     13 Jul 2005 03:51:24 -0000      1.25
    --- dsdv.cc     7 Mar 2006 15:26:16 -0000
    ***************
    *** 1009,1015 ****
          /*
           * Add the IP Header
           */
    !     cmh->size() += IP_HDR_LEN;    
          iph->ttl_ = IP_DEF_TTL;
        }
        /*
    --- 1009,1017 ----
          /*
           * Add the IP Header
           */
    !         if (!fulltcp_) {
    !                 cmh->size() += IP_HDR_LEN;    
    !         }
          iph->ttl_ = IP_DEF_TTL;
        }
        /*
    ***************
    *** 1080,1086 ****
        periodic_callback_ (0), be_random_ (1), 
        use_mac_ (0), verbose_ (1), trace_wst_ (0), lasttup_ (-10), 
        alpha_ (0.875),  wst0_ (6), perup_ (15), 
    !   min_update_periods_ (3)     // constants
       {
        table_ = new RoutingTable ();
        helper_ = new DSDV_Helper (this);
    --- 1082,1088 ----
        periodic_callback_ (0), be_random_ (1), 
        use_mac_ (0), verbose_ (1), trace_wst_ (0), lasttup_ (-10), 
        alpha_ (0.875),  wst0_ (6), perup_ (15), 
    !   min_update_periods_ (3), fulltcp_(0)        // constants
       {
        table_ = new RoutingTable ();
        helper_ = new DSDV_Helper (this);
    ***************
    *** 1095,1100 ****
    --- 1097,1104 ----
        bind ("min_update_periods_", &min_update_periods_);
        bind ("verbose_", &verbose_);
        bind ("trace_wst_", &trace_wst_);
    +   // MCW  2006Feb02
    +   bind ("fulltcp_", &fulltcp_);
        //DEBUG
        address = 0;
    
    dsdv/dsdv.h
    Index: dsdv.h
    *** dsdv.h      20 Aug 1999 18:03:16 -0000      1.6
    --- dsdv.h      7 Mar 2006 15:16:21 -0000
    ***************
    *** 137,142 ****
    --- 137,145 ----
        int    min_update_periods_;    // 3 we must hear an update from a neighbor
        // every min_update_periods or we declare
        // them unreachable
    + 
    +       // MCW 2006Feb02
    +       int fulltcp_;
        
        void output_rte(const char *prefix, rtable_ent *prte, DSDV_Agent *a);
    
    tcl/mobility/dsdv.tcl
    Index: dsdv.tcl
    *** dsdv.tcl    23 Dec 2003 17:36:35 -0000      1.14
    --- dsdv.tcl    7 Mar 2006 15:18:37 -0000
    *** 49,54 ****
    --- 49,57 ----
      Agent/DSDV set verbose_      0        ;# 
      Agent/DSDV set trace_wst_    0        ;# 
      
    + # MCW  2006Feb02
    + Agent/DSDV set fulltcp_ 0
    + 
      set opt(ragent)               Agent/DSDV
      set opt(pos)          NONE                    ;# Box or NONE
    

    Michele C. Weigle
    Last modified: Wed Sep 13 02:31:03 UTC+0900 2006

  • 출처 : http://www.cs.odu.edu/~mweigle/research/netsim/fulltcp-wlan.html
    Posted by 배트
    ,

    네트워크 시뮬레이션을 위해 트래픽 모델과 시뮬레이션들을 찾던 와중에 좋은 자료를 발견했습니다.
    대부분 기존 시뮬레이터에 네트워크 트래픽 모듈을 붙이기만 하면 돌아가는 것들입니다.
    특히 PackMIME은 ns-2 ver2.2x 부터 정식 포함되어있는 모듈이기도 하죠.
    네트워크 시뮬레이션을 하기에 유용한 자료들입니다.

    출처 : The ICSI 홈페이지, http://www.icir.org/models/trafficgenerators.html

    Traffic Generators for Internet Traffic

    • Henning's web page on traffic generators.

    • D-ITG's web page on traffic generators.

    • Polly Huang's traffic generator in NS:
      Anja Feldmann, Anna C. Gilbert, Polly Huang and Walter Willinger. Dynamics of IP Traffic: A Study of the Role of Variability and the Impact of Control, SIGCOMM'99, Boston, MA, Sep 1999.
      "During a Web session, a user usually requests several Web pages and each page may contain several web objects. To capture this hierarchical structure and its inherent variability, we allow for different probability distributions for the following user/session attributes: inter-session time, pages per session, inter-page time, objects per page, inter-object time, and object size... We base our choice of distributions on the work surrounding SURGE... and upon [Feldman99, Mogel97]."

    • The NSWEB traffic generator for NS-2.29.

    • The PackMime-HTTP traffic generator in NS:
      J. Cao, W.S. Cleveland, Y. Gao, K. Jeffay, F.D. Smith, and M.C. Weigle, Stochastic Models for Generating Synthetic HTTP Source Traffic, IEEE INFOCOM, March 2004.
      ``New source-level models for aggregated HTTP traffic ... are built and validated using two large-scale collections of TCP/IP packet header traces." The TCP connections are modeled ``in terms of connection establishment rates and the sizes and timing of exchanges of request and response data."
      The PackMime-HTTP traffic generator requires the use of Full-TCP in NS.

    • The tmix traffic generator.
      M. Weigle, P. Adurthi, F. Hernandez-Campos, K. Jeffay and F. D. Smith, Tmix: A Tool for Generating Realistic TCP Application Workloads in ns-2, CCR, July 2006.
      "The system takes as input a packet header trace taken from a network link of interest. The trace is reverse compiled into a source-level characterization of each TCP connection present in the trace."

    • NETI@home:
      NETI@home collects network performance statistics from end-systems. The related work includes models of user behavior.

    • The Swing traffic generator:
      K. Viashwanath and A. Vahdat, Realistic and Responsive Network Traffic Generation, SIGCOMM 2006.
      "Starting from observed traffic at a single point in the network, Swing automatically extracts distributions for user, application, and network behavior."

    • D-ITG, Distributed Internet Traffic Generator for testbeds:
      D-ITG produces traffic "accurately replicating appropriate stochastic processes for both IDT (Inter Departure Time) and PS (Packet Size)", and is capable of generating traffic at the network, transport, and application layers. Includes DCCP support. Updated 2006.

    • The Harpoon traffic generator for testbeds:
      J. Sommers and P. Barford, Self-Configuring Network Traffic Generation, IMC 2004.
      Harpoon is an application-independent tool for generating representative packet traffic at the IP flow level. Harpoon can also self-configure from Netflow logs. December 2005.

    • The Surge traffic generator for testbeds:
      Paul Barford and Mark Crovella. Generating Representative Web Workloads for Network and Server Performance Evaluation. In Proceedings of the ACM SIGMETRICS, pages 151-160, Madison WI, November 1998. ACM.

    • RAMP:
      Kun-chan Lan and John Heidemann, Rapid Model Parameterization from Traffic Measurements, ISI-RF-561, August 2002.
      "We describe approaches and tools that support rapid parameterization of traffic models from live network measurements."

    • IPB:
      B. Mah, P. Sholander, L. Martinez, and L. Tolendino. IPB; an Internet Protocol Benchmark using Simulated Traffic. Proceedings of MASCOTS '98, Montreal, Canada, August 1998. IEEE.
      "We have developed an IP Benchmark (IPB), which uses synthetic, simulated traffic to measure the peformance across an IP network or internetwork."

    • The trafgen traffic generator:
      Rigoberto Chinchilla, John Hoag, David Koonce, Hans Kruse, Shawn Ostermann, and Yufei Wang, Characterization of Internet Traffic and User Classification: Foundations for the Next Generation of Network Emulation, Proceedings of the 10th International Conference on Telecommunication Systems, Modeling and Analysis (ICTSM10), 2002.
      "Currently, we model traffic based on applications, such as a web browser or a file transfer application. In the present upgrade, we are modeling the way users utilize multiple applications."

    • Web servers:
      Benchmarking of Web-Server Systems:
      Michele Colajanni, Mauro Andreolini, and Valeria Cardellini, Benchmarking of Locally and Geographically Distributed Web-Server Systems, Half-day tutorial at 12th International World Wide Web Conference (WWW2003), Budapest, Hungary, May 20th, 2003.

    • GenSyn is a Java-based, traffic generator generating TCP connections and UDP streams. From 2000.

    • httperf "provides a flexible facility for generating various HTTP workloads and for measuring server performance." From 1998.

    • Modeling Peer-to-Peer Traffic.

    • Modeling Traffic from Online Games.

    • Modeling DDoS Attacks.

    • Methodologies:
      • M. Yuksel, B. Sikdar, K. S. Vastola, and B. Szymanski. Workload Generation for NS Simulations of Wide Area Networks and the Internet. Proceedings of Communication Networks and Distributed Systems Modeling and Simulation Conference (CNDS) part of Western Multi-Conference (WMC), pages 93-98, San Diego, CA, 2000.
        "We introduce methodologies for implementing realistic workload generators for wide area networks which (1) maintain the proper composition of the aggregate traffic resulting from the mix of various applications supported by the network and (2) are capable of generating long range dependent or self-similar traffic."

      • F. Hernandez Campos, K. Jeffay, F.D. Smith, S. Marron, and A. Nobel, Methodology For Developing Empirical Models of TCP-Based Applications, 2001.
        "We report on a large-scale empirical study to create application-level models for TCP traffic generation in simulations and network test-beds."

      • F. Hernandez-Campos, K. Jeffay, and F. Donelson Smith, Tracking the Evolution of Web Traffic: 1995-2003, MASCOTS 2003.
        "These results demonstrate that usage of the web by both consumers and content providers has evolved significantly and make a compelling case for continual monitoring of web traffic and updating of models of web traffic."

    • Why Traffic Models Matter:
      Y. Joo, V. Ribeiro, A. Feldmann, A. C. Gilbert, and W. Willinger, TCP/IP Traffic Dynamics and Network Performance: A Lesson in Workload Modeling, Flow Control, and Trace-driven Simulations. CCR, April 2001.
      "The main objective of this paper is to demonstrate in the context of a simple TCP/IP-based network that depending on the underlying assumptions about the inherent nature of the dynamics of network traffic, very different conclusions can be derived for a number of well-studied and apparently well-understood problems in the area of performance evaluation. For example, a traffic workload can either completely ignore the empirically observed high variability at the TCP connection level (i.e., assume "infinite sources") or explicitly account for it with the help of heavy-tailed distributions for TCP connection sizes or durations."

    • Usage Patterns in Wireless Networks:

    • Packet replay engines include TCPivo and tcpreplay.

    • Commercial traffic generators:

    • Trace libraries:
      • Crawdad, an archive for wireless data.

    Thanks to Senthilkumar Ayyasamy for contributions to this page. Proposed additions to this page can be sent to Sally Floyd.
    This material is based upon work supported by the National Science Foundation under Grant No. 0230921. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.
    Last modified: February 2008
    Posted by 배트
    ,
    13.4 Commands at a glance

    The following is a list of error-model related commands commonly used in simulation scripts:
    set em [new ErrorModel]
    $em unit pkt
    $em set rate_ 0.02
    $em ranvar [new RandomVariable/Uniform]
    $em drop-target [new Agent/Null]

    This is a simple example of how to create and configure an error model. The commands to place the error-model in a simple link will be shown next.

    $simplelink errormodule <args>
    This commands inserts the error-model before the queue object in simple link. However in this case the error-model’s drop-target points to the link’s drophead_ element.

    $ns_ lossmodel <em> <src> <dst>
    This command places the error-model before the queue in a simplelink defined by the <src> and <dst> nodes. This is basically a wrapper for the above method.

    $simplelink insert-linkloss <args>
    This inserts a loss-module after the queue, but right before the delay link_ element in the simple link. This is because nam can visualize a packet drop only if the packet is on the link or in the queue. The error-module’s drop-target points to the link’s drophead_ element.

    $ns_ link-lossmodel <em> <src> <dst>
    This too is a wrapper method for insert-linkloss method described above. That is this inserts the error-module right after the queue element in a simple link (src-dst).

    출처 : The ns Manual 129~130p
    Posted by 배트
    ,
    MAC_802_11: accessing MAC cache_ array out of range

    이 에러가 날 경우에는
    create-god으로 god 객체를 생성한다.
    인자는 시뮬레이션 할 노드의 개수다.
    또는 의도보다 많은 노드를 생성하지 않았나 검사한다. <- 본인이 이랬어요..

    set god_ [create-god $val(nn)]
    or
    set god_ [create-god 4]
    Posted by 배트
    ,