TanzimAzadNishan / NS3-Priority-Based-Congestion-Control-Protocol

A Networking project implemented in ns-3 for IEEE 802.11 network.
2 stars 0 forks source link

Priority-Based-Congestion-Control-Protocol(PCCP)

Implemented in ns-3 for IEEE 802.11 network.

+ The algorithm works in the Network layer to control upstream congestion.

Project Overview

1) Nodes may have different priority due to their function or location and need to gain different throughput. So the algorithm sets priority to each node. 2) The output rate of a node is controlled by adjusting the scheduling rate which depends on the priority. 3) PCCP maintains a weighted fairness so that the sink can get different(but in a weighted fair way) throughput from its child sensor nodes. 4) PCCP measures congestion level(degree) for each node by calculating packet inter-arrival time & packet service time which reflects the present congestion condition. 5) Any node(sink) can inform its child nodes to change transmission rate according to the congestion level.



Topology

Result

Throughput

coverageSide means one side of coverage area

With the increase in flows, the network is getting more and more congested which reduces the throughput.

Normalized Weighted Throughput

coverageSide means one side of coverage area

When we take the normalized value of the throughput, we see the change in value is very small with the increase in flow. It almost remains constant.



Modification

Find the files in pccp folder of this repository and copy those in their respective folders of ns-3.xx mentioned below.

  1. src/internet/model/

    • node-option.h
    • node-option.cc
  2. src/network/model

    • node.h
    • node.cc
  3. src/traffic-control/model

    • queue-disc.cc
    • queue-disc.h
    • traffic-control-layer.cc
    • traffic-control-layer.h
  4. build/ns3/net-device.h

  5. src/internet/wscript



Metrics



Attributes



Run the Project

Installation

Download the latest version of ns-3. ns-3.35 is used in this project. Extract the tar.bz2 file. You will get a ns-allinone-3.xx folder, which will have these files and directories.

Then enter the following command:

./build.py --enable-examples --enable-tests

Now go to the ns-3.xx directory. Then run the commands:

./waf clean
./waf configure --build-profile=debug --enable-examples --enable-tests

Run the Simulation File

./waf --run "scratch/pccpTest --nFlows=20" --cwd="Output/pccpTest"

In console, you will see the logs of the simulation. The graphs will be stored in Output/pccpTest folder.



Developers

Md. Tanzim Azad