示例#1
0
文件: q1.py 项目: joe-eklund/tcp
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)
示例#2
0
    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 <---"
示例#3
0
文件: q1.py 项目: joe-eklund/tcp
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)
示例#4
0
    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)
示例#5
0
    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(
            )
示例#6
0
    # 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
示例#7
0
    # 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()
示例#8
0
    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
示例#9
0
    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()
示例#10
0
文件: ex3.py 项目: nathand8/bene
    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)
示例#11
0
    # 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()
示例#12
0
文件: q2.py 项目: joe-eklund/tcp
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)
示例#13
0
    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()