diff --git a/Test.py b/Test.py deleted file mode 100644 index f8b2dcc..0000000 --- a/Test.py +++ /dev/null @@ -1,156 +0,0 @@ -from mininet.net import Mininet -from mininet.link import TCLink -from mininet.topo import Topo -from mininet.node import Node -from mininet.cli import CLI -from mininet.log import setLogLevel -import subprocess -import multiprocessing - -# -# for j in {1..20}; do echo "Test for runtest$j"; for i in {1..20}; do awk 'c&&!--c;/steffe'$i'/{c=7}' runtest$j|awk -F " " '{s+=$8}; END {printf "%d\n",s/100}' ;done; done -# - -class MyRouter (Node): - def config(self, **params): - super(MyRouter, self).config(**params) - self.cmd('sysctl net.ipv4.ip_forward=1') #Enable forwarding on the router - def terminate(self): - self.cmd('sysctl net.ipv4.ip_forward=0') #Disable forwarding on the router - super(MyRouter, self).terminate - -def run_command(host, command): - # print("Sto per eseguire: "+command) - output = host.cmd(command) - # with open('runtestTraffic1', 'a') as file:############################## - # file.write(output) - # file.write(output + '************************************************************\n************************************************************\n') - -def build_topology(config_file): - topo = Topo() - elements = {} # Dictionary to store nodes - - with open(config_file, 'r') as file: - for line in file: - line = line.strip() - if line.startswith('#'): #Skip comment - continue - parts = line.split(" ") #Parse the topology file using spaces - if parts[0] == 'N_host': #Parse hosts - host_name = parts[1] - elements[host_name] = topo.addHost(host_name) - - elif parts[0] == 'N_router': #Parse routers - router_name = parts[1] - elements[router_name] = topo.addNode(router_name) - - elif parts[0] == 'N_switch': #Parse switches - switch_name = parts[1] - elements[switch_name] = topo.addSwitch(switch_name) - - elif parts[0] == 'NN_link': #Parse general links nodes to nodes - node1 = parts[1] - node2 = parts[2] - topo.addLink(elements.get(node1), elements.get(node2)) - - elif parts[0] == 'SN_link': #Parse general links switches to nodes - switch = parts[1] - node = parts[2] - bandwidth = int(parts[3]) - topo.addLink(elements.get(switch), elements.get(node), bw=bandwidth) - - if parts[0] == 'host': #Parse hosts - host_name = parts[1] - host_ip = parts[2] - host_nexthop = 'via ' + parts[3] - elements[host_name] = topo.addHost(host_name, ip=host_ip, defaultRoute=host_nexthop) - - elif parts[0] == 'router': #Parse routers - router_name = parts[1] - router_ip = parts[2] - elements[router_name] = topo.addNode(router_name, cls=MyRouter, ip=router_ip) - - elif parts[0] == 'linkRR': #Parse links routers to routers - router1 = parts[1] - router1_intfName = parts[2] - router1_intfIP = parts[3] - router2 = parts[4] - router2_intfName = parts[5] - router2_intfIP = parts[6] - topo.addLink(elements.get(router1), elements.get(router2), intfName1=router1_intfName, intfName2=router2_intfName, params1={'ip' : router1_intfIP}, params2={'ip' : router2_intfIP}) - - elif parts[0] == 'linkRH': #Parse links routers to hosts - host = parts[1] - host_intfName = parts[2] - router = parts[3] - router_intfName = parts[4] - router_intfIP = parts[5] - topo.addLink(elements.get(host), elements.get(router), intfName1=host_intfName, intfName2=router_intfName, params2={'ip' : router_intfIP}) - - elif parts[0] == 'linkRS': #Parse links routers to switches - switch = parts[1] - router = parts[2] - router_intfName = parts[3] - router_intfIP = parts[4] - topo.addLink(elements.get(switch), elements.get(router), intfName2=router_intfName, params2={'ip' : router_intfIP}) - - elif parts[0] == 'linkSS': #Parse links switches to switches - switch1 = parts[1] - switch2 = parts[2] - topo.addLink(elements.get(switch1), elements.get(switch2)) - - elif parts[0] == 'linkSH': #Parse links switches to hosts - switch = parts[1] - host = parts[2] - host_intfName = parts[3] - topo.addLink(elements.get(switch), elements.get(host), intfName2=host_intfName) - - return topo - -def run_topology(config_file): - setLogLevel('info') #Different logging levels are 'info' 'warning' 'error' 'debug' - topo = build_topology(config_file) - net = Mininet(topo=topo, link=TCLink) - net.start() #Starting the network - with open(config_file, 'r') as file: #Search in the configuration file for routing table - for line in file: - line = line.strip() - if line.startswith('#'): #Skip comment - continue - parts = line.split(" ") - if parts[0] == 'route': #Parse routing tables - name = parts[1] - pck_src = parts[2] - pck_nexthop = parts[3] - interf = parts[4] - cmd = 'ip route add ' + pck_src + ' via ' + pck_nexthop + ' dev ' + interf - (net.getNodeByName(name)).cmd(cmd) - - print("QUI PRIMA") - - (net.getNodeByName("steffe0")).cmd("iperf -s -P 2000 &") - (net.getNodeByName("steffe1")).cmd("iperf -s -P 2000 &") - (net.getNodeByName("steffe2")).cmd("iperf -s -P 2000 &") - # (net.getNodeByName("steffe0")).cmd("rm -f esito.out") - # (net.getNodeByName("steffe0")).cmd("iperf -P 100 -s > /dev/null &")############################## - # hosts = ["steffe1","steffe2","steffe3","steffe4","steffe5","steffe6","steffe7","steffe8","steffe9","steffe10","steffe11","steffe12","steffe13","steffe14","steffe15","steffe16","steffe17","steffe18","steffe19","steffe20"] # Esempio############################## - - # for i in range(0,100): - # print(i) - # processes = [] - # for host in hosts: - # command = 'echo -n "Runned on "; date; echo '+host+'; iperf -c 10.0.0.1 -t 5' # Esempio di comando (ping) - # p = multiprocessing.Process(target=run_command, args=(net.getNodeByName(host), command)) - # p.start() - # processes.append(p) - - # # Attende il completamento di tutti i processi - # for p in processes: - # p.join() - print("QUI DOPO") - - CLI(net) - net.stop() #Stopping the network - -if __name__ == '__main__': - run_topology('SteffeCluster.conf') diff --git a/docs/MininetConf/dataset.zip b/docs/MininetConf/dataset.zip index c48623a..64a4c8f 100644 Binary files a/docs/MininetConf/dataset.zip and b/docs/MininetConf/dataset.zip differ diff --git a/docs/MininetConf/researchReport.pdf b/docs/MininetConf/researchReport.pdf index e69de29..6d1c781 100644 Binary files a/docs/MininetConf/researchReport.pdf and b/docs/MininetConf/researchReport.pdf differ