def prt3(): n1, n2, net = setupNetwork('../networks/1-3.txt') # send three packets at time 0 p1 = packet.Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=0, event=p1, handler=n1.send_packet) p2 = packet.Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=0, event=p2, handler=n1.send_packet) p3 = packet.Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=0, event=p3, handler=n1.send_packet) # Late packet p4 = packet.Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=2, event=p4, handler=n1.send_packet)
def broadcast_routing_table(self, event): distance_vector_message = self.routing_table.get_routing_table() distance_vector_message['hostname'] = self.node.hostname routing_table_packet = packet.Packet(destination_address=0, ident=0, ttl=1, protocol='dvrouting', body=distance_vector_message) if self.broadcast_count < 100: Sim.scheduler.add(delay=0, event=routing_table_packet, handler=self.node.send_packet) Sim.scheduler.add(delay=30, event="", handler=self.broadcast_routing_table) self.broadcast_count += 1 else: print "----------> ENDING <----------" if self.node.hostname == 'n1': Sim.scheduler.add(delay=0, event=None, handler=n1.get_link('n2').down) Sim.scheduler.add(delay=0, event=None, handler=n1.get_link('n3').down) print "---> Deactivated link <---"
def prt2(): n1, n2, net = setupNetwork('../networks/1-2.txt') # send one packet p = packet.Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=0, event=p, handler=n1.send_packet)
def handle(self,event): # quit if done now = Sim.scheduler.current_time() if (now - self.start) > self.duration: return # generate a packet self.ident += 1 p = packet.Packet(destination_address=destination,ident=self.ident,protocol='delay',length=1000) Sim.scheduler.add(delay=0, event=p, handler=self.node.send_packet) # schedule the next time we should generate a packet Sim.scheduler.add(delay=random.expovariate(self.load), event='generate', handler=self.handle)
def broadcast_routing_table(self, event): routing_table = self.routing_table.get_routing_table() hostname = self.node.hostname data_dictionary = dict() data_dictionary['hostname'] = hostname data_dictionary['routing_table'] = routing_table routing_table_packet = packet.Packet(destination_address=0, ident=0, ttl=1, protocol='dvrouting', body=data_dictionary) Sim.scheduler.add(delay=0, event=routing_table_packet, handler=self.node.send_packet) if self.broadcast_count < 200: if self.broadcast_count == 75 and self.node.hostname == 'n1': Sim.scheduler.add(delay=0, event=None, handler=n1.get_link('n4').down) Sim.scheduler.add(delay=0, event=None, handler=n4.get_link('n1').down) print "%s - ----> DISABLED LINKS <----" % Sim.scheduler.current_time( ) elif self.broadcast_count == 150 and self.node.hostname == 'n1': Sim.scheduler.add(delay=0, event=None, handler=n1.get_link('n4').up) Sim.scheduler.add(delay=0, event=None, handler=n4.get_link('n1').up) print "%s - ----> ENABLED LINKS <----" % Sim.scheduler.current_time( ) Sim.scheduler.add(delay=30, event="", handler=self.broadcast_routing_table) self.broadcast_count += 1 else: # print print "(%s) --------> ENDING <--------" % Sim.scheduler.current_time( )
# 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.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.Packet(source_address=n1.get_address('n2'), destination_address=0, ident=2, ttl=1, protocol='broadcast', length=100) 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
# setup forwarding entries a2 = n2.get_address('n1') a1 = n1.get_address('n2') a3 = n3.get_address('n2') n1.add_forwarding_entry(address=a2, link=n1.links[0]) n2.add_forwarding_entry(address=a1, link=n2.links[0]) n2.add_forwarding_entry(address=a3, link=n2.links[1]) n3.add_forwarding_entry(address=a2, link=n3.links[0]) # if packet is going from n1 -> n3 n1.add_forwarding_entry(address=a3, link=n1.links[0]) packetCount = 100 # setup app d = DelayHandler(packetCount, outputFile) net.nodes['n1'].add_protocol(protocol="delay", handler=d) net.nodes['n2'].add_protocol(protocol="delay", handler=d) net.nodes['n3'].add_protocol(protocol="delay", handler=d) for i in range(0, packetCount): p = packet.Packet(destination_address=a3, ident=i, protocol='delay', length=1000) Sim.scheduler.add(delay=0, event=p, handler=n1.send_packet) # run the simulation Sim.scheduler.run()
n5.add_protocol(protocol="data",handler=HandleDataApp(n5)) # setup dvrouting application b1 = DVRoutingApp(n1) n1.add_protocol(protocol="dvrouting",handler=b1) b2 = DVRoutingApp(n2) n2.add_protocol(protocol="dvrouting",handler=b2) b3 = DVRoutingApp(n3) n3.add_protocol(protocol="dvrouting",handler=b3) b4 = DVRoutingApp(n4) n4.add_protocol(protocol="dvrouting",handler=b4) b5 = DVRoutingApp(n5) n5.add_protocol(protocol="dvrouting",handler=b5) # send one packet from n1 to n5 p = packet.Packet(destination_address=n5.get_address('n1'),protocol='data') Sim.scheduler.add(delay=5, event=p, handler=n1.send_packet) # send one packet from n4 to n1 p = packet.Packet(destination_address=n1.get_address('n5'),protocol='data') Sim.scheduler.add(delay=7, event=p, handler=n4.send_packet) # take the link down between n1 and n5 Sim.scheduler.add(delay=10, event=None, handler=n1.get_link('n5').down) Sim.scheduler.add(delay=10, event=None, handler=n5.get_link('n1').down) # send one packet from n1 to n5 p = packet.Packet(destination_address=n5.get_address('n1'),protocol='data') Sim.scheduler.add(delay=130, event=p, handler=n1.send_packet) # send one packet from n4 to n1
def receive_packet(self, packet): print packet.created, packet.ident, Sim.scheduler.current_time() if __name__ == '__main__': # parameters Sim.scheduler.reset() # setup network net = Network('p1.2-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 app d = DelayHandler() net.nodes['n2'].add_protocol(protocol="delay", handler=d) # send one packet p = packet.Packet(destination_address=n2.get_address('n1'), ident=1, protocol='delay', length=1000) Sim.scheduler.add(delay=0, event=p, handler=n1.send_packet) # run the simulation Sim.scheduler.run()
n3.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n3)) n4.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n4)) n5.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n5)) n6.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n6)) n7.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n7)) n8.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n8)) n9.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n9)) n10.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n10)) n11.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n11)) n12.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n12)) n13.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n13)) n14.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n14)) n15.add_protocol(protocol="dvrouting", handler=DVRoutingApp(n15)) # send one packet from n1 to n7 p = packet.Packet(destination_address=n7.get_address('n4'), protocol='data') Sim.scheduler.add(delay=5, event=p, handler=n1.send_packet) # take the link down between n4 and n7 Sim.scheduler.add(delay=10, event=None, handler=n4.get_link('n7').down) Sim.scheduler.add(delay=10, event=None, handler=n7.get_link('n4').down) # send another packet from n1 to n7 p = packet.Packet(destination_address=n7.get_address('n4'), protocol='data') Sim.scheduler.add(delay=140, event=p, handler=n1.send_packet) # take the link down between n5 and n8 Sim.scheduler.add(delay=150, event=None, handler=n8.get_link('n5').down) Sim.scheduler.add(delay=150, event=None, handler=n5.get_link('n8').down)
# parameters Sim.scheduler.reset() # setup network net = Network('p1.3-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 app d = DelayHandler() net.nodes['n2'].add_protocol(protocol="delay",handler=d) # send three packets at t=0 p1 = packet.Packet(destination_address=n2.get_address('n1'),ident=1,protocol='delay',length=1000) p2 = packet.Packet(destination_address=n2.get_address('n1'),ident=2,protocol='delay',length=1000) p3 = packet.Packet(destination_address=n2.get_address('n1'),ident=3,protocol='delay',length=1000) Sim.scheduler.add(delay=0, event=p1, handler=n1.send_packet) Sim.scheduler.add(delay=0, event=p2, handler=n1.send_packet) Sim.scheduler.add(delay=0, event=p3, handler=n1.send_packet) # send one packet at t=2 p4 = packet.Packet(destination_address=n2.get_address('n1'),ident=4,protocol='delay',length=1000) Sim.scheduler.add(delay=2, event=p4, handler=n1.send_packet) # run the simulation Sim.scheduler.run()
def queuePackets(count, n1, n2, n3): for i in range(count): p = packet.Packet(destination_address=n3.get_address('n2'),ident=1,protocol='delay',length=1000) Sim.scheduler.add(delay=0, event=p, handler=n1.send_packet)
n15.add_protocol(protocol="printer", handler=p15) d1.broadcast_routing_table("") d2.broadcast_routing_table("") d3.broadcast_routing_table("") d4.broadcast_routing_table("") d5.broadcast_routing_table("") d6.broadcast_routing_table("") d7.broadcast_routing_table("") d8.broadcast_routing_table("") d9.broadcast_routing_table("") d10.broadcast_routing_table("") d11.broadcast_routing_table("") d12.broadcast_routing_table("") d13.broadcast_routing_table("") d14.broadcast_routing_table("") d15.broadcast_routing_table("") p = packet.Packet(protocol="printer", source_address=n11.get_address('n4'), destination_address=n10.get_address('n1'), body="Hello world!") Sim.scheduler.add(delay=900, event=p, handler=n11.send_packet) Sim.scheduler.add(delay=2800, event=p, handler=n11.send_packet) Sim.scheduler.add(delay=5500, event=p, handler=n11.send_packet) # run the simulation Sim.scheduler.run()