NS2 Congestion Control

Congestion control is intends to keep a fast sender from sending data into a network.Main reason behind congestion control is because of lack of resources.We assist research scholars in implementing NS2 Congestion Control Projects with source code.

Techniques involved in congestion control:

  • Warning bit.
  • Load shedding.
  • Random early discard.
  • Choke packets.
  • Traffic shaping.


Types of congestion control in manet:

  • Instantaneous congestion.
  • Baseline congestion.
  • Flash congestion.
  • Spiky congestion.


Congestion control techniques in manet:

  • CA-AODV.
  • CFR.
  • LSRP.
  • CBCC.
  • AODV
  • ADCC.
  • CERRT.
  • CARP.

Architecture of congestion control:


Sample NS2 Code for Congestion Control

This code is contain the information of methods used in network flow

global nssim freelist reslist ftp tcp_s tcp_d rng nof_tcps mfsize
mean_intarrtime simend
 #you have to create the variables tcp_s (tcp source) and tcp_d (tcp destination)
 set tt [$nssim now]
 set freeflows [llength $freelist($class)]
 set resflows [llength $reslist($class)]
 lappend nlist($class) [list $tt $resflows]
 if {$freeflows == 0} {
 puts "Class $class: At $tt, nof of free TCP sources == 0!!!"
 puts "freelist($class)=$freelist($class)"
 puts "reslist($class)=$reslist($class)"
 #take the first index from the list of free flows
 set ind [lindex $freelist($class) 0]
 set cur_fsize [expr ceil([$rng exponential $mfsize])]
 $tcp_s($class,$ind) reset
 $tcp_d($class,$ind) reset
 $ftp($class,$ind) produce $cur_fsize
 set freelist($class) [lreplace $freelist($class) 0 0]
 lappend reslist($class) [list $ind $tt $cur_fsize]
 set newarrtime [expr $tt+[$rng exponential $mean_intarrtime]]
 $nssim at $newarrtime "start_flow $class"
 if {$tt > $simend} {
 $nssim at $tt "$nssim halt"

Journal Support for NS2 Projects:(Implementing NS2 Congestion Control)