Code

simstep[TCP[rtt_,xinit_,droptimes_]][{{t0_,t0d_},x0_},{t_,td_}] := {{t,td},2 Fold[Function[{w,ti},(w+ti/(rtt^2))/2],x0,
Differences@Join[{t0},Select[droptimes,If[t0d<0,#≥t0,#>t0] && If[td<0,#<t,#≤t]&],{t}]]}

Simulate[TCP[rtt_,xinit_,droptimes_],times_] := Rest[Last/@FoldList[simstep[TCP[rtt,xinit,droptimes]],{{0,-1},xinit},times]]

PlotFlows[flows_,{tmin_,tmax_},opt___] := Module [ {t,timesd,rates,times,res},
t = Select[Union[Join@@(Last/@flows),{tmin,tmax}],tmin≤#≤tmax&];
timesd = Flatten[{{#,-1},{#,+1}}& /@ t,1];
rates = Simulate[#,timesd]& /@ flows;
times = First/@timesd;
res = Transpose[{times,#}]& /@Transpose[Accumulate /@ Transpose[rates]];
ListLinePlot[res,opt]
]

PlotETDF[x_,opt___]:=ListPlot[Prepend[If[x=={},{},Transpose[{Sort[x],Range[Length[x],1,-1]/Length[x]}]],{0,1}],Joined->True,PlotMarkers->Automatic,opt]

cols[numflows_] := Table[ColorData["DarkRainbow",i/numflows],{i,numflows}];
fillstyle[numflows_] := Table[i->{If[i==1,Axis,{i-1}],Lighter[cols[numflows][[i]],.7]},{i,numflows}];

randomtimes:=Accumulate[Table[RandomReal[{.96,1.04}],{10}]];
randomflows[numflows_] :=  Table[TCP[.1,0,RandomReal[]+randomtimes],{numflows}];
synchflows[numflows_] := Table[TCP[.1,0,#+.2RandomReal[]+randomtimes],{numflows}]&[RandomReal[]];

Totrate[flows_,t_] := Plus@@(Flatten[Simulate[#,{{t,1}}]&/@flows]);

Illustrations

PlotFlows[randomflows[1],{5,10},AspectRatio->.2,Filling->Axis,AxesOrigin->{5,0}]

flows = synchflows[4]; numflows=4;
gindividual = PlotFlows[{#[[1]]},{5,10},AxesOrigin->{5,0},PlotStyle->#[[2]],Filling->Axis,FillingStyle->{Lighter[#[[2]],.7]},PlotRange->{0,300},AspectRatio->.1,Ticks->None,ImageSize->Medium]& /@ Transpose[{flows,cols[numflows]}];
gall = PlotFlows[flows,{5,10},AxesOrigin->{5,0},Filling->fillstyle[numflows],PlotStyle->cols[numflows],PlotRange->{0,200 Length[flows]},AspectRatio->.1 200/300 Length[flows],Ticks->None,ImageSize->Medium];
Column[Append[Reverse@gindividual,gall]]

flows = randomflows[4]; numflows=4;
gall = PlotFlows[flows,{5,10},AxesOrigin->{5,0},Filling->fillstyle[numflows],PlotStyle->cols[numflows],PlotRange->{0,200 Length[flows]},AspectRatio->.1 200/300 Length[flows],Ticks->None,ImageSize->Medium];
Show[gall,Graphics[{White,Opacity[.7],Rectangle[{0,0},{7.45,200 numflows}],Rectangle[{7.55,0},{10,200 numflows}]}]]

{1000 30-(Sqrt[1000])(30/(Sqrt[27.])),1000 30+(Sqrt[1000])(30/(Sqrt[27.]))}

Demo

DynamicModule[{flows=randomflows[4],numflows=4},
Panel@Column[{
Row[{
Button["random",flows=randomflows[numflows]],
Button["synch",flows=synchflows[numflows]]}],
Dynamic[
gindividual = PlotFlows[{#[[1]]},{0,10},AxesOrigin->{0,0},PlotStyle->#[[2]],Filling->Axis,FillingStyle->{Lighter[#[[2]],.7]},PlotRange->{0,300},AspectRatio->.1,Ticks->None,ImageSize->Medium]& /@ Transpose[{flows,cols[numflows]}];
gall = PlotFlows[flows,{0,10},AxesOrigin->{0,0},Filling->fillstyle[numflows],PlotStyle->cols[numflows],PlotRange->{0,200 Length[flows]},AspectRatio->.1 200/300 Length[flows],Ticks->None,ImageSize->Medium];
Column[Append[Reverse@gindividual,gall]], TrackedSymbols:>{flows}]
}]]

DynamicModule[{flows=randomflows[1],hist={},n=1,numflows=1},
Panel@Column[{
Row[{
Button["clear",hist={}],
Button["random",For[i=0,i<n,i++,flows=randomflows[numflows];hist=Append[hist,Totrate[flows,5]]]],
InputField[Dynamic[n]]
}],
Dynamic[
gall = PlotFlows[flows,{5,10},AxesOrigin->{5,0},
PlotStyle->cols[numflows],PlotRange->{0,200 numflows},AspectRatio->.3,ImageSize->Medium,Filling->fillstyle[numflows]];
GraphicsColumn[{Show[gall,Graphics[{White,Opacity[.65],Rectangle[{5,0},{7.45,200 numflows}],Rectangle[{7.55,0},{10,200 numflows}]}]],
GraphicsRow[{PlotETDF[hist,PlotRange->{{0,200 numflows},{0,1}}],
Histogram[hist,{0,200 numflows,10numflows}]}]}], TrackedSymbols:>{flows,hist}]
}]]

DynamicModule[{flows=randomflows[20],hist={},n=1,numflows=20},
Panel@Column[{
Row[{
Button["clear",hist={}],
Button["random",For[i=0,i<n,i++,flows=randomflows[numflows];hist=Append[hist,Totrate[flows,5]]]],
Button["synch",For[i=0,i<n,i++,flows=synchflows[numflows];hist=Append[hist,Totrate[flows,5]]]],
InputField[Dynamic[n]]
}],
Dynamic[
gall = PlotFlows[flows,{0,10},AxesOrigin->{0,0},
PlotStyle->Table[{Opacity[.3],White},{numflows}],PlotRange->{0,200 numflows},AspectRatio->.5,ImageSize->Medium,Filling->{numflows->{Axis,Blue}}];
GraphicsColumn[{Show[gall,Graphics[{White,Opacity[.85],Rectangle[{0,0},{4.9,200 numflows}],Rectangle[{5.1,0},{10,200 numflows}]}]],
GraphicsRow[{PlotETDF[hist,PlotRange->{{0,200 numflows},{0,1}}],
Histogram[hist,{0,200 numflows,10numflows}]}]}], TrackedSymbols:>{flows,hist}]
}]]