simulation_time = 2 #give the network sufficient time to execute transfers if __name__ == '__main__': object_L = [ ] #keeps track of objects, so we can kill their threads at the end #create network hosts host_1 = network_2.Host('H1') object_L.append(host_1) host_2 = network_2.Host('H2') object_L.append(host_2) #create routers and cost tables for reaching neighbors cost_D = {'H1': {0: 1}, 'RB': {1: 1}} # {neighbor: {interface: cost}} router_a = network_2.Router(name='RA', cost_D=cost_D, max_queue_size=router_queue_size) object_L.append(router_a) cost_D = {'H2': {1: 3}, 'RA': {0: 1}} # {neighbor: {interface: cost}} router_b = network_2.Router(name='RB', cost_D=cost_D, max_queue_size=router_queue_size) object_L.append(router_b) #create a Link Layer to keep track of links between network nodes link_layer = link_2.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_2.Link(host_1, 0, router_a, 0))
#J. Beckett Sweeney ##configuration parameters router_queue_size = 0 # 0 means unlimited simulation_time = 3 # give the network sufficient time to transfer all packets before quitting if __name__ == '__main__': object_L = [] # keeps track of objects, so we can kill their threads # create network nodes client = network.Host(1) object_L.append(client) server = network.Host(2) object_L.append(server) router_a = network.Router(name='A', intf_count=1, max_queue_size=router_queue_size) object_L.append(router_a) # 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, 0, router_a, 0, 50)) link_layer.add_link(link.Link(router_a, 0, server, 0, 10)) # start all the objects thread_L = [] thread_L.append(threading.Thread(name=client.__str__(), target=client.run))
#create network hosts host1 = network_2.Host(1) object_L.append(host1) host2 = network_2.Host(2) object_L.append(host2) host3 = network_2.Host(3) object_L.append(host3) #create forwarding table for routers forwarding_table = [[['A', 2], ['B', 1], ['D', 2]], [['D', 1], ['C', 0], ['A', 0]]] #create routers and routing tables for connected clients (subnets) router_a_rt_tbl_D = {1: {0: 1}, 2: {1: 9}} router_a = network_2.Router(name='A', intf_cost_L=[1,9,1,2], rt_tbl_D = router_a_rt_tbl_D, max_queue_size=router_queue_size, forwarding_table = forwarding_table) object_L.append(router_a) router_b_rt_tbl_D = {1: {0: 2}, 3: {1: 5}} router_b = network_2.Router(name='B', intf_cost_L=[1,2], rt_tbl_D = router_b_rt_tbl_D, max_queue_size=router_queue_size, forwarding_table = forwarding_table) object_L.append(router_b) router_c_rt_tbl_D = {1: {0: 3}, 3: {1: 4}} router_c = network_2.Router(name='C', intf_cost_L=[2,1], rt_tbl_D = router_c_rt_tbl_D, max_queue_size=router_queue_size,
#create network hosts client1 = network.Host(1) object_L.append(client1) client2 = network.Host(2) object_L.append(client2) server = network.Host(3) object_L.append(server) #create routers and routing tables for connected clients (subnets) router_a = network.Router(name='A', intf_cost_L=[1, 1, 1, 1], intf_capacity_L=[500, 500, 500, 500], rt_tbl_D={ 0: { 3: ('0', 2) }, 1: { 3: ('1', 3) } }, fwd_tbl_D={}, max_queue_size=router_queue_size) object_L.append(router_a) router_b = network.Router(name='B', intf_cost_L=[1, 1], intf_capacity_L=[500, 500], rt_tbl_D={}, fwd_tbl_D={'0': ('2', 1)}, max_queue_size=router_queue_size) object_L.append(router_b) router_c = network.Router(name='C',
object_L = [] #keeps track of objects, so we can kill their threads #create network hosts h1 = network.Host(1) object_L.append(h1) h2 = network.Host(2) object_L.append(h2) h3 = network.Host(3) object_L.append(h3) #create routers and routing tables for connected clients (subnets) # router_a_rt_tbl_D = {1: {0: 1}, 2: {1: 1}, 3: {2:2}} # packet to host 1 through interface 0 for cost 1 router_a_rt_tbl_D = {1:{0:1},2:{1:1},3:{2:4, 3:5}} router_a = network.Router(name='A', intf_cost_L=[1,1,2,2], rt_tbl_D = router_a_rt_tbl_D, max_queue_size=router_queue_size) object_L.append(router_a) # router_b_rt_tbl_D = {3: {1: 1}, 1:{0:1}} # packet to host 2 through interface 1 for cost 3 router_b_rt_tbl_D = {1:{0:3},2:{0:3},3:{1:2}} router_b = network.Router(name='B', intf_cost_L=[2,1], rt_tbl_D = router_b_rt_tbl_D, max_queue_size=router_queue_size) object_L.append(router_b) # router_c_rt_tbl_D = {3: {1: 1}} # packet to host 1 through interface 0 for cost 1 router_c_rt_tbl_D = {1:{0:4},2:{0:4},3:{1:2}} router_c = network.Router(name='C', intf_cost_L=[3,1],
#Labels we made: # A = 10 # B = 11 # C = 12 # D = 13 #format: in_label, in_intf, out_label, out_intf forwarding_table_a = [['-', '0', '11', '2'], ['-', '1', '12', '3']] forwarding_table_b = ['10', '0', '13', '1'] forwarding_table_c = ['10', '0', '13', '1'] forwarding_table_d = [['11', '0', '-', '2'], ['12', '1', '-', '2']] router_a_rt_tbl_D = {1: {0: 1}, 2: {1: 9}} router_a = network_2.Router(name='A', intf_cost_L=[1,9,1,2], intf_capacity_L=[500,500,500,500], rt_tbl_D = router_a_rt_tbl_D, max_queue_size=router_queue_size, forwarding_table = forwarding_table_a) object_L.append(router_a) router_b_rt_tbl_D = {1: {0: 2}, 3: {1: 5}} router_b = network_2.Router(name='B', intf_cost_L=[1,2], intf_capacity_L=[500,100], rt_tbl_D = router_b_rt_tbl_D, max_queue_size=router_queue_size, forwarding_table = forwarding_table_b) object_L.append(router_b) router_c_rt_tbl_D = {1: {0: 3}, 3: {1: 4}} router_c = network_2.Router(name='C', intf_cost_L=[2,1], intf_capacity_L=[500,500], #I made this up
from time import sleep ##configuration parameters router_queue_size = 0 #0 means unlimited simulation_time = 1 #give the network sufficient time to transfer all packets before quitting if __name__ == '__main__': object_L = [] #keeps track of objects, so we can kill their threads #create network nodes client = network_2.Host(1) object_L.append(client) server = network_2.Host(2) object_L.append(server) router_a = network_2.Router(name='A', intf_count=1, max_queue_size=router_queue_size, outgoing_l_mtu=30) object_L.append(router_a) #create a Link Layer to keep track of links between network nodes link_layer = link_2.LinkLayer() object_L.append(link_layer) #add all the links 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)) #start all the objects thread_L = [] thread_L.append(threading.Thread(name=client.__str__(), target=client.run)) thread_L.append(threading.Thread(name=server.__str__(), target=server.run))