Пример #1
0
    object_L.append(router_c)

    # Router D
    router_d = network.Router(name='D',
                              intf_count=len(table_D),
                              max_queue_size=router_queue_size,
                              routing_table=table_D)
    object_L.append(router_d)

    #create a Link Layer to keep track of links between network nodes
    link_layer = link.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    #link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
    link_layer.add_link(link.Link(client1, 0, router_a, 0, 50))
    link_layer.add_link(link.Link(client2, 0, router_a, 1, 50))

    # Router A links to next object
    link_layer.add_link(link.Link(router_a, 0, router_b, 0, 50))
    link_layer.add_link(link.Link(router_a, 1, router_c, 0, 50))

    # Router B links to next object
    link_layer.add_link(link.Link(router_b, 0, router_d, 0, 30))

    # Router C links to next object
    link_layer.add_link(link.Link(router_c, 0, router_d, 1, 30))

    # Router D links to next object
    link_layer.add_link(link.Link(router_d, 0, server1, 0, 50))
    link_layer.add_link(link.Link(router_d, 1, server2, 0, 50))
Пример #2
0
    router_d = network_3.Router(routing_table_d, name='D', intf_count=2, max_queue_size=router_queue_size)
    object_L.append(router_d)
    host_3 = network_3.Host(3)
    object_L.append(host_3)
    host_4 = network_3.Host(4)
    object_L.append(host_4)

    # create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)

    # add all the links
    # link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
    # out interface of client, in interface of server
    # 50 is the MTU - largest size of packet that can be transferred over links
    link_layer.add_link(link_3.Link(host_1, 0, router_a, 0, 50))
    link_layer.add_link(link_3.Link(host_2, 0, router_a, 1, 50))
    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0, 50))
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0, 50))
    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0, 50))
    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1, 50))
    link_layer.add_link(link_3.Link(router_d, 0, host_3, 0, 50))
    link_layer.add_link(link_3.Link(router_d, 1, host_4, 0, 50))

    # start all the objects
    thread_L = []
    thread_L.append(threading.Thread(name=host_1.__str__(), target=host_1.run))
    thread_L.append(threading.Thread(name=host_2.__str__(), target=host_2.run))
    thread_L.append(threading.Thread(name=host_3.__str__(), target=host_3.run))
    thread_L.append(threading.Thread(name=host_4.__str__(), target=host_4.run))
    thread_L.append(threading.Thread(name=router_a.__str__(), target=router_a.run))
Пример #3
0
        elif isinstance(item, network.Router):
            N.append(item.name)
            R.append(item.name)

    # update all routers, initialize routing table
    for item in object_L:
        if isinstance(item, network.Router):
            item.update_network_nodes(N, R)
            item.initialize_routing_table()

    #create a Link Layer to keep track of links between network nodes
    link_layer = link.LinkLayer()
    object_L.append(link_layer)

    #add all the links - need to reflect the connectivity in cost_D tables above
    link_layer.add_link(link.Link(host_1, 0, router_a, 0))
    link_layer.add_link(link.Link(router_a, 1, router_b, 0))
    link_layer.add_link(link.Link(router_a, 2, router_c, 0))
    link_layer.add_link(link.Link(router_b, 1, router_d, 0))
    link_layer.add_link(link.Link(router_c, 1, router_d, 1))
    link_layer.add_link(link.Link(router_d, 2, host_2, 0))

    #start all the objects
    thread_L = []
    for obj in object_L:
        thread_L.append(threading.Thread(name=obj.__str__(), target=obj.run))

    for t in thread_L:
        t.start()

    ## compute routing tables
Пример #4
0
                                max_queue_size=router_queue_size,
                                routing_table=routing_table[3])
    object_L.append(router_d)

    #create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    #link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
    """
    link_layer.add_link(link_2.Link(client, 0, router_a, 0, 50))
    link_layer.add_link(link_2.Link(router_a, 0, server, 0, 30))
    """

    link_layer.add_link(link_3.Link(client1, 0, router_a, 0,
                                    mtu_length))  # client1 to router_a
    link_layer.add_link(link_3.Link(client2, 0, router_a, 1,
                                    mtu_length))  # client2 to router_a
    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0,
                                    mtu_length))  # router_a to router_b
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0,
                                    mtu_length))  # router_a to router_c
    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0,
                                    mtu_length))  # router_b to router_d
    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1,
                                    mtu_length))  # router_c to router_d
    link_layer.add_link(link_3.Link(router_d, 0, client3, 0,
                                    mtu_length))  # router_d to client3
    link_layer.add_link(link_3.Link(router_d, 1, client4, 0,
                                    mtu_length))  # router_d to client4
