Ejemplo n.º 1
0
def run(node_count, csvfile):
    print(f'run for node_count: {node_count}')

    state = topology.create_nodes(node_count)
    for max_range in float_range(0.0, 0.8, 0.01):
        # calculate every value 100 times
        for _ in range(0, 100):
            mobility.randomize_positions(state, xy_range=1.0)
            mobility.connect_range(state, max_distance=max_range)

            paths = get_all_paths(node_count)

            (connected_path_count, connected_median_hop_count,
             connected_max_hop_count) = get_connectivity(state, paths)
            mean_geo_distance = get_mean_geo_distance(state, paths)

            # add data to csv file
            connectivity_per = 100 * connected_path_count / len(paths)
            extra = ([
                'node_count', 'max_range', 'mean_geo_distance',
                'connectivity_per', 'connected_median_hop_count',
                'connected_max_hop_count'
            ], [
                node_count, max_range, mean_geo_distance, connectivity_per,
                connected_median_hop_count, connected_max_hop_count
            ])
            tools.csv_update(csvfile, '\t', extra)
Ejemplo n.º 2
0
def run(protocol, csvfile, step_duration, step_distance):
    shared.seed_random(42)

    node_count = 50
    state = topology.create_nodes(node_count)
    mobility.randomize_positions(state, xy_range=1000)
    mobility.connect_range(state, max_links=150)

    # create network and start routing software
    network.apply(state, link_command=get_tc_command, remotes=remotes)
    software.start(protocol)

    test_beg_ms = shared.millis()
    for n in range(0, 30):
        print(f'{protocol}: iteration {n}')

        #with open(f'graph-{step_duration}-{step_distance}-{n:03d}.json', 'w+') as file:
        #	json.dump(state, file, indent='  ')

        # connect nodes range
        wait_beg_ms = shared.millis()

        # update network representation
        mobility.move_random(state, distance=step_distance)
        mobility.connect_range(state, max_links=150)

        # update network
        tmp_ms = shared.millis()
        network.apply(state=state,
                      link_command=get_tc_command,
                      remotes=remotes)
        #software.apply(protocol=protocol, state=state) # we do not change the node count
        network_ms = shared.millis() - tmp_ms

        # Wait until wait seconds are over, else error
        shared.wait(wait_beg_ms, step_duration)

        paths = ping.get_random_paths(state, 2 * 400)
        paths = ping.filter_paths(state, paths, min_hops=2, path_count=200)
        ping_result = ping.ping(paths=paths,
                                duration_ms=2000,
                                verbosity='verbose',
                                remotes=remotes)

        # add data to csv file
        extra = (['node_count',
                  'time_ms'], [node_count,
                               shared.millis() - test_beg_ms])
        shared.csv_update(csvfile, '\t', extra, ping_result.getData())

    software.clear(remotes)
    network.clear(remotes)
Ejemplo n.º 3
0
def run(protocol, csvfile):
	tools.seed_random(23)

	node_count = 50
	state = topology.create_nodes(node_count)
	mobility.randomize_positions(state, xy_range=1000)
	mobility.connect_range(state, max_links=150)

	# create network and start routing software
	network.apply(state=state, link_command=get_tc_command)
	software.start(protocol)
	tools.sleep(30)

	for step_distance in [50, 100, 150, 200, 250, 300, 350, 400]:
		print(f'{protocol}: step_distance {step_distance}')

		traffic_beg = tools.traffic()
		for n in range(0, 6):
			#with open(f'graph-{step_distance}-{n}.json', 'w+') as file:
			#	json.dump(state, file, indent='  ')

			# connect nodes range
			wait_beg_ms = tools.millis()

			# update network representation
			mobility.move_random(state, distance=step_distance)
			mobility.connect_range(state, max_links=150)

			# update network
			network.apply(state=state, link_command=get_tc_command)

			# Wait until wait seconds are over, else error
			tools.wait(wait_beg_ms, 10)

			paths = tools.get_random_paths(state, 2 * 200)
			paths = tools.filter_paths(state, paths, min_hops=2, path_count=200)
			ping_result = tools.ping_paths(paths=paths, duration_ms=2000, verbosity='verbose')

			packets_arrived_pc = 100 * (ping_result.received / ping_result.send)
			traffic_end = tools.traffic()

			# add data to csv file
			extra = (['node_count', 'time_ms', 'step_distance_m', 'n', 'packets_arrived_pc'], [node_count, tools.millis() - wait_beg_ms, step_distance, n, packets_arrived_pc])
			tools.csv_update(csvfile, '\t', extra, (traffic_end - traffic_beg).getData(), ping_result.getData())

			traffic_beg = traffic_end

	software.clear()
	network.clear()