def generateThreeLayer(k): # initialize essential parameters num_ports_per_switch = k # number of ports per switch num_pod = k # number of pods num_servers = int(k/2) # number of hosts under a ToR switch num_tor = int(k/2) # number of ToR switches in a pod num_agg = int(k/2) # number of aggregation switches in a pod num_core = int((k**2)/4) # number of core switches total_servers = int((k**3)/4) # number of total servers # initialize component generation num_racks = num_pod * num_tor list_of_racks = [] cpu_cores = 16 for i in range(num_racks): rack = Rack(str(i)) for j in range(num_servers): server = Server(i*(num_servers)+j,"server"+str(i)+"-"+str(j), cpu_cores) rack.accumulate(server) list_of_racks.append(rack) list_of_tors = [] for i in range(num_tor * num_pod): tor = Switch("ToR"+str(i), "ToR", k) list_of_tors.append(tor) list_of_agg= [] for i in range(num_agg * num_pod): agg = Switch("Agg"+ str(i), "Agg", k) list_of_agg.append(agg) list_of_core = [] for i in range(num_core): core = Switch("Core"+str(i), "Core", k) list_of_core.append(core) list_of_links = [] num_links = int(3 * (k**3) / 4) capacity = 1024 # Mbits delay = 1 # ms for i in range(num_links): link = Link("link"+str(i), capacity, delay) list_of_links.append(link) return list_of_racks, list_of_tors, list_of_agg, list_of_core, list_of_links
def generateTwoLayer(num_of_servers, num_of_racks, num_of_core): list_of_racks = [] cpu_cores = 1 total_ram = 1.0 total_storage = 1.0 for i in range(num_of_racks): rack = Rack(str(i)) for j in range(num_of_servers): server = Server(i*(num_of_servers)+j,"server"+str(i)+"-"+str(j), cpu_cores, total_ram, total_storage) server.tor = "ToR"+str(i) rack.accumulate(server) list_of_racks.append(rack) list_of_tors = [] for i in range(num_of_racks): tor = Switch("ToR"+str(i), "ToR", num_of_servers+num_of_core) list_of_tors.append(tor) list_of_core = [] for i in range(num_of_core): core = Switch("Core"+str(i), "Core", num_of_racks) list_of_core.append(core) list_of_links = [] num_of_tor_links = int(num_of_servers*num_of_racks) capacity_tor = 1000 # Mbits num_of_other_links = int(num_of_racks*num_of_core) capacity_other = 10000 # Mbits delay = 90 for i in range(num_of_tor_links): link = Link("link"+str(i), capacity_tor, delay) list_of_links.append(link) for i in range(num_of_other_links): link = Link("link"+str(num_of_tor_links+i), capacity_other, delay) list_of_links.append(link) return list_of_racks, list_of_tors, list_of_core, list_of_links