Пример #5
0
    router_d.addToTable((0, 1291))
    router_d.addToTable((1, 1292))

    #DL: Adding them to the object list
    object_L.append(router_a)
    object_L.append(router_b)
    object_L.append(router_c)
    object_L.append(router_d)

    #create a Link Layer to keep track of links between network nodes   Changed to correspond with part 2 of the assignment
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    #DL: the addresses of the hosts are edited to appropriate values tier 1
    link_layer.add_link(link_3.Link(host_1, 0, router_a, 0, 50))
    link_layer.add_link(link_3.Link(host_2, 0, router_a, 1, 50))
    #DL: tier 2
    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0, 50))
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0, 50))
    #DL: tier 3
    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0, 50))
    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1, 50))
    #DL: tier 4
    link_layer.add_link(
        link_3.Link(router_d, 0, host_3, 0,
                    30))  #MTU change to 30 for part 2 of the assignment
    link_layer.add_link(
        link_3.Link(router_d, 1, host_4, 0,
                    30))  #MTU change to 30 for part 2 of the assignment
    #DL: the tiers are just following the verticle line of the picture provided where each jump is a tier.
Пример #6
0
                              intf_count=2,
                              max_queue_size=router_queue_size,
                              routing_dictionary=table["D"])

    object_L.append(router_a)
    object_L.append(router_b)
    object_L.append(router_c)
    object_L.append(router_d)

    #create a Link Layer to keep track of links between network nodes
    link_layer = link.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    #link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
    link_layer.add_link(link.Link(client_1, 0, router_a, 0, 50))
    link_layer.add_link(link.Link(client_2, 0, router_a, 1, 50))
    link_layer.add_link(link.Link(router_a, 0, router_b, 0, 50))
    link_layer.add_link(link.Link(router_a, 1, router_c, 0, 50))
    link_layer.add_link(link.Link(router_b, 0, router_d, 0, 50))
    link_layer.add_link(link.Link(router_c, 0, router_d, 1, 50))
    link_layer.add_link(link.Link(router_d, 0, client_3, 0, 50))
    link_layer.add_link(link.Link(router_d, 1, client_4, 0, 50))

    #start all the objects
    thread_L = []
    thread_L.append(
        threading.Thread(name=client_1.__str__(), target=client_1.run))
    thread_L.append(
        threading.Thread(name=client_2.__str__(), target=client_2.run))
    thread_L.append(
Пример #7
0
                                max_queue_size=router_queue_size,
                                forward_table=table_c)
    object_L.append(router_c)
    router_d = network_3.Router(name='D',
                                intf_count=4,
                                max_queue_size=router_queue_size,
                                forward_table=table_d)
    object_L.append(router_d)

    # create a Link Layer to keep track of links between network_3 nodes
    link_layer = link.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    #link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
    link_layer.add_link(link.Link(host1, 0, router_a, 0, 50))
    link_layer.add_link(link.Link(host2, 0, router_a, 1, 50))
    link_layer.add_link(link.Link(router_a, 2, router_b, 0, 50))
    link_layer.add_link(link.Link(router_a, 3, router_c, 0, 50))
    link_layer.add_link(link.Link(router_b, 1, router_d, 0, 50))
    link_layer.add_link(link.Link(router_c, 1, router_d, 1, 50))
    link_layer.add_link(link.Link(router_d, 2, host3, 0, 50))
    link_layer.add_link(link.Link(router_d, 3, host4, 0, 50))

    #start all the objects
    thread_L = []
    thread_L.append(threading.Thread(name=host1.__str__(), target=host1.run))
    thread_L.append(threading.Thread(name=host2.__str__(), target=host2.run))
    thread_L.append(threading.Thread(name=host3.__str__(), target=host3.run))
    thread_L.append(threading.Thread(name=host4.__str__(), target=host4.run))
    thread_L.append(
Пример #8
0
    router_b = network_3.Router(name='B', intf_count=1, max_queue_size=router_queue_size, rtable=routing_table_B) #Router B
    object_L.append(router_b)

    router_c = network_3.Router(name='C', intf_count=1, max_queue_size=router_queue_size, rtable=routing_table_C) #Router C
    object_L.append(router_c)

    router_d = network_3.Router(name='D', intf_count=2, max_queue_size=router_queue_size, rtable=routing_table_D) #Router D
    object_L.append(router_d)


    #create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    link_layer.add_link(link_3.Link(host_1, 0, router_a, 0, 50)) #Host 1 -> Router A
    link_layer.add_link(link_3.Link(host_2, 0, router_a, 1, 50)) #Host 2 -> Router A

    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0, 30)) #Router A -> Router B
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0, 30)) #Router A -> Router C

    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0, 30)) #Router B -> Router D

    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1, 30)) #Router C -> Router D

    link_layer.add_link(link_3.Link(router_d, 0, host_3, 0, 30)) #Router D -> Host 3
    link_layer.add_link(link_3.Link(router_d, 1, host_4, 0, 30)) #Router D -> Host 4

    #start all the objects
    thread_L = []
    thread_L.append(threading.Thread(name=host_1.__str__(), target=host_1.run))
Пример #9
0
    object_L.append(server)
    router_a = network_3.Router(name='A', intf_count=2, max_queue_size=router_queue_size, outgoing_l_mtu=50, routing_table={1: 0, 2: 1})
    router_b = network_3.Router(name='B', intf_count=1, max_queue_size=router_queue_size, outgoing_l_mtu=50, routing_table={1: 0, 2: 0})
    router_c = network_3.Router(name='C', intf_count=1, max_queue_size=router_queue_size, outgoing_l_mtu=50, routing_table={1: 0, 2: 0})
    router_d = network_3.Router(name='D', intf_count=2, max_queue_size=router_queue_size, outgoing_l_mtu=50, routing_table={1: 0, 2: 0})
    object_L.append(router_a)
    object_L.append(router_b)
    object_L.append(router_c)
    object_L.append(router_d)
    
    #create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)
    
    #add all the links
    link_layer.add_link(link_3.Link(client_a, 0, router_a, 0, 50))
    link_layer.add_link(link_3.Link(client_b, 0, router_a, 0, 50))

    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0, 50))
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0, 50))

    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0, 50))
    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1, 50))

    link_layer.add_link(link_3.Link(router_d, 0, server, 0, 50))
    
    
    #start all the objects
    thread_L = []
    thread_L.append(threading.Thread(name=client_a.__str__(), target=client_a.run))
    thread_L.append(threading.Thread(name=client_b.__str__(), target=client_b.run))
Пример #10
0
                                max_queue_size=router_queue_size,
                                routing_table=rout_tab)
    object_L.append(router_c)
    router_d = network_3.Router(name='D',
                                intf_count=2,
                                max_queue_size=router_queue_size,
                                routing_table=rout_tab)
    object_L.append(router_d)

    #create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    #link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
    link_layer.add_link(link_3.Link(host1, 0, router_a, 0, 50))
    link_layer.add_link(link_3.Link(host2, 0, router_a, 1, 50))
    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0, 50))
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0, 50))
    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0, 50))
    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1, 50))
    link_layer.add_link(link_3.Link(router_d, 0, host3, 0, 50))
    link_layer.add_link(link_3.Link(router_d, 1, host4, 0, 50))

    #start all the objects
    thread_L = []
    thread_L.append(threading.Thread(name=host1.__str__(), target=host1.run))
    thread_L.append(threading.Thread(name=host2.__str__(), target=host2.run))
    thread_L.append(threading.Thread(name=host3.__str__(), target=host3.run))
    thread_L.append(threading.Thread(name=host4.__str__(), target=host4.run))
    thread_L.append(
Пример #11
0
        object_L.append(router_a)
        router_b = network.Router(name='B', intf_count=1, max_queue_size=router_queue_size)
        object_L.append(router_b)
        router_c = network.Router(name='C', intf_count=1, max_queue_size=router_queue_size)
        object_L.append(router_c)
        router_d = network.Router(name='D', intf_count=2, max_queue_size=router_queue_size)
        object_L.append(router_d)
        
        
        # create a Link Layer to keep track of links between network nodes
        link_layer = link.LinkLayer()
        object_L.append(link_layer)
        
        # add all the links
        # link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
        link_layer.add_link(link.Link(client1, 0, router_a, 0, 50)) #host1 to A
        link_layer.add_link(link.Link(client2, 0, router_a, 1, 50)) #host2 to A
        link_layer.add_link(link.Link(router_a, 0, router_b, 0, 50)) #A to B
        link_layer.add_link(link.Link(router_a, 1, router_c, 0, 50)) #A to C
        link_layer.add_link(link.Link(router_b, 0, router_d, 0, 50)) #B to D
        link_layer.add_link(link.Link(router_c, 0, router_d, 1, 50)) #C to D
        link_layer.add_link(link.Link(router_d, 0, server1, 0, 50)) #D to host3
        link_layer.add_link(link.Link(router_d, 1, server2, 0, 50)) #D to host4

        # create routing table
        hosts = [client1, client2, server1, server2]
        routers = [router_a, router_b, router_c, router_d]
        table = RoutingTable(link_layer, hosts, routers)
        path1 = Route(1, 3, "1ABD3", table)
        path2 = Route(1, 4, "1ABD4", table)
        path3 = Route(1, 3, "1ACD3", table)
Пример #12
0
                                max_queue_size=router_queue_size,
                                routingTable=singleRouteRoutingTable)
    object_L.append(router_c)
    router_d = network_3.Router(name='D',
                                intf_count=2,
                                max_queue_size=router_queue_size,
                                routingTable=convergingRoutingTable)
    object_L.append(router_d)
    # object_L = an object list

    #create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)

    #add all the links
    link_layer.add_link(link_3.Link(client1, 0, router_a, 0, 40))
    link_layer.add_link(link_3.Link(client2, 0, router_a, 1, 40))
    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0, 40))
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0, 40))
    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0, 40))
    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1, 40))
    link_layer.add_link(link_3.Link(router_d, 0, server3, 0, 40))
    link_layer.add_link(link_3.Link(router_d, 1, server4, 0, 40))

    #start all the objects
    thread_L = []
    thread_L.append(
        threading.Thread(name=client1.__str__(), target=client1.run))
    thread_L.append(
        threading.Thread(name=client2.__str__(), target=client2.run))
    thread_L.append(
Пример #13
0
    router_d = network_3.Router(routeTableD, name='D', intf_count=2,max_queue_size=router_queue_size)
    #add routers to list
    object_L.append(router_a)
    object_L.append(router_b)
    object_L.append(router_c)
    object_L.append(router_d)


    #create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)
    print(len(msg_S))
    #add all the links
    #link parameters: from_node, from_intf_num, to_node, to_intf_num, mtu
    #add link between host1 and A
    link_layer.add_link(link_3.Link(client1, 0, router_a, 0, 152))
    #add link between host2 and A
    link_layer.add_link(link_3.Link(client2, 0, router_a, 1, 152))
    #add link between A interface 0 to B interface 0
    link_layer.add_link(link_3.Link(router_a, 0, router_b, 0, 152))
    #add link between A interface 1 to C interface 0
    link_layer.add_link(link_3.Link(router_a, 1, router_c, 0, 152))
    #add link between B interface 0 to D interface 0
    link_layer.add_link(link_3.Link(router_b, 0, router_d, 0, 152))
    #add link between C interface 0 to D interface 1
    link_layer.add_link(link_3.Link(router_c, 0, router_d, 1, 152))
    #add link between D interface 0 to host3 interface 0
    link_layer.add_link(link_3.Link(router_d, 0, server1, 0, 152))
    #add link between D interface 1 to host4 interface 0
    link_layer.add_link(link_3.Link(router_d, 1, server2, 0, 152))
Пример #14
0
        },
        'RC': {
            2: 1
        }
    }  # {neighbor: {interface: cost}}
    router_d = network_3.Router(name='RD',
                                cost_D=cost_D,
                                max_queue_size=router_queue_size)
    object_L.append(router_d)

    #create a Link Layer to keep track of links between network nodes
    link_layer = link_3.LinkLayer()
    object_L.append(link_layer)

    #add all the links - need to reflect the connectivity in cost_D tables above
    link_layer.add_link(link_3.Link(host_1, 0, router_a, 0))
    link_layer.add_link(link_3.Link(router_a, 1, router_b, 0))
    link_layer.add_link(link_3.Link(router_b, 1, router_d, 0))

    link_layer.add_link(link_3.Link(host_2, 0, router_a, 2))
    link_layer.add_link(link_3.Link(router_a, 3, router_c, 0))
    link_layer.add_link(link_3.Link(router_c, 1, router_d, 2))
    link_layer.add_link(link_3.Link(router_d, 1, host_3, 0))

    #start all the objects
    thread_L = []
    for obj in object_L:
        thread_L.append(threading.Thread(name=obj.__str__(), target=obj.run))

    for t in thread_L:
        t.start()