def main(): # parameters Sim.scheduler.reset() Sim.set_debug("Node") # setup network net = Network("test2network.txt") for hostname, node in sorted(net.nodes.iteritems()): node.add_protocol(protocol="dvrouting", handler=RoutingApp(node)) n3 = net.get_node("n3") n3.add_protocol(protocol="delay", handler=DelayHandler()) p = Packet(destination_address=n3.get_address("n2"), ident=1, protocol="delay", length=1000) n2 = net.get_node("n2") Sim.scheduler.add(delay=1.2, event=p, handler=n2.send_packet) Sim.scheduler.add(delay=1.6, event=None, handler=n2.get_link("n3").down) Sim.scheduler.add(delay=1.6, event=None, handler=n3.get_link("n2").down) p = Packet(destination_address=n3.get_address("n2"), ident=2, protocol="delay", length=1000) Sim.scheduler.add(delay=6.6, event=p, handler=n2.send_packet) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network net = Network('../networks/one-hop.txt') # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = StopAndWait(t1,n1.get_address('n2'),1,n2.get_address('n1'),1,a) c2 = StopAndWait(t2,n2.get_address('n1'),1,n1.get_address('n2'),1,a) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run()
def main(): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network net = Network('../networks/five-nodes.txt') # get nodes n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') n5 = net.get_node('n5') # setup broadcast application b1 = BroadcastApp(n1) n1.add_protocol(protocol="broadcast", handler=b1) b2 = BroadcastApp(n2) n2.add_protocol(protocol="broadcast", handler=b2) b3 = BroadcastApp(n3) n3.add_protocol(protocol="broadcast", handler=b3) b4 = BroadcastApp(n4) n4.add_protocol(protocol="broadcast", handler=b4) b5 = BroadcastApp(n5) n5.add_protocol(protocol="broadcast", handler=b5) # send a broadcast packet from 1 with TTL 2, so everyone should get it p = Packet(source_address=n1.get_address('n2'), destination_address=0, ident=1, ttl=2, protocol='broadcast', length=100) Sim.scheduler.add(delay=0, event=p, handler=n1.send_packet) # send a broadcast packet from 1 with TTL 1, so just nodes 2 and 3 # should get it p = Packet(source_address=n1.get_address('n2'), destination_address=0, ident=2, ttl=1, protocol='broadcast', length=100) print("this is an address of n2", n1.get_address('n3')) Sim.scheduler.add(delay=1, event=p, handler=n1.send_packet) # send a broadcast packet from 3 with TTL 1, so just nodes 1, 4, and 5 # should get it p = Packet(source_address=n3.get_address('n1'), destination_address=0, ident=3, ttl=1, protocol='broadcast', length=100) Sim.scheduler.add(delay=2, event=p, handler=n3.send_packet) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network n1 = Node() n2 = Node() l = Link(address=1,startpoint=n1,endpoint=n2,queue_size=self.queue_size,bandwidth=10000000,propagation=0.01,loss=self.loss, printOut=True) n1.add_link(l) n1.add_forwarding_entry(address=2,link=l) l = Link(address=2,startpoint=n2,endpoint=n1,queue_size=self.queue_size,bandwidth=10000000,propagation=0.01,loss=self.loss) n2.add_link(l) n2.add_forwarding_entry(address=1,link=l) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler("2_1-" + self.filename) # setup connection c1 = My_RTP(t1,1,1,2,1,a) c2 = My_RTP(t2,2,1,1,1,a) # setup application a = AppHandler("2_2-" + self.filename) # setup connection c3 = My_RTP(t1,1,2,2,2,a) c4 = My_RTP(t2,2,2,1,2,a) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break c1.load_buffer(data) c3.load_buffer(data) c1.set_file_prefix("2_1") c2.set_file_prefix("2_1") c3.set_file_prefix("2_2") c4.set_file_prefix("2_2") c1.open_window_file() c3.open_window_file() Sim.scheduler.add(delay=0, event="window_init", handler=c1.window_init) Sim.scheduler.add(delay=0, event="window_init", handler=c3.window_init) # run the simulation Sim.scheduler.run() n1.links[0].myfile.close() c1.close_window_file() c3.close_window_file() Sim.close_rate_file()
def main(): # parameters Sim.scheduler.reset() Sim.set_debug("Node") # setup network net = Network("test3network.txt") for hostname, node in sorted(net.nodes.iteritems()): node.add_protocol(protocol="dvrouting", handler=RoutingApp(node)) n7 = net.get_node("n7") n7.add_protocol(protocol="delay", handler=DelayHandler()) n10 = net.get_node("n10") n10.add_protocol(protocol="delay", handler=DelayHandler()) n15 = net.get_node("n15") n15.add_protocol(protocol="delay", handler=DelayHandler()) n8 = net.get_node("n8") n11 = net.get_node("n11") n12 = net.get_node("n12") p1 = Packet(destination_address=n7.get_address("n6"), ident=1, protocol="delay", length=1000) Sim.scheduler.add(delay=4.2, event=p1, handler=n12.send_packet) p3 = Packet(destination_address=n15.get_address("n14"), ident=2, protocol="delay", length=1000) Sim.scheduler.add(delay=4.3, event=p3, handler=n11.send_packet) p2 = Packet(destination_address=n10.get_address("n1"), ident=3, protocol="delay", length=1000) Sim.scheduler.add(delay=4.4, event=p2, handler=n8.send_packet) n2 = net.get_node("n2") Sim.scheduler.add(delay=4.8, event=None, handler=n2.get_link("n8").down) Sim.scheduler.add(delay=4.8, event=None, handler=n8.get_link("n2").down) p4 = Packet(destination_address=n10.get_address("n1"), ident=4, protocol="delay", length=1000) Sim.scheduler.add(delay=10.4, event=p4, handler=n8.send_packet) Sim.scheduler.add(delay=10.8, event=None, handler=n2.get_link("n8").up) Sim.scheduler.add(delay=10.8, event=None, handler=n8.get_link("n2").up) p5 = Packet(destination_address=n10.get_address("n1"), ident=5, protocol="delay", length=1000) Sim.scheduler.add(delay=16.4, event=p5, handler=n8.send_packet) # run the simulation Sim.scheduler.run()
def run(self): drop_packets = [14000, 26000, 28000] Sim.set_debug('Plot') # setup network net = Network('basic.txt') # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) plotter = Plotter() for i in range(0, 4): application = AppHandler(self.filename) Sim.scheduler.reset() Sim.files = {} # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, application, fast_retransmit=True, drop=drop_packets[:i]) TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, application, fast_retransmit=True) # send a file with open(self.filename, 'rb') as f: while True: data = f.read() if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) Sim.scheduler.run() for filename, file in Sim.files.iteritems(): file.close() plotter.sequence("sequence" + str(i + 1) + ".png") plotter.cwnd("cwnd" + str(i + 1) + ".png") self.diff()
def run(self): # parameters Sim.scheduler.reset() if "a" in self.debug: Sim.set_debug('AppHandler') if "t" in self.debug: Sim.set_debug('TCP') # setup network networkPlotter = Plotter('out/2-flows-simple') net = Network(config='networks/one-hop.txt',plotter=networkPlotter) net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup connection c1 = TCP(t1,n1.get_address('n2'),1,n2.get_address('n1'),1,AppHandler(inputfile=self.inputfile,identifier="c1"),window=self.window,type=self.type,window_size_plot=True,sequence_plot=True) c2 = TCP(t2,n2.get_address('n1'),1,n1.get_address('n2'),1,AppHandler(inputfile=self.inputfile,plot=True,identifier="c2"),window=self.window,type=self.type,receiver_flow_plot=True) c3 = TCP(t1,n1.get_address('n2'),2,n2.get_address('n1'),2,AppHandler(inputfile=self.inputfile,identifier="c3"),window=self.window,type=self.type,window_size_plot=True,sequence_plot=True) c4 = TCP(t2,n2.get_address('n1'),2,n1.get_address('n2'),2,AppHandler(inputfile=self.inputfile,plot=True,identifier="c4"),window=self.window,type=self.type,receiver_flow_plot=True) global tcps tcps = [c1, c2, c3, c4] global original_size f = open(self.inputfile, "rb") try: data = f.read(1000) while data != "": original_size += len(data) Sim.scheduler.add(delay=0, event=data, handler=c1.send) Sim.scheduler.add(delay=0, event=data, handler=c3.send) data = f.read(1000) finally: f.close() # run the simulation global decisecondEvent decisecondEvent = Sim.scheduler.add(delay=0.1, event=Sim, handler=self.decisecond) Sim.scheduler.run() networkPlotter.plot(self.sequencefile) plotter.plot(self.sequencefile);
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # setup network net = Network('network.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a, window=self.window, fast_retransmit=self.fast_retransmit) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a, window=self.window, fast_retransmit=self.fast_retransmit) # send a file with open(self.filename, 'rb') as f: while True: data = f.read(10000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() if self.print_queueing_delay: print('average queueing delay: {}'.format( c2.total_queueing_delay / c2.total_packets_received))
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # Sim.set_debug('Link') # setup application a = AppHandler(self.filename, self.out_directory) # setup network net = Network('../networks/setup.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a, window=self.window) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a, window=self.window) # send a file with open(self.in_directory + '/' + self.filename, 'r') as f: while True: data = f.read(10000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() if "a" in self.debug: Sim.set_debug('AppHandler') if "t" in self.debug: Sim.set_debug('TCP') # setup network net = Network('networks/one-hop.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.inputfile) # setup connection c1 = TCP(t1,n1.get_address('n2'),1,n2.get_address('n1'),1,a,window=self.window,type=self.type) c2 = TCP(t2,n2.get_address('n1'),1,n1.get_address('n2'),1,a,window=self.window,type=self.type) global original_size f = open(self.inputfile, "rb") try: data = f.read(1000) while data != "": original_size += len(data) Sim.scheduler.add(delay=0, event=data, handler=c1.send) data = f.read(1000) finally: f.close() # run the simulation Sim.scheduler.run() plotter.plot(self.sequencefile);
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug(False) # setup network n1 = Node() n2 = Node() l = Link(address=1,startpoint=n1,endpoint=n2,loss=self.loss,bandwidth=100000000,propagation=0.01) if self.experiments: l = Link(address=1,startpoint=n1,endpoint=n2,loss=self.loss,bandwidth=100000000,propagation=0.01, queue_size=100) n1.add_link(l) n1.add_forwarding_entry(address=2,link=l) l = Link(address=2,startpoint=n2,endpoint=n1,loss=self.loss,bandwidth=100000000,propagation=0.01) if self.experiments: l = Link(address=2,startpoint=n2,endpoint=n1,loss=self.loss,bandwidth=100000000,propagation=0.01, queue_size=100) n2.add_link(l) n2.add_forwarding_entry(address=1,link=l) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = ReliableTransport(t1,1,1,2,1,self.window_size,a) c2 = ReliableTransport(t2,2,1,1,1,self.window_size,a) # send a file with open(self.filename,'r') as f: c1.stats.set_size(os.path.getsize(self.filename)) while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() print "Average queueing delay =", c1.stats.average() print "Throughput =", c1.stats.throughput(Sim.scheduler.current_time())
def exp3(): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network net = Network('../networks/l4e3.txt') # get nodes n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') n5 = net.get_node('n5') n6 = net.get_node('n6') n7 = net.get_node('n7') n8 = net.get_node('n8') n9 = net.get_node('n9') n10 = net.get_node('n10') n11 = net.get_node('n11') n12 = net.get_node('n12') n13 = net.get_node('n13') n14 = net.get_node('n14') n15 = net.get_node('n15') # setup broadcast application p_setup(n1) p_setup(n2) p_setup(n3) p_setup(n4) p_setup(n5) p_setup(n6) p_setup(n7) p_setup(n8) p_setup(n9) p_setup(n10) p_setup(n11) p_setup(n12) p_setup(n13) p_setup(n14) p_setup(n15) # run the simulation Sim.scheduler.run()
def run(self, fila, drop): self.filename = fila fast = True Sim.trace('Trans', "It is %s that I am using drop transmit." % (fast)) Sim.set_debug("Plot") # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') Sim.set_debug('Trans') # setup network net = Network('network.txt') # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a, drop) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a, drop) # send a file with open(self.filename, 'rb') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() self.diff() self.filename = None return Sim.scheduler.current_time()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # setup network net = Network('../networks/one-hop.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) # n1 -> n2 n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # n1 <- n2 # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application tcp_flows = 1 a1 = AppHandler(self.filename, 1) # setup connection c1a = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, 3000, a1) c2a = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, 3000, a1) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1a.send) # run the simulation Sim.scheduler.run() return tcp_flows
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network n1 = Node() n2 = Node() l = Link(address=1,startpoint=n1,endpoint=n2,loss=self.loss, bandwidth=10000000.0,propagation=0.01,queue_size=self.queue) n1.add_link(l) n1.add_forwarding_entry(address=2,link=l) l = Link(address=2,startpoint=n2,endpoint=n1,loss=self.loss, bandwidth=10000000.0,propagation=0.01,queue_size=self.queue) n2.add_link(l) n2.add_forwarding_entry(address=1,link=l) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1,1,1,2,1,app=a,window=self.window) c2 = TCP(t2,2,1,1,1,app=a,window=self.window) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() print "Total queuing delay: ", a.total_queuing_delay print "Total packets sent: ", a.total_packets_sent
def main(): # parameters Sim.scheduler.reset() Sim.set_debug("Node") # setup network net = Network("test1network.txt") for hostname, node in sorted(net.nodes.iteritems()): node.add_protocol(protocol="dvrouting", handler=RoutingApp(node)) n5 = net.get_node("n5") n5.add_protocol(protocol="delay", handler=DelayHandler()) p = Packet(destination_address=n5.get_address("n4"), ident=1, protocol="delay", length=1000) n1 = net.get_node("n1") Sim.scheduler.add(delay=3.2, event=p, handler=n1.send_packet) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network n1 = Node() n2 = Node() l = Link(address=1,startpoint=n1,endpoint=n2,queue_size=self.queue_size,bandwidth=10000000,propagation=0.01,loss=self.loss) n1.add_link(l) n1.add_forwarding_entry(address=2,link=l) l = Link(address=2,startpoint=n2,endpoint=n1,queue_size=self.queue_size,bandwidth=10000000,propagation=0.01,loss=self.loss) n2.add_link(l) n2.add_forwarding_entry(address=1,link=l) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = My_RTP(t1,1,1,2,1,a) c2 = My_RTP(t2,2,1,1,1,a) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break c1.load_buffer(data) c1.window_init(self.window_size) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') Sim.set_debug('Plot') # setup network net = Network('./networks/one-hop.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a, window=self.window, drop=self.drops) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a, window=self.window, drop=self.drops) # setup fast retransmit if self.fast_retransmit: c1.set_fast_retransmit_enabled(True) c2.set_fast_retransmit_enabled(True) # send a file with open(self.filename, 'rb') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # setup network net = Network('basic.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a, window=self.window, fast_retransmit=self.fast_retransmit) TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a, window=self.window, fast_retransmit=self.fast_retransmit) # send a file with open(self.filename, 'rb') as f: while True: data = f.read() if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network n1 = Node() n2 = Node() l = Link(address=1,startpoint=n1,endpoint=n2,loss=self.loss) n1.add_link(l) n1.add_forwarding_entry(address=2,link=l) l = Link(address=2,startpoint=n2,endpoint=n1,loss=self.loss) n2.add_link(l) n2.add_forwarding_entry(address=1,link=l) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = StopAndWait(t1,1,1,2,1,a) c2 = StopAndWait(t2,2,1,1,1,a) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') #Sim.set_debug('TCP') Sim.set_debug('Link') net = Network('networks/one-hop-queue.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) # send a file with open(self.filename, 'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput plotter = Plotter() #print "Saving the sequence plot" #plotter.create_sequence_plot(c1.x, c1.y, c1.dropX, c1.dropY, c1.ackX, c1.ackY) self.c2 = c2 self.c1 = c1 self.t1 = t1 self.t2 = t2 self.net = net plotter.rateTimePlot(c2.packets_received, Sim.scheduler.current_time(), 'one/rateTime.png')
import random from dvrouting import DVRoutingApp class HandleDataApp(object): def __init__(self,node): self.node = node def receive_packet(self,packet): print Sim.scheduler.current_time(),self.node.hostname,"received data" if __name__ == '__main__': # parameters Sim.scheduler.reset() Sim.set_debug(True) Sim.set_debug('Nodedata') # setup network net = Network('networks/five-nodes-ring.txt') # get nodes n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') n5 = net.get_node('n5') # setup handling data for node 5 n1.add_protocol(protocol="data",handler=HandleDataApp(n1)) n2.add_protocol(protocol="data",handler=HandleDataApp(n2))
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # setup network # net = Network('../networks/one-hop.txt') net = Network('../networks/four-nodes.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) # n1 -> n2 n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # n1 <- n2 n2.add_forwarding_entry(address=n3.get_address('n2'),link=n2.links[1]) # n2 -> n3 n3.add_forwarding_entry(address=n2.get_address('n3'),link=n3.links[0]) # n2 <- n3 n2.add_forwarding_entry(address=n4.get_address('n2'),link=n2.links[2]) # n2 -> n4 n4.add_forwarding_entry(address=n2.get_address('n4'),link=n4.links[0]) # n2 <- n4 n1.add_forwarding_entry(address=n4.get_address('n2'),link=n1.links[0]) # n1 -> n2 -> n4 n3.add_forwarding_entry(address=n4.get_address('n2'),link=n3.links[0]) # n3 -> n2 -> n4 n4.add_forwarding_entry(address=n1.get_address('n2'),link=n4.links[0]) # n4 -> n2 -> n1 n4.add_forwarding_entry(address=n3.get_address('n2'),link=n4.links[0]) # n4 -> n2 -> n1 # setup transport t1 = Transport(n1) t3 = Transport(n3) t4 = Transport(n4) # setup application tcp_flows = 2 a1 = AppHandler(self.filename,1) a2 = AppHandler(self.filename,2) # a3 = AppHandler(self.filename, 3) # a4 = AppHandler(self.filename, 4) # a5 = AppHandler(self.filename, 5) # setup connection # c1a = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a1) # c2a = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a1) ### 4-node configuration c1a = TCP(t1, n1.get_address('n2'), 1, n4.get_address('n2'), 1, a1) c2a = TCP(t4, n4.get_address('n2'), 1, n1.get_address('n2'), 1, a1) c1b = TCP(t3, n3.get_address('n2'), 2, n4.get_address('n2'), 2, a2) c2b = TCP(t4, n4.get_address('n2'), 2, n3.get_address('n2'), 2, a2) # c1b = TCP(t1, n1.get_address('n2'), 2, n2.get_address('n1'), 2, a2) # c2b = TCP(t2, n2.get_address('n1'), 2, n1.get_address('n2'), 2, a2) # c1c = TCP(t1, n1.get_address('n2'), 3, n2.get_address('n1'), 3, a3) # c2c = TCP(t2, n2.get_address('n1'), 3, n1.get_address('n2'), 3, a3) # # c1d = TCP(t1, n1.get_address('n2'), 4, n2.get_address('n1'), 4, a4) # c2d = TCP(t2, n2.get_address('n1'), 4, n1.get_address('n2'), 4, a4) # # c1e = TCP(t1, n1.get_address('n2'), 5, n2.get_address('n1'), 5, a5) # c2e = TCP(t2, n2.get_address('n1'), 5, n1.get_address('n2'), 5, a5) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1a.send) Sim.scheduler.add(delay=0, event=data, handler=c1b.send) # Sim.scheduler.add(delay=0, event=data, handler=c1a.send) # Sim.scheduler.add(delay=0.1, event=data, handler=c1b.send) # Sim.scheduler.add(delay=0.2, event=data, handler=c1c.send) # Sim.scheduler.add(delay=0.3, event=data, handler=c1d.send) # Sim.scheduler.add(delay=0.4, event=data, handler=c1e.send) # run the simulation Sim.scheduler.run() return tcp_flows
def run(self): # parameters Sim.scheduler.reset() #Sim.set_debug('AppHandler') #Sim.set_debug('TCP') Sim.set_debug('Link') net = Network('networks/competing.txt') net.loss(self.loss) # setup routes # n1 - n3 - n4 # | # n2 n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') # n1 forwarding entries n1.add_forwarding_entry(address=n3.get_address('n1'),link=n1.links[0]) n1.add_forwarding_entry(address=n4.get_address('n3'),link=n1.links[0]) # n2 forwarding entries n2.add_forwarding_entry(address=n3.get_address('n2'),link=n2.links[0]) n2.add_forwarding_entry(address=n4.get_address('n3'),link=n2.links[0]) # n3 forwarding entries n3.add_forwarding_entry(address=n1.get_address('n3'),link=n3.links[0]) n3.add_forwarding_entry(address=n2.get_address('n3'),link=n3.links[1]) n3.add_forwarding_entry(address=n4.get_address('n3'),link=n3.links[2]) # n4 forwarding entries n4.add_forwarding_entry(address=n1.get_address('n3'),link=n4.links[0]) n4.add_forwarding_entry(address=n2.get_address('n3'),link=n4.links[0]) n4.add_forwarding_entry(address=n3.get_address('n4'),link=n4.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) t4 = Transport(n4) # setup application a1 = AppHandler('test1.txt') a2 = AppHandler('test2.txt') # setup connection c1 = TCP(t1,n1.get_address('n3'),1,n4.get_address('n3'),1,a1,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c2 = TCP(t4,n4.get_address('n3'),1,n1.get_address('n3'),1,a1,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c3 = TCP(t2,n2.get_address('n3'),2,n4.get_address('n3'),2,a2,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c4 = TCP(t4,n4.get_address('n3'),2,n2.get_address('n3'),2,a2,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) # send a file with open('test1.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) with open('test2.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c3.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput # Variables for debugging self.c3 = c3 self.c4 = c4 self.c2 = c2 self.c1 = c1 self.t1 = t1 self.t2 = t2 self.net = net linkab = n1.links[0] self.linkab = linkab l = linkab # Plotting plotter = Plotter() # Plot sequence charts plotter.clear() plotter.create_sequence_plot(c1.x, c1.y, c1.dropX, c1.dropY, c1.ackX, c1.ackY, chart_name='advanced/competingRtt/sequence1.png') plotter.clear() plotter.create_sequence_plot(c3.x, c3.y, c3.dropX, c3.dropY, c3.ackX, c3.ackY, chart_name='advanced/competingRtt/sequence2.png') # Plot receiver rate plotter.clear() plotter.rateTimePlot(c2.packets_received, Sim.scheduler.current_time(), chart_name=None) plotter.rateTimePlot(c4.packets_received, Sim.scheduler.current_time(), chart_name='advanced/competingRtt/rateTime.png') # Plot queue size plotter.clear() plotter.queueSizePlot(l.queue_log_x, l.queue_log_y, l.dropped_packets_x, l.dropped_packets_y, chart_name='advanced/competingRtt/queueSize.png') # Plot congestion window plotter.clear() plotter.windowSizePlot(c1.window_x, c1.window_y, chart_name="advanced/competingRtt/windowSize1.png") plotter.clear() plotter.windowSizePlot(c3.window_x, c3.window_y, chart_name="advanced/competingRtt/windowSize2.png")
def run(self): # parameters Sim.scheduler.reset() if "a" in self.debug: Sim.set_debug("AppHandler") if "t" in self.debug: Sim.set_debug("TCP") # setup network networkPlotter = Plotter("out/1-flow-advanced-aimd") net = Network(config="networks/one-hop.txt", plotter=networkPlotter) net.loss(self.loss) # setup routes n1 = net.get_node("n1") n2 = net.get_node("n2") n1.add_forwarding_entry(address=n2.get_address("n1"), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address("n2"), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) c1 = TCP( t1, n1.get_address("n2"), 1, n2.get_address("n1"), 1, AppHandler(inputfile=self.inputfile, plot=True), window=self.window, type=self.type, receiver_flow_plot=True, ) c2 = TCP( t2, n2.get_address("n1"), 1, n1.get_address("n2"), 1, AppHandler(inputfile=self.inputfile), window=self.window, type=self.type, window_size_plot=True, sequence_plot=True, ) global tcps tcps = [c1, c2] global original_size f = open(self.inputfile, "rb") try: data = f.read(1000) while data != "": original_size += len(data) Sim.scheduler.add(delay=0, event=data, handler=c1.send) Sim.scheduler.add(delay=0, event=data, handler=c2.send) data = f.read(1000) finally: f.close() # run the simulation global decisecondEvent decisecondEvent = Sim.scheduler.add(delay=0.1, event=Sim, handler=self.decisecond) Sim.scheduler.run() networkPlotter.plot(self.sequencefile) plotter.plot(self.sequencefile)
def exp1(): # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network net = Network('../networks/l4e1.txt') # get nodes n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') n5 = net.get_node('n5') # setup broadcast application p_setup(n1) p_setup(n2) p_setup(n3) p_setup(n4) p_setup(n5) #send to every node from n1 p = Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n1.send_packet) p = Packet(destination_address=n3.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n1.send_packet) p = Packet(destination_address=n4.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n1.send_packet) p = Packet(destination_address=n5.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n1.send_packet) #send to every node from n2 p = Packet(destination_address=n1.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n2.send_packet) p = Packet(destination_address=n5.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n2.send_packet) p = Packet(destination_address=n3.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n2.send_packet) p = Packet(destination_address=n4.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n2.send_packet) #send to every node from n3 p = Packet(destination_address=n1.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n3.send_packet) p = Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n3.send_packet) p = Packet(destination_address=n4.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n3.send_packet) p = Packet(destination_address=n5.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n3.send_packet) #send to every node from n4 p = Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n4.send_packet) p = Packet(destination_address=n1.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n4.send_packet) p = Packet(destination_address=n3.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n4.send_packet) p = Packet(destination_address=n5.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n4.send_packet) #send to every node from n5 p = Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n5.send_packet) p = Packet(destination_address=n3.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n5.send_packet) p = Packet(destination_address=n4.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n5.send_packet) p = Packet(destination_address=n1.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=5, event=p, handler=n5.send_packet) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() #Sim.set_debug('AppHandler') #Sim.set_debug('TCP') Sim.set_debug('Link') net = Network('networks/one.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a1 = AppHandler('test.txt') # setup connection c1 = TCP(t1,n1.get_address('n2'),1,n2.get_address('n1'),1,a1,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery,aiad=True) c2 = TCP(t2,n2.get_address('n1'),1,n1.get_address('n2'),1,a1,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery,aiad=True) # send a file with open('test.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput plotter = Plotter() print "Saving the sequence plot" plotter.create_sequence_plot(c1.x, c1.y, c1.dropX, c1.dropY, c1.ackX, c1.ackY, chart_name='advanced/aiad/sequence.png') plotter.clear() plotter.rateTimePlot(c2.packets_received, Sim.scheduler.current_time(), 'advanced/aiad/rateTime1.png') linkab = n1.links[0] self.linkab = linkab plotter.clear() plotter.queueSizePlot(linkab.queue_log_x, linkab.queue_log_y, linkab.dropped_packets_x, linkab.dropped_packets_y, chart_name='advanced/aiad/queueSize.png') plotter.clear() plotter.windowSizePlot(c1.window_x, c1.window_y, chart_name="advanced/aiad/windowSize1.png")
import random class BroadcastApp(object): def __init__(self, node): self.node = node def receive_packet(self, packet): print Sim.scheduler.current_time(), self.node.hostname, packet.ident if __name__ == '__main__': # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network net = Network('networks/five-nodes.txt') # get nodes n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') n5 = net.get_node('n5') # setup broadcast application b1 = BroadcastApp(n1) n1.add_protocol(protocol="broadcast", handler=b1) b2 = BroadcastApp(n2)
self.node = node def receive_packet(self,packet): print Sim.scheduler.current_time(),self.node.hostname,packet.ident class DelayHandler(object): def __init__(self, node): self.node = node def receive_packet(self,packet): print Sim.scheduler.current_time(),packet.ident,packet.created,Sim.scheduler.current_time() - packet.created,packet.transmission_delay,packet.propagation_delay,packet.queueing_delay, self.node.hostname if __name__ == '__main__': # parameters Sim.scheduler.reset() Sim.set_debug(True) # setup network net = Network('../networks/five-nodes-line.txt') # get nodes n1 = net.get_node('n1') n2 = net.get_node('n2') n3 = net.get_node('n3') n4 = net.get_node('n4') n5 = net.get_node('n5') # setup broadcast application b1 = BroadcastApp(n1) n1.add_protocol(protocol="broadcast",handler=b1) b2 = BroadcastApp(n2)
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # setup network if self.use_queue: net = Network('networks/one-hop-queue.txt') else: net = Network('networks/one-hop.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) # send a file with open(self.filename, 'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput print "%i,%f,%f,%f,%i,%f\n" % (self.window, time, avg, max, file_size, throughput) if self.loss == 0.0: print "Outputing results to experiment.csv" output_fh = open('experiment.csv', 'a') output_fh.write( "%i,%f,%f,%f,%i,%f\n" % (self.window, time, avg, max, file_size, throughput)) output_fh.close() print "Saving the sequence plot" self.create_sequence_plot(c1.x, c1.y, c1.dropX, c1.dropY, c1.ackX, c1.ackY)
def run(self): # parameters Sim.scheduler.reset() #Sim.set_debug('AppHandler') #Sim.set_debug('TCP') Sim.set_debug('Link') net = Network('networks/two.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a1 = AppHandler('test1.txt') a2 = AppHandler('test2.txt') # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a1, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a1, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) c3 = TCP(t1, n1.get_address('n2'), 2, n2.get_address('n1'), 2, a2, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) c4 = TCP(t2, n2.get_address('n1'), 2, n1.get_address('n2'), 2, a2, window=self.window, threshold=self.threshold, fast_recovery=self.fast_recovery) # send a file with open('test1.txt', 'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) with open('test2.txt', 'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c3.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput # Variables for debugging self.c3 = c3 self.c4 = c4 self.c2 = c2 self.c1 = c1 self.t1 = t1 self.t2 = t2 self.net = net linkab = n1.links[0] self.linkab = linkab l = linkab # Plotting plotter = Plotter() # Plot sequence charts plotter.clear() plotter.create_sequence_plot(c1.x, c1.y, c1.dropX, c1.dropY, c1.ackX, c1.ackY, chart_name='two/sequence1.png') plotter.clear() plotter.create_sequence_plot(c3.x, c3.y, c3.dropX, c3.dropY, c3.ackX, c3.ackY, chart_name='two/sequence2.png') # Plot receiver rate plotter.clear() plotter.rateTimePlot(c2.packets_received, Sim.scheduler.current_time(), chart_name=None) plotter.rateTimePlot(c4.packets_received, Sim.scheduler.current_time(), chart_name='two/rateTime.png') # Plot queue size plotter.clear() plotter.queueSizePlot(l.queue_log_x, l.queue_log_y, l.dropped_packets_x, l.dropped_packets_y, chart_name='two/queueSize.png') # Plot congestion window plotter.clear() plotter.windowSizePlot(c1.window_x, c1.window_y, chart_name="two/windowSize1.png") plotter.clear() plotter.windowSizePlot(c3.window_x, c3.window_y, chart_name="two/windowSize2.png")
def run(self): # parameters Sim.scheduler.reset() if "a" in self.debug: Sim.set_debug("AppHandler") if "t" in self.debug: Sim.set_debug("TCP") # setup network networkPlotter = Plotter("out/5-flows-simple") net = Network(config="networks/one-hop.txt", plotter=networkPlotter) net.loss(self.loss) # setup routes n1 = net.get_node("n1") n2 = net.get_node("n2") n1.add_forwarding_entry(address=n2.get_address("n1"), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address("n2"), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup connection c1 = TCP( t1, n1.get_address("n2"), 1, n2.get_address("n1"), 1, AppHandler(inputfile=self.inputfile, identifier="c1"), window=self.window, type=self.type, ) c2 = TCP( t2, n2.get_address("n1"), 1, n1.get_address("n2"), 1, AppHandler(inputfile=self.inputfile, plot=True, identifier="c2"), window=self.window, type=self.type, receiver_flow_plot=True, ) c3 = TCP( t1, n1.get_address("n2"), 2, n2.get_address("n1"), 2, AppHandler(inputfile=self.inputfile, identifier="c3"), window=self.window, type=self.type, ) c4 = TCP( t2, n2.get_address("n1"), 2, n1.get_address("n2"), 2, AppHandler(inputfile=self.inputfile, plot=True, identifier="c4"), window=self.window, type=self.type, receiver_flow_plot=True, ) c5 = TCP( t1, n1.get_address("n2"), 3, n2.get_address("n1"), 3, AppHandler(inputfile=self.inputfile, identifier="c5"), window=self.window, type=self.type, ) c6 = TCP( t2, n2.get_address("n1"), 3, n1.get_address("n2"), 3, AppHandler(inputfile=self.inputfile, plot=True, identifier="c6"), window=self.window, type=self.type, receiver_flow_plot=True, ) c7 = TCP( t1, n1.get_address("n2"), 4, n2.get_address("n1"), 4, AppHandler(inputfile=self.inputfile, identifier="c7"), window=self.window, type=self.type, ) c8 = TCP( t2, n2.get_address("n1"), 4, n1.get_address("n2"), 4, AppHandler(inputfile=self.inputfile, plot=True, identifier="c8"), window=self.window, type=self.type, receiver_flow_plot=True, ) c9 = TCP( t1, n1.get_address("n2"), 5, n2.get_address("n1"), 5, AppHandler(inputfile=self.inputfile, identifier="c9"), window=self.window, type=self.type, ) c10 = TCP( t2, n2.get_address("n1"), 5, n1.get_address("n2"), 5, AppHandler(inputfile=self.inputfile, plot=True, identifier="c10"), window=self.window, type=self.type, receiver_flow_plot=True, ) global tcps tcps = [c1, c2, c3, c4, c5, c6, c7, c8, c9, c10] global original_size f = open(self.inputfile, "rb") try: data = f.read(1000) while data != "": original_size += len(data) Sim.scheduler.add(delay=0, event=data, handler=c1.send) Sim.scheduler.add(delay=0.1, event=data, handler=c3.send) Sim.scheduler.add(delay=0.2, event=data, handler=c5.send) Sim.scheduler.add(delay=0.3, event=data, handler=c7.send) Sim.scheduler.add(delay=0.4, event=data, handler=c9.send) data = f.read(1000) finally: f.close() # run the simulation global decisecondEvent decisecondEvent = Sim.scheduler.add(delay=0.1, event=Sim, handler=self.decisecond) Sim.scheduler.run() networkPlotter.plot(self.sequencefile) plotter.plot(self.sequencefile)
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # setup network if self.use_queue: net = Network('networks/one-hop-queue.txt') else: net = Network('networks/one-hop.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a = AppHandler(self.filename) # setup connection c1 = TCP(t1,n1.get_address('n2'),1,n2.get_address('n1'),1,a,window=self.window) c2 = TCP(t2,n2.get_address('n1'),1,n1.get_address('n2'),1,a,window=self.window) # send a file with open(self.filename,'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput print "%i,%f,%f,%f,%i,%f\n" % (self.window,time,avg,max,file_size,throughput) if self.loss == 0.0: print "Outputing results to experiment.csv" output_fh = open('experiment.csv', 'a') output_fh.write("%i,%f,%f,%f,%i,%f\n" % (self.window,time,avg,max,file_size,throughput)) output_fh.close()
def main(): Sim.set_debug('Node') # run_five_nodes_line() run_five_nodes_ring()
def run(self): # parameters Sim.scheduler.reset() #Sim.set_debug('AppHandler') #Sim.set_debug('TCP') Sim.set_debug('Link') net = Network('networks/one.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a1 = AppHandler('test.txt') # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a1, window=self.window, threshold=self.threshold, fast_recovery=True, aimdc=5.0 / 6.0) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a1, window=self.window, threshold=self.threshold, fast_recovery=True, aimdc=5.0 / 6.0) # send a file with open('test.txt', 'r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput plotter = Plotter() print "Saving the sequence plot" plotter.create_sequence_plot(c1.x, c1.y, c1.dropX, c1.dropY, c1.ackX, c1.ackY, chart_name='advanced/aimd/sequence.png') plotter.clear() plotter.rateTimePlot(c2.packets_received, Sim.scheduler.current_time(), 'advanced/aimd/rateTime1.png') linkab = n1.links[0] self.linkab = linkab plotter.clear() plotter.queueSizePlot(linkab.queue_log_x, linkab.queue_log_y, linkab.dropped_packets_x, linkab.dropped_packets_y, chart_name='advanced/aimd/queueSize.png') plotter.clear() plotter.windowSizePlot(c1.window_x, c1.window_y, chart_name="advanced/aimd/windowSize1.png")
def run(self): # parameters Sim.scheduler.reset() Sim.set_debug('AppHandler') Sim.set_debug('TCP') # Sim.set_debug('Link') # setup application a1 = AppHandler(self.filename + str(1), self.out_directory) a2 = AppHandler(self.filename + str(2), self.out_directory) a3 = AppHandler(self.filename + str(3), self.out_directory) a4 = AppHandler(self.filename + str(4), self.out_directory) a5 = AppHandler(self.filename + str(5), self.out_directory) # setup network net = Network('../networks/setup.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'), link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'), link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup connection c1 = TCP(t1, n1.get_address('n2'), 1, n2.get_address('n1'), 1, a1, window=self.window) c2 = TCP(t2, n2.get_address('n1'), 1, n1.get_address('n2'), 1, a1, window=self.window) # setup connection c3 = TCP(t1, n1.get_address('n2'), 2, n2.get_address('n1'), 2, a2, window=self.window) c4 = TCP(t2, n2.get_address('n1'), 2, n1.get_address('n2'), 2, a2, window=self.window) # setup connection c5 = TCP(t1, n1.get_address('n2'), 3, n2.get_address('n1'), 3, a3, window=self.window) c6 = TCP(t2, n2.get_address('n1'), 3, n1.get_address('n2'), 3, a3, window=self.window) # setup connection c7 = TCP(t1, n1.get_address('n2'), 4, n2.get_address('n1'), 4, a4, window=self.window) c8 = TCP(t2, n2.get_address('n1'), 4, n1.get_address('n2'), 4, a4, window=self.window) # setup connection c9 = TCP(t1, n1.get_address('n2'), 5, n2.get_address('n1'), 5, a5, window=self.window) c0 = TCP(t2, n2.get_address('n1'), 5, n1.get_address('n2'), 5, a5, window=self.window) # send a file with open(self.in_directory + '/' + self.filename, 'r') as f: while True: data = f.read(10000) if not data: break Sim.scheduler.add(delay=0.0, event=data, handler=c1.send) Sim.scheduler.add(delay=0.1, event=data, handler=c3.send) Sim.scheduler.add(delay=0.2, event=data, handler=c5.send) Sim.scheduler.add(delay=0.3, event=data, handler=c7.send) Sim.scheduler.add(delay=0.4, event=data, handler=c9.send) # run the simulation Sim.scheduler.run()
def run(self): # parameters Sim.scheduler.reset() #Sim.set_debug('AppHandler') #Sim.set_debug('TCP') Sim.set_debug('Link') net = Network('networks/five.txt') net.loss(self.loss) # setup routes n1 = net.get_node('n1') n2 = net.get_node('n2') n1.add_forwarding_entry(address=n2.get_address('n1'),link=n1.links[0]) n2.add_forwarding_entry(address=n1.get_address('n2'),link=n2.links[0]) # setup transport t1 = Transport(n1) t2 = Transport(n2) # setup application a1 = AppHandler('test1.txt') a2 = AppHandler('test2.txt') a3 = AppHandler('test3.txt') a4 = AppHandler('test4.txt') a5 = AppHandler('test5.txt') # setup connection c1 = TCP(t1,n1.get_address('n2'),1,n2.get_address('n1'),1,a1,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c2 = TCP(t2,n2.get_address('n1'),1,n1.get_address('n2'),1,a1,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c3 = TCP(t1,n1.get_address('n2'),2,n2.get_address('n1'),2,a2,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c4 = TCP(t2,n2.get_address('n1'),2,n1.get_address('n2'),2,a2,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c5 = TCP(t1,n1.get_address('n2'),3,n2.get_address('n1'),3,a3,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c6 = TCP(t2,n2.get_address('n1'),3,n1.get_address('n2'),3,a3,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c7 = TCP(t1,n1.get_address('n2'),4,n2.get_address('n1'),4,a4,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c8 = TCP(t2,n2.get_address('n1'),4,n1.get_address('n2'),4,a4,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c9 = TCP(t1,n1.get_address('n2'),5,n2.get_address('n1'),5,a5,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) c0 = TCP(t2,n2.get_address('n1'),5,n1.get_address('n2'),5,a5,window=self.window,threshold=self.threshold,fast_recovery=self.fast_recovery) # send a file with open('test1.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=0, event=data, handler=c1.send) with open('test2.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=1.5, event=data, handler=c3.send) with open('test3.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=2, event=data, handler=c5.send) with open('test4.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=2.5, event=data, handler=c7.send) with open('test5.txt','r') as f: while True: data = f.read(1000) if not data: break Sim.scheduler.add(delay=3, event=data, handler=c9.send) # run the simulation Sim.scheduler.run() # print some results print print "========== Overall results ==========" time = Sim.scheduler.current_time() print "Total time: %f seconds" % time avg = numpy.mean(c2.queueing_delay_list) print "Average queueing delay: %f" % avg max = numpy.max(c2.queueing_delay_list) print "Max queueing delay: %f" % max file_size = os.path.getsize(self.filename) print "File size: %i" % file_size throughput = file_size / time print "Throughput: %f" % throughput # Variables for debugging self.c3 = c3 self.c4 = c4 self.c2 = c2 self.c1 = c1 self.t1 = t1 self.t2 = t2 self.net = net linkab = n1.links[0] self.linkab = linkab l = linkab # Plotting plotter = Plotter() # Plot sequence charts #plotter.clear() #plotter.create_sequence_plot(c1.x, c1.y, c1.dropX, c1.dropY, c1.ackX, c1.ackY, chart_name='five/sequence1.png') #plotter.clear() #plotter.create_sequence_plot(c3.x, c3.y, c3.dropX, c3.dropY, c3.ackX, c3.ackY, chart_name='five/sequence2.png') # Plot receiver rate plotter.clear() plotter.rateTimePlot(c2.packets_received, Sim.scheduler.current_time(), chart_name='five/rateTime1.png') plotter.rateTimePlot(c4.packets_received, Sim.scheduler.current_time(), chart_name='five/rateTime2.png') plotter.rateTimePlot(c6.packets_received, Sim.scheduler.current_time(), chart_name='five/rateTime3.png') plotter.rateTimePlot(c8.packets_received, Sim.scheduler.current_time(), chart_name='five/rateTime4.png') plotter.rateTimePlot(c0.packets_received, Sim.scheduler.current_time(), chart_name='five/rateTime5.png') # Plot queue size plotter.clear() plotter.queueSizePlot(l.queue_log_x, l.queue_log_y, l.dropped_packets_x, l.dropped_packets_y, chart_name='five/queueSize.png')
def run(self): # parameters Sim.scheduler.reset() if "a" in self.debug: Sim.set_debug('AppHandler') if "t" in self.debug: Sim.set_debug('TCP') # setup network networkPlotter = Plotter('out/2-flows-advanced-competing-rtt') net = Network(config='networks/competing-rtt.txt',plotter=networkPlotter) net.loss(self.loss) # setup routes A = net.get_node('A') B = net.get_node('B') C = net.get_node('C') D = net.get_node('D') # A forwarding entries A.add_forwarding_entry(address=B.get_address('C'),link=A.links[0]) A.add_forwarding_entry(address=C.get_address('A'),link=A.links[0]) A.add_forwarding_entry(address=D.get_address('C'),link=A.links[0]) # B forwarding entries B.add_forwarding_entry(address=A.get_address('C'),link=B.links[0]) B.add_forwarding_entry(address=C.get_address('B'),link=B.links[0]) B.add_forwarding_entry(address=D.get_address('C'),link=B.links[0]) # C forwarding entries C.add_forwarding_entry(address=A.get_address('C'),link=C.links[0]) C.add_forwarding_entry(address=B.get_address('C'),link=C.links[1]) C.add_forwarding_entry(address=D.get_address('C'),link=C.links[2]) # D forwarding entries D.add_forwarding_entry(address=A.get_address('C'),link=D.links[0]) D.add_forwarding_entry(address=B.get_address('C'),link=D.links[0]) D.add_forwarding_entry(address=C.get_address('D'),link=D.links[0]) # setup transport t1 = Transport(A) t2 = Transport(B) t4 = Transport(D) # setup connection c1 = TCP(t1,A.get_address('C'),1,D.get_address('C'),1,AppHandler(inputfile=self.inputfile,identifier="c1"),window=self.window,type=self.type,window_size_plot=True,sequence_plot=True) c2 = TCP(t4,D.get_address('C'),1,A.get_address('C'),1,AppHandler(inputfile=self.inputfile,plot=True,identifier="c2"),window=self.window,type=self.type,receiver_flow_plot=True) c3 = TCP(t2,B.get_address('C'),2,D.get_address('C'),2,AppHandler(inputfile=self.inputfile,identifier="c3"),window=self.window,type=self.type,window_size_plot=True,sequence_plot=True) c4 = TCP(t4,D.get_address('C'),2,B.get_address('C'),2,AppHandler(inputfile=self.inputfile,plot=True,identifier="c4"),window=self.window,type=self.type,receiver_flow_plot=True) global tcps tcps = [c1, c2, c3, c4] global original_size f = open(self.inputfile, "rb") try: data = f.read(1000) while data != "": original_size += len(data) Sim.scheduler.add(delay=0, event=data, handler=c1.send) Sim.scheduler.add(delay=0, event=data, handler=c3.send) data = f.read(1000) finally: f.close() # run the simulation global decisecondEvent decisecondEvent = Sim.scheduler.add(delay=0.1, event=Sim, handler=self.decisecond) Sim.scheduler.run() networkPlotter.plot(self.sequencefile) plotter.plot(self.sequencefile);