Skip to content
Snippets Groups Projects
Commit 5b02a4bc authored by NGUYEN Do Duc Anh's avatar NGUYEN Do Duc Anh
Browse files

update parameter

parent 9b76786b
Branches
No related tags found
No related merge requests found
......@@ -50,7 +50,7 @@ DIR = "/home/anh/Documents/kernel_preparation/gns3_unikernel_testbed"
#
#
def send_para_server(A_raw, f, num_host, p_NAT, P_values):
def send_para_server(A_raw, f, num_host, p_NAT, P_values, max_total_traffic, proto, time_generate):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket:
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(('0.0.0.0', 12348))
......@@ -60,7 +60,8 @@ def send_para_server(A_raw, f, num_host, p_NAT, P_values):
while True:
client_socket, client_address = server_socket.accept()
with client_socket: # Ensures cleanup
data = {'A_raw': A_raw, 'f': f, 'num_host': num_host, 'p_NAT': p_NAT, 'P_values': P_values}
data = {'A_raw': A_raw, 'f': f, 'num_host': num_host, 'p_NAT': p_NAT, 'P_values': P_values, 'max_total_traffic': max_total_traffic, 'proto': proto,
'time_generate': time_generate}
data_js = json.dumps(data)
client_socket.sendall(data_js.encode('utf-8')) # Send JSON data
break
......@@ -86,12 +87,15 @@ def generate_topohub_GNS3_topology():
if user_input != '':
sys.exit()
if len(sys.argv) > 5:
if len(sys.argv) > 8:
topology_name = sys.argv[1]
gns3manager.malware_instance = 0 if sys.argv[2].strip() == "wannacry" else 1
f = float(sys.argv[3])
p_NAT = int(sys.argv[4])
packet_lost = int(sys.argv[5])
max_total_traffic = int(sys.argv[6])
proto = sys.argv[7]
time_generate = int(sys.argv[8])
topo = topohub.get(topology_name)
g = nx.node_link_graph(topo)
......@@ -307,7 +311,7 @@ def generate_topohub_GNS3_topology():
sys.exit()
GNS3Manager.start_node(ubuntu_server.id)
send_para_server(g.graph['demands'], f, NUM_HOST, p_NAT, P_values)
send_para_server(g.graph['demands'], f, NUM_HOST, p_NAT, P_values, max_total_traffic, proto, time_generate)
# Capture packets from communications/links
if input("Capture link (y/N)?") == "y":
......
......@@ -22,12 +22,15 @@ f = 0
A = []
p_NAT = 0
P_values = []
MAX_TOTAL_TRAFFIC = 5000 # Pkts/s
PROTO = "UDP"
TIME_GENERATE = 3600000 # ms
file_path = "/home/osboxes/D-ITG-2.8.1-r1023-src/D-ITG-2.8.1-r1023/bin/commands.txt"
def generate_and_send_traffic_matrix():
global map_point, traffic_matrix, f, A, p_NAT, num_machine, P_values
global map_point, traffic_matrix, f, A, p_NAT, num_machine, P_values, PROTO, TIME_GENERATE
listen_port_map = {}
point_ips = sorted(map_point.keys(), key=lambda ip_term: tuple(map(int, ip_term.split('.'))))
......@@ -56,7 +59,7 @@ def generate_and_send_traffic_matrix():
if src_ip != dest_ip:
with open(file_path, "w") as file:
dest_port = listen_port_map[dest_ip]
command = f"-T UDP -a {dest_ip} -rp {dest_port} -O {mean_rate} -t 3600000"
command = f"-T {PROTO} -a {dest_ip} -rp {dest_port} -O {mean_rate} -t {TIME_GENERATE}"
listen_port_map[dest_ip] += 1
file.write(f"{src_ip} {command}\n")
print(command)
......@@ -85,7 +88,7 @@ def notify_window_attacker():
try:
client_socket.connect((point_ip_send, 12345))
client_socket.close()
except (ConnectionRefusedError, socket.timeout):
except Exception:
continue
print("Finished sending attack demands")
......@@ -154,18 +157,21 @@ def get_parameters():
num_machine_raw = data_js['num_host']
p_NAT_raw = data_js['p_NAT']
P_values_raw = data_js['P_values']
print(f"Received: {data_js}") # Debugging
max_total_traffic = data_js['max_total_traffic']
proto = data_js['protocol']
time_generate = data_js['time_generate']
# print(f"Received: {data_js}") # Debugging
client.close()
return A_raw, f_raw, num_machine_raw, p_NAT_raw, P_values_raw
return A_raw, f_raw, num_machine_raw, p_NAT_raw, P_values_raw, max_total_traffic, proto, time_generate
except json.JSONDecodeError:
print("Invalid JSON received")
def main():
global num_machine, f, A, p_NAT, P_values
global num_machine, f, A, p_NAT, P_values, MAX_TOTAL_TRAFFIC, PROTO, TIME_GENERATE
A_raw, f, num_machine, p_NAT, P_values = get_parameters()
A_raw, f, num_machine, p_NAT, P_values, MAX_TOTAL_TRAFFIC, PROTO, TIME_GENERATE = get_parameters()
if A_raw:
A = [0] * num_machine
......@@ -176,7 +182,7 @@ def main():
A[i] += rate
A[j] += rate
scale_factor = 6500 / max(A)
scale_factor = MAX_TOTAL_TRAFFIC / max(A)
for i in range(len(A)):
A[i] *= scale_factor
print(f"A[{i}]", A[i])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment