Exemplo n.º 1
0
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()
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
    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);
Exemplo n.º 8
0
    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))
Exemplo n.º 9
0
    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()
Exemplo n.º 10
0
    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);
Exemplo n.º 11
0
    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())
Exemplo n.º 12
0
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()
Exemplo n.º 13
0
    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()
Exemplo n.º 14
0
    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
Exemplo n.º 15
0
    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
Exemplo n.º 16
0
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()
Exemplo n.º 17
0
    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()
Exemplo n.º 18
0
    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()
Exemplo n.º 19
0
	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()
Exemplo n.º 20
0
    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()
Exemplo n.º 21
0
    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')
Exemplo n.º 22
0
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))
Exemplo n.º 23
0
    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
Exemplo n.º 24
0
    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")
Exemplo n.º 25
0
    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)
Exemplo n.º 26
0
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()
Exemplo n.º 27
0
    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")
Exemplo n.º 28
0
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)
Exemplo n.º 29
0
		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)
Exemplo n.º 30
0
    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)
Exemplo n.º 31
0
    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")
Exemplo n.º 32
0
    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)
Exemplo n.º 33
0
    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()
Exemplo n.º 34
0
def main():
    Sim.set_debug('Node')
    # run_five_nodes_line()
    run_five_nodes_ring()
Exemplo n.º 35
0
    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")
Exemplo n.º 36
0
    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()
Exemplo n.º 37
0
    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')
Exemplo n.º 38
0
    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);