A newer version of TFMCC with experimental support for variable packet size congestion control is available upon request (just send me an e-mail).
//#include "formula-with-inverse.h" #include "formula.h"
#define HDR_TFRC(p) (hdr_tfrc::access(p))add the line:
#define HDR_TFMCC(p) (hdr_tfmcc::access(p))
PT_TFRC_ACK,add the lines:
PT_TFMCC, PT_TFMCC_ACK,
name_[PT_TFRC_ACK]= "tcpFriendCtl";add the lines:
name_[PT_TFMCC]= "tfmcc_data"; name_[PT_TFMCC_ACK]= "tfmcc_ack";
TFMCC TFMCC_ACK
Agent/TFMCC set packetSize_ 1000 Agent/TFMCC set fairSize_ 1000; # be fair to TCP which has fairSize_ as packet size Agent/TFMCC set ndatapack_ 0 ; # Number of packets sent Agent/TFMCC set overhead_ 0 ; # If > 0, dither outgoing packets Agent/TFMCC set ssmult_ 2.0 ; # Rate of increase during slow-start: Agent/TFMCC set printStatus_ 1; # print status messages Agent/TFMCC set rate_ 0 Agent/TFMCC set bval_ 1; # Value of B for TCP formula Agent/TFMCC set t_factor_ 6; # feedback delay = t_factor * max_rtt Agent/TFMCC set min_rate_ [Agent/TFMCC set packetSize_]; # set minimum rate to 1 packet/s Agent/TFMCC set Initial_RTT_ 0.5; Agent/TFMCC set InitRate_ [expr 2.0 * [Agent/TFMCC set packetSize_]/[Agent/TFMCC set Initial_RTT_]]; # --> 2 packets per max. RTT Agent/TFMCC set sndr_id_ 0; Agent/TFMCCSink set packetSize_ 40 Agent/TFMCCSink set fairSize_ 1000; # be fair to TCP which has fairSize_ as packet size Agent/TFMCCSink set aggregatePackets_ true Agent/TFMCCSink set aggregateLoss_ false Agent/TFMCCSink set InitHistorySize_ 100000 Agent/TFMCCSink set AdjustHistoryAfterSS_ 1 Agent/TFMCCSink set NumSamples_ -1 Agent/TFMCCSink set discount_ 1; # History Discounting Agent/TFMCCSink set printStatus_ 1 ; # print status messages Agent/TFMCCSink set smooth_ 1 ; # smoother Average Loss Interval Agent/TFMCCSink set recv_id_ 0; Agent/TFMCCSink set df_ 0.9 ; # decay factor for CLR's RTT estimate #Agent/TFMCCSink set ca_ 0; # disable RTT congestion avoidance Agent/TFMCCSink set rate_ 0 Agent/TFMCCSink set bval_ 1; # Value of B for TCP formula Agent/TFMCCSink set tight_loop_ 1; # use tight feedback loop to rep recv Agent/TFMCCSink set fbtime_mult_ 6.0; # T = 6 * RTT Agent/TFMCCSink set constant_rate_ 0; # don't use constant rate for reported rate
tfmcc.o tfmcc-sink.o formula.o \