From db3fbc148195c911275160c6eb26020de9f959fd Mon Sep 17 00:00:00 2001 From: Ruben Queiros Date: Wed, 17 May 2023 19:27:09 +0100 Subject: [PATCH 1/5] add flexible source dir feature --- model/ns3gym/ns3gym/ns3env.py | 12 +++++++----- model/ns3gym/ns3gym/start_sim.py | 9 ++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/model/ns3gym/ns3gym/ns3env.py b/model/ns3gym/ns3gym/ns3env.py index 4e1583240..fdc1d7ab4 100644 --- a/model/ns3gym/ns3gym/ns3env.py +++ b/model/ns3gym/ns3gym/ns3env.py @@ -24,7 +24,7 @@ class Ns3ZmqBridge(object): """docstring for Ns3ZmqBridge""" - def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False): + def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, src_dir=os.getcwd()): super(Ns3ZmqBridge, self).__init__() port = int(port) self.port = port @@ -35,6 +35,7 @@ def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False): self.simPid = None self.wafPid = None self.ns3Process = None + self.src_dir = src_dir context = zmq.Context() self.socket = context.socket(zmq.REP) @@ -63,7 +64,7 @@ def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False): if self.startSim: # run simulation script - self.ns3Process = start_sim_script(port, simSeed, simArgs, debug) + self.ns3Process = start_sim_script(port, simSeed, simArgs, debug, src_dir) else: print("Waiting for simulation script to connect on port: tcp://localhost:{}".format(port)) print('Please start proper ns-3 simulation script using ./waf --run "..."') @@ -361,13 +362,14 @@ def _pack_data(self, actions, spaceDesc): class Ns3Env(gym.Env): - def __init__(self, stepTime=0, port=0, startSim=True, simSeed=0, simArgs={}, debug=False): + def __init__(self, stepTime=0, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, src_dir=os.getcwd()): self.stepTime = stepTime self.port = port self.startSim = startSim self.simSeed = simSeed self.simArgs = simArgs self.debug = debug + self.src_dir = src_dir # Filled in reset function self.ns3ZmqBridge = None @@ -378,7 +380,7 @@ def __init__(self, stepTime=0, port=0, startSim=True, simSeed=0, simArgs={}, deb self.state = None self.steps_beyond_done = None - self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug) + self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug, self.src_dir) self.ns3ZmqBridge.initialize_env(self.stepTime) self.action_space = self.ns3ZmqBridge.get_action_space() self.observation_space = self.ns3ZmqBridge.get_observation_space() @@ -413,7 +415,7 @@ def reset(self): self.ns3ZmqBridge = None self.envDirty = False - self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug) + self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug, self.src_dir) self.ns3ZmqBridge.initialize_env(self.stepTime) self.action_space = self.ns3ZmqBridge.get_action_space() self.observation_space = self.ns3ZmqBridge.get_observation_space() diff --git a/model/ns3gym/ns3gym/start_sim.py b/model/ns3gym/ns3gym/start_sim.py index 15726aa9d..82491cc97 100644 --- a/model/ns3gym/ns3gym/start_sim.py +++ b/model/ns3gym/ns3gym/start_sim.py @@ -67,13 +67,12 @@ def build_ns3_project(debug=True): os.chdir(cwd) -def start_sim_script(port=5555, sim_seed=0, sim_args={}, debug=False): +def start_sim_script(port=5555, sim_seed=0, sim_args={}, debug=False, src_dir=os.getcwd()): """ Actually run the ns3 scenario """ - cwd = os.getcwd() - sim_script_name = os.path.basename(cwd) - ns3_path = find_ns3_path(cwd) + sim_script_name = os.path.basename(src_dir) + ns3_path = find_ns3_path(src_dir) base_ns3_dir = os.path.dirname(ns3_path) os.chdir(base_ns3_dir) @@ -133,5 +132,5 @@ def start_sim_script(port=5555, sim_seed=0, sim_args={}, debug=False): print("Started ns3 simulation script, Process Id: ", ns3_proc.pid) # go back to my dir - os.chdir(cwd) + os.chdir(src_dir) return ns3_proc From cab0b0a4c251c1ad2b00fd61d2e8c18b654466ed Mon Sep 17 00:00:00 2001 From: Ruben Queiros Date: Tue, 29 Aug 2023 16:47:11 +0100 Subject: [PATCH 2/5] fix --- model/ns3gym/ns3gym/start_sim.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/model/ns3gym/ns3gym/start_sim.py b/model/ns3gym/ns3gym/start_sim.py index 82491cc97..1d61c9082 100644 --- a/model/ns3gym/ns3gym/start_sim.py +++ b/model/ns3gym/ns3gym/start_sim.py @@ -17,7 +17,9 @@ def find_ns3_path(cwd): if fname == "ns3": found = True ns3_path = os.path.join(my_dir, fname) - break + if fname == "ns-3-dev": + found = True + ns3_path = os.path.join(my_dir, fname, "ns3") my_dir = os.path.dirname(my_dir) @@ -77,7 +79,7 @@ def start_sim_script(port=5555, sim_seed=0, sim_args={}, debug=False, src_dir=os os.chdir(base_ns3_dir) - ns3_string = ns3_path + ' run "' + sim_script_name + ns3_string = ns3_path + ' run "' + sim_script_name + '/sim' if port: ns3_string += ' --openGymPort=' + str(port) From 607bf909e2648f7139a532e85aa6c92d97170af1 Mon Sep 17 00:00:00 2001 From: Ruben Queiros Date: Wed, 30 Aug 2023 11:33:05 +0100 Subject: [PATCH 3/5] ns3gym puts the double dash in sim start --- model/ns3gym/ns3gym/start_sim.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/model/ns3gym/ns3gym/start_sim.py b/model/ns3gym/ns3gym/start_sim.py index 1d61c9082..8ce03ca84 100644 --- a/model/ns3gym/ns3gym/start_sim.py +++ b/model/ns3gym/ns3gym/start_sim.py @@ -88,10 +88,7 @@ def start_sim_script(port=5555, sim_seed=0, sim_args={}, debug=False, src_dir=os ns3_string += ' --simSeed=' + str(sim_seed) for key, value in sim_args.items(): - ns3_string += " " - ns3_string += str(key) - ns3_string += "=" - ns3_string += str(value) + ns3_string += " --" + str(key) + "=" + str(value) ns3_string += '"' From be857e068cf0fe2013f1ef8f872d23a1ef96bb97 Mon Sep 17 00:00:00 2001 From: Ruben Queiros Date: Wed, 30 Aug 2023 15:43:36 +0100 Subject: [PATCH 4/5] flexible sim script name --- model/ns3gym/ns3gym/ns3env.py | 12 +++++++----- model/ns3gym/ns3gym/start_sim.py | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/model/ns3gym/ns3gym/ns3env.py b/model/ns3gym/ns3gym/ns3env.py index fdc1d7ab4..605ccc8a5 100644 --- a/model/ns3gym/ns3gym/ns3env.py +++ b/model/ns3gym/ns3gym/ns3env.py @@ -24,7 +24,7 @@ class Ns3ZmqBridge(object): """docstring for Ns3ZmqBridge""" - def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, src_dir=os.getcwd()): + def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, src_dir=os.getcwd(), sim_file=""): super(Ns3ZmqBridge, self).__init__() port = int(port) self.port = port @@ -36,6 +36,7 @@ def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, sr self.wafPid = None self.ns3Process = None self.src_dir = src_dir + self.sim_file = sim_file context = zmq.Context() self.socket = context.socket(zmq.REP) @@ -64,7 +65,7 @@ def __init__(self, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, sr if self.startSim: # run simulation script - self.ns3Process = start_sim_script(port, simSeed, simArgs, debug, src_dir) + self.ns3Process = start_sim_script(sim_file, port, simSeed, simArgs, debug, src_dir) else: print("Waiting for simulation script to connect on port: tcp://localhost:{}".format(port)) print('Please start proper ns-3 simulation script using ./waf --run "..."') @@ -362,7 +363,7 @@ def _pack_data(self, actions, spaceDesc): class Ns3Env(gym.Env): - def __init__(self, stepTime=0, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, src_dir=os.getcwd()): + def __init__(self, stepTime=0, port=0, startSim=True, simSeed=0, simArgs={}, debug=False, src_dir=os.getcwd(), sim_file=None): self.stepTime = stepTime self.port = port self.startSim = startSim @@ -370,6 +371,7 @@ def __init__(self, stepTime=0, port=0, startSim=True, simSeed=0, simArgs={}, deb self.simArgs = simArgs self.debug = debug self.src_dir = src_dir + self.sim_file = sim_file # Filled in reset function self.ns3ZmqBridge = None @@ -380,7 +382,7 @@ def __init__(self, stepTime=0, port=0, startSim=True, simSeed=0, simArgs={}, deb self.state = None self.steps_beyond_done = None - self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug, self.src_dir) + self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug, self.src_dir, self.sim_file) self.ns3ZmqBridge.initialize_env(self.stepTime) self.action_space = self.ns3ZmqBridge.get_action_space() self.observation_space = self.ns3ZmqBridge.get_observation_space() @@ -415,7 +417,7 @@ def reset(self): self.ns3ZmqBridge = None self.envDirty = False - self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug, self.src_dir) + self.ns3ZmqBridge = Ns3ZmqBridge(self.port, self.startSim, self.simSeed, self.simArgs, self.debug, self.src_dir, self.sim_file) self.ns3ZmqBridge.initialize_env(self.stepTime) self.action_space = self.ns3ZmqBridge.get_action_space() self.observation_space = self.ns3ZmqBridge.get_observation_space() diff --git a/model/ns3gym/ns3gym/start_sim.py b/model/ns3gym/ns3gym/start_sim.py index 8ce03ca84..3e1537b3f 100644 --- a/model/ns3gym/ns3gym/start_sim.py +++ b/model/ns3gym/ns3gym/start_sim.py @@ -69,7 +69,7 @@ def build_ns3_project(debug=True): os.chdir(cwd) -def start_sim_script(port=5555, sim_seed=0, sim_args={}, debug=False, src_dir=os.getcwd()): +def start_sim_script(sim_file, port=5555, sim_seed=0, sim_args={}, debug=False, src_dir=os.getcwd()): """ Actually run the ns3 scenario """ @@ -79,7 +79,7 @@ def start_sim_script(port=5555, sim_seed=0, sim_args={}, debug=False, src_dir=os os.chdir(base_ns3_dir) - ns3_string = ns3_path + ' run "' + sim_script_name + '/sim' + ns3_string = ns3_path + ' run "' + sim_script_name + '/' + str(sim_file) if port: ns3_string += ' --openGymPort=' + str(port) From a758ccb3b80b28c8cad3379bec051e72235acd22 Mon Sep 17 00:00:00 2001 From: Ruben Queiros Date: Tue, 26 Sep 2023 10:16:45 +0100 Subject: [PATCH 5/5] fix protobuf version --- model/ns3gym/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ns3gym/requirements.txt b/model/ns3gym/requirements.txt index fdbdec909..d01e130f8 100644 --- a/model/ns3gym/requirements.txt +++ b/model/ns3gym/requirements.txt @@ -1,4 +1,4 @@ pyzmq numpy -protobuf==3.20.3 +protobuf==3.19.0 gym