├── simulation_code ├── temp │ └── .gitignore ├── src │ └── main │ │ └── java │ │ └── ch │ │ └── ethz │ │ └── systems │ │ └── netbench │ │ ├── ext │ │ ├── flowlet │ │ │ ├── FlowletLogger.java │ │ │ ├── UniformFlowletIntermediaryGenerator.java │ │ │ └── IdentityFlowletIntermediaryGenerator.java │ │ ├── poissontraffic │ │ │ └── flowsize │ │ │ │ └── FlowSizeDistribution.java │ │ ├── demo │ │ │ ├── DemoPacketHeader.java │ │ │ ├── DemoIntermediary.java │ │ │ ├── DemoIntermediaryGenerator.java │ │ │ ├── DemoTransportLayerGenerator.java │ │ │ └── DemoPacket.java │ │ ├── bare │ │ │ ├── BareTransportLayerGenerator.java │ │ │ └── BarePacket.java │ │ ├── ecmp │ │ │ ├── EcmpSwitchRoutingInterface.java │ │ │ ├── EcmpSwitchRouting.java │ │ │ └── ForwarderSwitchRouting.java │ │ └── valiant │ │ │ └── ValiantEncapsulationHeader.java │ │ ├── core │ │ ├── run │ │ │ ├── routing │ │ │ │ └── RoutingPopulator.java │ │ │ ├── infrastructure │ │ │ │ ├── IntermediaryGenerator.java │ │ │ │ ├── TransportLayerGenerator.java │ │ │ │ ├── LinkGenerator.java │ │ │ │ ├── NetworkDeviceGenerator.java │ │ │ │ └── OutputPortGenerator.java │ │ │ └── MainSimulation.java │ │ ├── log │ │ │ ├── LoggerCallback.java │ │ │ └── LogFailureException.java │ │ ├── config │ │ │ └── exceptions │ │ │ │ ├── PropertyMissingException.java │ │ │ │ ├── ConfigurationReadFailException.java │ │ │ │ ├── PropertyValueInvalidException.java │ │ │ │ ├── PropertyConflictException.java │ │ │ │ └── PropertyNotExistingException.java │ │ ├── utility │ │ │ └── UnitConverter.java │ │ └── network │ │ │ └── UDPSendPacketEvent.java │ │ └── xpt │ │ ├── sourcerouting │ │ └── SourceRoutingPath.java │ │ ├── utility │ │ ├── dataprocessing │ │ │ └── NiceExcelCreator.java │ │ ├── TestMain.java │ │ ├── NodeTransportLayerMapper.java │ │ └── FTEcmpFC.java │ │ ├── tcpbase │ │ ├── PriorityHeader.java │ │ ├── SelectiveAckHeader.java │ │ └── AckRange.java │ │ ├── simple │ │ ├── simpleudp │ │ │ └── SimpleUdpTransportLayerGenerator.java │ │ ├── simpletcp │ │ │ └── SimpleTcpTransportLayerGenerator.java │ │ └── simpledctcp │ │ │ └── SimpleDctcpTransportLayerGenerator.java │ │ ├── newreno │ │ ├── newrenotcp │ │ │ └── NewRenoTcpTransportLayerGenerator.java │ │ └── newrenodctcp │ │ │ └── NewRenoDctcpTransportLayerGenerator.java │ │ ├── voijslav_and_sppifo │ │ ├── tcp │ │ │ ├── sptcp │ │ │ │ └── SpTcpTransportLayerGenerator.java │ │ │ ├── sphalftcp │ │ │ │ └── SpHalfTcpTransportLayerGenerator.java │ │ │ ├── pfzero │ │ │ │ └── PfzeroTransportLayerGenerator.java │ │ │ ├── sparktcp │ │ │ │ └── SparkTransportLayerGenerator.java │ │ │ ├── pfabric │ │ │ │ └── PfabricTransportLayerGenerator.java │ │ │ ├── buffertcp │ │ │ │ └── BufferTcpTransportLayerGenerator.java │ │ │ ├── distmeantcp │ │ │ │ └── DistMeanTcpTransportLayerGenerator.java │ │ │ ├── distrandtcp │ │ │ │ └── DistRandTcpTransportLayerGenerator.java │ │ │ └── lstftcp │ │ │ │ └── LstfTcpTransportLayerGenerator.java │ │ └── ports │ │ │ ├── PriorityOutputPortGenerator.java │ │ │ ├── UnlimitedOutputPortGenerator.java │ │ │ └── UnlimitedOutputPort.java │ │ ├── asaf │ │ └── routing │ │ │ └── priority │ │ │ └── PriorityFlowletIntermediaryGenerator.java │ │ └── sppifo │ │ └── ports │ │ ├── PIFO │ │ ├── PIFOOutputPort.java │ │ └── PIFOOutputPortGenerator.java │ │ └── HCSFQ │ │ └── FlowState.java ├── README.md └── projects │ └── sppifo │ └── runs │ ├── rackscale │ └── mix │ │ ├── HCSFQ.properties │ │ └── TCP.properties │ └── sppifo_evaluation │ ├── pFabric │ ├── data_mining_workload │ │ ├── 4000 │ │ │ ├── TCP.properties │ │ │ ├── PF.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 6000 │ │ │ ├── TCP.properties │ │ │ ├── PF.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 10000 │ │ │ ├── TCP.properties │ │ │ ├── PF.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 15000 │ │ │ ├── TCP.properties │ │ │ ├── PF.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 22500 │ │ │ ├── TCP.properties │ │ │ ├── PF.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 37000 │ │ │ ├── TCP.properties │ │ │ ├── PF.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 60000 │ │ │ ├── TCP.properties │ │ │ ├── PF.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ └── 100000 │ │ │ ├── TCP.properties │ │ │ ├── CSFQ.properties │ │ │ ├── PIFO.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ ├── web_search_workload │ │ ├── 3600 │ │ │ ├── TCP.properties │ │ │ ├── PIFO.properties │ │ │ ├── PF.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 5200 │ │ │ ├── TCP.properties │ │ │ ├── PIFO.properties │ │ │ ├── PF.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 7000 │ │ │ ├── TCP.properties │ │ │ ├── PIFO.properties │ │ │ ├── PF.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 8900 │ │ │ ├── TCP.properties │ │ │ ├── PIFO.properties │ │ │ ├── PF.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 11100 │ │ │ ├── TCP.properties │ │ │ ├── PIFO.properties │ │ │ ├── PF.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ ├── 14150 │ │ │ ├── TCP.properties │ │ │ ├── PIFO.properties │ │ │ ├── PF.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ │ └── 19000 │ │ │ ├── TCP.properties │ │ │ ├── PIFO.properties │ │ │ ├── PF.properties │ │ │ ├── DCTCP.properties │ │ │ └── TOY.properties │ └── data_mining_workload_modified │ │ ├── 4000 │ │ └── TCP.properties │ │ ├── 6000 │ │ └── TCP.properties │ │ ├── 10000 │ │ └── TCP.properties │ │ ├── 15000 │ │ └── TCP.properties │ │ ├── 22500 │ │ └── TCP.properties │ │ ├── 37000 │ │ └── TCP.properties │ │ └── 60000 │ │ └── TCP.properties │ └── fairness │ ├── web_search_workload │ ├── 3600 │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── 5200 │ │ ├── PIFOWFQ_32.properties │ │ ├── PIFOWFQ_8.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── 7000 │ │ ├── PIFOWFQ_32.properties │ │ ├── PIFOWFQ_8.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── 8900 │ │ ├── PIFOWFQ_32.properties │ │ ├── PIFOWFQ_8.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── 11100 │ │ ├── PIFOWFQ_8.properties │ │ ├── PIFOWFQ_32.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── 14150 │ │ ├── PIFOWFQ_8.properties │ │ ├── PIFOWFQ_32.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── 19000 │ │ ├── PIFOWFQ_8.properties │ │ ├── PIFOWFQ_32.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── 25000 │ │ ├── PIFOWFQ_8.properties │ │ ├── PIFOWFQ_32.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ └── 32000 │ │ ├── PIFOWFQ_8.properties │ │ ├── PIFOWFQ_32.properties │ │ ├── TCP.properties │ │ ├── CSFQ.properties │ │ └── HCSFQ.properties │ ├── data_mining_workload │ ├── 5200 │ │ └── CSFQ.properties │ ├── 7000 │ │ └── CSFQ.properties │ ├── 8900 │ │ └── CSFQ.properties │ ├── 11100 │ │ └── CSFQ.properties │ ├── 14150 │ │ └── CSFQ.properties │ └── 19000 │ │ └── CSFQ.properties │ └── incast │ └── web_search_workload │ ├── 5200 │ ├── CSFQ.properties │ └── HCSFQ.properties │ ├── 7000 │ ├── CSFQ.properties │ └── HCSFQ.properties │ ├── 8900 │ ├── CSFQ.properties │ └── HCSFQ.properties │ ├── 11100 │ └── CSFQ.properties │ ├── 14150 │ └── CSFQ.properties │ └── 19000 │ └── CSFQ.properties ├── testbed_code ├── simple_switch │ └── p4src │ │ ├── simpleswitch_actions.p4 │ │ ├── simpleswitch_blackboxs.p4 │ │ ├── simpleswitch_tables.p4 │ │ └── includes │ │ └── simpleswitch_defines.p4 ├── client_dpdk │ ├── client │ │ └── Makefile │ ├── server │ │ └── Makefile │ └── README.md └── hcsfq │ └── p4src │ └── includes │ ├── hcsfq_defines_tcp_diff.p4 │ ├── hcsfq_defines_tcp_alg.p4 │ ├── hcsfq_defines_tcp_rtt.p4 │ └── hcsfq_defines_tcp_hierarchy.p4 └── .gitignore /simulation_code/temp/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /testbed_code/simple_switch/p4src/simpleswitch_actions.p4: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /testbed_code/simple_switch/p4src/simpleswitch_blackboxs.p4: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /testbed_code/simple_switch/p4src/simpleswitch_tables.p4: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/flowlet/FlowletLogger.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.flowlet; 2 | 3 | public class FlowletLogger { 4 | 5 | // TODO 6 | 7 | } 8 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/run/routing/RoutingPopulator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.run.routing; 2 | 3 | public abstract class RoutingPopulator { 4 | public abstract void populateRoutingTables(); 5 | } 6 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/sourcerouting/SourceRoutingPath.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.sourcerouting; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class SourceRoutingPath extends ArrayList { 6 | // No adaptations needed, it is only created for 7 | // semantic purpose. 8 | } 9 | -------------------------------------------------------------------------------- /testbed_code/simple_switch/p4src/includes/simpleswitch_defines.p4: -------------------------------------------------------------------------------- 1 | #define CSFQ_PORT 8888 2 | #define LOWER_BOUND 0 3 | #define UPPER_BOUND 15 4 | #define NUM_FLOWS 65536 5 | #define EPOCH_THRESHOLD 1024 6 | #define WINDOW_SIZE 1024 7 | #define RECIRCULATED 1 8 | #define C 5120 9 | #define DELTA_C 250 -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/run/infrastructure/IntermediaryGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.run.infrastructure; 2 | 3 | import ch.ethz.systems.netbench.core.network.Intermediary; 4 | 5 | public abstract class IntermediaryGenerator { 6 | public abstract Intermediary generate(int networkDeviceIdentifier); 7 | } 8 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/run/infrastructure/TransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.run.infrastructure; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | 6 | public abstract class TransportLayerGenerator { 7 | public abstract TransportLayer generate(int identifier); 8 | } 9 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/utility/dataprocessing/NiceExcelCreator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.utility.dataprocessing; 2 | 3 | public class NiceExcelCreator { 4 | 5 | public static void main(String args[]) { 6 | 7 | // Read in files 8 | // Write out one-by-one header and file content... 9 | 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/log/LoggerCallback.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.log; 2 | 3 | public interface LoggerCallback { 4 | 5 | /** 6 | * Called by the {@link SimulationLogger} just before 7 | * all streams are closed. Can be used e.g. to write away overall statistics. 8 | */ 9 | void callBeforeClose(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/run/infrastructure/LinkGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.run.infrastructure; 2 | 3 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 4 | import ch.ethz.systems.netbench.core.network.Link; 5 | 6 | public abstract class LinkGenerator { 7 | public abstract Link generate(NetworkDevice fromNetworkDevice, NetworkDevice toNetworkDevice); 8 | } 9 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/log/LogFailureException.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.log; 2 | 3 | import java.io.IOException; 4 | 5 | /** 6 | * A logging action has failed, presumably due to failure of an I/O action. 7 | */ 8 | public class LogFailureException extends RuntimeException { 9 | 10 | public LogFailureException(IOException cause) { 11 | super(cause.getMessage()); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/run/infrastructure/NetworkDeviceGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.run.infrastructure; 2 | 3 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | 6 | public abstract class NetworkDeviceGenerator { 7 | public abstract NetworkDevice generate(int identifier); 8 | public abstract NetworkDevice generate(int identifier, TransportLayer server); 9 | } 10 | -------------------------------------------------------------------------------- /simulation_code/README.md: -------------------------------------------------------------------------------- 1 | ## Contents 2 | - projects: contains the parameters for different algorithms (e.g., AFQ, SP-PIFO, HCSFQ)
3 | - src: source code
4 | - temp: the log files are saved here
5 | - results: the results are generated here
6 | 7 | ## How to setup and run the simulator
8 | - Software dependencies
9 | - Java 8
10 | - Python 2
11 | - Building
12 | - `mvn clean compile assembly:single`
13 | - Running
14 | - `java -jar -ea NetBench.jar [config_dir]`
-------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac 2 | .DS_Store 3 | 4 | # Excutable file 5 | bin/ 6 | 7 | # Playground 8 | playground/ 9 | 10 | *.pcap 11 | 12 | # Backup file 13 | *.bak 14 | *.bak.* 15 | 16 | # Python byte code 17 | *.pyc 18 | 19 | # Object file 20 | *.o 21 | 22 | *.e 23 | 24 | # Temp file 25 | *.swp 26 | *.tmp 27 | tmp.* 28 | 29 | # Data 30 | *.csv 31 | *.in 32 | *.out 33 | *.stat 34 | 35 | # Figures 36 | !*.pdf 37 | 38 | # Function code 39 | simulator.py 40 | 41 | *.zip 42 | 43 | results/ 44 | *_bak/ 45 | .ipynb_checkpoints/ 46 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/run/infrastructure/OutputPortGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.run.infrastructure; 2 | 3 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 4 | import ch.ethz.systems.netbench.core.network.Link; 5 | import ch.ethz.systems.netbench.core.network.OutputPort; 6 | 7 | public abstract class OutputPortGenerator { 8 | public abstract OutputPort generate(NetworkDevice ownNetworkDevice, NetworkDevice towardsNetworkDevice, Link link); 9 | } 10 | -------------------------------------------------------------------------------- /testbed_code/client_dpdk/client/Makefile: -------------------------------------------------------------------------------- 1 | ifeq ($(RTE_SDK),) 2 | $(error "Please define RTE_SDK environment variable") 3 | endif 4 | 5 | # Default target, can be overriden by command line or environment 6 | RTE_TARGET ?= x86_64-native-linuxapp-gcc 7 | 8 | include $(RTE_SDK)/mk/rte.vars.mk 9 | 10 | # binary name 11 | APP = client 12 | 13 | # all source are stored in SRCS-y 14 | SRCS-y := client.c 15 | 16 | CFLAGS += -O3# -g for gdb debugging 17 | #CFLAGS += $(WERROR_FLAGS) 18 | 19 | include $(RTE_SDK)/mk/rte.extapp.mk 20 | -------------------------------------------------------------------------------- /testbed_code/client_dpdk/server/Makefile: -------------------------------------------------------------------------------- 1 | ifeq ($(RTE_SDK),) 2 | $(error "Please define RTE_SDK environment variable") 3 | endif 4 | 5 | # Default target, can be overriden by command line or environment 6 | RTE_TARGET ?= x86_64-native-linuxapp-gcc 7 | 8 | include $(RTE_SDK)/mk/rte.vars.mk 9 | 10 | # binary name 11 | APP = server 12 | 13 | # all source are stored in SRCS-y 14 | SRCS-y := server.c 15 | 16 | CFLAGS += -O3# -g #for gdb debugging 17 | #CFLAGS += $(WERROR_FLAGS) 18 | 19 | include $(RTE_SDK)/mk/rte.extapp.mk 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/config/exceptions/PropertyMissingException.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.config.exceptions; 2 | 3 | import ch.ethz.systems.netbench.core.config.NBProperties; 4 | 5 | public class PropertyMissingException extends RuntimeException { 6 | 7 | public PropertyMissingException(NBProperties config, String key) { 8 | super("[" + config.getFileName() + "]: essential property \"" + key + "\" was not found in the configuration file."); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/utility/UnitConverter.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.utility; 2 | 3 | public class UnitConverter { 4 | 5 | private UnitConverter() { 6 | // Cannot be instantiated 7 | } 8 | 9 | public static long convertSecondsToNanoseconds(double seconds) { 10 | return (long) (seconds * 1000000000L); 11 | } 12 | 13 | public static long convertSecondsToNanoseconds(long seconds) { 14 | return seconds * 1000000000L; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/poissontraffic/flowsize/FlowSizeDistribution.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.poissontraffic.flowsize; 2 | 3 | import ch.ethz.systems.netbench.core.Simulator; 4 | 5 | import java.util.Random; 6 | 7 | public abstract class FlowSizeDistribution { 8 | 9 | Random independentRng; 10 | 11 | FlowSizeDistribution() { 12 | this.independentRng = Simulator.selectIndependentRandom("flow_size"); 13 | } 14 | 15 | public abstract long generateFlowSizeByte(); 16 | } 17 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/config/exceptions/ConfigurationReadFailException.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.config.exceptions; 2 | 3 | import ch.ethz.systems.netbench.core.config.NBProperties; 4 | 5 | import java.io.IOException; 6 | 7 | public class ConfigurationReadFailException extends RuntimeException { 8 | 9 | public ConfigurationReadFailException(NBProperties properties, IOException cause) { 10 | super("[" + properties.getFileName() + "]: " + cause.getMessage()); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/demo/DemoPacketHeader.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.demo; 2 | 3 | public interface DemoPacketHeader { 4 | 5 | /** 6 | * Get the amount of data in bytes carried by the packet. 7 | * 8 | * @return Data carried in bytes 9 | */ 10 | long getDataSizeByte(); 11 | 12 | /** 13 | * Get the amount of bytes this packet acknowledges. 14 | * 15 | * @return Number of bytes acknowledged 16 | */ 17 | long getAckSizeByte(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/config/exceptions/PropertyValueInvalidException.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.config.exceptions; 2 | 3 | import ch.ethz.systems.netbench.core.config.NBProperties; 4 | 5 | public class PropertyValueInvalidException extends RuntimeException { 6 | 7 | public PropertyValueInvalidException(NBProperties properties, String key) { 8 | super("[" + properties.getFileName() + "]: essential property \"" + key + "\" has invalid value \"" + properties.getPropertyOrFail(key) + "\"."); 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/utility/TestMain.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.utility; 2 | 3 | /** 4 | * Created by Zimon on 23/01/2017. 5 | */ 6 | public class TestMain { 7 | 8 | public static void main(String args[]) { 9 | 10 | int c = 0; 11 | for (int i = 0; i < 8; i++) { 12 | for (int j = 0; j < 8; j++) { 13 | System.out.println(c + "," + (216 + i) + "," + (728 + j) + "," + (1.0 / 64)); 14 | c++; 15 | } 16 | 17 | } 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/run/MainSimulation.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.run; 2 | 3 | public class MainSimulation { 4 | 5 | public static void main(String args[]) { 6 | if (args.length == 0) { 7 | System.out.println("Please specify which experiments to run!"); 8 | } 9 | 10 | for (String arg : args) { 11 | // switch(arg) { 12 | // } 13 | // MainFromProperties.main(new String[]{arg}); 14 | } 15 | MainFromIntelliJ.main(args); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/config/exceptions/PropertyConflictException.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.config.exceptions; 2 | 3 | import ch.ethz.systems.netbench.core.config.NBProperties; 4 | import org.apache.commons.lang3.StringUtils; 5 | 6 | public class PropertyConflictException extends RuntimeException { 7 | 8 | public PropertyConflictException(NBProperties properties, String... keys) { 9 | super("[" + properties.getFileName() + "]: properties {" + 10 | StringUtils.join(keys, ", ") + "} conflict in the configuration file."); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/network/UDPSendPacketEvent.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.network; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.xpt.tcpbase.FullExtTcpPacket; 5 | 6 | public class UDPSendPacketEvent extends Event { 7 | private final Socket udpsocket; 8 | public UDPSendPacketEvent(long timeFromNowNS, Socket udpsocket) { 9 | super(timeFromNowNS); 10 | this.udpsocket = udpsocket; 11 | } 12 | @java.lang.Override 13 | public void trigger() { 14 | this.udpsocket.start(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /testbed_code/client_dpdk/README.md: -------------------------------------------------------------------------------- 1 | # server (netx8): 2 | go to `/home/user/hz/incast_dpdk/server` 3 | 4 | Compile: 5 | `make` 6 | 7 | Run: 8 | `sudo ./build/server -l 0` 9 | 10 | ### Note: 11 | - `-l` denotes the list of thread IDs. 12 | 13 | 14 | # client (netx1,2,3) 15 | go to `/home/user/hz/incast_dpdk/client` 16 | 17 | Compile: 18 | `make` 19 | 20 | Run: 21 | `sudo ./build/client -l 0 -- -x 1 -s 100000` 22 | 23 | ### how to modify the ethernet frame size: 24 | modify the length of the int array on L93 in `util/util.h` 25 | 26 | ### Note: 27 | - `-l` denotes the list of thread IDs. 28 | - `-x 1`: specify the client_ip: "10.1.0." 29 | - `-s 100000`: pkts/ms 30 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/tcpbase/PriorityHeader.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.tcpbase; 2 | 3 | import ch.ethz.systems.netbench.ext.basic.TcpHeader; 4 | 5 | public interface PriorityHeader extends TcpHeader { 6 | 7 | /** 8 | * Retrieve the priority of the packet. 9 | * 10 | * @return Packet priority 11 | */ 12 | long getPriority(); 13 | 14 | /** 15 | * Increase the priority of the packet. 16 | */ 17 | void increasePriority(); 18 | 19 | /** 20 | * Set the current priority of the packet. 21 | * 22 | * @param val Priority value 23 | */ 24 | void setPriority(long val); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/demo/DemoIntermediary.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.demo; 2 | 3 | import ch.ethz.systems.netbench.core.network.Intermediary; 4 | import ch.ethz.systems.netbench.core.network.Packet; 5 | 6 | /** 7 | * The demonstrative basic identity intermediary does not match modify packets. 8 | */ 9 | public class DemoIntermediary extends Intermediary { 10 | 11 | DemoIntermediary() { 12 | super(); 13 | } 14 | 15 | @Override 16 | public Packet adaptOutgoing(Packet packet) { 17 | return packet; 18 | } 19 | 20 | @Override 21 | public Packet adaptIncoming(Packet packet) { 22 | return packet; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/demo/DemoIntermediaryGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.demo; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.Intermediary; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.IntermediaryGenerator; 6 | 7 | public class DemoIntermediaryGenerator extends IntermediaryGenerator { 8 | 9 | public DemoIntermediaryGenerator() { 10 | SimulationLogger.logInfo("Network device intermediary", "DEMO"); 11 | } 12 | 13 | @Override 14 | public Intermediary generate(int networkDeviceIdentifier) { 15 | return new DemoIntermediary(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/bare/BareTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.bare; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class BareTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public BareTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "BARE"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new BareTransportLayer(identifier); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/demo/DemoTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.demo; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class DemoTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public DemoTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "DEMO"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new DemoTransportLayer(identifier); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/simple/simpleudp/SimpleUdpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.simple.simpleudp; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 5 | import ch.ethz.systems.netbench.core.network.TransportLayer; 6 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 7 | 8 | public class SimpleUdpTransportLayerGenerator extends TransportLayerGenerator { 9 | 10 | public SimpleUdpTransportLayerGenerator() { 11 | SimulationLogger.logInfo("Transport layer", "UDP"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new SimpleUdpTransportLayer(identifier); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/flowlet/UniformFlowletIntermediaryGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.flowlet; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.Intermediary; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.IntermediaryGenerator; 6 | 7 | public class UniformFlowletIntermediaryGenerator extends IntermediaryGenerator { 8 | 9 | public UniformFlowletIntermediaryGenerator() { 10 | SimulationLogger.logInfo("Network device flowlet intermediary", "UNIFORM"); 11 | } 12 | 13 | @Override 14 | public Intermediary generate(int networkDeviceIdentifier) { 15 | return new UniformFlowletIntermediary(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/tcpbase/SelectiveAckHeader.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.tcpbase; 2 | 3 | import ch.ethz.systems.netbench.core.network.Packet; 4 | import ch.ethz.systems.netbench.core.network.PacketHeader; 5 | 6 | import java.util.Collection; 7 | 8 | public interface SelectiveAckHeader extends PacketHeader { 9 | 10 | /** 11 | * Set the selective acknowledgment. 12 | * 13 | * @param selectiveAck Selective acknowledgment 14 | */ 15 | Packet setSelectiveAck(Collection selectiveAck); 16 | 17 | /** 18 | * Get the selective acknowledgment field. 19 | * 20 | * @return Selective acknowledgment 21 | */ 22 | Collection getSelectiveAck(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/ecmp/EcmpSwitchRoutingInterface.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.ecmp; 2 | 3 | import ch.ethz.systems.netbench.core.network.OutputPort; 4 | 5 | public interface EcmpSwitchRoutingInterface { 6 | 7 | /** 8 | * Add another hop opportunity to the routing table for the given destination. 9 | * 10 | * @param destinationId Destination identifier 11 | * @param nextHopId A network device identifier where it could go to next (must have already been added 12 | * as connection}, else will throw an illegal 13 | * argument exception. 14 | */ 15 | void addDestinationToNextSwitch(int destinationId, int nextHopId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/flowlet/IdentityFlowletIntermediaryGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.flowlet; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.Intermediary; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.IntermediaryGenerator; 6 | 7 | public class IdentityFlowletIntermediaryGenerator extends IntermediaryGenerator { 8 | 9 | public IdentityFlowletIntermediaryGenerator() { 10 | SimulationLogger.logInfo("Network device flowlet intermediary", "IDENTITY"); 11 | } 12 | 13 | @Override 14 | public Intermediary generate(int networkDeviceIdentifier) { 15 | return new IdentityFlowletIntermediary(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/utility/NodeTransportLayerMapper.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.utility; 2 | 3 | /** 4 | * Main utility tool to generate the node list whether a node has a transport 5 | * layer in a scenario topology file. 6 | */ 7 | public class NodeTransportLayerMapper { 8 | 9 | public static void main(String[] args) { 10 | 11 | int n = 100; 12 | for (int i = 0; i < n; i++) { 13 | if (matchCriteria(i)) { 14 | System.out.println(i + " 1"); 15 | } else { 16 | System.out.println(i + " 0"); 17 | } 18 | } 19 | 20 | } 21 | 22 | private static boolean matchCriteria(int i) { 23 | return i < 80; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /testbed_code/hcsfq/p4src/includes/hcsfq_defines_tcp_diff.p4: -------------------------------------------------------------------------------- 1 | #define CSFQ_PORT 8888 2 | #define LOWER_BOUND 0 3 | #define UPPER_BOUND 15 4 | #define NUM_FLOWS 600 5 | #define NUM_TENANTS 10 6 | #define RATE_ESTIMATED 1 7 | #ifdef BPS 8 | #define EPOCH_THRESHOLD 100000 * 8 9 | #define WINDOW_SIZE 43828 10 | #else 11 | #define EPOCH_THRESHOLD 30720 12 | #define WINDOW_SIZE 5001 13 | #endif 14 | 15 | #define RECIRCULATED 1 16 | #define UPDATE_ALPHA 1 17 | #define UPDATE_TOTAL_ALPHA 1 18 | #define UPDATE_RATE 1 19 | #define bitwidth 1 20 | 21 | #ifdef BPS 22 | #define C 115145657 23 | #define INIT_C 11514565 24 | #else 25 | #define C 35000 26 | #define DELTA_C 123 27 | #endif -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/simple/simpletcp/SimpleTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.simple.simpletcp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class SimpleTcpTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public SimpleTcpTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "TCP"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new SimpleTcpTransportLayer(identifier); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/newreno/newrenotcp/NewRenoTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.newreno.newrenotcp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class NewRenoTcpTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public NewRenoTcpTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "TCP"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new NewRenoTcpTransportLayer(identifier); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/sptcp/SpTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.sptcp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class SpTcpTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public SpTcpTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "SP TCP"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new SpTcpTransportLayer(identifier); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /testbed_code/hcsfq/p4src/includes/hcsfq_defines_tcp_alg.p4: -------------------------------------------------------------------------------- 1 | #define CSFQ_PORT 8888 2 | #define LOWER_BOUND 0 3 | #define UPPER_BOUND 15 4 | #define NUM_FLOWS 600 5 | #define NUM_TENANTS 10 6 | #define RATE_ESTIMATED 1 7 | #ifdef BPS 8 | #define EPOCH_THRESHOLD 1000 * 8 9 | #define WINDOW_SIZE 4382 10 | #else 11 | #define EPOCH_THRESHOLD 30720 12 | #define WINDOW_SIZE 5001 13 | #endif 14 | 15 | #define RECIRCULATED 1 16 | #define UPDATE_ALPHA 1 17 | #define UPDATE_TOTAL_ALPHA 1 18 | #define UPDATE_RATE 1 19 | #define bitwidth 1 20 | 21 | #ifdef BPS 22 | #define C 1151456 23 | #define DELTA_C 4800 24 | #define INIT_C 215145 25 | #else 26 | #define C 35000 27 | #define DELTA_C 123 28 | #endif -------------------------------------------------------------------------------- /testbed_code/hcsfq/p4src/includes/hcsfq_defines_tcp_rtt.p4: -------------------------------------------------------------------------------- 1 | #define CSFQ_PORT 8888 2 | #define LOWER_BOUND 0 3 | #define UPPER_BOUND 15 4 | #define NUM_FLOWS 600 5 | #define NUM_TENANTS 10 6 | #define RATE_ESTIMATED 1 7 | #ifdef BPS 8 | #define EPOCH_THRESHOLD 1000 * 8 9 | #define WINDOW_SIZE 4382 10 | #else 11 | #define EPOCH_THRESHOLD 30720 12 | #define WINDOW_SIZE 5001 13 | #endif 14 | 15 | #define RECIRCULATED 1 16 | #define UPDATE_ALPHA 1 17 | #define UPDATE_TOTAL_ALPHA 1 18 | #define UPDATE_RATE 1 19 | #define bitwidth 1 20 | 21 | #ifdef BPS 22 | #define C 1151456 23 | #define DELTA_C 4800 24 | #define INIT_C 215145 25 | #else 26 | #define C 35000 27 | #define DELTA_C 123 28 | #endif -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/simple/simpledctcp/SimpleDctcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.simple.simpledctcp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class SimpleDctcpTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public SimpleDctcpTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "SIMPLE_DCTCP"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new SimpleDctcpTransportLayer(identifier); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/newreno/newrenodctcp/NewRenoDctcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.newreno.newrenodctcp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class NewRenoDctcpTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public NewRenoDctcpTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "DCTCP"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new NewRenoDctcpTransportLayer(identifier); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/core/config/exceptions/PropertyNotExistingException.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.config.exceptions; 2 | 3 | import ch.ethz.systems.netbench.core.config.NBProperties; 4 | 5 | public class PropertyNotExistingException extends RuntimeException { 6 | 7 | public PropertyNotExistingException(NBProperties properties, String key) { 8 | super("[" + properties.getFileName() + "]: property \"" + key + "\" is not a valid property key. " + 9 | "Three possibilities: (a) Did you make a typo in the code? " + 10 | "(b) Did you make a typo in the configuration file? " + 11 | "(c) Did you introduce your own property and forgot to add it to the static list in the NBProperties class?" 12 | ); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/sphalftcp/SpHalfTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.sphalftcp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class SpHalfTcpTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | public SpHalfTcpTransportLayerGenerator() { 10 | // No parameters needed 11 | SimulationLogger.logInfo("Transport layer", "SP HALF TCP"); 12 | } 13 | 14 | @Override 15 | public TransportLayer generate(int identifier) { 16 | return new SpHalfTcpTransportLayer(identifier); 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/asaf/routing/priority/PriorityFlowletIntermediaryGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.asaf.routing.priority; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.run.infrastructure.IntermediaryGenerator; 5 | import ch.ethz.systems.netbench.ext.flowlet.FlowletIntermediary; 6 | 7 | public class PriorityFlowletIntermediaryGenerator extends IntermediaryGenerator{ 8 | 9 | public PriorityFlowletIntermediaryGenerator() { 10 | SimulationLogger.logInfo("Network device flowlet intermediary", "PRIORITY_UNIFORM_FLOWLET"); 11 | } 12 | 13 | @Override 14 | public FlowletIntermediary generate(int networkDeviceIdentifier) { 15 | return new PriorityFlowletIntermediary(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/utility/FTEcmpFC.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.utility; 2 | 3 | public class FTEcmpFC { 4 | 5 | public static void main(String args[]) { 6 | 7 | System.out.println("#server_pair_id,src,dst,pdf_num_bytes"); 8 | int c = 0; 9 | for (int i = 320; i < 333; i++) { 10 | if (i > 324 && i < 328) { 11 | continue; 12 | } 13 | for (int j = 320; j < 333; j++) { 14 | if (j > 324 && j < 328) { 15 | continue; 16 | } 17 | if (i == j) { 18 | continue; 19 | } 20 | System.out.println(c + "," + i + "," + j + "," + (1.0/90.0)); 21 | c++; 22 | } 23 | } 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/demo/DemoPacket.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.demo; 2 | 3 | import ch.ethz.systems.netbench.ext.basic.IpPacket; 4 | 5 | class DemoPacket extends IpPacket implements DemoPacketHeader { 6 | 7 | private final long dataSizeByte; 8 | private final long ackSizeByte; 9 | 10 | DemoPacket(long flowId, long dataSizeByte, int sourceId, int destinationId, int TTL, long ackSizeByte) { 11 | super(flowId, dataSizeByte * 8, sourceId, destinationId, TTL); 12 | this.dataSizeByte = dataSizeByte; 13 | this.ackSizeByte = ackSizeByte; 14 | } 15 | 16 | @Override 17 | public long getDataSizeByte() { 18 | return dataSizeByte; 19 | } 20 | 21 | @Override 22 | public long getAckSizeByte() { 23 | return ackSizeByte; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/tcpbase/AckRange.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.tcpbase; 2 | 3 | /** 4 | * Acknowledgment range (immutable object). 5 | */ 6 | public class AckRange { 7 | 8 | final long lowBound; 9 | final long highBound; 10 | 11 | AckRange(long lowBound, long highBound) { 12 | this.lowBound = lowBound; 13 | this.highBound = highBound; 14 | } 15 | 16 | long getLowBound() { 17 | return lowBound; 18 | } 19 | 20 | long getHighBound() { 21 | return highBound; 22 | } 23 | 24 | public String toString() { 25 | return "[" + lowBound + ", " + highBound + ")"; 26 | } 27 | 28 | public boolean isWithin(long intLowBound, long intHighBound) { 29 | return intLowBound >= this.lowBound && intHighBound <= this.highBound; 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /testbed_code/hcsfq/p4src/includes/hcsfq_defines_tcp_hierarchy.p4: -------------------------------------------------------------------------------- 1 | #define CSFQ_PORT 8888 2 | #define LOWER_BOUND 0 3 | #define UPPER_BOUND 15 4 | #define NUM_FLOWS 600 5 | #define NUM_TENANTS 10 6 | #define RATE_ESTIMATED 1 7 | #ifdef BPS 8 | #define EPOCH_THRESHOLD 1000 * 8 9 | // #define EPOCH_THRESHOLD 2382 10 | // #define EPOCH_THRESHOLD (238 * 2) 11 | #define WINDOW_SIZE 4382 12 | #else 13 | #define EPOCH_THRESHOLD 30720 14 | #define WINDOW_SIZE 5001 15 | #endif 16 | 17 | #define RECIRCULATED 1 18 | #define UPDATE_ALPHA 1 19 | #define UPDATE_TOTAL_ALPHA 1 20 | #define UPDATE_RATE 1 21 | #define bitwidth 1 22 | 23 | #ifdef BPS 24 | #define C 1151456 25 | #define DELTA_C 6000 26 | #define INIT_C 215145 27 | #else 28 | #define C 35000 29 | #define DELTA_C 123 30 | #endif -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/rackscale/mix/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/rack.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/rackscale/mix 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=25000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/sppifo/ports/PIFO/PIFOOutputPort.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.sppifo.ports.PIFO; 2 | 3 | import ch.ethz.systems.netbench.core.network.Link; 4 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 5 | import ch.ethz.systems.netbench.core.network.OutputPort; 6 | import ch.ethz.systems.netbench.core.network.Packet; 7 | 8 | 9 | public class PIFOOutputPort extends OutputPort { 10 | 11 | 12 | public PIFOOutputPort(NetworkDevice ownNetworkDevice, NetworkDevice targetNetworkDevice, Link link, long sizePackets) { 13 | super(ownNetworkDevice, targetNetworkDevice, link, new PIFOQueue(sizePackets)); 14 | } 15 | 16 | /** 17 | * Enqueue the given packet. 18 | * 19 | * @param packet Packet instance 20 | */ 21 | @Override 22 | public void enqueue(Packet packet) { 23 | 24 | //Enqueue packet 25 | push(packet); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/ports/PriorityOutputPortGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.ports; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.Link; 5 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 6 | import ch.ethz.systems.netbench.core.network.OutputPort; 7 | import ch.ethz.systems.netbench.core.run.infrastructure.OutputPortGenerator; 8 | 9 | public class PriorityOutputPortGenerator extends OutputPortGenerator { 10 | 11 | public PriorityOutputPortGenerator() { 12 | SimulationLogger.logInfo("Port", "PRIORITY_PORT"); 13 | } 14 | 15 | @Override 16 | public OutputPort generate(NetworkDevice ownNetworkDevice, NetworkDevice towardsNetworkDevice, Link link) { 17 | return new PriorityOutputPort(ownNetworkDevice, towardsNetworkDevice, link); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/ports/UnlimitedOutputPortGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.ports; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 5 | import ch.ethz.systems.netbench.core.network.Link; 6 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 7 | import ch.ethz.systems.netbench.core.network.OutputPort; 8 | import ch.ethz.systems.netbench.core.run.infrastructure.OutputPortGenerator; 9 | 10 | public class UnlimitedOutputPortGenerator extends OutputPortGenerator { 11 | 12 | public UnlimitedOutputPortGenerator() { 13 | SimulationLogger.logInfo("Port", "UNLIMITED_PORT"); 14 | } 15 | 16 | @Override 17 | public OutputPort generate(NetworkDevice ownNetworkDevice, NetworkDevice towardsNetworkDevice, Link link) { 18 | return new UnlimitedOutputPort(ownNetworkDevice, towardsNetworkDevice, link); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/rackscale/mix/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/rack.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/rackscale/mix 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=25000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/pfzero/PfzeroTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.pfzero; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.Simulator; 5 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 6 | import ch.ethz.systems.netbench.core.network.TransportLayer; 7 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 8 | 9 | public class PfzeroTransportLayerGenerator extends TransportLayerGenerator { 10 | 11 | public PfzeroTransportLayerGenerator() { 12 | // No parameters needed 13 | SimulationLogger.logInfo("Transport layer", "PFZERO"); 14 | } 15 | 16 | @Override 17 | public TransportLayer generate(int identifier) { 18 | return new PfzeroTransportLayer( 19 | identifier, 20 | Simulator.getConfiguration().getLongPropertyOrFail("seed") 21 | ); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/sparktcp/SparkTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.sparktcp; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.Simulator; 5 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 6 | import ch.ethz.systems.netbench.core.network.TransportLayer; 7 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 8 | 9 | public class SparkTransportLayerGenerator extends TransportLayerGenerator { 10 | 11 | public SparkTransportLayerGenerator() { 12 | // No parameters needed 13 | SimulationLogger.logInfo("Transport layer", "SparkTCP"); 14 | } 15 | 16 | @Override 17 | public TransportLayer generate(int identifier) { 18 | return new SparkTransportLayer( 19 | identifier, 20 | Simulator.getConfiguration().getLongPropertyOrFail("seed") 21 | ); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/4000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/4000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=4000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/6000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/6000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=6000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/11100/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/11100 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/14150/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/14150 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/19000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/19000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/3600/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/3600 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=3600 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/5200/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/5200 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/7000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/7000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/8900/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/8900 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/pfabric/PfabricTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.pfabric; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.Simulator; 5 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 6 | import ch.ethz.systems.netbench.core.network.TransportLayer; 7 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 8 | 9 | public class PfabricTransportLayerGenerator extends TransportLayerGenerator { 10 | 11 | public PfabricTransportLayerGenerator() { 12 | // No parameters needed 13 | SimulationLogger.logInfo("Transport layer", "PFABRIC"); 14 | } 15 | 16 | @Override 17 | public TransportLayer generate(int identifier) { 18 | return new PfabricTransportLayer( 19 | identifier, 20 | Simulator.getConfiguration().getLongPropertyOrFail("seed") 21 | ); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/10000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/10000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=10000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/15000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/15000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=15000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/22500/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/22500 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=22500 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/37000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/37000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=37000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/60000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/60000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=60000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/10000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/10000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=pfabric 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=10000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/100000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/100000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=100000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/15000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/15000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=pfabric 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=15000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/22500/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/22500 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=pfabric 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=22500 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/37000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/37000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=pfabric 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=37000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/4000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/4000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=pfabric 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=4000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/6000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/6000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=pfabric 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=6000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/60000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/60000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=pfabric 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=60000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/ecmp/EcmpSwitchRouting.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.ecmp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 5 | import ch.ethz.systems.netbench.core.run.routing.RoutingPopulator; 6 | 7 | import java.util.Map; 8 | 9 | public class EcmpSwitchRouting extends RoutingPopulator { 10 | 11 | private final Map idToNetworkDevice; 12 | 13 | public EcmpSwitchRouting(Map idToNetworkDevice) { 14 | this.idToNetworkDevice = idToNetworkDevice; 15 | SimulationLogger.logInfo("Routing", "ECMP"); 16 | } 17 | 18 | /** 19 | * Initialize the multi-forwarding routing tables in the network devices. 20 | */ 21 | @Override 22 | public void populateRoutingTables() { 23 | EcmpRoutingUtility.populateShortestPathRoutingTables(idToNetworkDevice, true); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/buffertcp/BufferTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.buffertcp; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.Simulator; 5 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 6 | import ch.ethz.systems.netbench.core.network.TransportLayer; 7 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 8 | 9 | public class BufferTcpTransportLayerGenerator extends TransportLayerGenerator { 10 | 11 | public BufferTcpTransportLayerGenerator() { 12 | // No parameters needed 13 | SimulationLogger.logInfo("Transport layer", "BufferTCP"); 14 | } 15 | 16 | @Override 17 | public TransportLayer generate(int identifier) { 18 | return new BufferTcpTransportLayer( 19 | identifier, 20 | Simulator.getConfiguration().getLongPropertyOrFail("seed") 21 | ); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/valiant/ValiantEncapsulationHeader.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.valiant; 2 | 3 | import ch.ethz.systems.netbench.ext.basic.TcpPacket; 4 | 5 | public interface ValiantEncapsulationHeader { 6 | 7 | /** 8 | * Retrieve the encapsulated packet. 9 | * 10 | * @return Encapsulated packet 11 | */ 12 | TcpPacket getPacket(); 13 | 14 | /** 15 | * Get the valiant destination. 16 | * 17 | * @return Valiant destination 18 | */ 19 | int getValiantDestination(); 20 | 21 | /** 22 | * Mark that it has passed the valiant node. 23 | */ 24 | void markPassedValiant(); 25 | 26 | /** 27 | * Check whether it has already passed the valiant node. 28 | * 29 | * @return True iff passed valiant (and should be directly routed to the true destination 30 | * of the underlying encapsulated packet) 31 | */ 32 | boolean passedValiant(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/distmeantcp/DistMeanTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.distmeantcp; 2 | 3 | import ch.ethz.systems.netbench.core.Simulator; 4 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 5 | import ch.ethz.systems.netbench.core.network.TransportLayer; 6 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 7 | 8 | public class DistMeanTcpTransportLayerGenerator extends TransportLayerGenerator { 9 | 10 | public DistMeanTcpTransportLayerGenerator() { 11 | // No parameters needed 12 | SimulationLogger.logInfo("Transport layer", "DistMeanTcp"); 13 | } 14 | 15 | @Override 16 | public TransportLayer generate(int identifier) { 17 | return new DistMeanTcpTransportLayer( 18 | identifier, 19 | Simulator.getConfiguration().getLongPropertyOrFail("seed") 20 | ); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/distrandtcp/DistRandTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.distrandtcp; 2 | 3 | import ch.ethz.systems.netbench.core.Simulator; 4 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 5 | import ch.ethz.systems.netbench.core.network.TransportLayer; 6 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 7 | 8 | public class DistRandTcpTransportLayerGenerator extends TransportLayerGenerator { 9 | 10 | public DistRandTcpTransportLayerGenerator() { 11 | // No parameters needed 12 | SimulationLogger.logInfo("Transport layer", "DistRandTcp"); 13 | } 14 | 15 | @Override 16 | public TransportLayer generate(int identifier) { 17 | return new DistRandTcpTransportLayer( 18 | identifier, 19 | Simulator.getConfiguration().getLongPropertyOrFail("seed") 20 | ); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/3600/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/3600 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=3600 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/5200/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/5200 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=5200 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/7000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/7000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=7000 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/8900/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/8900 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=8900 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/10000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/10000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=10000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/10000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/10000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=10000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/15000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/15000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=15000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/15000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/15000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=15000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/22500/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/22500 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=22500 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/22500/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/22500 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=22500 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/37000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/37000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=37000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/37000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/37000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=37000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/4000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/4000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=4000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/4000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/4000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=4000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/6000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/6000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=6000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/6000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/6000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=6000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/60000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/60000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=60000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/60000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/60000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=60000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload_modified/10000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/10000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=forwarder_switch 16 | network_device_intermediary=identity 17 | network_device_routing=single_forward 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=perfect_simple 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=10000 31 | traffic_flow_size_dist=uniform 32 | traffic_flow_size_dist_uniform_mean_bytes=1000000 33 | traffic_probabilities_generator=all_to_all 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/11100/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/11100 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=11100 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/14150/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/14150 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=14150 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/19000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/19000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=19000 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/bare/BarePacket.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.bare; 2 | 3 | import ch.ethz.systems.netbench.ext.basic.TcpPacket; 4 | 5 | class BarePacket extends TcpPacket { 6 | 7 | BarePacket(long flowId, long dataSizeByte, int sourceId, int destinationId, long sequenceNumber, long acknowledgementNumber, boolean ECE, boolean ACK, double windowSize) { 8 | super( 9 | flowId, 10 | dataSizeByte, 11 | sourceId, 12 | destinationId, 13 | 0, 14 | 0, 15 | 0, 16 | sequenceNumber, 17 | acknowledgementNumber, 18 | false, 19 | false, 20 | ECE, 21 | false, 22 | ACK, 23 | false, 24 | false, 25 | false, 26 | false, 27 | windowSize 28 | ); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/100000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/100000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=100000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/100000/PIFO.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFO 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/100000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=pifo 22 | output_port_max_size_packets=80 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=100000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload_modified/15000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/15000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=forwarder_switch 16 | network_device_intermediary=identity 17 | network_device_routing=single_forward 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=perfect_simple 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=15000 31 | traffic_flow_size_dist=uniform 32 | traffic_flow_size_dist_uniform_mean_bytes=1000000 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload_modified/22500/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/22500 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=forwarder_switch 16 | network_device_intermediary=identity 17 | network_device_routing=single_forward 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=perfect_simple 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=22500 31 | traffic_flow_size_dist=uniform 32 | traffic_flow_size_dist_uniform_mean_bytes=1000000 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload_modified/37000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/37000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=forwarder_switch 16 | network_device_intermediary=identity 17 | network_device_routing=single_forward 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=perfect_simple 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=37000 31 | traffic_flow_size_dist=uniform 32 | traffic_flow_size_dist_uniform_mean_bytes=1000000 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload_modified/4000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/4000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=forwarder_switch 16 | network_device_intermediary=identity 17 | network_device_routing=single_forward 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=perfect_simple 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=4000 31 | traffic_flow_size_dist=uniform 32 | traffic_flow_size_dist_uniform_mean_bytes=1000000 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload_modified/6000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/6000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=forwarder_switch 16 | network_device_intermediary=identity 17 | network_device_routing=single_forward 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=perfect_simple 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=6000 31 | traffic_flow_size_dist=uniform 32 | traffic_flow_size_dist_uniform_mean_bytes=1000000 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload_modified/60000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/60000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=forwarder_switch 16 | network_device_intermediary=identity 17 | network_device_routing=single_forward 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=perfect_simple 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=60000 31 | traffic_flow_size_dist=uniform 32 | traffic_flow_size_dist_uniform_mean_bytes=1000000 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/ext/ecmp/ForwarderSwitchRouting.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.ecmp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 5 | import ch.ethz.systems.netbench.core.run.routing.RoutingPopulator; 6 | 7 | import java.util.Map; 8 | 9 | public class ForwarderSwitchRouting extends RoutingPopulator { 10 | 11 | private final Map idToNetworkDevice; 12 | 13 | public ForwarderSwitchRouting(Map idToNetworkDevice) { 14 | this.idToNetworkDevice = idToNetworkDevice; 15 | SimulationLogger.logInfo("Routing", "SINGLE_FORWARD"); 16 | } 17 | 18 | /** 19 | * Initialize the single-forward routing tables in the network devices. 20 | */ 21 | @Override 22 | public void populateRoutingTables() { 23 | EcmpRoutingUtility.populateShortestPathRoutingTables(idToNetworkDevice, false); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/lstftcp/LstfTcpTransportLayerGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.tcp.lstftcp; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.TransportLayer; 5 | import ch.ethz.systems.netbench.core.run.infrastructure.TransportLayerGenerator; 6 | 7 | public class LstfTcpTransportLayerGenerator extends TransportLayerGenerator { 8 | 9 | private String rankDistribution; 10 | private long rankBound; 11 | 12 | public LstfTcpTransportLayerGenerator(String rankDistribution, long rankBound) { 13 | SimulationLogger.logInfo("Transport layer", "LSTF TCP"); 14 | this.rankDistribution = rankDistribution; 15 | this.rankBound = rankBound; 16 | } 17 | 18 | @Override 19 | public TransportLayer generate(int identifier) { 20 | return new LstfTcpTransportLayer(identifier, rankDistribution, rankBound); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/11100/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/11100 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=tail_drop 22 | output_port_max_queue_size_bytes=146000 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=11100 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/14150/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/14150 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=tail_drop 22 | output_port_max_queue_size_bytes=146000 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=14150 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/19000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/19000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=tail_drop 22 | output_port_max_queue_size_bytes=146000 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=19000 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/3600/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/3600 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=tail_drop 22 | output_port_max_queue_size_bytes=146000 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=3600 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/5200/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/5200 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=tail_drop 22 | output_port_max_queue_size_bytes=146000 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=5200 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/7000/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/7000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=tail_drop 22 | output_port_max_queue_size_bytes=146000 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=7000 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/8900/PF.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=pfabric 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/8900 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=tail_drop 22 | output_port_max_queue_size_bytes=146000 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=8900 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/ports/UnlimitedOutputPort.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.voijslav_and_sppifo.ports; 2 | 3 | 4 | import ch.ethz.systems.netbench.core.network.Link; 5 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 6 | import ch.ethz.systems.netbench.core.network.OutputPort; 7 | import ch.ethz.systems.netbench.core.network.Packet; 8 | 9 | import java.util.concurrent.LinkedBlockingQueue; 10 | 11 | /** 12 | * The unlimited output port employs a First-In-First-Out output 13 | * queue without limiting the size it can take. 14 | */ 15 | public class UnlimitedOutputPort extends OutputPort { 16 | 17 | public UnlimitedOutputPort(NetworkDevice ownNetworkDevice, NetworkDevice targetNetworkDevice, Link link) { 18 | super(ownNetworkDevice, targetNetworkDevice, link, new LinkedBlockingQueue()); 19 | } 20 | 21 | @Override 22 | public void enqueue(Packet packet) { 23 | guaranteedEnqueue(packet); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/4000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/4000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=4000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/6000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/6000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=6000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/11100/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/11100 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=11100 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/14150/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/14150 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=14150 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/19000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/19000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=19000 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/3600/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/3600 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=3600 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/5200/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/5200 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=5200 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/7000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/7000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=7000 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/8900/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/8900 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=8900 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/10000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/10000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=10000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/15000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/15000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=15000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/22500/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/22500 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=22500 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/37000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/37000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=37000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/60000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/60000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=60000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/sppifo/ports/HCSFQ/FlowState.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.sppifo.ports.HCSFQ; 2 | 3 | import ch.ethz.systems.netbench.core.Simulator; 4 | 5 | public class FlowState { 6 | private final double K; 7 | private long lastArrTime; 8 | private double r; 9 | 10 | public FlowState(double K) { 11 | this.K = K; 12 | this.lastArrTime = - 1; 13 | this.r = 0; 14 | } 15 | 16 | public double getEstArrRate(long newArrTime, long l) { 17 | // Only update estimate if coming from a different batch 18 | if (1==1) { 19 | long T = newArrTime - lastArrTime; 20 | double _inc = 20; 21 | // System.out.println(T); 22 | 23 | lastArrTime = newArrTime; 24 | r = (1 - Math.exp(-(T+_inc) / K)) * (l * 1.0 / (T+_inc)) + Math.exp(-(T+_inc) / K) * r; 25 | } 26 | 27 | return r; 28 | } 29 | 30 | public double getEstRate() { 31 | return r; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/11100/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/14150/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/19000/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/25000/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/25000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=25000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/32000/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/32000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=32000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/5200/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/5200/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/7000/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/7000/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/8900/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/8900/PIFOWFQ_8.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_8 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=80 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/100000/DCTCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=DCTCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/100000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | output_port_ecn_threshold_k_bytes=14600 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=100000 32 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 33 | traffic_probabilities_generator=all_to_all 34 | 35 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/11100/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/14150/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/19000/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/25000/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/25000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=25000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/32000/PIFOWFQ_32.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=PIFOWFQ_32 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/32000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=wfqpifo 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=32000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/5200/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/7000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/8900/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/11100/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/14150/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/19000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/25000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/25000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=25000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/32000/TCP.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TCP 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/32000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=tcp 13 | 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=tail_drop 21 | output_port_max_queue_size_bytes=146000 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=32000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/5200/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/7000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/8900/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/3600/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/3600 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=3600 34 | traffic_flow_size_dist=pfabric_web_search_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/5200/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/5200 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=5200 34 | traffic_flow_size_dist=pfabric_web_search_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/7000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/7000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=7000 34 | traffic_flow_size_dist=pfabric_web_search_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/8900/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/8900 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=8900 34 | traffic_flow_size_dist=pfabric_web_search_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/5200/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/data_mining_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/analyze_data_mining.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/7000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/data_mining_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/analyze_data_mining.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/8900/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/data_mining_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/analyze_data_mining.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/11100/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/14150/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/19000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/25000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/25000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=25000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/32000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/32000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=32000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/5200/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/7000/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/8900/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/10000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/10000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=10000 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/15000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/15000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=15000 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/22500/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/22500 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=22500 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/37000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/37000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=37000 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/4000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/4000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=4000 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/6000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/6000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=6000 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/60000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/60000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=60000 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/11100/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/11100 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=11100 34 | traffic_flow_size_dist=pfabric_web_search_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/14150/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/14150 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=14150 34 | traffic_flow_size_dist=pfabric_web_search_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/web_search_workload/19000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/web_search_workload/19000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=19000 34 | traffic_flow_size_dist=pfabric_web_search_lower_bound 35 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/src/main/java/ch/ethz/systems/netbench/xpt/sppifo/ports/PIFO/PIFOOutputPortGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.sppifo.ports.PIFO; 2 | 3 | import ch.ethz.systems.netbench.core.log.SimulationLogger; 4 | import ch.ethz.systems.netbench.core.network.Link; 5 | import ch.ethz.systems.netbench.core.network.NetworkDevice; 6 | import ch.ethz.systems.netbench.core.network.OutputPort; 7 | import ch.ethz.systems.netbench.core.run.infrastructure.OutputPortGenerator; 8 | 9 | public class PIFOOutputPortGenerator extends OutputPortGenerator { 10 | 11 | private final long sizePackets; 12 | 13 | public PIFOOutputPortGenerator(long sizePackets) { 14 | this.sizePackets = sizePackets; 15 | SimulationLogger.logInfo("Port", "PIFO(sizePackets=" + sizePackets + ")"); 16 | } 17 | 18 | @Override 19 | public OutputPort generate(NetworkDevice ownNetworkDevice, NetworkDevice towardsNetworkDevice, Link link) { 20 | return new PIFOOutputPort(ownNetworkDevice, towardsNetworkDevice, link, sizePackets); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/11100/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/data_mining_workload/11100 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/analyze_data_mining.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/14150/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/data_mining_workload/14150 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/analyze_data_mining.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/19000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/data_mining_workload/19000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/data_mining_workload/analyze_data_mining.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/11100/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/14150/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/19000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/5200/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/5200/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=5200 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/7000/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/7000/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=7000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/8900/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=csfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/incast/web_search_workload/8900/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=8900 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/11100/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=11100 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/14150/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=14150 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/19000/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=19000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/25000/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/25000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=25000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/32000/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/32000 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | # Switch type 15 | network_device=ecmp_switch 16 | network_device_routing=ecmp 17 | network_device_intermediary=identity 18 | 19 | # Output port 20 | output_port=hcsfq 21 | output_port_max_size_packets=320 22 | 23 | # Link 24 | link=split_bw 25 | link_delay_ns=20 26 | link_bandwidth_bit_per_ns=1 27 | 28 | # Traffic 29 | traffic=poisson_arrival 30 | traffic_lambda_flow_starts_per_s=32000 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/3600/CSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=CSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/3600 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=csfq 22 | output_port_max_size_packets=320 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=3600 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/3600/HCSFQ.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=HCSFQ 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/fairness/web_search_workload/3600 9 | analysis_command=python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py 10 | 11 | # Transport layer protocol 12 | transport_layer=dctcp 13 | second_transport_layer=udp 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=hcsfq 22 | output_port_max_size_packets=320 23 | 24 | # Link 25 | link=split_bw 26 | link_delay_ns=20 27 | link_bandwidth_bit_per_ns=1 28 | 29 | # Traffic 30 | traffic=poisson_arrival 31 | traffic_lambda_flow_starts_per_s=3600 32 | traffic_flow_size_dist=pfabric_web_search_lower_bound 33 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /simulation_code/projects/sppifo/runs/sppifo_evaluation/pFabric/data_mining_workload/100000/TOY.properties: -------------------------------------------------------------------------------- 1 | # General 2 | scenario_topology_file=example/topologies/leaf_spine/pFabric_9leaf_4spine_16servers.topology 3 | 4 | seed=83599 5 | run_time_s=1 6 | 7 | run_folder_name=TOY 8 | run_folder_base_dir=temp/sppifo/sppifo_evaluation/pFabric/data_mining_workload/100000 9 | analysis_command=python3 analysis/analyze.py 10 | 11 | # Transport layer protocol 12 | ## In pFabric RTO is hardcoded in the socket 13 | transport_layer=pfabric 14 | 15 | # Switch type 16 | network_device=ecmp_switch 17 | network_device_routing=ecmp 18 | network_device_intermediary=identity 19 | 20 | # Output port 21 | output_port=toy 22 | output_port_max_size_packets=80 23 | window_size=1000 24 | items_per_window=800 25 | 26 | # Link 27 | link=split_bw 28 | link_delay_ns=20 29 | link_bandwidth_bit_per_ns=1 30 | 31 | # Traffic 32 | traffic=poisson_arrival 33 | traffic_lambda_flow_starts_per_s=100000 34 | traffic_flow_size_dist=pfabric_data_mining_lower_bound 35 | traffic_probabilities_generator=all_to_all --------------------------------------------------------------------------------