├── .gitignore ├── LICENSE ├── README.md ├── aifo_simulation └── java-code │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── analysis │ ├── analyze.py │ ├── analyze_1s.py │ ├── create_cdf.py │ ├── getstatistics.py │ ├── multi_analyze.py │ ├── multi_analyze_1s.py │ ├── multi_combine.py │ └── multi_create_cdf.py │ ├── brush.py │ ├── example │ ├── runs │ │ ├── demo.properties │ │ ├── fct │ │ │ ├── buffer.properties │ │ │ ├── distmean.properties │ │ │ ├── distrand.properties │ │ │ ├── fifo.properties │ │ │ ├── lstf.properties │ │ │ ├── pfabric.properties │ │ │ ├── sp.properties │ │ │ └── spark.properties │ │ ├── test_dual_a2a.properties │ │ ├── test_ecmp_multi_n5.properties │ │ ├── test_ecmp_n5.properties │ │ ├── test_ecmp_then_ksp.properties │ │ ├── test_ksp.properties │ │ ├── test_n2.properties │ │ ├── test_n2_bare.properties │ │ ├── test_n2_flow_threshold.properties │ │ ├── test_pairings.properties │ │ └── test_parallel_n8.properties │ └── topologies │ │ ├── chain │ │ └── chain_n20.topology │ │ ├── diamond │ │ └── diamond_n5.topology │ │ ├── dumbbell │ │ └── dumbbell_8to8.topology │ │ ├── fat_tree │ │ ├── fat_tree_k14.topology │ │ ├── fat_tree_k16.topology │ │ ├── fat_tree_k24.topology │ │ ├── fat_tree_k32.topology │ │ ├── fat_tree_k4.topology │ │ └── fat_tree_k8.topology │ │ ├── leaf_spine │ │ ├── 9leaf_4spine_32servers.topology │ │ └── pFabric_9leaf_4spine_16servers.topology │ │ ├── simple │ │ ├── multi_n5.topology │ │ ├── parallel_n8.topology │ │ ├── simple_n2.topology │ │ ├── simple_n4_v1.topology │ │ ├── simple_n4_v2.topology │ │ ├── simple_n5.topology │ │ ├── simple_n6_v1.topology │ │ └── simple_n6_v2.topology │ │ └── xpander │ │ ├── xpander_n100_d10.topology │ │ └── xpander_n231_d10.topology │ ├── images │ ├── netbench_banner.png │ └── netbench_icon.png │ ├── plot_received.py │ ├── pom.xml │ ├── projects │ └── aifo │ │ ├── analyze_all.sh │ │ ├── plots │ │ ├── aifo_evaluation │ │ │ ├── fairness │ │ │ │ ├── analyze.py │ │ │ │ ├── plot.gnuplot │ │ │ │ └── web_search_workload │ │ │ │ │ ├── fairness_geq_1MB_mean_fct_ms_32.dat │ │ │ │ │ ├── fairness_geq_2MB_mean_fct_ms_32.dat │ │ │ │ │ ├── fairness_less_100KB_99th_fct_ms_32.dat │ │ │ │ │ ├── fairness_less_100KB_mean_fct_ms_32.dat │ │ │ │ │ └── fairness_split_mean_fct_ms_32.dat │ │ │ ├── pFabric │ │ │ │ ├── web_search_workload │ │ │ │ │ ├── analyze.py │ │ │ │ │ ├── analyze_inversion.py │ │ │ │ │ ├── analyze_inversion_1.py │ │ │ │ │ ├── analyze_toy_only.py │ │ │ │ │ ├── pFabric_geq_1MB_mean_fct_ms.dat │ │ │ │ │ ├── pFabric_less_100KB_99th_fct_ms.dat │ │ │ │ │ ├── pFabric_less_100KB_mean_fct_ms.dat │ │ │ │ │ ├── plot.gnuplot │ │ │ │ │ └── plot_inversions.gnuplot │ │ │ │ ├── web_search_workload_C_K │ │ │ │ │ ├── analyze.py │ │ │ │ │ ├── analyze_1.py │ │ │ │ │ ├── pFabric_geq_1MB_mean_fct_ms.dat │ │ │ │ │ ├── pFabric_less_100KB_99th_fct_ms.dat │ │ │ │ │ ├── pFabric_less_100KB_mean_fct_ms.dat │ │ │ │ │ └── plot.gnuplot │ │ │ │ ├── web_search_workload_q_len │ │ │ │ │ ├── analyze.py │ │ │ │ │ ├── analyze346.py │ │ │ │ │ ├── pFabric_geq_1MB_mean_fct_ms.dat │ │ │ │ │ └── pFabric_less_100KB_mean_fct_ms.dat │ │ │ │ ├── web_search_workload_q_len_1_4 │ │ │ │ │ ├── analyze.py │ │ │ │ │ ├── pFabric_geq_1MB_mean_fct_ms.dat │ │ │ │ │ └── pFabric_less_100KB_mean_fct_ms.dat │ │ │ │ └── web_search_workload_w_sr │ │ │ │ │ ├── analyze.py │ │ │ │ │ ├── pFabric_geq_1MB_mean_fct_ms.dat │ │ │ │ │ ├── pFabric_less_100KB_99th_fct_ms.dat │ │ │ │ │ ├── pFabric_less_100KB_mean_fct_ms.dat │ │ │ │ │ └── plot.gnuplot │ │ │ └── selfDefinedFlows │ │ │ │ ├── AIFO.dat │ │ │ │ ├── PIFO.dat │ │ │ │ ├── SPPIFO.dat │ │ │ │ ├── TCP.dat │ │ │ │ └── figure16 │ │ │ │ ├── AIFO.png │ │ │ │ ├── PIFO.png │ │ │ │ ├── SPPIFO.png │ │ │ │ └── TCP.png │ │ └── spectral.pal │ │ └── runs │ │ └── aifo_evaluation │ │ ├── fairness │ │ └── web_search_workload │ │ │ ├── 3600 │ │ │ ├── AFQ_32.properties │ │ │ ├── AFQ_8.properties │ │ │ ├── AIFOWFQ.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PIFOWFQ_32.properties │ │ │ ├── PIFOWFQ_8.properties │ │ │ ├── SPPIFOWFQ_32.properties │ │ │ ├── SPPIFOWFQ_8.properties │ │ │ └── TCP.properties │ │ │ ├── 5200 │ │ │ ├── AFQ_32.properties │ │ │ ├── AFQ_8.properties │ │ │ ├── AIFOWFQ.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PIFOWFQ_32.properties │ │ │ ├── PIFOWFQ_8.properties │ │ │ ├── SPPIFOWFQ_32.properties │ │ │ ├── SPPIFOWFQ_8.properties │ │ │ └── TCP.properties │ │ │ ├── 7000 │ │ │ ├── AFQ_32.properties │ │ │ ├── AFQ_8.properties │ │ │ ├── AIFOWFQ.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PIFOWFQ_32.properties │ │ │ ├── PIFOWFQ_8.properties │ │ │ ├── SPPIFOWFQ_32.properties │ │ │ ├── SPPIFOWFQ_8.properties │ │ │ └── TCP.properties │ │ │ ├── 8900 │ │ │ ├── AFQ_32.properties │ │ │ ├── AFQ_8.properties │ │ │ ├── AIFOWFQ.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PIFOWFQ_32.properties │ │ │ ├── PIFOWFQ_8.properties │ │ │ ├── SPPIFOWFQ_32.properties │ │ │ ├── SPPIFOWFQ_8.properties │ │ │ └── TCP.properties │ │ │ ├── 11100 │ │ │ ├── AFQ_32.properties │ │ │ ├── AFQ_8.properties │ │ │ ├── AIFOWFQ.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PIFOWFQ_32.properties │ │ │ ├── PIFOWFQ_8.properties │ │ │ ├── SPPIFOWFQ_32.properties │ │ │ ├── SPPIFOWFQ_8.properties │ │ │ └── TCP.properties │ │ │ ├── 14150 │ │ │ ├── AFQ_32.properties │ │ │ ├── AFQ_8.properties │ │ │ ├── AIFOWFQ.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PIFOWFQ_32.properties │ │ │ ├── PIFOWFQ_8.properties │ │ │ ├── SPPIFOWFQ_32.properties │ │ │ ├── SPPIFOWFQ_8.properties │ │ │ └── TCP.properties │ │ │ ├── 19000 │ │ │ ├── AFQ_32.properties │ │ │ ├── AFQ_8.properties │ │ │ ├── AIFOWFQ.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PIFOWFQ_32.properties │ │ │ ├── PIFOWFQ_8.properties │ │ │ ├── SPPIFOWFQ_32.properties │ │ │ ├── SPPIFOWFQ_8.properties │ │ │ └── TCP.properties │ │ │ └── analyze_web_search.py │ │ └── pFabric │ │ ├── web_search_workload │ │ ├── 3600 │ │ │ ├── AIFO.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PF.properties │ │ │ ├── PIFO.properties │ │ │ ├── SPPIFO.properties │ │ │ └── TCP.properties │ │ ├── 5200 │ │ │ ├── AIFO.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PF.properties │ │ │ ├── PIFO.properties │ │ │ ├── SPPIFO.properties │ │ │ └── TCP.properties │ │ ├── 7000 │ │ │ ├── AIFO.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PF.properties │ │ │ ├── PIFO.properties │ │ │ ├── SPPIFO.properties │ │ │ └── TCP.properties │ │ ├── 8900 │ │ │ ├── AIFO.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PF.properties │ │ │ ├── PIFO.properties │ │ │ ├── SPPIFO.properties │ │ │ └── TCP.properties │ │ ├── 11100 │ │ │ ├── AIFO.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PF.properties │ │ │ ├── PIFO.properties │ │ │ ├── SPPIFO.properties │ │ │ └── TCP.properties │ │ ├── 14150 │ │ │ ├── AIFO.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PF.properties │ │ │ ├── PIFO.properties │ │ │ ├── SPPIFO.properties │ │ │ └── TCP.properties │ │ └── 19000 │ │ │ ├── AIFO.properties │ │ │ ├── DCTCP.properties │ │ │ ├── PF.properties │ │ │ ├── PIFO.properties │ │ │ ├── SPPIFO.properties │ │ │ └── TCP.properties │ │ ├── web_search_workload_C_K │ │ ├── 3600 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ └── AIFO_C60.properties │ │ ├── 5200 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ └── AIFO_C60.properties │ │ ├── 7000 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ └── AIFO_C60.properties │ │ ├── 8900 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ └── AIFO_C60.properties │ │ ├── 11100 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ └── AIFO_C60.properties │ │ ├── 14150 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ └── AIFO_C60.properties │ │ └── 19000 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ └── AIFO_C60.properties │ │ ├── web_search_workload_q_len │ │ ├── 3600 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C100.properties │ │ │ ├── AIFO_C1000.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C200.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ ├── AIFO_C500.properties │ │ │ └── AIFO_C60.properties │ │ ├── 5200 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C100.properties │ │ │ ├── AIFO_C1000.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C200.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ ├── AIFO_C500.properties │ │ │ └── AIFO_C60.properties │ │ ├── 7000 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C100.properties │ │ │ ├── AIFO_C1000.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C200.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ ├── AIFO_C500.properties │ │ │ └── AIFO_C60.properties │ │ ├── 8900 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C100.properties │ │ │ ├── AIFO_C1000.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C200.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ ├── AIFO_C500.properties │ │ │ └── AIFO_C60.properties │ │ ├── 11100 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C100.properties │ │ │ ├── AIFO_C1000.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C200.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ ├── AIFO_C500.properties │ │ │ └── AIFO_C60.properties │ │ ├── 14150 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C100.properties │ │ │ ├── AIFO_C1000.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C200.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ ├── AIFO_C500.properties │ │ │ └── AIFO_C60.properties │ │ └── 19000 │ │ │ ├── AIFO_C10.properties │ │ │ ├── AIFO_C100.properties │ │ │ ├── AIFO_C1000.properties │ │ │ ├── AIFO_C20.properties │ │ │ ├── AIFO_C200.properties │ │ │ ├── AIFO_C30.properties │ │ │ ├── AIFO_C40.properties │ │ │ ├── AIFO_C50.properties │ │ │ ├── AIFO_C500.properties │ │ │ └── AIFO_C60.properties │ │ └── web_search_workload_sample_rate │ │ ├── 3600 │ │ ├── AIFO_C10.properties │ │ ├── AIFO_C20.properties │ │ ├── AIFO_C30.properties │ │ ├── AIFO_C40.properties │ │ ├── AIFO_C50.properties │ │ └── AIFO_C60.properties │ │ ├── 5200 │ │ ├── AIFO_C10.properties │ │ ├── AIFO_C20.properties │ │ ├── AIFO_C30.properties │ │ ├── AIFO_C40.properties │ │ ├── AIFO_C50.properties │ │ └── AIFO_C60.properties │ │ ├── 7000 │ │ ├── AIFO_C10.properties │ │ ├── AIFO_C20.properties │ │ ├── AIFO_C30.properties │ │ ├── AIFO_C40.properties │ │ ├── AIFO_C50.properties │ │ └── AIFO_C60.properties │ │ ├── 8900 │ │ ├── AIFO_C10.properties │ │ ├── AIFO_C20.properties │ │ ├── AIFO_C30.properties │ │ ├── AIFO_C40.properties │ │ ├── AIFO_C50.properties │ │ └── AIFO_C60.properties │ │ ├── 11100 │ │ ├── AIFO_C10.properties │ │ ├── AIFO_C20.properties │ │ ├── AIFO_C30.properties │ │ ├── AIFO_C40.properties │ │ ├── AIFO_C50.properties │ │ └── AIFO_C60.properties │ │ ├── 14150 │ │ ├── AIFO_C10.properties │ │ ├── AIFO_C20.properties │ │ ├── AIFO_C30.properties │ │ ├── AIFO_C40.properties │ │ ├── AIFO_C50.properties │ │ └── AIFO_C60.properties │ │ └── 19000 │ │ ├── AIFO_C10.properties │ │ ├── AIFO_C20.properties │ │ ├── AIFO_C30.properties │ │ ├── AIFO_C40.properties │ │ ├── AIFO_C50.properties │ │ └── AIFO_C60.properties │ ├── src │ ├── main │ │ └── java │ │ │ ├── ch │ │ │ └── ethz │ │ │ │ └── systems │ │ │ │ └── netbench │ │ │ │ ├── core │ │ │ │ ├── SelfDefinedFlows.java │ │ │ │ ├── Simulator.java │ │ │ │ ├── config │ │ │ │ │ ├── BaseAllowedProperties.java │ │ │ │ │ ├── GraphDetails.java │ │ │ │ │ ├── GraphReader.java │ │ │ │ │ ├── NBProperties.java │ │ │ │ │ ├── TopologyServerExtender.java │ │ │ │ │ └── exceptions │ │ │ │ │ │ ├── ConfigurationReadFailException.java │ │ │ │ │ │ ├── PropertyConflictException.java │ │ │ │ │ │ ├── PropertyMissingException.java │ │ │ │ │ │ ├── PropertyNotExistingException.java │ │ │ │ │ │ └── PropertyValueInvalidException.java │ │ │ │ ├── log │ │ │ │ │ ├── FlowLogger.java │ │ │ │ │ ├── LogFailureException.java │ │ │ │ │ ├── LoggerCallback.java │ │ │ │ │ ├── PortLogger.java │ │ │ │ │ └── SimulationLogger.java │ │ │ │ ├── network │ │ │ │ │ ├── Event.java │ │ │ │ │ ├── Intermediary.java │ │ │ │ │ ├── Link.java │ │ │ │ │ ├── NetworkDevice.java │ │ │ │ │ ├── OutputPort.java │ │ │ │ │ ├── Packet.java │ │ │ │ │ ├── PacketArrivalEvent.java │ │ │ │ │ ├── PacketDispatchedEvent.java │ │ │ │ │ ├── PacketHeader.java │ │ │ │ │ ├── Socket.java │ │ │ │ │ ├── TransportLayer.java │ │ │ │ │ └── UDPSendPacketEvent.java │ │ │ │ ├── random │ │ │ │ │ └── RandomManager.java │ │ │ │ ├── run │ │ │ │ │ ├── InfrastructureSelector.java │ │ │ │ │ ├── MainFigure10.java │ │ │ │ │ ├── MainFigure11.java │ │ │ │ │ ├── MainFigure12_16.java │ │ │ │ │ ├── MainFigure13.java │ │ │ │ │ ├── MainFigure7.java │ │ │ │ │ ├── MainFigure8.java │ │ │ │ │ ├── MainFigure9.java │ │ │ │ │ ├── MainFromProperties.java │ │ │ │ │ ├── MainSimulation.java │ │ │ │ │ ├── RoutingSelector.java │ │ │ │ │ ├── TrafficSelector.java │ │ │ │ │ ├── infrastructure │ │ │ │ │ │ ├── BaseInitializer.java │ │ │ │ │ │ ├── IntermediaryGenerator.java │ │ │ │ │ │ ├── LinkGenerator.java │ │ │ │ │ │ ├── NetworkDeviceGenerator.java │ │ │ │ │ │ ├── OutputPortGenerator.java │ │ │ │ │ │ └── TransportLayerGenerator.java │ │ │ │ │ ├── routing │ │ │ │ │ │ └── RoutingPopulator.java │ │ │ │ │ └── traffic │ │ │ │ │ │ ├── FlowStartEvent.java │ │ │ │ │ │ └── TrafficPlanner.java │ │ │ │ └── utility │ │ │ │ │ └── UnitConverter.java │ │ │ │ ├── ext │ │ │ │ ├── bare │ │ │ │ │ ├── BarePacket.java │ │ │ │ │ ├── BarePacketResendEvent.java │ │ │ │ │ ├── BareSocket.java │ │ │ │ │ ├── BareTransportLayer.java │ │ │ │ │ └── BareTransportLayerGenerator.java │ │ │ │ ├── basic │ │ │ │ │ ├── EcnTailDropOutputPort.java │ │ │ │ │ ├── EcnTailDropOutputPortGenerator.java │ │ │ │ │ ├── IpHeader.java │ │ │ │ │ ├── IpPacket.java │ │ │ │ │ ├── PerfectSimpleLink.java │ │ │ │ │ ├── PerfectSimpleLinkGenerator.java │ │ │ │ │ ├── SplitBandwidthLinkGenerator.java │ │ │ │ │ ├── TcpHeader.java │ │ │ │ │ └── TcpPacket.java │ │ │ │ ├── demo │ │ │ │ │ ├── DemoIntermediary.java │ │ │ │ │ ├── DemoIntermediaryGenerator.java │ │ │ │ │ ├── DemoPacket.java │ │ │ │ │ ├── DemoPacketHeader.java │ │ │ │ │ ├── DemoSocket.java │ │ │ │ │ ├── DemoTransportLayer.java │ │ │ │ │ └── DemoTransportLayerGenerator.java │ │ │ │ ├── ecmp │ │ │ │ │ ├── EcmpRoutingUtility.java │ │ │ │ │ ├── EcmpSwitch.java │ │ │ │ │ ├── EcmpSwitchGenerator.java │ │ │ │ │ ├── EcmpSwitchRouting.java │ │ │ │ │ ├── EcmpSwitchRoutingInterface.java │ │ │ │ │ ├── ForwarderSwitch.java │ │ │ │ │ ├── ForwarderSwitchGenerator.java │ │ │ │ │ └── ForwarderSwitchRouting.java │ │ │ │ ├── flowlet │ │ │ │ │ ├── FixedGapFlowletIntermediary.java │ │ │ │ │ ├── FlowletIntermediary.java │ │ │ │ │ ├── FlowletLogger.java │ │ │ │ │ ├── IdentityFlowletIntermediary.java │ │ │ │ │ ├── IdentityFlowletIntermediaryGenerator.java │ │ │ │ │ ├── UniformFlowletIntermediary.java │ │ │ │ │ └── UniformFlowletIntermediaryGenerator.java │ │ │ │ ├── hybrid │ │ │ │ │ ├── EcmpThenValiantSwitch.java │ │ │ │ │ └── EcmpThenValiantSwitchGenerator.java │ │ │ │ ├── poissontraffic │ │ │ │ │ ├── FromStringArrivalPlanner.java │ │ │ │ │ ├── ParetoDistribution.java │ │ │ │ │ ├── PoissonArrivalPlanner.java │ │ │ │ │ ├── RandomCollection.java │ │ │ │ │ └── flowsize │ │ │ │ │ │ ├── FlowSizeDistribution.java │ │ │ │ │ │ ├── PFabricDataMiningLowerBoundFSD.java │ │ │ │ │ │ ├── PFabricDataMiningUpperBoundFSD.java │ │ │ │ │ │ ├── PFabricSelfDefined.java │ │ │ │ │ │ ├── PFabricWebSearchLowerBoundFSD.java │ │ │ │ │ │ ├── PFabricWebSearchUpperBoundFSD.java │ │ │ │ │ │ ├── ParetoFSD.java │ │ │ │ │ │ ├── UniformFSD.java │ │ │ │ │ │ ├── pFabricDataMiningAlbert.java │ │ │ │ │ │ └── pFabricWebSearchAlbert.java │ │ │ │ ├── trafficpair │ │ │ │ │ └── TrafficPairPlanner.java │ │ │ │ └── valiant │ │ │ │ │ ├── RangeValiantSwitch.java │ │ │ │ │ ├── RangeValiantSwitchGenerator.java │ │ │ │ │ ├── ValiantEcmpSwitch.java │ │ │ │ │ ├── ValiantEncapsulation.java │ │ │ │ │ └── ValiantEncapsulationHeader.java │ │ │ │ └── xpt │ │ │ │ ├── aifo │ │ │ │ └── ports │ │ │ │ │ ├── AFQ │ │ │ │ │ ├── AFQOutputPort.java │ │ │ │ │ ├── AFQOutputPortGenerator.java │ │ │ │ │ └── AFQQueue.java │ │ │ │ │ ├── AIFO │ │ │ │ │ ├── AIFOOutputPort.java │ │ │ │ │ └── AIFOOutputPortGenerator.java │ │ │ │ │ ├── AIFO_WFQ │ │ │ │ │ ├── WFQAIFOOutputPort.java │ │ │ │ │ ├── WFQAIFOOutputPortGenerator.java │ │ │ │ │ └── WFQAIFOOutputQueue.java │ │ │ │ │ ├── FIFO │ │ │ │ │ ├── FIFOOutputPort.java │ │ │ │ │ └── FIFOOutputPortGenerator.java │ │ │ │ │ ├── Greedy │ │ │ │ │ ├── GreedyOutputPortGenerator_Advanced.java │ │ │ │ │ ├── GreedyOutputPortGenerator_Simple.java │ │ │ │ │ ├── GreedyOutputPort_Advanced.java │ │ │ │ │ ├── GreedyOutputPort_Simple.java │ │ │ │ │ ├── GreedyQueue.java │ │ │ │ │ └── GreedyQueue_Advanced.java │ │ │ │ │ ├── PIFO │ │ │ │ │ ├── PIFOOutputPort.java │ │ │ │ │ ├── PIFOOutputPortGenerator.java │ │ │ │ │ └── PIFOQueue.java │ │ │ │ │ ├── PIFO_WFQ │ │ │ │ │ ├── WFQPIFOOutputPort.java │ │ │ │ │ ├── WFQPIFOOutputPortGenerator.java │ │ │ │ │ └── WFQPIFOQueue.java │ │ │ │ │ ├── SPPIFO │ │ │ │ │ ├── SPPIFOOutputPort.java │ │ │ │ │ ├── SPPIFOOutputPortGenerator.java │ │ │ │ │ └── SPPIFOQueue.java │ │ │ │ │ ├── SPPIFO_WFQ │ │ │ │ │ ├── WFQSPPIFOOutputPort.java │ │ │ │ │ ├── WFQSPPIFOOutputPortGenerator.java │ │ │ │ │ └── WFQSPPIFOQueue.java │ │ │ │ │ └── TailDrop │ │ │ │ │ ├── TailDropOutputPort.java │ │ │ │ │ └── TailDropOutputPortGenerator.java │ │ │ │ ├── asaf │ │ │ │ └── routing │ │ │ │ │ └── priority │ │ │ │ │ ├── PriorityFlowletIntermediary.java │ │ │ │ │ └── PriorityFlowletIntermediaryGenerator.java │ │ │ │ ├── newreno │ │ │ │ ├── TcpRetransmissionTimeOutEvent.java │ │ │ │ ├── newrenodctcp │ │ │ │ │ ├── NewRenoDctcpSocket.java │ │ │ │ │ ├── NewRenoDctcpTransportLayer.java │ │ │ │ │ └── NewRenoDctcpTransportLayerGenerator.java │ │ │ │ └── newrenotcp │ │ │ │ │ ├── NewRenoTcpSocket.java │ │ │ │ │ ├── NewRenoTcpTransportLayer.java │ │ │ │ │ └── NewRenoTcpTransportLayerGenerator.java │ │ │ │ ├── simple │ │ │ │ ├── TcpPacketResendEvent.java │ │ │ │ ├── simpledctcp │ │ │ │ │ ├── SimpleDctcpSocket.java │ │ │ │ │ ├── SimpleDctcpTransportLayer.java │ │ │ │ │ └── SimpleDctcpTransportLayerGenerator.java │ │ │ │ ├── simpletcp │ │ │ │ │ ├── SimpleTcpSocket.java │ │ │ │ │ ├── SimpleTcpTransportLayer.java │ │ │ │ │ └── SimpleTcpTransportLayerGenerator.java │ │ │ │ └── simpleudp │ │ │ │ │ ├── SimpleUdpPacket.java │ │ │ │ │ ├── SimpleUdpSocket.java │ │ │ │ │ ├── SimpleUdpTransportLayer.java │ │ │ │ │ └── SimpleUdpTransportLayerGenerator.java │ │ │ │ ├── sourcerouting │ │ │ │ ├── EcmpThenKspNoShortestRouting.java │ │ │ │ ├── EcmpThenKspRouting.java │ │ │ │ ├── EcmpThenSourceRoutingSwitch.java │ │ │ │ ├── EcmpThenSourceRoutingSwitchGenerator.java │ │ │ │ ├── KShortestPathsSwitchRouting.java │ │ │ │ ├── SourceRoutingEncapsulation.java │ │ │ │ ├── SourceRoutingPath.java │ │ │ │ ├── SourceRoutingSwitch.java │ │ │ │ └── SourceRoutingSwitchGenerator.java │ │ │ │ ├── tcpbase │ │ │ │ ├── AckRange.java │ │ │ │ ├── AckRangeSet.java │ │ │ │ ├── EchoHeader.java │ │ │ │ ├── FullExtTcpPacket.java │ │ │ │ ├── PriorityHeader.java │ │ │ │ ├── SelectiveAckHeader.java │ │ │ │ └── TcpLogger.java │ │ │ │ ├── utility │ │ │ │ ├── ExcelCombinator.java │ │ │ │ ├── FTEcmpFC.java │ │ │ │ ├── FileLineComparator.java │ │ │ │ ├── FullCrossbarTopologyCreator.java │ │ │ │ ├── HashTestMain.java │ │ │ │ ├── NodeTransportLayerMapper.java │ │ │ │ ├── NormalizeIt.java │ │ │ │ ├── NumberShortestPathsCheck.java │ │ │ │ ├── SequenceUtility.java │ │ │ │ ├── TestMain.java │ │ │ │ ├── TestSkewness.java │ │ │ │ ├── TestSkewness2.java │ │ │ │ ├── TrafficPairProbabilitiesCreator.java │ │ │ │ ├── TwoExclusionRange.java │ │ │ │ ├── TwoSequenceHashTest.java │ │ │ │ ├── UniformServerLinksToNodesCreator.java │ │ │ │ ├── XpanderTrafficPairProbabilitiesCreator.java │ │ │ │ ├── dataprocessing │ │ │ │ │ ├── CalculateAverageStatistics.java │ │ │ │ │ ├── InFolderCombinator.java │ │ │ │ │ ├── InFolderCombinatorProjecToR.java │ │ │ │ │ ├── NiceExcelCreator.java │ │ │ │ │ ├── ProcessAll.java │ │ │ │ │ ├── SingularCombinator.java │ │ │ │ │ ├── SingularCombinatorParetoGraph.java │ │ │ │ │ └── SingularCombinatorProjector.java │ │ │ │ └── pairprob │ │ │ │ │ ├── NodePairProbabilityCreator.java │ │ │ │ │ ├── SPPCAllToAllInFraction.java │ │ │ │ │ ├── SPPCDegreeOfSkew.java │ │ │ │ │ ├── SPPCNodePairsFromFile.java │ │ │ │ │ └── deprecated │ │ │ │ │ ├── SkewedTrafficPairProbabilitiesCreator.java │ │ │ │ │ └── SkewedTrafficPairProbabilitiesOneStageCreator.java │ │ │ │ └── voijslav_and_sppifo │ │ │ │ ├── ports │ │ │ │ ├── BoundedPriorityOutputPort.java │ │ │ │ ├── BoundedPriorityOutputPortGenerator.java │ │ │ │ ├── PriorityOutputPort.java │ │ │ │ ├── PriorityOutputPortGenerator.java │ │ │ │ ├── UnlimitedOutputPort.java │ │ │ │ └── UnlimitedOutputPortGenerator.java │ │ │ │ ├── tcp │ │ │ │ ├── buffertcp │ │ │ │ │ ├── BufferTcpSocket.java │ │ │ │ │ ├── BufferTcpTransportLayer.java │ │ │ │ │ └── BufferTcpTransportLayerGenerator.java │ │ │ │ ├── distmeantcp │ │ │ │ │ ├── DistMeanTcpSocket.java │ │ │ │ │ ├── DistMeanTcpTransportLayer.java │ │ │ │ │ └── DistMeanTcpTransportLayerGenerator.java │ │ │ │ ├── distrandtcp │ │ │ │ │ ├── DistRandTcpSocket.java │ │ │ │ │ ├── DistRandTcpTransportLayer.java │ │ │ │ │ └── DistRandTcpTransportLayerGenerator.java │ │ │ │ ├── lstftcp │ │ │ │ │ ├── LstfTcpSocket.java │ │ │ │ │ ├── LstfTcpTransportLayer.java │ │ │ │ │ ├── LstfTcpTransportLayerGenerator.java │ │ │ │ │ └── RandomNumberGenerator.java │ │ │ │ ├── pfabric │ │ │ │ │ ├── PfabricSocket.java │ │ │ │ │ ├── PfabricTransportLayer.java │ │ │ │ │ ├── PfabricTransportLayerGenerator.java │ │ │ │ │ └── removeFirstLine.py │ │ │ │ ├── pfzero │ │ │ │ │ ├── PfzeroSocket.java │ │ │ │ │ ├── PfzeroTransportLayer.java │ │ │ │ │ └── PfzeroTransportLayerGenerator.java │ │ │ │ ├── sparktcp │ │ │ │ │ ├── SparkSocket.java │ │ │ │ │ ├── SparkTransportLayer.java │ │ │ │ │ └── SparkTransportLayerGenerator.java │ │ │ │ ├── sphalftcp │ │ │ │ │ ├── SpHalfTcpSocket.java │ │ │ │ │ ├── SpHalfTcpTransportLayer.java │ │ │ │ │ └── SpHalfTcpTransportLayerGenerator.java │ │ │ │ └── sptcp │ │ │ │ │ ├── SpTcpSocket.java │ │ │ │ │ ├── SpTcpTransportLayer.java │ │ │ │ │ └── SpTcpTransportLayerGenerator.java │ │ │ │ └── utility │ │ │ │ └── FctDistributions.java │ │ │ └── edu │ │ │ └── asu │ │ │ └── emit │ │ │ └── algorithm │ │ │ ├── graph │ │ │ ├── BaseElementWithWeight.java │ │ │ ├── BaseGraph.java │ │ │ ├── Graph.java │ │ │ ├── Path.java │ │ │ ├── VariableGraph.java │ │ │ ├── Vertex.java │ │ │ └── algorithms │ │ │ │ ├── DijkstraShortestPathAlg.java │ │ │ │ └── YenTopKShortestPathsAlg.java │ │ │ └── utils │ │ │ └── QYPriorityQueue.java │ └── test │ │ └── java │ │ └── ch │ │ └── ethz │ │ └── systems │ │ └── netbench │ │ ├── core │ │ ├── SimulatorTest.java │ │ ├── config │ │ │ ├── GraphReaderTest.java │ │ │ ├── NBPropertiesTest.java │ │ │ └── TopologyServerExtenderTest.java │ │ ├── network │ │ │ ├── EventTest.java │ │ │ ├── PacketArrivalEventTest.java │ │ │ └── PacketDispatchedEventTest.java │ │ ├── random │ │ │ └── RandomManagerTest.java │ │ ├── run │ │ │ └── traffic │ │ │ │ └── FlowStartEventTest.java │ │ └── utility │ │ │ └── UnitConverterTest.java │ │ ├── ext │ │ ├── bare │ │ │ └── BareRunTest.java │ │ ├── basic │ │ │ ├── EcnTailDropOutputPortTest.java │ │ │ └── PerfectSimpleLinkTest.java │ │ ├── demo │ │ │ ├── DemoIntermediaryTest.java │ │ │ ├── DemoPacketTest.java │ │ │ ├── DemoRunParallel8Test.java │ │ │ ├── DemoRunTest.java │ │ │ └── DemoTest.java │ │ ├── ecmp │ │ │ ├── EcmpRunTest.java │ │ │ ├── EcmpSwitchRoutingFatTreeK4Test.java │ │ │ ├── EcmpSwitchRoutingTwoN6Test.java │ │ │ ├── EcmpSwitchTest.java │ │ │ └── ForwarderSwitchTest.java │ │ ├── flowlet │ │ │ ├── IdentityFlowletIntermediaryTest.java │ │ │ └── UniformFlowletIntermediaryTest.java │ │ ├── hybrid │ │ │ └── EcmpThenValiantSwitchTest.java │ │ ├── poissontraffic │ │ │ └── RandomCollectionTest.java │ │ └── valiant │ │ │ ├── RangeValiantSwitchTest.java │ │ │ ├── ValiantEcmpSwitchTest.java │ │ │ └── ValiantEncapsulationTest.java │ │ ├── testutility │ │ ├── TestLogReader.java │ │ └── TestTopologyPortsConstruction.java │ │ └── xpt │ │ ├── newreno │ │ ├── TcpRetransmissionTimeOutEventTest.java │ │ └── newrenotcp │ │ │ ├── TcpBaseTest.java │ │ │ ├── TcpResendTest.java │ │ │ └── TcpSequenceTest.java │ │ ├── simple │ │ └── simpletcp │ │ │ ├── SimpleTcpBaseTest.java │ │ │ └── SimpleTcpSequenceTest.java │ │ ├── sourcerouting │ │ ├── EcmpThenSourceRoutingSwitchTest.java │ │ ├── SourceRoutingEncapsulationTest.java │ │ ├── SourceRoutingSwitchExtendedTest.java │ │ └── SourceRoutingSwitchTest.java │ │ ├── tcpbase │ │ ├── AckRangeSetTest.java │ │ └── TcpPacketTest.java │ │ ├── utility │ │ └── TwoExclusionRangeTest.java │ │ └── vojislav │ │ └── ports │ │ └── BoundedPriorityOutputPortTest.java │ └── xpander_generation │ ├── LICENSE │ ├── expansion_algs │ ├── from_2_factors.m │ ├── jellyfish_heuristic.m │ ├── k_extension.m │ ├── random_permutation.m │ ├── two_lifting.m │ ├── xpander_heuristic.m │ ├── xpander_heuristic_adj.m │ ├── xpander_heuristic_lap.m │ ├── xpander_heuristic_lap_eigs.m │ ├── xpander_irregular_heuristic.m │ └── xpander_irregular_heuristic_lap.m │ ├── graph_generation │ ├── bcube.m │ ├── bipartite.m │ ├── butterfly.m │ ├── dcell.m │ ├── fattree.m │ ├── hypercube.m │ ├── jellyfish.m │ ├── lifted_xpander.m │ ├── lps.m │ ├── multi_butterfly.m │ ├── permutations_graph.m │ ├── random_xpander_lift.m │ ├── slimfly.m │ ├── sw_2d_torus.m │ ├── sw_ring.m │ ├── three_d_torus.m │ ├── update_from_permutation_cycle.m │ └── update_from_permutation_map.m │ ├── lib │ ├── ExpansionTypes.m │ ├── GraphTypes.m │ ├── add_link.m │ ├── add_multiple_links.m │ ├── close_cluster.m │ ├── compare_expansion.m │ ├── compare_lambda2.m │ ├── create_adjacency_list.m │ ├── euler_path.m │ ├── fail_links.m │ ├── get_2_factors.m │ ├── get_adjacency.m │ ├── get_avg_hosts_length.m │ ├── get_avg_shortest_path.m │ ├── get_deg_arr.m │ ├── get_deg_count.m │ ├── get_diameter.m │ ├── get_diameter_bound.m │ ├── get_disjoint_paths.m │ ├── get_irregular_adjacency.m │ ├── get_irregular_distribution_adjacency.m │ ├── get_irregular_spectral_gap.m │ ├── get_lambda2.m │ ├── get_laplacian.m │ ├── get_laplacian_results.m │ ├── get_path_length_distribution.m │ ├── get_ramanujan_gap.m │ ├── get_shortest_paths_bound.m │ ├── get_spectral_gap.m │ ├── get_spectral_gap_eigs.m │ ├── has_path.m │ ├── is_connected.m │ ├── is_expander.m │ ├── is_neighbor.m │ ├── legendre_symbol.m │ ├── load_sparse_mat.m │ ├── locality_xpander.asv │ ├── locality_xpander.m │ ├── logb.m │ ├── max_cliques.m │ ├── max_cliques_v2.m │ ├── print_not_connected.m │ ├── remove_edge.m │ ├── remove_link.m │ ├── start_cluster.m │ └── to_mptcp_adjacency.m │ └── python │ └── gen_xpander.py ├── aifo_testbed ├── README.md ├── aifo_switch │ ├── controller │ │ ├── ports.json │ │ └── test.py │ └── p4src │ │ ├── README.md │ │ ├── aifo.p4 │ │ ├── aifo_actions.p4 │ │ ├── aifo_blackboxs.p4 │ │ ├── aifo_routing.p4 │ │ ├── aifo_tables.p4 │ │ ├── aifo_win.p4 │ │ ├── includes │ │ ├── aifo_defines.p4 │ │ ├── aifo_headers.p4 │ │ └── aifo_parser.p4 │ │ └── tool.py ├── arp_conf │ ├── 10arp.sh │ ├── 11arp.sh │ ├── 12arp.sh │ ├── 1arp.sh │ ├── 2arp.sh │ ├── 3arp.sh │ ├── 4arp.sh │ ├── 5arp.sh │ ├── 6arp.sh │ ├── 7arp.sh │ ├── 8arp.sh │ └── 9arp.sh ├── figs │ └── .gitignore ├── host_code │ ├── incast_dpdk │ │ ├── README.md │ │ ├── client │ │ │ ├── Makefile │ │ │ ├── client.c │ │ │ └── util.h │ │ ├── server │ │ │ ├── Makefile │ │ │ ├── server.c │ │ │ └── util.h │ │ └── tools.sh │ ├── simple_tcp │ │ ├── irq_balance.sh │ │ ├── nstat.py │ │ ├── ratelimiter.py │ │ ├── simple_udp.py │ │ └── throughput.py │ ├── tools.sh │ └── worker │ │ └── worker.py ├── logs │ └── .gitignore ├── simple_switch │ ├── controller_init │ │ ├── ports.json │ │ └── test.py │ └── p4src │ │ ├── includes │ │ ├── simpleswitch_defines.p4 │ │ ├── simpleswitch_headers.p4 │ │ └── simpleswitch_parser.p4 │ │ ├── simpleswitch.p4 │ │ ├── simpleswitch_actions.p4 │ │ ├── simpleswitch_blackboxs.p4 │ │ ├── simpleswitch_routing.p4 │ │ ├── simpleswitch_tables.p4 │ │ └── tool.py └── sppifo │ ├── controller │ ├── ports.json │ └── test.py │ └── p4src │ ├── sppifo.p4 │ └── tool.py ├── config.py ├── console.py ├── doc └── aifo.jpg ├── figs └── .gitignore └── parse.py /.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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.class 3 | target/ 4 | *.iml 5 | history/ 6 | bin/ 7 | .project 8 | .settings/ 9 | .classpath 10 | *.pyc 11 | *.stdout.txt 12 | *.stderr.txt 13 | NetBench.jar 14 | *.tar 15 | *.log 16 | 17 | temp/ 18 | venv/ 19 | .ipynb_checkpoints/ 20 | paths-cache/ 21 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/analysis/getstatistics.py: -------------------------------------------------------------------------------- 1 | # Plot statistics 2 | # Mean global flow completion time vs. utilization pFabric 3 | lambdasdata = [4000, 6000, 10000, 15000, 22500, 37000, 60000] 4 | lambdasweb = [3600, 5200, 7000, 8900, 11100, 14150, 19000] 5 | row = 0 6 | 7 | for x in lambdasweb: 8 | file = "../temp_save/albert/pFabric/web_search_workload/"+str(x)+"/SPPIFO8_pFabric/analysis/flow_completion.statistics" 9 | r = open(file, 'r') 10 | lines = r.readlines() 11 | for i, line in enumerate(lines): 12 | if "less_100KB_99th_fct_ms" in line: 13 | print(line.split("=")[1].split("\n")[0]) 14 | break 15 | r.close() -------------------------------------------------------------------------------- /aifo_simulation/java-code/analysis/multi_analyze.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | from subprocess import call 4 | 5 | 6 | # Usage print 7 | def print_usage(): 8 | print("Usage: python multi_analyze.py /path/to/collection/run/folder") 9 | 10 | # Check collection run folder path given as first argument 11 | coll_run_folder_path = sys.argv[1] 12 | if not os.path.isdir(coll_run_folder_path): 13 | print("The collection run folder path does not exist: " + coll_run_folder_path) 14 | print_usage() 15 | exit() 16 | 17 | # Name all the direct sub-folders 18 | sub_folders = [name for name in os.listdir(coll_run_folder_path) if os.path.isdir(os.path.join(coll_run_folder_path, name))] 19 | 20 | # Call the analysis on each of the sub-folders (which are run folders) 21 | i=1 22 | for f in sub_folders: 23 | print(str(i) + "/" + str(len(sub_folders)) + "...") 24 | run_folder_path = coll_run_folder_path + "/" + f 25 | call(["python", "analyze.py", run_folder_path]) 26 | i = i + 1 27 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/analysis/multi_analyze_1s.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | from subprocess import call 4 | 5 | 6 | # Usage print 7 | def print_usage(): 8 | print("Usage: python multi_analyze.py /path/to/collection/run/folder") 9 | 10 | # Check collection run folder path given as first argument 11 | coll_run_folder_path = sys.argv[1] 12 | if not os.path.isdir(coll_run_folder_path): 13 | print("The collection run folder path does not exist: " + coll_run_folder_path) 14 | print_usage() 15 | exit() 16 | 17 | # Name all the direct sub-folders 18 | sub_folders = [name for name in os.listdir(coll_run_folder_path) if os.path.isdir(os.path.join(coll_run_folder_path, name))] 19 | 20 | # Call the analysis on each of the sub-folders (which are run folders) 21 | i=1 22 | for f in sub_folders: 23 | print(str(i) + "/" + str(len(sub_folders)) + "...") 24 | run_folder_path = coll_run_folder_path + "/" + f 25 | call(["python", "analyze_1s.py", run_folder_path]) 26 | i = i + 1 27 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/analysis/multi_create_cdf.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | from subprocess import call 4 | 5 | 6 | # Usage print 7 | def print_usage(): 8 | print("Usage: python multi_create_cdf.py /path/to/collection/run/folder") 9 | 10 | # Check collection run folder path given as first argument 11 | coll_run_folder_path = sys.argv[1] 12 | if not os.path.isdir(coll_run_folder_path): 13 | print("The collection run folder path does not exist: " + coll_run_folder_path) 14 | print_usage() 15 | exit() 16 | 17 | # Name all the direct sub-folders 18 | sub_folders = [name for name in os.listdir(coll_run_folder_path) if os.path.isdir(os.path.join(coll_run_folder_path, name))] 19 | 20 | # Call the analysis on each of the sub-folders (which are run folders) 21 | for f in sub_folders: 22 | run_folder_path = coll_run_folder_path + "/" + f 23 | call(["python", "create_cdf.py", run_folder_path]) 24 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/brush.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | lambdas = [3600, 5200, 7000, 8900, 11100, 14150, 19000] 4 | port = ["TCP", "DCTCP", "AFQ_32", "PIFOWFQ_32", "SPPIFOWFQ_32", "TOYWFQ"] 5 | 6 | 7 | for x in lambdas: 8 | for y in port: 9 | cmdline = "python3 projects/sppifo/runs/sppifo_evaluation/fairness/web_search_workload/analyze_web_search.py temp/sppifo/sppifo_evaluation/fairness/web_search_workload/"+str(x)+"/"+y 10 | os.system(cmdline) -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/runs/test_ecmp_n5.properties: -------------------------------------------------------------------------------- 1 | # Topology 2 | scenario_topology_file=example/topologies/simple/simple_n5.topology 3 | 4 | # Run info 5 | seed=546854 6 | run_time_s=0.1 7 | run_folder_name=test_ecmp_n5 8 | run_folder_base_dir=temp 9 | 10 | # Network device 11 | transport_layer=simple_dctcp 12 | network_device=ecmp_switch 13 | network_device_routing=ecmp 14 | network_device_intermediary=identity 15 | 16 | # Link & output port 17 | # Data packet carrying 1000 bytes has 60 bytes header = 8480 bits, 848ns to send 18 | # Data packet carrying 60 bytes header = 480 bits, 48ns to send 19 | # RTT is thus 848 + 48 + 500 + 500 = 1896ns 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=150000 22 | output_port_ecn_threshold_k_bytes=30000 23 | link=perfect_simple 24 | link_delay_ns=20 25 | link_bandwidth_bit_per_ns=10 26 | 27 | # Traffic 28 | traffic=traffic_pair 29 | traffic_pair_type=custom 30 | traffic_pairs=0->4,0->4,0->4,0->4,0->4,0->4,0->4,0->4,0->4,0->4 31 | traffic_pair_flow_size_byte=1000000 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/runs/test_n2.properties: -------------------------------------------------------------------------------- 1 | # Topology 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | # Run info 5 | seed=546854 6 | run_time_ns=9479 7 | run_folder_name=test_n2 8 | run_folder_base_dir=temp 9 | 10 | # Network device 11 | transport_layer=demo 12 | network_device=forwarder_switch 13 | network_device_routing=single_forward 14 | network_device_intermediary=demo 15 | 16 | # Link & output port 17 | # Data packet carrying 1000 bytes has 60 bytes header = 8480 bits, 848ns to send 18 | # Data packet carrying 60 bytes header = 480 bits, 48ns to send 19 | # RTT is thus 848 + 48 + 500 + 500 = 1896ns 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=40000 22 | output_port_ecn_threshold_k_bytes=15000 23 | link=perfect_simple 24 | link_delay_ns=500 25 | link_bandwidth_bit_per_ns=10 26 | 27 | # Traffic 28 | traffic=traffic_pair 29 | traffic_pair_type=custom 30 | traffic_pairs=0->1 31 | traffic_pair_flow_size_byte=1000000000 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/runs/test_n2_flow_threshold.properties: -------------------------------------------------------------------------------- 1 | # Topology 2 | scenario_topology_file=example/topologies/simple/simple_n2.topology 3 | 4 | # Run info 5 | seed=546854 6 | run_time_ns=100000 7 | finish_when_first_flows_finish=2 8 | run_folder_name=test_n2_flow_threshold 9 | run_folder_base_dir=temp 10 | 11 | # Network device 12 | transport_layer=demo 13 | network_device=forwarder_switch 14 | network_device_routing=single_forward 15 | network_device_intermediary=demo 16 | 17 | # Link & output port 18 | # Data packet carrying 1000 bytes has 60 bytes header = 8480 bits, 848ns to send 19 | # Data packet carrying 60 bytes header = 480 bits, 48ns to send 20 | # Un-congested RTT is thus 848 + 48 + 500 + 500 = 1896ns 21 | output_port=ecn_tail_drop 22 | output_port_max_queue_size_bytes=40000 23 | output_port_ecn_threshold_k_bytes=15000 24 | link=perfect_simple 25 | link_delay_ns=500 26 | link_bandwidth_bit_per_ns=10 27 | 28 | # Traffic 29 | traffic=traffic_arrivals_string 30 | traffic_arrivals_list=(0, 0, 1, 3000);(0, 0, 1, 3000);(0, 0, 1, 3000) -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/runs/test_parallel_n8.properties: -------------------------------------------------------------------------------- 1 | # Topology 2 | scenario_topology_file=example/topologies/simple/parallel_n8.topology 3 | 4 | # Run info 5 | seed=546854 6 | run_time_s=1 7 | run_folder_name=test_parallel_n8 8 | run_folder_base_dir=temp 9 | 10 | # Network device 11 | transport_layer=demo 12 | network_device=forwarder_switch 13 | network_device_routing=single_forward 14 | network_device_intermediary=demo 15 | 16 | # Link & output port 17 | # Data packet carrying 1000 bytes has 60 bytes header = 8480 bits, 848ns to send 18 | # Data packet carrying 60 bytes header = 480 bits, 48ns to send 19 | # RTT is thus 848 + 48 + 500 + 500 = 1896ns 20 | output_port=ecn_tail_drop 21 | output_port_max_queue_size_bytes=40000 22 | output_port_ecn_threshold_k_bytes=15000 23 | link=perfect_simple 24 | link_delay_ns=500 25 | link_bandwidth_bit_per_ns=10 26 | 27 | # Traffic 28 | traffic=traffic_pair 29 | traffic_pair_type=custom 30 | traffic_pairs=0->1,2->3,4->5,6->7 31 | traffic_pair_flow_size_byte=785842 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/chain/chain_n20.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--1--2--4--5--...--19--3 3 | # 4 | # All nodes are servers 5 | 6 | # Details 7 | |V|=20 8 | |E|=38 9 | ToRs=incl_range(0,19) 10 | Servers=incl_range(0,19) 11 | Switches=set() 12 | 13 | # Links 14 | 0 1 15 | 1 0 16 | 1 2 17 | 2 1 18 | 2 4 19 | 4 2 20 | 4 5 21 | 5 4 22 | 5 6 23 | 6 5 24 | 6 7 25 | 7 6 26 | 7 8 27 | 8 7 28 | 8 9 29 | 9 8 30 | 9 10 31 | 10 9 32 | 10 11 33 | 11 10 34 | 11 12 35 | 12 11 36 | 12 13 37 | 13 12 38 | 13 14 39 | 14 13 40 | 14 15 41 | 15 14 42 | 15 16 43 | 16 15 44 | 16 17 45 | 17 16 46 | 17 18 47 | 18 17 48 | 18 19 49 | 19 18 50 | 19 3 51 | 3 19 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/diamond/diamond_n5.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # /-0-\ 3 | # / | \ 4 | # 1---4---2 5 | # \ | / 6 | # \-3-/ 7 | 8 | # Details 9 | |V|=5 10 | |E|=16 11 | ToRs=incl_range(0,3) 12 | Servers=incl_range(0,3) 13 | Switches=set(4) 14 | 15 | # Links 16 | 0 1 17 | 1 0 18 | 1 3 19 | 3 1 20 | 1 4 21 | 4 1 22 | 0 4 23 | 4 0 24 | 4 3 25 | 3 4 26 | 2 3 27 | 3 2 28 | 4 2 29 | 2 4 30 | 0 2 31 | 2 0 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/dumbbell/dumbbell_8to8.topology: -------------------------------------------------------------------------------- 1 | # Dumbbell with n=18, of which 8 ToRs on either side, connected by a single link. 2 | # 3 | # 0-\ /-8 4 | # 1-\ /-9 5 | # 2-\ /-10 6 | # 3-\ /-11 7 | # 4--16-17--12 8 | # 5-/ \-13 9 | # 6-/ \-14 10 | # 7-/ \-15 11 | # 12 | # As in, 0-7 have a direct private link to 16, 16 shares a single link with 17, 13 | # and 8-15 have a direct private link to 17 14 | 15 | # Details 16 | |V|=18 17 | |E|=34 18 | ToRs=incl_range(0,15) 19 | Servers=incl_range(0,15) 20 | Switches=set(16,17) 21 | 22 | # Links 23 | 0 16 24 | 1 16 25 | 2 16 26 | 3 16 27 | 4 16 28 | 5 16 29 | 6 16 30 | 7 16 31 | 16 0 32 | 16 1 33 | 16 2 34 | 16 3 35 | 16 4 36 | 16 5 37 | 16 6 38 | 16 7 39 | 16 17 40 | 17 16 41 | 17 8 42 | 17 9 43 | 17 10 44 | 17 11 45 | 17 12 46 | 17 13 47 | 17 14 48 | 17 15 49 | 8 17 50 | 9 17 51 | 10 17 52 | 11 17 53 | 12 17 54 | 13 17 55 | 14 17 56 | 15 17 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/multi_n5.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 1 3 | # / \ 4 | # 0--2--4 5 | # \ / 6 | # 3 7 | # 8 | # 0 and 4 are ToRs 9 | 10 | # Details 11 | |V|=5 12 | |E|=12 13 | ToRs=set(0,4) 14 | Servers=set(0,4) 15 | Switches=set(1,2,3) 16 | 17 | # Links 18 | 0 1 19 | 1 0 20 | 0 2 21 | 2 0 22 | 0 3 23 | 3 0 24 | 1 4 25 | 4 1 26 | 2 4 27 | 4 2 28 | 3 4 29 | 4 3 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/parallel_n8.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--1 3 | # 2--3 4 | # 4--5 5 | # 6--7 6 | # 7 | # All nodes are ToRs 8 | 9 | # Details 10 | |V|=8 11 | |E|=8 12 | ToRs=incl_range(0,7) 13 | Servers=incl_range(0,7) 14 | Switches=set() 15 | 16 | # Links 17 | 0 1 18 | 1 0 19 | 2 3 20 | 3 2 21 | 4 5 22 | 5 4 23 | 6 7 24 | 7 6 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/simple_n2.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--1 3 | # 4 | # All nodes are ToRs 5 | 6 | # Details 7 | |V|=2 8 | |E|=2 9 | ToRs=set(0,1) 10 | Servers=set(0,1) 11 | Switches=set() 12 | 13 | # Links 14 | 0 1 15 | 1 0 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/simple_n4_v1.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--1--2 3 | # | 4 | # 3 5 | # 6 | # Node 0, 2 and 3 are ToRs, 1 is only a switch. 7 | 8 | # Details 9 | |V|=4 10 | |E|=6 11 | ToRs=set(0,2,3) 12 | Servers=set(0,2,3) 13 | Switches=set(1) 14 | 15 | # Links 16 | 0 1 17 | 1 0 18 | 1 2 19 | 2 1 20 | 1 3 21 | 3 1 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/simple_n4_v2.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--1 3 | # | | 4 | # 2--3 5 | # 6 | # All nodes are ToRs 7 | 8 | # Details 9 | |V|=4 10 | |E|=8 11 | ToRs=set(0,1,2,3) 12 | Servers=set(0,1,2,3) 13 | Switches=set() 14 | 15 | # Links 16 | 0 1 17 | 1 0 18 | 1 3 19 | 3 1 20 | 2 3 21 | 3 2 22 | 0 2 23 | 2 0 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/simple_n5.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--1--2 3 | # | | 4 | # 3--4 5 | # 6 | # All nodes are ToRs 7 | 8 | # Details 9 | |V|=5 10 | |E|=10 11 | ToRs=set(0,1,2,3,4) 12 | Servers=set(0,1,2,3,4) 13 | Switches=set() 14 | 15 | # Links 16 | 0 1 17 | 1 0 18 | 1 2 19 | 2 1 20 | 1 3 21 | 3 1 22 | 3 4 23 | 4 3 24 | 2 4 25 | 4 2 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/simple_n6_v1.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--5--2--3 3 | # | | 4 | # 4--1 5 | # 6 | # All nodes are ToRs 7 | 8 | # Details 9 | |V|=6 10 | |E|=12 11 | ToRs=incl_range(0,5) 12 | Servers=incl_range(0,5) 13 | Switches=set() 14 | 15 | # Links 16 | 0 5 17 | 5 0 18 | 5 2 19 | 2 5 20 | 2 3 21 | 3 2 22 | 5 1 23 | 1 5 24 | 0 4 25 | 4 0 26 | 1 4 27 | 4 1 -------------------------------------------------------------------------------- /aifo_simulation/java-code/example/topologies/simple/simple_n6_v2.topology: -------------------------------------------------------------------------------- 1 | # Topology: 2 | # 0--2--3 3 | # | / | 4 | # 4 / 5 | # | \ / 6 | # 5--1 7 | # 8 | # Only 0 and 1 are ToRs 9 | 10 | # Details 11 | |V|=6 12 | |E|=16 13 | ToRs=set(0,1) 14 | Servers=set(0,1) 15 | Switches=set(2,3,4,5) 16 | 17 | # Links 18 | 0 2 19 | 2 0 20 | 0 4 21 | 4 0 22 | 4 5 23 | 5 4 24 | 1 5 25 | 5 1 26 | 1 4 27 | 4 1 28 | 2 4 29 | 4 2 30 | 2 3 31 | 3 2 32 | 1 3 33 | 3 1 -------------------------------------------------------------------------------- /aifo_simulation/java-code/images/netbench_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_simulation/java-code/images/netbench_banner.png -------------------------------------------------------------------------------- /aifo_simulation/java-code/images/netbench_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_simulation/java-code/images/netbench_icon.png -------------------------------------------------------------------------------- /aifo_simulation/java-code/plot_received.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import matplotlib.pyplot as plt 3 | import numpy 4 | import shutil, os 5 | 6 | name = ["PIFO", "SPPIFO", "AIFO", "TCP"] 7 | 8 | # move all temps into runs 9 | for x in name: 10 | src_file = "temp/aifo/aifo_evaluation/pFabric/web_search_workload/3600/"+x+"/rank_at_10.log" 11 | dest_file = 'projects/aifo/plots/aifo_evaluation/selfDefinedFlows/' + x + ".dat" 12 | shutil.copy(src_file, dest_file) 13 | 14 | 15 | # figure 12 16 | 17 | 18 | # figure 16 19 | for x in name: 20 | pat = "temp/aifo/aifo_evaluation/pFabric/web_search_workload/3600/"+x+"/rank_at_10.log" 21 | df = pd.read_csv(pat, delim_whitespace=True, header=0) 22 | plt.figure() 23 | plt.title(x) 24 | df = df[df['flowid']==2] #select the smallest flow 25 | df = df.reset_index(drop=True) #reset the index starting from 0 26 | plt.scatter(x=df.index[0:300], y=df.rankx[0:300]) 27 | plt.savefig('projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/' +x+ '.png') 28 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload/pFabric_geq_1MB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # TCP DCTCP PIFO SPPIFO AIFO 2 | 3600 4.297217592089115 4.213397054191843 4.059000181689476 3.9289663485892232 4.53351134504581 3 | 5200 5.45095430279684 5.289007974692557 4.966729437657715 4.8852158477262435 6.066421234440774 4 | 7000 7.290786278212182 7.0232624951259535 6.662313985960342 6.709191861905911 9.144580462784269 5 | 8900 10.163784295480527 9.828273419161905 10.017447502113722 10.103859799192195 15.296362926489913 6 | 11100 16.772871826756347 17.167787425995677 17.98195957521519 17.777936499938008 23.490196445731808 7 | 14150 43.09498674844469 47.63655800234868 27.60047094377981 31.80214233389215 30.106092295492033 8 | 19000 116.22053668130197 118.00332268475336 35.46729527534389 43.197183499780444 37.09655422267851 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload/pFabric_less_100KB_99th_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # TCP DCTCP PIFO SPPIFO AIFO 2 | 3600 0.8187454300000002 0.23082276000000002 0.22096201000000007 0.21152927000000002 0.5372236399999992 3 | 5200 0.9590562799999977 0.2791454200000018 0.23555586000000006 0.23290654999999993 0.5933165 4 | 7000 1.2121944399999993 0.34967719999999997 0.25550660000000003 0.2528164 0.5829163500000007 5 | 8900 1.5010401600000003 0.4702520399999996 0.27043719999999993 0.26822396000000004 0.5509808500000009 6 | 11100 2.0364400000000034 0.7844272800000001 0.29055652 0.28399522000000016 0.5138339000000001 7 | 14150 4.18367707 2.4401502400000004 0.30663374 0.29923333999999996 0.49263308999999994 8 | 19000 12.614728230000003 8.001561169999997 0.32065796999999996 0.31458292 0.4748640399999998 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload/pFabric_less_100KB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # TCP DCTCP PIFO SPPIFO AIFO 2 | 3600 0.13180157754307947 0.052098318897637795 0.061349368087077354 0.06812147633163501 0.10705126652461902 3 | 5200 0.18642774766624964 0.06517926440873666 0.07462531630263959 0.07631008191148171 0.1276291978124198 4 | 7000 0.25272484612273066 0.08174324227356 0.09044311291128398 0.08549143277900696 0.14360429096878569 5 | 8900 0.33293491567499117 0.10499385835831178 0.10622926099826858 0.09478736053243972 0.152694911326656 6 | 11100 0.45832757550868297 0.15233176097095769 0.12202434065475569 0.10448289083594099 0.1566441263523381 7 | 14150 0.8631479955503514 0.39078603592120514 0.13219252585208327 0.1109915244881245 0.15801154908614357 8 | 19000 2.468918899472249 1.451394675464475 0.1379601164660745 0.11454371560460737 0.15998887973685594 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload_q_len/pFabric_geq_1MB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # C10 C20 C50 C100 C500 2 | 3600 4.374777809406876 4.53351134504581 4.451538814961745 4.412568631409953 4.253681211898017 3 | 5200 5.975063094636611 6.066421234440774 5.980183427498218 5.766936444077456 5.3164411364136415 4 | 7000 9.69550187009078 9.144580462784269 9.01509777330878 8.419529805863288 7.084713868066618 5 | 8900 16.812372031697937 15.296362926489913 14.618488896798798 13.548225417614072 9.785733559975613 6 | 11100 25.945894903143333 23.490196445731808 22.639000488521756 21.490168951929782 15.800422698190816 7 | 14150 32.34865693680277 30.106092295492033 29.732830246140743 29.250299569132594 27.465059267774237 8 | 19000 39.07567297880121 37.09655422267851 36.22165275030645 36.33687871694868 35.97924859294558 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload_q_len/pFabric_less_100KB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # C10 C20 C50 C100 C500 2 | 3600 0.1151125584584028 0.10705126652461902 0.12041213799972204 0.10019661042149144 0.12602803511047292 3 | 5200 0.12608133217871004 0.1276291978124198 0.14100008964654565 0.12307603589184335 0.1900590700561347 4 | 7000 0.1329146173685463 0.14360429096878569 0.15513612551455017 0.13871977910490374 0.27161653480237014 5 | 8900 0.13417809609799686 0.152694911326656 0.15907685519334241 0.14362272680220436 0.3642977141234311 6 | 11100 0.13472773215509792 0.1566441263523381 0.1593731959589337 0.1414364693558241 0.46633313798861026 7 | 14150 0.13604758797168431 0.15801154908614357 0.1578215123851869 0.1361508622343911 0.5853049676346993 8 | 19000 0.1386037054021146 0.15998887973685594 0.15739935762714832 0.13462465012306965 0.7148547209604039 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload_q_len_1_4/pFabric_geq_1MB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # C10 C20 C50 C100 C500 2 | 3600 38.70420029133859 41.09992643546798 39.0462797199211 41.15447184184676 41.539978938976375 3 | 5200 48.643122006887054 48.67870071634615 48.77735023440713 50.2142282159013 53.206819588275394 4 | 7000 55.81158403884515 57.881991478917236 58.475031309128624 58.44392220381837 62.35681931438812 5 | 8900 65.22353581293103 64.6241831252663 69.31036001187951 69.51886686369373 73.9802880403662 6 | 11100 71.5112888352252 69.81966509231879 73.06744087941492 74.5064311388889 85.54390070805721 7 | 14150 77.33323494849785 73.88193870711926 77.08279119458496 80.70599494509689 85.54390070805721 8 | 19000 82.99978946582733 82.75774521146145 83.07850313367672 86.79955145923782 103.88822837388862 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload_q_len_1_4/pFabric_less_100KB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # C10 C20 C50 C100 C500 2 | 3600 0.8534256952606635 0.851402244549763 1.1940555777251185 1.4756595450664136 1.8273611205505458 3 | 5200 0.9650435065100031 0.9865423262388818 1.4997709602922489 1.824349305149396 2.8208560438931296 4 | 7000 0.9892205108953103 1.0703635206063475 1.6291611527711984 2.165708260787103 3.6229777040816327 5 | 8900 1.0274127332467051 1.1142692266146992 1.7235578292501854 2.4148265613741873 4.449096053817505 6 | 11100 1.0422243064346783 1.1289572627080522 1.78625872316469 2.578875371188223 5.275038578407719 7 | 14150 1.049223976807158 1.1472829068425392 1.8206438707739427 2.663774634177961 5.275038578407719 8 | 19000 1.054381006809848 1.1461730252423792 1.825761138901022 2.710989544738914 6.59211507346867 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload_w_sr/pFabric_geq_1MB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # W20_SR0.02 W20_SR1 W100_SR0.1 W1000_SR1 2 | 3600 4.29058888782 5.43768786894 4.26784163365 4.32839570862 3 | 5200 5.72588242235 7.24644046692 5.75702906838 5.70703911457 4 | 7000 8.72938514564 11.1817240144 8.73293735785 8.58400660857 5 | 8900 14.100361064 18.4386776591 13.9934278538 14.2764330361 6 | 11100 22.7675274959 27.5514880653 22.2766885361 22.1785196608 7 | 14150 29.0822598385 33.0882307864 28.2747674133 27.600304976 8 | 19000 35.6757994742 39.7464287233 34.8498130222 34.5842499207 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload_w_sr/pFabric_less_100KB_99th_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # W20_SR0.02 W20_SR1 W100_SR0.1 W1000_SR1 2 | 3600 0.6993087 0.36323364 0.68244072 0.64963745 3 | 5200 0.711766 0.42485649 0.67739422 0.67306472 4 | 7000 0.67956959 0.43266276 0.6647418 0.66080273 5 | 8900 0.61961166 0.42284676 0.6156988 0.60178358 6 | 11100 0.56319886 0.430375 0.55500048 0.55725425 7 | 14150 0.52354796 0.42987374 0.51635126 0.51518207 8 | 19000 0.50154528 0.44445182 0.489882 0.48954666 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/pFabric/web_search_workload_w_sr/pFabric_less_100KB_mean_fct_ms.dat: -------------------------------------------------------------------------------- 1 | # W20_SR0.02 W20_SR1 W100_SR0.1 W1000_SR1 2 | 3600 0.118449572163 0.0809148170365 0.116798746769 0.116129158685 3 | 5200 0.140030388087 0.0958351504907 0.136617761691 0.13599030843 4 | 7000 0.15402336129 0.108702486261 0.151956164617 0.151944297621 5 | 8900 0.159885204271 0.117707578184 0.160372360436 0.159391523031 6 | 11100 0.163564479726 0.124358412421 0.163160135276 0.163193754225 7 | 14150 0.163661060506 0.128993539234 0.16319246853 0.163022907304 8 | 19000 0.165085239769 0.134919929566 0.164323667414 0.163801440924 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/AIFO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/AIFO.png -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/PIFO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/PIFO.png -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/SPPIFO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/SPPIFO.png -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/TCP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_simulation/java-code/projects/aifo/plots/aifo_evaluation/selfDefinedFlows/figure16/TCP.png -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/11100 9 | analysis_command=python3 projects/aifo/runs/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/14150 9 | analysis_command=python3 projects/aifo/runs/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/19000 9 | analysis_command=python3 projects/aifo/runs/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/fairness/web_search_workload/3600/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/aifo/aifo_evaluation/fairness/web_search_workload/3600 9 | analysis_command=python3 projects/aifo/runs/aifo_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=3600 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/fairness/web_search_workload/3600/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/aifo/aifo_evaluation/fairness/web_search_workload/3600 9 | analysis_command=python3 projects/aifo/runs/aifo_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=3600 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/fairness/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/aifo/aifo_evaluation/fairness/web_search_workload/3600 9 | analysis_command=python3 projects/aifo/runs/aifo_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=3600 31 | traffic_flow_size_dist=pfabric_web_search_lower_bound 32 | traffic_probabilities_generator=all_to_all 33 | 34 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/5200 9 | analysis_command=python3 projects/aifo/runs/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/7000 9 | analysis_command=python3 projects/aifo/runs/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/aifo/runs/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_evaluation/fairness/web_search_workload/8900 9 | analysis_command=python3 projects/aifo/runs/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload/11100/AIFO.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=AIFO 8 | run_folder_base_dir=temp/aifo/aifo_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=aifo 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload/14150/AIFO.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=AIFO 8 | run_folder_base_dir=temp/aifo/aifo_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=aifo 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload/19000/AIFO.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=AIFO 8 | run_folder_base_dir=temp/aifo/aifo_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=aifo 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload/3600/AIFO.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=AIFO 8 | run_folder_base_dir=temp/aifo/aifo_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=aifo 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload/5200/AIFO.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=AIFO 8 | run_folder_base_dir=temp/aifo/aifo_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=aifo 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload/7000/AIFO.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=AIFO 8 | run_folder_base_dir=temp/aifo/aifo_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=aifo 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload/8900/AIFO.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=AIFO 8 | run_folder_base_dir=temp/aifo/aifo_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=aifo 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_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/aifo/aifo_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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/11100/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/11100/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/11100/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/14150/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/14150/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/14150/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/19000/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/19000/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/19000/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/3600/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/3600/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/3600/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/5200/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/5200/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/5200/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/7000/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/7000/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/7000/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/8900/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/8900/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_C_K/8900/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_C_K/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_q_len/11100/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_q_len/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_q_len/11100/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_q_len/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_q_len/11100/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_q_len/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_q_len/14150/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_q_len/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_q_len/14150/AIFO_C20.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=AIFO_C20 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_q_len/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_q_len/14150/AIFO_C50.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=AIFO_C50 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_q_len/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/projects/aifo/runs/aifo_evaluation/pFabric/web_search_workload_q_len/19000/AIFO_C10.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=AIFO_C10 8 | run_folder_base_dir=temp/aifo/aifo_evaluation/pFabric/web_search_workload_q_len/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=aifo 22 | output_port_max_size_packets=10 23 | window_size=20 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 -------------------------------------------------------------------------------- /aifo_simulation/java-code/src/main/java/ch/ethz/systems/netbench/core/SelfDefinedFlows.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core; 2 | 3 | public class SelfDefinedFlows { 4 | public static boolean isSDF = false; 5 | 6 | public static void setIsSDFTrue() { 7 | isSDF = true; 8 | } 9 | 10 | public static void setIsSDFFalse() { 11 | isSDF = false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/src/main/java/ch/ethz/systems/netbench/xpt/aifo/ports/PIFO/PIFOOutputPort.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.aifo.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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/src/main/java/ch/ethz/systems/netbench/xpt/aifo/ports/PIFO/PIFOOutputPortGenerator.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.aifo.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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-code/src/main/java/ch/ethz/systems/netbench/xpt/aifo/ports/SPPIFO/SPPIFOOutputPort.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.xpt.aifo.ports.SPPIFO; 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 SPPIFOOutputPort extends OutputPort { 10 | 11 | public SPPIFOOutputPort(NetworkDevice ownNetworkDevice, NetworkDevice targetNetworkDevice, Link link, long numberQueues, long sizePerQueuePackets, String stepSize) { 12 | super(ownNetworkDevice, targetNetworkDevice, link, new SPPIFOQueue(numberQueues, sizePerQueuePackets, ownNetworkDevice, stepSize)); 13 | } 14 | 15 | /** 16 | * Enqueue the given packet. 17 | * 18 | * @param packet Packet instance 19 | */ 20 | @Override 21 | public void enqueue(Packet packet) { 22 | 23 | // Enqueue packet 24 | potentialEnqueue(packet); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/src/main/java/ch/ethz/systems/netbench/xpt/voijslav_and_sppifo/tcp/pfabric/removeFirstLine.py: -------------------------------------------------------------------------------- 1 | def remove(fileName): 2 | a_file = open("sample.txt", "r") 3 | get list of lines 4 | lines = a_file.readlines() 5 | a_file.close() 6 | 7 | del lines[1] 8 | delete lines 9 | 10 | 11 | new_file = open("sample.txt", "w+") 12 | write to file without line 13 | 14 | for line in lines: 15 | new_file.write(line) 16 | 17 | new_file.close() -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-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 | } -------------------------------------------------------------------------------- /aifo_simulation/java-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 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/src/test/java/ch/ethz/systems/netbench/core/utility/UnitConverterTest.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.core.utility; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.mockito.runners.MockitoJUnitRunner; 6 | 7 | import static org.junit.Assert.assertEquals; 8 | 9 | @RunWith(MockitoJUnitRunner.class) 10 | public class UnitConverterTest { 11 | 12 | @Test 13 | public void testConversion() { 14 | assertEquals(UnitConverter.convertSecondsToNanoseconds(-1), -1000000000L); 15 | assertEquals(UnitConverter.convertSecondsToNanoseconds(0), 0L); 16 | assertEquals(UnitConverter.convertSecondsToNanoseconds(7), 7000000000L); 17 | assertEquals(UnitConverter.convertSecondsToNanoseconds(-1.34), -1340000000L); 18 | assertEquals(UnitConverter.convertSecondsToNanoseconds(0.0), 0L); 19 | assertEquals(UnitConverter.convertSecondsToNanoseconds(6.99), 6990000000L); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/src/test/java/ch/ethz/systems/netbench/ext/demo/DemoIntermediaryTest.java: -------------------------------------------------------------------------------- 1 | package ch.ethz.systems.netbench.ext.demo; 2 | 3 | import ch.ethz.systems.netbench.core.Simulator; 4 | import ch.ethz.systems.netbench.core.network.Packet; 5 | import org.junit.Test; 6 | import org.junit.runner.RunWith; 7 | import org.mockito.Mock; 8 | import org.mockito.runners.MockitoJUnitRunner; 9 | 10 | import static org.mockito.Mockito.verifyZeroInteractions; 11 | 12 | @RunWith(MockitoJUnitRunner.class) 13 | public class DemoIntermediaryTest { 14 | 15 | @Mock 16 | private Packet packet; 17 | 18 | @Test 19 | public void testGenerator() { 20 | Simulator.setup(0); 21 | DemoIntermediaryGenerator generator = new DemoIntermediaryGenerator(); 22 | DemoIntermediary intermediary = (DemoIntermediary) generator.generate(22); 23 | intermediary.adaptIncoming(packet); 24 | intermediary.adaptOutgoing(packet); 25 | verifyZeroInteractions(packet); 26 | Simulator.reset(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/expansion_algs/jellyfish_heuristic.m: -------------------------------------------------------------------------------- 1 | function [ A ] = jellyfish_heuristic( A,n,d ) 2 | all_edges = find(upper(A)); 3 | remove_edges = randsample(all_edges,d/2); 4 | for i=remove_edges 5 | v = int32(mod(i,n+1)); 6 | u = int32(i/(n+1)); 7 | A(v,u) = 0 ; A(u,v) = 0; 8 | A(n+1,v)=1 ; A(v, n+1) = 1; 9 | A(n+1,u)=1 ; A(u,n+1) = 1; 10 | end 11 | end 12 | 13 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/expansion_algs/random_permutation.m: -------------------------------------------------------------------------------- 1 | function [adj,lambda1,lambda2,list,factors] = random_permutation(adj,n,d,list,factors) 2 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/expansion_algs/xpander_heuristic_adj.m: -------------------------------------------------------------------------------- 1 | function [B,lambda1,lambda2, list, factors] = xpander_heuristic_adj(adj,n, d, list,factors) 2 | [B, lambda1, lambda2, list] = xpander_heuristic(adj,n,d,list,@getAdjacencyGapAdj); 3 | end 4 | 5 | function gap = getAdjacencyGapAdj(adj_sp) 6 | adj = full(adj_sp); 7 | lambda = sortrows(abs(eig(adj)),-1); 8 | %disp([lambda(1), lambda(size(adj,1)-1), lambda(size(adj,1))]); 9 | % lambda2 = max(abs(lambda(1)), abs(lambda(size(adj,1)-1))); 10 | %gap = %lambda(find(lambda,1) ); 11 | gap = lambda(1)-lambda(2); 12 | end 13 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/expansion_algs/xpander_heuristic_lap.m: -------------------------------------------------------------------------------- 1 | function [B,lambda1,lambda2, list,factors] = xpander_heuristic_lap(adj,n, d, list,factors) 2 | disp(n); 3 | [B, lambda1, lambda2, list] = xpander_heuristic(adj,n,d,list,@getLaplacianGap); 4 | disp('-------'); 5 | end 6 | 7 | function gap = getLaplacianGap(adj_sp) 8 | adj = full(adj_sp); 9 | lap = diag(sum(adj~=0,2)) - adj; 10 | lambda = eig(lap); 11 | 12 | gap = lambda(2); 13 | end 14 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/expansion_algs/xpander_heuristic_lap_eigs.m: -------------------------------------------------------------------------------- 1 | function [B,lambda1,lambda2, list,factors] = xpander_heuristic_lap_eigs(adj,n, d, list,factors) 2 | [B, lambda1, lambda2, list] = xpander_heuristic(adj,n,d,list,@getLaplacianGapEigs); 3 | end 4 | 5 | function gap = getLaplacianGapEigs(adj) 6 | tic 7 | if size(adj,1)>200 8 | lap = diag(sum(adj~=0,2)) - adj; 9 | lambda = eigs(lap,6,'sm'); 10 | else 11 | adj = full(adj); 12 | lap = diag(sum(adj~=0,2)) - adj; 13 | lambda = eig(lap); 14 | end 15 | gap = lambda(2); 16 | toc 17 | end 18 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/expansion_algs/xpander_irregular_heuristic_lap.m: -------------------------------------------------------------------------------- 1 | function [B,lambda1,lambda2, list, factors] = xpander_irregular_heuristic_lap(adj,n, d, list,factors) 2 | [B, lambda1, lambda2, list] = xpander_irregular_heuristic(adj,n,d,list,@getAdjacencyGapLap); 3 | end 4 | 5 | function gap = getAdjacencyGapLap(adj_sp) 6 | adj = full(adj_sp); 7 | lap = diag(sum(adj~=0,2)) - adj; 8 | lambda = eig(lap); 9 | 10 | gap = lambda(find(lambda,1) ); 11 | end 12 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/bcube.m: -------------------------------------------------------------------------------- 1 | function [ output_args ] = bcube( input_args ) 2 | %BCUBE Summary of this function goes here 3 | % Detailed explanation goes here 4 | 5 | 6 | end 7 | 8 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/bipartite.m: -------------------------------------------------------------------------------- 1 | %% This creates the complete bipartite graph 2 | function [ A ] = bipartite( n, m ) 3 | A = zeros([ n+m n+m]); 4 | for i=1:n 5 | for j =1:m 6 | A = add_link(A,i,n+j); 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/dcell.m: -------------------------------------------------------------------------------- 1 | function [ output_args ] = dcell( input_args ) 2 | %DCELL Summary of this function goes here 3 | % Detailed explanation goes here 4 | 5 | 6 | end 7 | 8 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/fattree.m: -------------------------------------------------------------------------------- 1 | %% This creates a FatTree graph with uniform degree of d 2 | function [A] = fattree( d ) 3 | tors = d^2/2; 4 | aggs = d^2/2; 5 | cores = d^2/4; 6 | nodes = tors+aggs+cores; 7 | A = zeros( [ nodes nodes] ); 8 | 9 | 10 | % connect tors to aggregators (pod by pod) 11 | for pod=1:d 12 | for agg=1:d/2 13 | for tor=1:d/2 14 | A = add_link(A,(pod-1)*d/2 + tor, tors + (pod-1)*d/2+agg); 15 | end 16 | end 17 | end 18 | 19 | % connect cores to aggregators (pod by pod) 20 | for core=1:cores 21 | for pod=1:d 22 | agg=mod(core,d/2); 23 | if agg==0 24 | agg = d/2; 25 | end 26 | A = add_link(A,tors+aggs+core,tors+(pod-1)*d/2+agg); 27 | end 28 | end 29 | 30 | end 31 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/hypercube.m: -------------------------------------------------------------------------------- 1 | function [A] = hypercube(nodes) 2 | if ~is_power_two(nodes): 3 | A = []; 4 | return; 5 | end 6 | n = log2(nodes); 7 | 8 | end 9 | 10 | 11 | function res = is_power_two(n) 12 | res = log2(n) == floor(log2(n)); 13 | end 14 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/random_xpander_lift.m: -------------------------------------------------------------------------------- 1 | function adj = random_xpander_lift(d,lifts) 2 | n = (d+1)*lifts; 3 | adj = zeros([n n]); 4 | 5 | % go over first group allocate neighbors 6 | % go over second group allocate to which ever is left 7 | % ... 8 | 9 | for g1=1:d+1 10 | for g2=g1+1:d+1 11 | neighs = randperm(lifts); 12 | for i=1:lifts 13 | adj = add_link(adj, (g1-1)*lifts+i,(g2-1)*lifts+neighs(i)); 14 | end 15 | end 16 | end 17 | 18 | % If this is by any chance not ramanujan, try again :) 19 | if ~is_expander(adj,d) 20 | adj = random_xpander_lift(d,lifts); 21 | end 22 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/sw_ring.m: -------------------------------------------------------------------------------- 1 | function adj = sw_ring(n) 2 | adj = zeros([ n n ]); 3 | 4 | % add ring 5 | for i=1:n-1 6 | adj = add_link(adj,i,i+1); 7 | end 8 | adj = add_link(adj,n,1); 9 | 10 | % now randomally select 4 extra intermediate 11 | for nid=1:n 12 | try_cntr = 0; 13 | while sum(adj(nid,:)) ~= 6 && try_cntr ~= 1000 14 | neigh = randi([1 n]); 15 | 16 | if sum(adj(neigh,:)) < 6 17 | adj = add_link(adj,nid, neigh); 18 | end 19 | try_cntr = try_cntr +1; 20 | end 21 | if try_cntr == 1000 22 | adj = sw_ring(n); 23 | break; 24 | end 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/update_from_permutation_cycle.m: -------------------------------------------------------------------------------- 1 | function [A, factors] = update_from_permutation_cycle(A,n,perm, .... 2 | factors, counter) 3 | for key=1:n-1 4 | A(perm(key), perm(key+1)) = 1; 5 | A(perm(key+1),perm(key)) = 1; 6 | end 7 | A(perm(1), perm(n)) = 1; 8 | A(perm(n),perm(1)) = 1; 9 | factor = containers.Map('KeyType','int32','ValueType','any'); 10 | factor(1) = perm; 11 | factors(counter) = factor; 12 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/graph_generation/update_from_permutation_map.m: -------------------------------------------------------------------------------- 1 | function [A, factors] = update_from_permutation_map(A,n,perm, factors, ~) 2 | for key=1:n 3 | A(key, perm(key)) = 1; 4 | A(perm(key),key) = 1; 5 | end 6 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/ExpansionTypes.m: -------------------------------------------------------------------------------- 1 | classdef ExpansionTypes 2 | enumeration 3 | XpanderLap, XpanderLapEigs, XpanderAdj, JF, BiluLiniel, TwoFactors, ... 4 | RandomPermutation, XpanderIrregularLap 5 | end 6 | 7 | end 8 | 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/GraphTypes.m: -------------------------------------------------------------------------------- 1 | classdef GraphTypes 2 | enumeration 3 | Xpander, XpanderIrregular, Ramanujan, BiluLiniel, PermutationsMap, ... 4 | PermutationsCycle 5 | end 6 | 7 | end 8 | 9 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/add_link.m: -------------------------------------------------------------------------------- 1 | function [A] = add_link(A,s,t) 2 | % disp([s t]); 3 | A(s,t) = 1; 4 | A(t,s) = 1; 5 | end 6 | 7 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/add_multiple_links.m: -------------------------------------------------------------------------------- 1 | function [ A ] = add_multiple_links( A,s,t ) 2 | A(s,t) = A(s,t) + 1; 3 | A(t,s) = A(t,s) + 1; 4 | end 5 | 6 | 7 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/close_cluster.m: -------------------------------------------------------------------------------- 1 | function close_cluster() 2 | poolobj = gcp('nocreate'); 3 | delete(poolobj); 4 | end 5 | 6 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/compare_expansion.m: -------------------------------------------------------------------------------- 1 | function [ res] = compare_expansion( mat1, mat2, d ) 2 | gap = d - 2*sqrt(d-1); 3 | lambda_mat1 = sort(abs(eig(mat1))); 4 | lambda_mat2 = sort(abs(eig(mat2))); 5 | % disp([lambda_mat1(length(lambda_mat1)) lambda_mat2(length(lambda_mat2))]); 6 | % disp( lambda_mat1(length(lambda_mat1)) lambda_mat2(length(lambda_mat2))) 7 | gap1 = lambda_mat1(length(lambda_mat1))-lambda_mat1(length(lambda_mat1)-1); 8 | gap2 = lambda_mat2(length(lambda_mat2))-lambda_mat2(length(lambda_mat2)-1); 9 | 10 | res= gap1/gap2; 11 | 12 | end 13 | 14 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/compare_lambda2.m: -------------------------------------------------------------------------------- 1 | function [ res ] = compare_lambda2( mat1,mat2 ) 2 | lambda_mat1 = sort(abs(eig(mat1))); 3 | lambda_mat2 = sort(abs(eig(mat2))); 4 | res = lambda_mat1(length(lambda_mat1)-1)/lambda_mat2(length(lambda_mat2)-1); 5 | end 6 | 7 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/create_adjacency_list.m: -------------------------------------------------------------------------------- 1 | function list = create_adjacency_list(A,n,d) 2 | list = zeros([n*d/2 2] ) ; 3 | i = 1; 4 | for row = 1:n 5 | for col = row+1:n 6 | if A(row,col) == 1 7 | list(i, 1:2) = [row,col]; 8 | i = i+1; 9 | end 10 | end 11 | end 12 | list( ~any(list,2), : ) = []; 13 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/euler_path.m: -------------------------------------------------------------------------------- 1 | function path = euler_path(A,n,d) 2 | num_edges = n*d/2; 3 | path = zeros(num_edges, 1); 4 | copy_matrix = A; 5 | v = 1; 6 | step = 1; 7 | path(step) = v; 8 | while num_edges 9 | step = step+1; 10 | neighbors = find(copy_matrix(v,:)); 11 | if mod(length(neighbors),2) == 0 || length(neighbors) ==1 12 | w = neighbors(1); 13 | else 14 | for w=neighbors 15 | copy_matrix(v,w)=0; 16 | copy_matrix(w,v)=0; 17 | if has_path(copy_matrix,v,w,n) 18 | break 19 | else 20 | copy_matrix(v,w)=1; 21 | copy_matrix(w,v)=1; 22 | end 23 | end 24 | end 25 | copy_matrix(v,w)=0; 26 | copy_matrix(w,v)=0; 27 | path(step) = w; 28 | num_edges = num_edges-1; 29 | v = w; 30 | end 31 | clear copy_matrix; 32 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/fail_links.m: -------------------------------------------------------------------------------- 1 | function adj2 = fail_links( adj, perc ) 2 | adj2 = adj; 3 | N = size(adj,2); 4 | for src=1:N 5 | for dst=src+1:N 6 | if is_neighbor(adj, src, dst) && rand < perc 7 | adj2 = remove_link(adj2, src, dst); 8 | end 9 | end 10 | end 11 | end 12 | 13 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_adjacency.m: -------------------------------------------------------------------------------- 1 | function A = get_adjacency(n) 2 | A = ones(n)-eye(n); 3 | A = sparse(A); 4 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_avg_hosts_length.m: -------------------------------------------------------------------------------- 1 | function [ dist, distro ] = get_avg_hosts_length( A, tors, hosts_per_tor, max_length ) 2 | 3 | % dist = 0; 4 | shortest = graphallshortestpaths(sparse(A),'directed',false); 5 | total_hosts = hosts_per_tor*length(tors); 6 | distro = zeros([ max_length+1 1]); 7 | for t1=tors 8 | for t2=tors 9 | if t1==t2 10 | distro(max_length+1) = distro(max_length+1) + hosts_per_tor^2; 11 | continue 12 | end 13 | distro(shortest(t1,t2)) = distro(shortest(t1,t2)) + hosts_per_tor^2; 14 | % dist = shortest(t1,t2)*(hosts_per_tor^2-hosts_per_tor); 15 | end 16 | end 17 | 18 | % dist = dist;%/(total_hosts^2-total_hosts); 19 | % dist/ 20 | distro = distro/total_hosts^2; 21 | dist = 0; 22 | for i = 1:max_length 23 | dist = dist + distro(i)*(i+1); 24 | end 25 | dist = dist + distro(max_length+1); 26 | 27 | 28 | end 29 | 30 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_avg_shortest_path.m: -------------------------------------------------------------------------------- 1 | function [ avg_path ] = get_avg_shortest_path( A,tors ) 2 | sp_A = sparse(A); 3 | longest = graphallshortestpaths(sp_A,'directed',false); 4 | avg = 0; 5 | cntr = 0; 6 | for src=1:length(tors) 7 | for dst=src+1:length(tors) 8 | row = tors(src); 9 | col = tors(dst); 10 | 11 | avg = avg + longest(row,col); 12 | cntr = cntr+1; 13 | end 14 | end 15 | 16 | avg_path = avg/cntr; 17 | end 18 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_deg_arr.m: -------------------------------------------------------------------------------- 1 | function [deg_arr] = get_deg_arr(A) 2 | n = size(A,1); 3 | 4 | deg_sum = sum(A,2); 5 | deg_arr = zeros([n 1]); 6 | for i=1:n 7 | deg_arr(i) = deg_sum(i); 8 | end 9 | end 10 | 11 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_deg_count.m: -------------------------------------------------------------------------------- 1 | function [ deg_count ] = get_deg_count(A) 2 | deg_arr = get_deg_arr(A); 3 | unv = unique(deg_arr); 4 | deg_count = histc(deg_arr, unv); 5 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_diameter.m: -------------------------------------------------------------------------------- 1 | function [diam] = get_diameter(A) 2 | sp_A = sparse(A); 3 | longest = graphallshortestpaths(sp_A,'directed',false); 4 | diam = max(longest(:)); 5 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_diameter_bound.m: -------------------------------------------------------------------------------- 1 | function [ bound ] = get_diameter_bound( A,d ) 2 | n = size(A,2); 3 | bound = logb(n,d); 4 | end 5 | 6 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_disjoint_paths.m: -------------------------------------------------------------------------------- 1 | function [ paths ] = get_disjoint_paths( A, tors ) 2 | paths = length(tors); 3 | A = sparse(A); 4 | for src=1:length(tors) 5 | for dst=src+1:length(tors) 6 | paths_t = get_num_paths(A,tors(src),tors(dst)); 7 | disp([ tors(src) tors(dst) paths_t]); 8 | if paths_t < paths 9 | paths = paths_t; 10 | end 11 | end 12 | end 13 | end 14 | 15 | function [res] = get_num_paths(A,s,t) 16 | res = 0; 17 | while has_path(A,s,t) 18 | [dist, path, pred] = graphshortestpath(A, s, t, 'Directed', false); 19 | for i=1:length(path)-1 20 | p1 = path(i); 21 | p2 = path(i+1); 22 | A = remove_link(A,p1,p2); 23 | end 24 | res = res+1; 25 | end 26 | 27 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_irregular_adjacency.m: -------------------------------------------------------------------------------- 1 | function A = get_irregular_adjacency(n) 2 | A = ones(n)-eye(n); 3 | A = remove_triangle(A,n); 4 | A = sparse(A); 5 | end 6 | 7 | function A = remove_triangle(A,n) 8 | 9 | % remove edge=(n,n-1) 10 | A(n-1,n) = 0; 11 | A(n, n-1) = 0; 12 | 13 | % remove edge=(n-2,n-1) 14 | A(n-1,n-2) = 0; 15 | A(n-2, n-1) = 0; 16 | 17 | % remove edge=(n,n-2) 18 | A(n-2,n) = 0; 19 | A(n, n-2) = 0; 20 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_irregular_distribution_adjacency.m: -------------------------------------------------------------------------------- 1 | function A = get_irregular_distribution_adjacency(n, degs_percent) 2 | sorted_degs = sortrows(degs_percent,2); 3 | % A = ones(n)-eye(n); 4 | A = zeros( [n n] ); 5 | allocated_deg = 0; 6 | for i=1:size(sorted_degs,2) 7 | nodes = n*sorted_degs(i,2); 8 | deg = sorted_degs(i,1); 9 | for j=1:n 10 | 11 | end 12 | 13 | end 14 | %A = ones(n)-eye(n); 15 | %A = remove_triangle(A,n); 16 | A = sparse(A); 17 | end 18 | 19 | 20 | 21 | function A = remove_triangle(A,n) 22 | 23 | % remove edge=(n,n-1) 24 | A(n-1,n) = 0; 25 | A(n, n-1) = 0; 26 | 27 | % remove edge=(n-2,n-1) 28 | A(n-1,n-2) = 0; 29 | A(n-2, n-1) = 0; 30 | 31 | % remove edge=(n,n-2) 32 | A(n-2,n) = 0; 33 | A(n, n-2) = 0; 34 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_irregular_spectral_gap.m: -------------------------------------------------------------------------------- 1 | function [lambda1,lambda2] = get_irregular_spectral_gap(adj,n) 2 | lambda = eig(adj); 3 | lambda2 = max( abs(lambda(1)),abs(lambda(n-1)) ); 4 | lambda1 = lambda(n); 5 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_lambda2.m: -------------------------------------------------------------------------------- 1 | function [ l2 ] = get_lambda2( adj ) 2 | lambda = sort(abs(eig(adj))); 3 | l2 = lambda(length(lambda)-1); 4 | end 5 | 6 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_laplacian.m: -------------------------------------------------------------------------------- 1 | function lap = get_laplacian(adj_sp) 2 | adj = full(adj_sp); 3 | lap = diag(sum(adj~=0,2)) - adj; 4 | end 5 | 6 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_laplacian_results.m: -------------------------------------------------------------------------------- 1 | function res = get_laplacian_results(A,d) 2 | n = size(A,1); 3 | res = zeros([1 n*d/2]); 4 | i = 1; 5 | for row=1:n 6 | for col=row+1:n 7 | if A(row,col) == 1 8 | lambda = eig(get_laplacian(remove_edge(A,row,col))); 9 | res(i) = lambda(2); 10 | i = i+1; 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_path_length_distribution.m: -------------------------------------------------------------------------------- 1 | function [ distro ] = get_path_length_distribution( A ,tors,max_size) 2 | sp_A = sparse(A); 3 | 4 | longest = graphallshortestpaths(sp_A,'directed',false); 5 | 6 | diam = get_diameter(A); 7 | if max_size < diam 8 | max_size = diam; 9 | end 10 | distro = zeros([ max_size 1]); 11 | cntr = 0; 12 | for src=1:length(tors) 13 | for dst=src+1:length(tors) 14 | row = tors(src); 15 | col = tors(dst); 16 | path_len = longest(row,col); 17 | distro(path_len) = distro(path_len)+1; 18 | cntr = cntr+1; 19 | end 20 | end 21 | 22 | distro = distro/cntr*100; 23 | 24 | end 25 | 26 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_ramanujan_gap.m: -------------------------------------------------------------------------------- 1 | function [ gap ] = get_ramanujan_gap( d ) 2 | gap = d - 2*sqrt(d-1); 3 | end 4 | 5 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_shortest_paths_bound.m: -------------------------------------------------------------------------------- 1 | function [ res ] = get_shortest_paths_bound( N, d ) 2 | [k,R] = get_k(N,d); 3 | 4 | res = k * R; 5 | func = @(a) a*d*((d-1)^(a-1)); 6 | 7 | res = res + sum( arrayfun( func , 1:k-1) ); 8 | res = res/(N-1); 9 | end 10 | 11 | function [k, R] = get_k(N,d) 12 | k = 1; 13 | rTag = 0; 14 | func = @(a) d*((d-1)^(a-1)); 15 | 16 | while rTag >= 0 17 | k = k+1; 18 | R = rTag; 19 | tmp = sum( arrayfun( func , 1:k-1) ); 20 | rTag = (N-1) - tmp; 21 | end 22 | k=k-1; 23 | end 24 | % end 25 | % def find_k(N,d): 26 | % k=1 27 | % res1 = 0 28 | % while res1 >= 0: 29 | % k+=1 30 | % res=res1 31 | % res1 = N-1 - sum([d*(d-1)**(j-1) for j in range(1,k)]) 32 | % #print res1, k 33 | % 34 | % return k-1,res 35 | % 36 | % def get_avg_path_len(N,d): 37 | % k,R = find_k(N,d) 38 | % 39 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_spectral_gap.m: -------------------------------------------------------------------------------- 1 | function [lambda1,lambda2] = get_spectral_gap(adj,n,d) 2 | if nargin == 1 3 | n = size(adj,2); 4 | end 5 | 6 | % lambda = eig(adj); 7 | % lambda2 = max( abs(lambda(1)),abs(lambda(n-1)) ); 8 | % lambda1 = lambda(n); 9 | lambda = sort(abs(eig(adj))); 10 | lambda1 = lambda(n); 11 | lambda2 = lambda(n-1); 12 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/get_spectral_gap_eigs.m: -------------------------------------------------------------------------------- 1 | function [lambda1,lambda2] = get_spectral_gap_eigs(adj,n,d) 2 | lambda = eigs((1/d)*adj); 3 | lambda2 = abs(lambda(2)); %max( abs(lambda(1)),abs(lambda(n-1)) ); 4 | lambda1 = lambda(1); 5 | end 6 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/has_path.m: -------------------------------------------------------------------------------- 1 | function res = has_path(A,u,target,n) 2 | if u == target, res=1;return;end 3 | if nargin < 4 4 | n = size(A,2); 5 | end 6 | d=-1*ones(n,1); 7 | res = 0; 8 | sq=zeros(n,1); sqt=0; sqh=0; % search queue and search queue tail/head 9 | 10 | % start bfs at u 11 | sqt=sqt+1; sq(sqt)=u; 12 | t=0; 13 | d(u)=0; t=t+1; 14 | while sqt-sqh>0 15 | sqh=sqh+1; v=sq(sqh); % pop v off the head of the queue 16 | neighbors = find(A(v,:)); 17 | for w=neighbors 18 | if d(w)<0 19 | sqt=sqt+1; sq(sqt)=w; 20 | d(w)=d(v)+1; t=t+1; 21 | if w==target 22 | res = 1; 23 | return 24 | end 25 | end 26 | end 27 | end 28 | end -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/is_connected.m: -------------------------------------------------------------------------------- 1 | function connected = is_connected( adj , n) 2 | % setting n as optional param (for legacy code) 3 | if nargin < 2 4 | n = size(adj,2); 5 | end 6 | total = n*(n-1)/2; 7 | res = zeros([total 1]); 8 | count = 1; 9 | for i=1:n 10 | for j=i+1:n 11 | res(count) = has_path(adj,i,j,n); 12 | count = count + 1; 13 | end 14 | end 15 | count = count -1; 16 | connected = count == sum(res); 17 | end 18 | 19 | -------------------------------------------------------------------------------- /aifo_simulation/java-code/xpander_generation/lib/is_expander.m: -------------------------------------------------------------------------------- 1 | function [ res,l,rama ] = is_expander( mat, d ) 2 | rama = 2*sqrt(d-1); 3 | lambda = sort(abs(eig(mat))); 4 | res = lambda(length(lambda)-1)" 23 | - `-r12`: specify the receiver ip (id): "10.1.0.<12>" 24 | - `-s3000`: maximum sending rate 25 | - `-p9000`: Destination port 26 | - `-T50`: Time to run 27 | 28 | -------------------------------------------------------------------------------- /aifo_testbed/host_code/incast_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 | -------------------------------------------------------------------------------- /aifo_testbed/host_code/incast_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 | -------------------------------------------------------------------------------- /aifo_testbed/logs/.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 | -------------------------------------------------------------------------------- /aifo_testbed/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 -------------------------------------------------------------------------------- /aifo_testbed/simple_switch/p4src/simpleswitch_actions.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_testbed/simple_switch/p4src/simpleswitch_actions.p4 -------------------------------------------------------------------------------- /aifo_testbed/simple_switch/p4src/simpleswitch_blackboxs.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_testbed/simple_switch/p4src/simpleswitch_blackboxs.p4 -------------------------------------------------------------------------------- /aifo_testbed/simple_switch/p4src/simpleswitch_tables.p4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/aifo_testbed/simple_switch/p4src/simpleswitch_tables.p4 -------------------------------------------------------------------------------- /doc/aifo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netx-repo/AIFO/ccd5d0a3f44f880c447662109046107d8786cc77/doc/aifo.jpg -------------------------------------------------------------------------------- /figs/.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 | --------------------------------------------------------------------------------