This is a Event-based Simulator for Cloud Resource Allocation Problem we researched in this Paper: Service Function Chain Embedding in Centralized and Distributed Data Centers – a Comparison
This Simulator is developed in Python Programming Language, using these Libraries:
- networkx
- simpy
- matplotlib
- numpy
Require Python version >= 3.6
Simulator: Control simulator operations, schedule processing of SFCs, log activities, initialize other components of the simulationLogger: Logging output to fileSubstrate: Represents each Substrate Topology (Big Topo), storing the structure of the Substrate and the structure of the DC. Specific Substrates are implemented as Realizations of this classIngress: Represents Ingress nodes, having the function of generating SFC according to a given distributionApplication: Definition of the structure and parameters of the SFCDistribution: generate the interval between 2 SFCs according to the distribution installed as Realizations of this classSelector: contains the algorithm to put the SFC on the server, the algorithms are implemented as Realizations of this classSubstrateSelector: contains the DC selection algorithm to set the SFC, the algorithms are implemented as Realizations of this classDataCentre: represents each DC, consider whether the SFC can be put in, clear the SFC after the SFC TTL timeout
-
To add your Substrate Topology, create a new class that inherits the Substrate class in
Substrate.pywith corresponding methods. Resource specification (capacity of bandwidth) is created in substrate_topo method -
By default, Servers and Switches in each Datacentre is organized like Fat-tree Topology. To custom this, edit DC_topo method in in your Substrate class
-
To add your Distribution, create a new class that inherits the Distribution class in
Distribution.pywith corresponding methods. -
Custom Algorithm for placing SFC is implemented as an instance of Selector class
