Coder Social home page Coder Social logo

pritam001 / ns3-dumbell-topology-simulation Goto Github PK

View Code? Open in Web Editor NEW
14.0 3.0 14.0 1.81 MB

Analyze and compare TCP Reno, TCP Westwood, and TCP Fack performance using NS3 simulator

License: MIT License

C++ 1.64% Gnuplot 98.33% Python 0.02%
tcp-westwood tcp-reno ns3-simulator topology dumbbell-topology congestion-loss routers throughput

ns3-dumbell-topology-simulation's Introduction

ns3-dumbell-topology-simulation

Analyze and compare TCP Reno, TCP Westwood, and TCP Fack performance using NS3 simulator

Github Fork GitHub license No Maintenance Intended

Dependency:

https://www.nsnam.org/docs/release/3.24/

Topology

   H1 ---+      +--- H4
         |      |
   H2 ---R1 -- R2--- H5
         |      |
   H3 ---+      +--- H6

A Dumbbell topology with two routers R1 and R2 connected by a (10 Mbps, 50 ms) wired link.

Each of the routers is connected to 3 hosts i.e., H1, H2 and H3 are connected to R1, and H4, H5 and H6 are connected to R2. All the hosts are attached to the routers with (100 Mbps, 20ms) links.

Both the routers use drop-tail queues with a equal queue size set according to bandwidth-delay product.

Senders (i.e. H1, H2 and H3) are attached with TCP Reno, TCP Westwood, and TCP Fack agents respectively.

Packet size is 1.2KB.

Simulation

For all the simulations:

  • An error model with error rate of 0.000001 was installed on the each link between host and router.
  • Congestion window, throughput, goodput and congestion loss are traced using NS3 only, with no other utility except for gnuplot for plotting traces.
  • Congestion window, throughput and goodput are measured using TraceCallbacks and congestion loss is measured using FlowMonitor.
  • Following dumbbell topology is used: Implementation detail: _ _ | H1------+ +------H4 | | | | | Senders | H2------R1------R2-----H5 | Receivers | | | | |_ H3------+ +------H6 _| Representation in code: H1(n0), H2(n1), H3(n2), H4(n3), H5(n4), H6(n5), R1(n6), R2(n7) :: n stands for node Dumbbell topology is used with H1, H2, H3 on left side of dumbbell, H4, H5, H6 on right side of dumbbell, and routers R1 and R2 form the bridge of dumbbell. H1 is attached with TCP Reno agent. H2 is attached with TCP Westwood agent. H3 is attached with TCP Tahoe agent. Links: H1R1/H2R1/H3R1/H4R2/H5R2/H6R2: P2P with 100Mbps and 20ms. R1R2: (dumbbell bridge) P2P with 10Mbps and 50ms. packet size: 1.2KB. Number of packets decided by Bandwidth delay product: i.e. #packets = BandwidthDelay(in bits) Therefore, max #packets (HiRj) = 100Mbps20ms = 2000000 and max #packets (R1R2) = 10Mbps*50ms = 500000

ns3-dumbell-topology-simulation's People

Contributors

pritam001 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ns3-dumbell-topology-simulation's Issues

Compile error

Trying to compile App6.cc
Get this:

zony@DESKTOP-LGIFS31:~/ns3/ns-allinone-3.29/ns-3.29$ ./waf
Waf: Entering directory `/home/zony/ns3/ns-allinone-3.29/ns-3.29/build'
[2684/2739] Compiling scratch/App6.cc
[2685/2739] Compiling scratch/scratch-simulator.cc
[2686/2739] Compiling scratch/subdir/scratch-simulator-subdir.cc
[2697/2739] Linking build/scratch/subdir/subdir
[2698/2739] Linking build/scratch/scratch-simulator
../scratch/App6.cc: In function ‘ns3::Ptrns3::Socket uniFlow(ns3::Address, uint, std::string, ns3::Ptrns3::Node, ns3::Ptrns3::Node, double, double, uint, uint, std::string, double, double)’:
../scratch/App6.cc:246:68: error: ‘TcpReno’ was not declared in this scope
246 | Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue(TcpReno::GetTypeId()));
| ^~~~~~~
../scratch/App6.cc:250:68: error: ‘TcpTahoe’ was not declared in this scope
250 | Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue(TcpTahoe::GetTypeId()));
| ^~~~~~~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.