Home

Papers

Download

Probabilistic Congestion Control Protocol

To include the PCC protocol in an existing ns-2 installation
  • copy pcc.cc, pcc.h, pcc-sink.cc, and pcc-sink.h to the main ns directory

  • add the default values to tcl/lib/ns-default.tcl
    Agent/PCC set AppRate_ 60000 ;    # Constant Bitrate Application
    Agent/PCC set overhead_ 0.5 ;	  # If > 0, dither outgoing packets
    Agent/PCC set packetSize_ 1000
    Agent/PCC set ndatapack_ 0 ;	  # Number of packets sent
    Agent/PCC set printStatus_ 0 
    
    Agent/PCCSink set packetSize_ 40
    Agent/PCCSink set InitHistorySize_ 100000
    Agent/PCCSink set NumFeedback_ 1
    Agent/PCCSink set printLoss_ 0
    Agent/PCCSink set df_ 0.8 ;	# decay factor for accurate RTT estimate
    Agent/PCCSink set bval_ 1 ;	# Value of B for TCP formula
    Agent/PCCSink set NumSamples_ -1
    Agent/PCCSink set discount_ 1; # History Discounting
    Agent/PCCSink set smooth_ 1 ;	# smoother Average Loss Interval
    Agent/PCCSink set totalReceived_ 0
    Agent/PCCSink set protLossEvents_ 3
    Agent/PCCSink set protRTTs_ 5
    Agent/PCCSink set protMaxTime_ 30
    Agent/PCCSink set Toff_ 60
    Agent/PCCSink set Texp_ 2 
    #Agent/PCCSink set rateDiscount_ 0.8
    Agent/PCCSink set adjustRate_ 0
    Agent/PCCSink set runtime_ 600
    Agent/PCCSink set pcc_recv_nr_ 0
    Agent/PCCSink set always_on_ 0
          
  • add the object files to Makefile.in
          pcc.o pcc-sink.o \
          
  • include the packet types in packet_t in packet.h
          PT_PCC,
          PT_PCC_ACK,
          
    and add the packet names to p_info
          name_[PT_PCC]= "probabCC";
          name_[PT_PCC_ACK]= "probabCCCtl";
          
  • add the PCC packet types to prot in tcl/lib/ns-packet.tcl
          PCC
          PCC_ACK
          
    For older versions of ns (before Aug. 2000) it may be necessary to add the PCC packet types to pair in tcl/lib/ns-packet.tcl instead
          { PCC off_pcc_}
          { PCC_ACK off_pcc_ack_}
          
  • recompile ns (make clean; ./configure; make)


A simple example how to set up PCC flows can be found here. For installation problems and bug reports please contact Jörg Widmer.