Model { Name "try40tcp" Version 4.00 SampleTimeColors off LibraryLinkDisplay "none" WideLines off ShowLineDimensions off ShowPortDataTypes off RecordCoverage off CovPath "/" CovSaveName "covdata" CovNameIncrementing off CovHtmlReporting on BlockNameDataTip off BlockParametersDataTip off BlockDescriptionStringDataTip off ToolBar on StatusBar on BrowserShowLibraryLinks off BrowserLookUnderMasks off Created "Tue Nov 27 09:31:42 2001" Creator "cslui" UpdateHistory "UpdateHistoryNever" ModifiedByFormat "%" LastModifiedBy "cslui" ModifiedDateFormat "%" LastModifiedDate "Tue Nov 27 14:09:25 2001" ModelVersionFormat "1.%" ConfigurationManager "none" SimParamPage "Solver" StartTime "0.0" StopTime "70" SolverMode "Auto" Solver "ode45" RelTol "1e-3" AbsTol "auto" Refine "1" MaxStep "auto" MinStep "auto" MaxNumMinSteps "-1" InitialStep "auto" FixedStep "auto" MaxOrder 5 OutputOption "RefineOutputTimes" OutputTimes "[]" LoadExternalInput off ExternalInput "[t, u]" SaveTime on TimeSaveName "tout" SaveState off StateSaveName "xout" SaveOutput on OutputSaveName "yout" LoadInitialState off InitialState "xInitial" SaveFinalState off FinalStateName "xFinal" SaveFormat "Array" LimitDataPoints on MaxDataPoints "1000" Decimation "1" AlgebraicLoopMsg "warning" MinStepSizeMsg "warning" UnconnectedInputMsg "warning" UnconnectedOutputMsg "warning" UnconnectedLineMsg "warning" InheritedTsInSrcMsg "warning" SingleTaskRateTransMsg "none" MultiTaskRateTransMsg "error" IntegerOverflowMsg "warning" CheckForMatrixSingularity "none" UnnecessaryDatatypeConvMsg "none" Int32ToFloatConvMsg "warning" SignalLabelMismatchMsg "none" LinearizationMsg "none" VectorMatrixConversionMsg "none" SfunCompatibilityCheckMsg "none" BlockPriorityViolationMsg "warning" ArrayBoundsChecking "none" ConsistencyChecking "none" ZeroCross on Profile off SimulationMode "normal" RTWSystemTargetFile "grt.tlc" RTWInlineParameters off RTWRetainRTWFile off RTWTemplateMakefile "grt_default_tmf" RTWMakeCommand "make_rtw" RTWGenerateCodeOnly off TLCProfiler off TLCDebug off TLCCoverage off AccelSystemTargetFile "accel.tlc" AccelTemplateMakefile "accel_default_tmf" AccelMakeCommand "make_rtw" ExtModeMexFile "ext_comm" ExtModeBatchMode off ExtModeTrigType "manual" ExtModeTrigMode "normal" ExtModeTrigPort "1" ExtModeTrigElement "any" ExtModeTrigDuration 1000 ExtModeTrigHoldOff 0 ExtModeTrigDelay 0 ExtModeTrigDirection "rising" ExtModeTrigLevel 0 ExtModeArchiveMode "off" ExtModeAutoIncOneShot off ExtModeIncDirWhenArm off ExtModeAddSuffixToVar off ExtModeWriteAllDataToWs off ExtModeArmWhenConnect on ExtModeLogAll on OptimizeBlockIOStorage on BufferReuse on ParameterPooling on BlockReductionOpt off BooleanDataType off BlockDefaults { Orientation "right" ForegroundColor "black" BackgroundColor "white" DropShadow off NamePlacement "normal" FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" ShowName on } AnnotationDefaults { HorizontalAlignment "center" VerticalAlignment "middle" ForegroundColor "black" BackgroundColor "white" DropShadow off FontName "Helvetica" FontSize 10 FontWeight "normal" FontAngle "normal" } LineDefaults { FontName "Helvetica" FontSize 9 FontWeight "normal" FontAngle "normal" } System { Name "try40tcp" Location [59, 346, 666, 900] Open on ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "inches" ZoomFactor "100" AutoZoom off ReportName "simulink-default.rpt" Block { BlockType Scope Name "Congestion Window\n" Ports [1] Position [520, 194, 550, 226] Floating off Location [657, 720, 981, 959] Open off NumInputPorts "1" TickLabels "OneTimeTick" ZoomMode "on" List { ListType AxesTitles axes1 "%" } Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData2" DataFormat "StructureWithTime" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "0" } Block { BlockType Gain Name "Gain" Position [210, 105, 240, 135] Gain "40" Multiplication "Element-wise(K.*u)" SaturateOnIntegerOverflow on } Block { BlockType SubSystem Name "RED routers" Ports [1, 4] Position [280, 111, 385, 204] ShowPortLabels on TreatAsAtomicUnit off RTWSystemCode "Auto" RTWFcnNameOpts "Auto" RTWFileNameOpts "Auto" MaskPromptString "Router Capacity" MaskStyleString "edit" MaskTunableValueString "on" MaskEnableString "on" MaskVisibilityString "on" MaskToolTipString "on" MaskVariables "C=@1;" MaskIconFrame on MaskIconOpaque on MaskIconRotate "none" MaskIconUnits "autoscale" MaskValueString "1310" System { Name "RED routers" Location [377, 78, 1123, 778] Open off ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "inches" ZoomFactor "100" AutoZoom on Block { BlockType Inport Name "traffic" Position [110, 68, 140, 82] Port "1" Interpolate on } Block { BlockType Constant Name "Constant" Position [110, 125, 140, 155] Value "C" VectorParams1D on } Block { BlockType Constant Name "Constant1" Position [165, 395, 195, 425] Value "0.125" VectorParams1D on } Block { BlockType Gain Name "Gain" Position [245, 395, 275, 425] Gain "-1" Multiplication "Element-wise(K.*u)" SaturateOnIntegerOverflow on } Block { BlockType Math Name "Math\nFunction" Ports [1, 1] Position [245, 165, 275, 195] Operator "reciprocal" OutputSignalType "auto" } Block { BlockType Product Name "Product" Ports [2, 1] Position [405, 156, 450, 189] Inputs "2" Multiplication "Element-wise(.*)" SaturateOnIntegerOverflow on } Block { BlockType Product Name "Product1" Ports [2, 1] Position [435, 271, 480, 304] Inputs "2" Multiplication "Element-wise(.*)" SaturateOnIntegerOverflow on } Block { BlockType Product Name "Product2" Ports [2, 1] Position [435, 431, 480, 464] Inputs "2" Multiplication "Element-wise(.*)" SaturateOnIntegerOverflow on } Block { BlockType Sum Name "Sum" Ports [2, 1] Position [530, 397, 560, 453] IconShape "rectangular" Inputs "++" SaturateOnIntegerOverflow on } Block { BlockType Sum Name "aggregate\ntraffic\n" Ports [2, 1] Position [210, 67, 235, 113] IconShape "rectangular" Inputs "+|-" SaturateOnIntegerOverflow on } Block { BlockType Mux Name "combine\nx(t) & q(t)" Ports [2, 1] Position [375, 491, 380, 529] Inputs "2" DisplayOption "bar" } Block { BlockType Integrator Name "q(t)" Ports [1, 1] Position [290, 59, 325, 121] ExternalReset "none" InitialConditionSource "internal" InitialCondition "0" LimitOutput on UpperSaturationLimit "8000" LowerSaturationLimit "0" ShowSaturationPort off ShowStatePort off AbsoluteTolerance "auto" } Block { BlockType MATLABFcn Name "red dropping \nfunction" Position [450, 495, 510, 525] MATLABFcn "red" OutputDimensions "-1" OutputSignalType "real" Output1D on } Block { BlockType Integrator Name "x(t)" Ports [1, 1] Position [210, 265, 240, 295] ExternalReset "none" InitialConditionSource "internal" InitialCondition "0" LimitOutput on UpperSaturationLimit "inf" LowerSaturationLimit "0" ShowSaturationPort off ShowStatePort off AbsoluteTolerance "auto" } Block { BlockType Outport Name "inst queue length" Position [650, 83, 680, 97] Port "1" OutputWhenDisabled "held" InitialOutput "[]" } Block { BlockType Outport Name "queueing\ndelay" Position [655, 168, 685, 182] Port "2" OutputWhenDisabled "held" InitialOutput "[]" } Block { BlockType Outport Name "avg queue length" Position [655, 223, 685, 237] Port "3" OutputWhenDisabled "held" InitialOutput "[]" } Block { BlockType Outport Name "drop prob" Position [645, 503, 675, 517] Port "4" OutputWhenDisabled "held" InitialOutput "[]" } Line { SrcBlock "traffic" SrcPort 1 DstBlock "aggregate\ntraffic\n" DstPort 1 } Line { SrcBlock "Constant" SrcPort 1 Points [20, 0] Branch { Points [0, -35] DstBlock "aggregate\ntraffic\n" DstPort 2 } Branch { Points [0, 40] DstBlock "Math\nFunction" DstPort 1 } } Line { SrcBlock "aggregate\ntraffic\n" SrcPort 1 DstBlock "q(t)" DstPort 1 } Line { SrcBlock "q(t)" SrcPort 1 Points [5, 0] Branch { Points [50, 0] Branch { DstBlock "inst queue length" DstPort 1 } Branch { Points [0, 365] DstBlock "Product2" DstPort 2 } } Branch { Points [0, 75] Branch { DstBlock "Product" DstPort 1 } Branch { Points [0, 355] DstBlock "combine\nx(t) & q(t)" DstPort 2 } } } Line { SrcBlock "Math\nFunction" SrcPort 1 Points [110, 0] DstBlock "Product" DstPort 2 } Line { SrcBlock "Product" SrcPort 1 Points [185, 0] DstBlock "queueing\ndelay" DstPort 1 } Line { SrcBlock "x(t)" SrcPort 1 Points [0, 0; 40, 0] Branch { DstBlock "Product1" DstPort 1 } Branch { Points [0, -50] DstBlock "avg queue length" DstPort 1 } Branch { Points [0, 220] DstBlock "combine\nx(t) & q(t)" DstPort 1 } } Line { SrcBlock "Constant1" SrcPort 1 Points [0, 0; 15, 0] Branch { DstBlock "Gain" DstPort 1 } Branch { Points [0, 30] DstBlock "Product2" DstPort 1 } } Line { SrcBlock "Gain" SrcPort 1 Points [75, 0; 0, -115] DstBlock "Product1" DstPort 2 } Line { SrcBlock "Product1" SrcPort 1 Points [20, 0; 0, 120] DstBlock "Sum" DstPort 1 } Line { SrcBlock "Product2" SrcPort 1 Points [20, 0; 0, -10] DstBlock "Sum" DstPort 2 } Line { SrcBlock "Sum" SrcPort 1 Points [10, 0; 0, -45; -410, 0; 0, -100] DstBlock "x(t)" DstPort 1 } Line { SrcBlock "combine\nx(t) & q(t)" SrcPort 1 DstBlock "red dropping \nfunction" DstPort 1 } Line { SrcBlock "red dropping \nfunction" SrcPort 1 DstBlock "drop prob" DstPort 1 } } } Block { BlockType Sum Name "Sum" Ports [2, 1] Position [345, 270, 365, 310] Orientation "left" NamePlacement "alternate" ShowName off IconShape "rectangular" Inputs "+|+" SaturateOnIntegerOverflow off } Block { BlockType SubSystem Name "TCP source" Ports [2, 2] Position [80, 91, 160, 204] ShowPortLabels on TreatAsAtomicUnit off RTWSystemCode "Auto" RTWFcnNameOpts "Auto" RTWFileNameOpts "Auto" MaskIconFrame on MaskIconOpaque on MaskIconRotate "none" MaskIconUnits "autoscale" System { Name "TCP source" Location [257, 454, 1072, 975] Open off ModelBrowserVisibility off ModelBrowserWidth 200 ScreenColor "white" PaperOrientation "landscape" PaperPositionMode "auto" PaperType "A4" PaperUnits "inches" ZoomFactor "100" AutoZoom on Block { BlockType Inport Name "lost\nprob" Position [140, 103, 170, 117] NamePlacement "alternate" Port "1" Interpolate on } Block { BlockType Inport Name "RTT" Position [140, 158, 170, 172] Port "2" Interpolate on } Block { BlockType Math Name "1/rtt" Ports [1, 1] Position [210, 150, 240, 180] Operator "reciprocal" OutputSignalType "auto" } Block { BlockType Sum Name "AIMD" Ports [2, 1] Position [365, 207, 385, 243] IconShape "rectangular" Inputs "+|-" SaturateOnIntegerOverflow on } Block { BlockType Gain Name "Gain" Position [465, 435, 495, 465] Orientation "left" Gain "1/2" Multiplication "Element-wise(K.*u)" SaturateOnIntegerOverflow on } Block { BlockType Product Name "Product" Ports [2, 1] Position [660, 81, 705, 114] Inputs "2" Multiplication "Element-wise(.*)" SaturateOnIntegerOverflow on } Block { BlockType Saturate Name "Saturation" Position [580, 75, 610, 105] UpperLimit "500" LowerLimit "1" LinearizeAsGain on } Block { BlockType VariableTransportDelay Name "Variable\nTransport Delay" Position [545, 345, 580, 380] Orientation "left" NamePlacement "alternate" MaximumDelay "10" InitialInput "0" MaximumPoints "20000" PadeOrder "0" } Block { BlockType Product Name "decrease term" Ports [2, 1] Position [375, 425, 425, 460] Orientation "left" Inputs "2" Multiplication "Element-wise(.*)" SaturateOnIntegerOverflow on } Block { BlockType Constant Name "dt" Position [210, 90, 240, 120] Value "1" VectorParams1D on } Block { BlockType Product Name "dt/rtt" Ports [2, 1] Position [275, 111, 320, 144] Inputs "2" Multiplication "Element-wise(.*)" SaturateOnIntegerOverflow on } Block { BlockType Product Name "pkt lost rate" Ports [2, 1] Position [650, 345, 705, 380] Orientation "left" Inputs "2" Multiplication "Element-wise(.*)" SaturateOnIntegerOverflow on } Block { BlockType Integrator Name "window\n" Ports [1, 1] Position [445, 75, 475, 105] ExternalReset "none" InitialConditionSource "internal" InitialCondition "0" LimitOutput off UpperSaturationLimit "inf" LowerSaturationLimit "-inf" ShowSaturationPort off ShowStatePort off AbsoluteTolerance "auto" } Block { BlockType Outport Name "BW" Position [745, 93, 775, 107] Port "1" OutputWhenDisabled "held" InitialOutput "[]" } Block { BlockType Outport Name "window" Position [745, 208, 775, 222] Port "2" OutputWhenDisabled "held" InitialOutput "[]" } Line { SrcBlock "window\n" SrcPort 1 Points [0, 0; 35, 0] Branch { Points [0, 360] DstBlock "Gain" DstPort 1 } Branch { DstBlock "Saturation" DstPort 1 } } Line { SrcBlock "Gain" SrcPort 1 DstBlock "decrease term" DstPort 2 } Line { SrcBlock "decrease term" SrcPort 1 Points [-45, 0; 0, -210] DstBlock "AIMD" DstPort 2 } Line { SrcBlock "dt" SrcPort 1 Points [15, 0] DstBlock "dt/rtt" DstPort 1 } Line { SrcBlock "1/rtt" SrcPort 1 Points [0, 0; 5, 0] Branch { Points [10, 0] DstBlock "dt/rtt" DstPort 2 } Branch { Points [0, -5; 385, 0; 0, -55] DstBlock "Product" DstPort 2 } } Line { SrcBlock "dt/rtt" SrcPort 1 Points [0, 75] DstBlock "AIMD" DstPort 1 } Line { SrcBlock "AIMD" SrcPort 1 Points [15, 0; 0, -135] DstBlock "window\n" DstPort 1 } Line { SrcBlock "RTT" SrcPort 1 Points [0, 0; 15, 0] Branch { DstBlock "1/rtt" DstPort 1 } Branch { Points [0, 235; 415, 0; 0, -30] DstBlock "Variable\nTransport Delay" DstPort 2 } } Line { SrcBlock "Saturation" SrcPort 1 Points [5, 0] Branch { DstBlock "Product" DstPort 1 } Branch { Points [0, 125] DstBlock "window" DstPort 1 } } Line { SrcBlock "Product" SrcPort 1 Points [10, 0] Branch { DstBlock "BW" DstPort 1 } Branch { Points [0, 130] DstBlock "pkt lost rate" DstPort 1 } } Line { SrcBlock "lost\nprob" SrcPort 1 Points [5, 0; 0, 300; 575, 0; 0, -40] DstBlock "pkt lost rate" DstPort 2 } Line { SrcBlock "pkt lost rate" SrcPort 1 Points [-30, 0; 0, -10] DstBlock "Variable\nTransport Delay" DstPort 1 } Line { SrcBlock "Variable\nTransport Delay" SrcPort 1 Points [-70, 0; 0, 70] DstBlock "decrease term" DstPort 1 } } } Block { BlockType Scope Name "avg queue length" Ports [1] Position [520, 89, 550, 121] Floating off Location [695, 427, 1019, 666] Open off NumInputPorts "1" TickLabels "OneTimeTick" ZoomMode "on" List { ListType AxesTitles axes1 "%" } Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData1" DataFormat "StructureWithTime" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "0" } Block { BlockType Scope Name "inst queue length" Ports [1] Position [520, 24, 550, 56] Floating off Location [682, 114, 1006, 353] Open off NumInputPorts "1" TickLabels "OneTimeTick" ZoomMode "on" List { ListType AxesTitles axes1 "%" } Grid "on" TimeRange "auto" YMin "-5" YMax "5" SaveToWorkspace off SaveName "ScopeData" DataFormat "StructureWithTime" LimitDataPoints on MaxDataPoints "5000" Decimation "1" SampleInput off SampleTime "0" } Block { BlockType Constant Name "propagation\ndelay" Position [410, 290, 440, 320] Orientation "left" Value "0.2" VectorParams1D on } Line { SrcBlock "TCP source" SrcPort 1 DstBlock "Gain" DstPort 1 } Line { SrcBlock "Gain" SrcPort 1 Points [0, 40] DstBlock "RED routers" DstPort 1 } Line { SrcBlock "RED routers" SrcPort 2 Points [40, 0; 0, 130] DstBlock "Sum" DstPort 1 } Line { SrcBlock "propagation\ndelay" SrcPort 1 DstBlock "Sum" DstPort 2 } Line { SrcBlock "Sum" SrcPort 1 Points [-290, 0; 0, -115] DstBlock "TCP source" DstPort 2 } Line { SrcBlock "RED routers" SrcPort 4 Points [15, 0; 0, -135; -355, 0; 0, 60] DstBlock "TCP source" DstPort 1 } Line { SrcBlock "RED routers" SrcPort 1 Points [65, 0; 0, -80] DstBlock "inst queue length" DstPort 1 } Line { SrcBlock "RED routers" SrcPort 3 Points [90, 0; 0, -65] DstBlock "avg queue length" DstPort 1 } Line { SrcBlock "TCP source" SrcPort 2 Points [30, 0; 0, 65; 275, 0; 0, -30] DstBlock "Congestion Window\n" DstPort 1 } } }