Giter Site home page Giter Site logo

tkn-tub / ns3-gym Goto Github PK

View Code? Open in Web Editor NEW
496.0 27.0 195.0 125.44 MB

ns3-gym - The Playground for Reinforcement Learning in Networking Research

License: GNU General Public License v2.0

Python 25.28% C++ 65.17% CMake 9.55%
ns3 gym-environment openai-gym reinforcement-learning reinforcement-learning-environments

ns3-gym's Introduction

ns3-gym

OpenAI Gym is a toolkit for reinforcement learning (RL) widely used in research. The network simulator ns-3 is the de-facto standard for academic and industry studies in the areas of networking protocols and communication technologies. ns3-gym is a framework that integrates both OpenAI Gym and ns-3 in order to encourage usage of RL in networking research.

Installation

  1. Install all required dependencies required by ns-3.
# minimal requirements for C++:
apt-get install gcc g++ python3 python3-pip cmake

Check ns-3 requirements

  1. Install ZMQ, Protocol Buffers and pkg-config libs:
sudo apt-get update
apt-get install libzmq5 libzmq3-dev
apt-get install libprotobuf-dev
apt-get install protobuf-compiler
apt-get install pkg-config
  1. Clone ns3-gym repository in to contrib directory and change the branch:
cd ./contrib
git clone https://github.com/tkn-tub/ns3-gym.git ./opengym
cd opengym/
git checkout app-ns-3.36+

Check working with cmake

It is important to use the opengym as the name of the ns3-gym app directory.

  1. Configure and build ns-3 project:
./ns3 configure --enable-examples
./ns3 build

Note: Opengym Protocol Buffer messages (C++ and Python) are build during configure.

  1. Install ns3gym located in model/ns3gym (Python3 required)
cd ./contrib/opengym/
pip3 install --user ./model/ns3gym
  1. (Optional) Install all libraries required by your agent (like tensorflow, keras, etc.).

  2. Run example:

cd ./contrib/opengym/examples/opengym/ 
./simple_test.py
  1. (Optional) Start ns-3 simulation script and Gym agent separately in two terminals (useful for debugging):
# Terminal 1
./ns3 run "opengym"

# Terminal 2
cd ./contrib/opengym/examples/opengym/ 
./test.py --start=0

Examples

All examples can be found here.

Basic Interface

  1. Example Python script. Note, that gym.make('ns3-v0') starts ns-3 simulation script located in current working directory.
import gym
import ns3gym
import MyAgent
from ns3gym import ns3env

#env = gym.make('ns3-v0')  <--- causes some errors with the new OpenAI Gym framework, please use ns3env.Ns3Env()
env = ns3env.Ns3Env()
obs = env.reset()
agent = MyAgent.Agent()

while True:
  action = agent.get_action(obs)
  obs, reward, done, info = env.step(action)

  if done:
    break
env.close()
  1. Any ns-3 simulation script can be used as a Gym environment. This requires only to instantiate OpenGymInterface and implement the ns3-gym C++ interface consisting of the following functions:
Ptr<OpenGymSpace> GetObservationSpace();
Ptr<OpenGymSpace> GetActionSpace();
Ptr<OpenGymDataContainer> GetObservation();
float GetReward();
bool GetGameOver();
std::string GetExtraInfo();
bool ExecuteActions(Ptr<OpenGymDataContainer> action);

Note, that the generic ns3-gym interface allows to observe any variable or parameter in a simulation.

A more detailed description can be found in our Paper.

Cognitive Radio

We consider the problem of radio channel selection in a wireless multi-channel environment, e.g. 802.11 networks with external interference. The objective of the agent is to select for the next time slot a channel free of interference. We consider a simple illustrative example where the external interference follows a periodic pattern, i.e. sweeping over all channels one to four in the same order as shown in the table.

drawing

We created such a scenario in ns-3 using existing functionality from ns-3, i.e. interference created using WaveformGenerator class and sensing performed using SpectrumAnalyzer class.

Such a periodic interferer can be easily learned by an RL-agent so that based on the current observation of the occupation on each channel in a given time slot the correct channel can be determined for the next time slot avoiding any collision with the interferer.

Our proposed RL mapping is:

  • observation - occupation on each channel in the current time slot, i.e. wideband-sensing,
  • actions - set the channel to be used for the next time slot,
  • reward - +1 in case of no collision with interferer; otherwise -1,
  • gameover - if more than three collisions happened during the last ten time-slots

The figure below shows the learning performance when using a simple neural network with fully connected input and an output layer. We see that after around 80 episodes the agent is able to perfectly predict the next channel state from the current observation hence avoiding any collision with the interference.

The full source code of the example can be found here.

drawing

Note, that in a more realistic scenario the simple waveform generator in this example can be replaced by a real wireless technology like LTE unlicensed (LTE-U).

RL-TCP

The proper RL-TCP agent example is still under development. However, we have already implemented and released two versions (i.e. time and event-based) of an interface allowing to monitor parameters of a TCP instance and control its Congestion Window and Slow Start Threshold -- see details here. Note, that both versions inherits from TcpCongestionOps and hence can be used as an argument for ns3::TcpL4Protocol::SocketType.

Moreover, using the event-based interface, we already have an example Python Gym agent that implements TCP NewReno and communicates with the ns-3 simulation process using ns3gym -- see here. The example can be used as a starting point to implement an RL-based TCP congestion control algorithms.

In order to run it, please execute:

cd ./contrib/opengym/examples/rl-tcp/
./test_tcp.py

Or in two terminals:

# Terminal 1:
./ns3 run "rl-tcp --transport_prot=TcpRl"

# Terminal 2:
cd ./contrib/opengym/examples/rl-tcp/
./test_tcp.py --start=0

Note, that our Python TCP NewReno implementation achieves the same number of transmitted packets like the one implemented in ns3 (see the output of ns-3 simulation, i.e. RxPkts: 5367 in both cases). Please execute the following command to cross-check:

./ns3 run "rl-tcp --transport_prot=TcpNewReno"

Contact

  • Piotr Gawlowicz, TU-Berlin, gawlowicz@tkn
  • Anatolij Zubow, TU-Berlin, zubow@tkn
  • tkn = tkn.tu-berlin.de

How to reference ns3-gym?

Please use the following bibtex :

@inproceedings{ns3gym,
  Title = {{ns-3 meets OpenAI Gym: The Playground for Machine Learning in Networking Research}},
  Author = {Gaw{\l}owicz, Piotr and Zubow, Anatolij},
  Booktitle = {{ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems (MSWiM)}},
  Year = {2019},
  Location = {Miami Beach, USA},
  Month = {November},
  Url = {http://www.tkn.tu-berlin.de/fileadmin/fg112/Papers/2019/gawlowicz19_mswim.pdf
}

ns3-gym's People

Contributors

a-andre avatar haidlir avatar mchwalisz avatar pgawlowicz avatar prototact avatar rukyr97 avatar zubow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ns3-gym's Issues

run rl-tcp test_tcp.py stuck at env = ns3env.Ns3Env

run test_tcp.py which in rl-tcp,some problems occurred.
the code will stuck at this line:
env = ns3env.Ns3Env(port=port, stepTime=stepTime, startSim=startSim, simSeed=seed, simArgs=simArgs, debug=debug)
i use keyboard to interrput:
file "/Users/lyf2481/workspace/ns-allinone-3.33/ns-3.33/contrib/opengym/ns3-gym-master/scratch/rl-tcp/test_tcp.py", line 37, in
env = ns3env.Ns3Env()
File "/usr/local/lib/python3.9/site-packages/ns3gym/ns3env.py", line 381, in init
self.ns3ZmqBridge.initialize_env(self.stepTime)
File "/usr/local/lib/python3.9/site-packages/ns3gym/ns3env.py", line 151, in initialize_env
request = self.socket.recv()
File "zmq/backend/cython/socket.pyx", line 781, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 817, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 186, in zmq.backend.cython.socket._recv_copy
File "zmq/backen

And i want to ask how to solve this problem,thanks a lot

How to implement RSVP protocol?

Recently, I have been studying various commonly used protocol emulation. May I ask if NS3 can realize RSVP protocol emulation? I have not seen anyone realize RSVP on the Internet, so I have a skeptical attitude about the feasibility.

waf build error: ‘zmq::recv_flags’ has not been declared

I hit the following error when I tried to install as per instructions in Readme.

../src/opengym/model/opengym_interface.cc: In member function ‘void ns3::OpenGymInterface::Init()’:
../src/opengym/model/opengym_interface.cc:192:36: error: ‘zmq::send_flags’ has not been declared
   m_zmq_socket.send (request, zmq::send_flags::none);
                                    ^~~~~~~~~~
../src/opengym/model/opengym_interface.cc:197:41: error: ‘zmq::recv_flags’ has not been declared
   (void) m_zmq_socket.recv (reply, zmq::recv_flags::none);
                                         ^~~~~~~~~~
../src/opengym/model/opengym_interface.cc: In member function ‘void ns3::OpenGymInterface::NotifyCurrentState()’:
../src/opengym/model/opengym_interface.cc:259:36: error: ‘zmq::send_flags’ has not been declared
   m_zmq_socket.send (request, zmq::send_flags::none);
                                    ^~~~~~~~~~
../src/opengym/model/opengym_interface.cc:264:41: error: ‘zmq::recv_flags’ has not been declared
   (void) m_zmq_socket.recv (reply, zmq::recv_flags::none);
                                         ^~~~~~~~~~

Time-based Interface Between Environment and Agent

Hi,

I have been experimenting on the test_tcp.py using a time-based interface between environment and agent. I set the tcpEnvTimeStep = 0.1 sec in sim.cc to execute the action from an agent and then send the state information to agent after every 0.1 seconds. The obtained output is out of synchronization and seems like the agent and simulations environment are updating values at different times. For example, this is the output for first 10 step calls which prints episode, step, state of 16 elements, reward, done, info:

Episode:  0  step:  1 [1, 1, 363241, 2, 4294967295, 340, 340, 0, 0, 0, 0, 0, 180000, 0, 0, 0] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  2 [1, 1, 463241, 2, 4294967295, 341, 340, 0, 0, 0, 0, 0, 180000, 182571, 0, 0] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  3 [1, 1, 563241, 2, 4294967295, 341, 340, 0, 0, 0, 0, 0, 180000, 0, 0, 0] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  4 [1, 1, 663241, 2, 4294967295, 341, 340, 0, 0, 0, 0, 0, 180000, 0, 0, 0] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  5 [1, 1, 763241, 2, 4294967295, 342, 340, 340, 340, 1, 1, 205578, 180000, 382528, 382528, 3400] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  6 [1, 1, 863241, 2, 4294967295, 342, 340, 0, 0, 0, 0, 0, 180000, 0, 0, 0] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  7 [1, 1, 963241, 2, 4294967295, 342, 340, 0, 0, 0, 0, 0, 180000, 0, 0, 0] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  8 [1, 1, 1063241, 2, 4294967295, 342, 340, 0, 0, 0, 0, 0, 180000, 0, 0, 0] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  9 [1, 1, 1163241, 2, 4294967295, 343, 340, 340, 340, 1, 1, 227755, 180000, 382528, 382528, 3400] 0.0 False {}
----------------------------------------------------------------------------------------
Episode:  0  step:  10 [1, 1, 1263241, 2, 4294967295, 343, 340, 0, 0, 0, 0, 0, 180000, 0, 0, 0] 0.0 False {}

On each time step I am increasing the 6th element in the state by 1, but it's not showing up like that. Can someone please explain what can be the probable reason for this desynchronization? When I set the tcpEnvTimeStep = 1 or higher, it works fine.

Invalid syntax when installing ns3gym python package

Got an error while trying to install the ns3gym python package:

pip3 install /home/repo/ns3- gym/src/opengym/model/ns3gym Processing /home/repo/ns3-gym/src/opengym/model/ns3gym Collecting pyzmq (from ns3gym===0.1.0) Using cached https://files.pythonhosted.org/packages/d7/4f/2e09600112c1e69ea7eefef3db443d966ae670a5b9fa229fe6eb84e945a4/pyzmq-22.0.2.tar.gz Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-eqvij9yl/pyzmq/setup.py", line 259 info(f"Found zmq.h in {include_dir}") ^ SyntaxError: invalid syntax

I have the following libzmq installed on Ubuntu 16.04.

libzmq3-dev/xenial-updates,xenial-security,now 4.1.4-7ubuntu0.1 amd64 [installed]
libzmq5/xenial-updates,xenial-security,now 4.1.4-7ubuntu0.1 amd64 [installed]

Disclosure: I had an issue with building prior but reverting the commit that changed the depreciated zmq methods worked fine.

sim.cc

hi, when i modified the parameters of sim.cc in tcp-rl. then it show me some errors.

Build ns-3 project if required
Waf: Entering directory /home/ubuntu/ns3-gym-master/build' [1819/1880] Compiling scratch/rl-tcp/sim.cc Waf: Leaving directory /home/ubuntu/ns3-gym-master/build'

so what shoud i do ?thanks.

string: No such file or directory

When I run the script ./waf build, it rhrew a exception which is string: No such file or directory, but I have installed package gcc, g++ and build-essential, how to solve this problem?

No opengym module after ./waf configure and build

Modules built:
antenna aodv applications
bridge buildings config-store
core csma csma-layout
dsdv dsr energy
fd-net-device flow-monitor internet
internet-apps lr-wpan lte
mesh mobility mpi
netanim (no Python) network nix-vector-routing
olsr point-to-point point-to-point-layout
propagation sixlowpan spectrum
stats tap-bridge test (no Python)
topology-read traffic-control uan
virtual-net-device visualizer wave
wifi wimax

Modules not built (see ns-3 tutorial for explanation):
brite click openflow

After conduct ./waf configure and ./waf build, the opengym module doesn't show either in module-built area or in module-not-built area. Why dose this happen? I have tried many times. Please give me some suggestions. Thanks!

fatal error: google/protobuf/port_def.inc: No such file or directory

In file included from ../src/opengym/model/container.h:27:0,
from ../src/opengym/model/container.cc:23:
../src/opengym/model/messages.pb.h:10:10: fatal error: google/protobuf/port_def.inc: No such file or directory
#include <google/protobuf/port_def.inc>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

Waf: Leaving directory `/home/zsy/ns3-gym-master/build'
Build failed
-> task in 'ns3-opengym' failed with exit status 1 (run with -v to display more information

when i run ./waf build ,meet the question !how can i solve the problem?

waf directory dependency

The directory where I run the gym environment is hard encoded into the waf command. Is it possible to wrap the environment in a way that it can be invoked from any directory?

Validation of results from test_tcp.py in ns3-gym

Dear @pgawlowicz and ns3-gym team,

Just a question and some echos. After successfully running the test_tcp.py, I collected the results from the actions and observation and got the part of the table below to represent TCP-NewReno

stepIdx Act_new_cWnd Act_new_ssThresh Obs_cWnd Obs_ssThresh Info bytesInFlight segmentSize segmentsAcked
1 1 18552368 340 4294967295 CwndEvent 37104736 340 0
2 1 18552368 340 4294967295 CongestionStateSet 37718224 340 0
3 1 18859112 340 4294967295 CwndEvent 37718224 340 0
4 1 18859112 340 4294967295 PktsAcked 37104736 340 1
5 680 18552368 340 4294967295 IncreaseWindow 37104736 340 1

CSV flie Here

Regarding to existing TCP-NewReno in ns-2/ns-3, we shall be able to plot the x = ['simulate time (mms)'], y = ['cwnd'] as below fig in ns-2/ns-3
Fig ns2-RewReno

Since the results we got for the y-axis is the 'stepIdx' instead of the 'time'
Fig ns3-gym-RewReno

As the potential Benchmark for adaptive/learning-based network simulator, is it possible to get the time parameters to compare the existing results as NewReno in ns3-gym? Otherwise, it is still a bit hard to validate the future rl-algorithms on the ns3-gym testbed with existing results in ns-2/ns-3.

Again many thanks for your amazing works on this research project, :)

Can you offer some example code?

Hi:
Thanks for your excellent work.
I am a new to ns3 and RL.I am doing some job on RL in TCP congestion control. But I found that the reward of TCPRL seems not be defined.
Can you offer some example code about TCLRL?
Best wishes
Wu

build failed, fatal error: ns3/opengym-module.h

when I build ns3-gym by the ./waf build, I get an error like:
In file included from ../scratch/linear-mesh-2/mygym.cc:21:0: ../scratch/linear-mesh-2/mygym.h:26:32: fatal error: ns3/opengym-module.h: No such file or directory compilation terminated. Waf: Leaving directory '/home/wangs0622/ns_3_workspace/ns3-gym/build' Build failed -> task in 'linear-mesh-2' failed with exit status 1 (run with -v to display more information)

And I found the opengym-module.h is used by many files in scratch directory. But the opengym-module.h is not existed in the build/ns/ directory. So I think the error reason is that I don't have the opengym-module.h file.

How to deal with it? and where can I get this header file? Thank you~

Unable to Build (./waf build )

Hii @pgawlowicz I am using the Ubuntu 18.04 ,python 3 venv .
I have completed the step 1 and 2 of the installation.

when I enter the command below I am getting the following results
"./waf configure"

Checking for compilation flag -Wl,--soname=foo support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:43 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wl,--soname=foo', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_2d2e3b7e2aaf23c37c2f65bb5c94895a/testbuild/test.cpp.1.o']
ok
Checking for compilation flag -std=c++11 support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:43 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_2d2e3b7e2aaf23c37c2f65bb5c94895a/testbuild/test.cpp.1.o']
ok
Checking for program 'python' : /home/pranav/tf_1/bin/python
10:12:43 runner ['/home/pranav/tf_1/bin/python', '-c', 'import imp;print(imp.get_tag())']
10:12:43 runner ['/home/pranav/tf_1/bin/python', '-c', 'import sys\nfor x in sys.version_info: print(str(x))']
10:12:43 runner ['/home/pranav/tf_1/bin/python', '-c', "from distutils.sysconfig import get_config_var, get_python_lib\n\nprint(repr(get_python_lib(standard_lib=0, prefix='/usr/local') or ''))"]
10:12:43 runner ['/home/pranav/tf_1/bin/python', '-c', "from distutils.sysconfig import get_config_var, get_python_lib\n\nprint(repr(get_python_lib(plat_specific=1, standard_lib=0, prefix='/usr/local') or ''))"]
Checking for python version >= 2.3 : 3.6.9
10:12:43 runner ['/home/pranav/tf_1/bin/python', '-c', "from distutils.sysconfig import get_config_var, get_python_lib\n\nprint(repr(get_config_var('prefix') or ''))\nprint(repr(get_config_var('SO') or ''))\nprint(repr(get_config_var('LDFLAGS') or ''))\nprint(repr(get_config_var('LIBDIR') or ''))\nprint(repr(get_config_var('LIBPL') or ''))\nprint(repr(get_config_var('INCLUDEPY') or ''))\nprint(repr(get_config_var('Py_ENABLE_SHARED') or ''))\nprint(repr(get_config_var('MACOSX_DEPLOYMENT_TARGET') or ''))\nprint(repr(get_config_var('LDSHARED') or ''))\nprint(repr(get_config_var('CFLAGS') or ''))\nprint(repr(get_config_var('LDVERSION') or ''))"]
python-config : /usr/bin/python3.6-config
Asking python-config for pyembed '--cflags --libs --ldflags' flags : 10:12:43 runner ['/usr/bin/python3.6-config', '--cflags', '--libs', '--ldflags']
yes
Testing pyembed configuration : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:43 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-g', '-fdebug-prefix-map=/build/python3.6-e9shER/python3.6-3.6.9=.', '-fstack-protector', '-g', '-fwrapv', '-O3', '-I/usr/include/python3.6m', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DPYTHONDIR="/usr/local/lib/python3.6/site-packages"', '-DPYTHONARCHDIR="/usr/local/lib/python3.6/site-packages"', '-DNDEBUG', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_664d4af7ee48b7615e673fe6e142fd3e/testbuild/test.cpp.1.o']
10:12:43 runner ['/usr/bin/g++', '-Xlinker', '-export-dynamic', '-Wl,-O1', '-Wl,-Bsymbolic-functions', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_664d4af7ee48b7615e673fe6e142fd3e/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-L/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu', '-L/usr/lib', '-lpython3.6m', '-lpthread', '-ldl', '-lutil', '-lm', '-lpython3.6m', '-lpthread', '-ldl', '-lutil', '-lm']
yes
Asking python-config for pyext '--cflags --libs --ldflags' flags : 10:12:43 runner ['/usr/bin/python3.6-config', '--cflags', '--libs', '--ldflags']
yes
Testing pyext configuration : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:43 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-fPIC', '-g', '-fdebug-prefix-map=/build/python3.6-e9shER/python3.6-3.6.9=.', '-fstack-protector', '-g', '-fwrapv', '-O3', '-I/usr/include/python3.6m', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DPYTHONDIR="/usr/local/lib/python3.6/site-packages"', '-DPYTHONARCHDIR="/usr/local/lib/python3.6/site-packages"', '-DHAVE_PYEMBED=1', '-DNDEBUG', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_05d4a195eadd9c1930fcf232f478e88d/testbuild/test.cpp.1.o']
10:12:43 runner ['/usr/bin/g++', '-shared', '-Xlinker', '-export-dynamic', '-Wl,-O1', '-Wl,-Bsymbolic-functions', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_05d4a195eadd9c1930fcf232f478e88d/testbuild/testprog.cpython-36m-x86_64-linux-gnu.so', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-L/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu', '-L/usr/lib', '-lpython3.6m', '-lpthread', '-ldl', '-lutil', '-lm', '-lpython3.6m', '-lpthread', '-ldl', '-lutil', '-lm']
yes
Checking for compilation flag -fvisibility=hidden support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:43 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-fvisibility=hidden', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DPYTHONDIR="/usr/local/lib/python3.6/site-packages"', '-DPYTHONARCHDIR="/usr/local/lib/python3.6/site-packages"', '-DHAVE_PYEMBED=1', '-DHAVE_PYEXT=1', '-DHAVE_PYTHON_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_2d2e3b7e2aaf23c37c2f65bb5c94895a/testbuild/test.cpp.1.o']
ok
Checking for compilation flag -Wno-array-bounds support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:43 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-array-bounds', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DPYTHONDIR="/usr/local/lib/python3.6/site-packages"', '-DPYTHONARCHDIR="/usr/local/lib/python3.6/site-packages"', '-DHAVE_PYEMBED=1', '-DHAVE_PYEXT=1', '-DHAVE_PYTHON_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_2d2e3b7e2aaf23c37c2f65bb5c94895a/testbuild/test.cpp.1.o']
ok
Checking for pybindgen location : not found
Checking for python module 'pybindgen' : 10:12:43 runner ['/home/pranav/tf_1/bin/python', '-c', "\nimport pybindgen as current_module\nversion = getattr(current_module, 'version', None)\nif version is not None:\n\tprint(str(version))\nelse:\n\tprint('unknown version')\n"]
not found
pybindgen missing => no python bindings
Checking boost includes : 1_65_1
path : /usr/include
Checking boost libs : ok
path : /usr/lib/x86_64-linux-gnu
shared libs : ['boost_system', 'boost_signals', 'boost_filesystem']
static libs : []
Checking for boost linkage : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:43 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-I/usr/include', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DPYTHONDIR="/usr/local/lib/python3.6/site-packages"', '-DPYTHONARCHDIR="/usr/local/lib/python3.6/site-packages"', '-DHAVE_PYEMBED=1', '-DHAVE_PYEXT=1', '-DHAVE_PYTHON_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_49ed79c1b1ce43c64afd028f399eb89a/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_49ed79c1b1ce43c64afd028f399eb89a/testbuild/testprog', '-Wl,-Bstatic', '-L/usr/lib/x86_64-linux-gnu', '-Wl,-Bdynamic', '-L/usr/lib/x86_64-linux-gnu', '-lboost_system', '-lboost_signals', '-lboost_filesystem']
ok
Checking for click location : not found
Checking for program 'pkg-config' : /usr/bin/pkg-config
Checking for 'gtk+-3.0' : 10:12:44 runner ['/usr/bin/pkg-config', '--cflags', '--libs', 'gtk+-3.0']
yes
Checking for 'libxml-2.0' : 10:12:44 runner ['/usr/bin/pkg-config', '--cflags', '--libs', 'libxml-2.0']
yes
checking for uint128_t : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_38df2785b42b8c92055f37c9fd370eb8/testbuild/test.cpp.1.o']
not found
checking for __uint128_t : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_8d5a03a6a9f7bc11746aaf461f984756/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_8d5a03a6a9f7bc11746aaf461f984756/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking high precision implementation : 128-bit integer (default)
Checking for header stdint.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_1a09cfc9fb45f914d2e304bf133ccb1d/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_1a09cfc9fb45f914d2e304bf133ccb1d/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header inttypes.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_ca7dee785331fddfa339d046fe382963/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_ca7dee785331fddfa339d046fe382963/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header sys/inttypes.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_4bc4c71d7ce7674d3dffabbc31459be4/testbuild/test.cpp.1.o']
not found
Checking for header sys/types.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_0cf257edca2f78886c39a7e4ba0393fc/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_0cf257edca2f78886c39a7e4ba0393fc/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header sys/stat.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '-DHAVE_SYS_TYPES_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_ae11500baf6d9e3fa1211e25e7f294a6/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_ae11500baf6d9e3fa1211e25e7f294a6/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header dirent.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_8465d2110fa93e2611a8e57b723c6e6d/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_8465d2110fa93e2611a8e57b723c6e6d/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header stdlib.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '-DHAVE_DIRENT_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_368f0e7e9a2a6ca651dbf9dbe14ddaa9/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_368f0e7e9a2a6ca651dbf9dbe14ddaa9/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header signal.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '-DHAVE_DIRENT_H=1', '-DHAVE_STDLIB_H=1', '-DHAVE_GETENV=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_81c374c25b0bd71b96f72a2eb280a9aa/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_81c374c25b0bd71b96f72a2eb280a9aa/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header pthread.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-pthread', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '-DHAVE_DIRENT_H=1', '-DHAVE_STDLIB_H=1', '-DHAVE_GETENV=1', '-DHAVE_SIGNAL_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_48845281135807b8b82361ece0817d11/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', '-pthread', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_48845281135807b8b82361ece0817d11/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header stdint.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_INTTYPES_H=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '-DHAVE_DIRENT_H=1', '-DHAVE_STDLIB_H=1', '-DHAVE_GETENV=1', '-DHAVE_SIGNAL_H=1', '-DHAVE_PTHREAD_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_1a09cfc9fb45f914d2e304bf133ccb1d/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_1a09cfc9fb45f914d2e304bf133ccb1d/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header inttypes.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '-DHAVE_DIRENT_H=1', '-DHAVE_STDLIB_H=1', '-DHAVE_GETENV=1', '-DHAVE_SIGNAL_H=1', '-DHAVE_PTHREAD_H=1', '-DHAVE_STDINT_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_ca7dee785331fddfa339d046fe382963/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_ca7dee785331fddfa339d046fe382963/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header sys/inttypes.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '-DHAVE_DIRENT_H=1', '-DHAVE_STDLIB_H=1', '-DHAVE_GETENV=1', '-DHAVE_SIGNAL_H=1', '-DHAVE_PTHREAD_H=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_4bc4c71d7ce7674d3dffabbc31459be4/testbuild/test.cpp.1.o']
not found
Checking for library rt : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-pthread', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE___UINT128_T=1', '-DINT64X64_USE_128=1', '-DHAVE_SYS_TYPES_H=1', '-DHAVE_SYS_STAT_H=1', '-DHAVE_DIRENT_H=1', '-DHAVE_STDLIB_H=1', '-DHAVE_GETENV=1', '-DHAVE_SIGNAL_H=1', '-DHAVE_PTHREAD_H=1', '-DHAVE_STDINT_H=1', '-DHAVE_INTTYPES_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_e96e3fa387a9ef31b206f8f5b7829ec9/testbuild/test.cpp.1.o']
10:12:44 runner ['/usr/bin/g++', '-pthread', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_e96e3fa387a9ef31b206f8f5b7829ec9/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-lrt']
yes
Checking for header sys/ioctl.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:44 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_66e7d865aa490befd8e20853fe9e7725/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_66e7d865aa490befd8e20853fe9e7725/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header net/if.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_a25d5372b011302189a0dd6f6335481f/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_a25d5372b011302189a0dd6f6335481f/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header net/ethernet.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_fc76bd279eb6cf75d3546d7daed38827/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_fc76bd279eb6cf75d3546d7daed38827/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header linux/if_tun.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_3dba81d6c88a83b820fc8e418fe16503/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_3dba81d6c88a83b820fc8e418fe16503/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for header netpacket/packet.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_IF_TUN_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_a3b6c137e13244520e808e84efc1f3ef/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_a3b6c137e13244520e808e84efc1f3ef/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic']
yes
Checking for NSC location : not found
Checking for OpenFlow location : not found
Checking for library zmq : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_PACKET_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_126c90c03e30a19a2a733e834b6fa12f/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_126c90c03e30a19a2a733e834b6fa12f/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-lzmq']
yes
Checking for library protobuf : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_6629fe86b8034aed1e91a4eb2b0d78f4/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_6629fe86b8034aed1e91a4eb2b0d78f4/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-lprotobuf']
yes
Checking for program 'protoc' : /usr/bin/protoc
Checking for protoc version : 3.6.1
Build ns3gym Protobuf C++ messages : Done
Build ns3gym Protobuf Python messages : Done
Checking for 'sqlite3' : 10:12:45 runner ['/usr/bin/pkg-config', '--cflags', '--libs', 'sqlite3']
yes
Checking for header linux/if_tun.h : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_3dba81d6c88a83b820fc8e418fe16503/testbuild/test.cpp.1.o']
10:12:45 runner ['/usr/bin/g++', '-lzmq', '-lprotobuf', 'test.cpp.1.o', '-o/home/pranav/ns3-gym/build/.conf_check_3dba81d6c88a83b820fc8e418fe16503/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-lzmq', '-lprotobuf']
yes
Checking for program 'sudo' : /usr/bin/sudo
Checking for program 'valgrind' : not found
Checking for 'gsl' : 10:12:45 runner ['/usr/bin/pkg-config', '--cflags', '--libs', 'gsl']
not found
python-config : not found
Checking for compilation flag -fstrict-aliasing support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_2d2e3b7e2aaf23c37c2f65bb5c94895a/testbuild/test.cpp.1.o']
ok
Checking for compilation flag -fstrict-aliasing support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/gcc', '-fstrict-aliasing', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '../test.c', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_c8c7e0913edff928fbeb53a38a395fb0/testbuild/test.c.1.o']
ok
Checking for compilation flag -Wstrict-aliasing support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '../test.cpp', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_2d2e3b7e2aaf23c37c2f65bb5c94895a/testbuild/test.cpp.1.o']
ok
Checking for compilation flag -Wstrict-aliasing support : Erroneous order constraint 'after'='link' on task class 'SuidBuild_task'
Erroneous order constraint 'after'='link' on task class 'print_introspected_doxygen_task'
Erroneous order constraint 'after'='link' on task class 'run_python_unit_tests_task'
10:12:45 runner ['/usr/bin/gcc', '-Wstrict-aliasing', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '../test.c', '-c', '-o/home/pranav/ns3-gym/build/.conf_check_c8c7e0913edff928fbeb53a38a395fb0/testbuild/test.c.1.o']
ok
Checking for program 'doxygen' : not found
---- Summary of optional NS-3 features:
Build profile : debug
Build directory :
BRITE Integration : not enabled (BRITE not enabled (see option --with-brite))
DES Metrics event collection : not enabled (defaults to disabled)
Emulation FdNetDevice : enabled
Examples : not enabled (defaults to disabled)
File descriptor NetDevice : enabled
GNU Scientific Library (GSL) : not enabled (GSL not found)
Gcrypt library : not enabled (libgcrypt not found: you can use libgcrypt-config to find its location.)
GtkConfigStore : enabled
MPI Support : not enabled (option --enable-mpi not selected)
NS-3 Click Integration : not enabled (nsclick not enabled (see option --with-nsclick))
NS-3 OpenFlow Integration : not enabled (OpenFlow not enabled (see option --with-openflow))
Network Simulation Cradle : not enabled (NSC not found (see option --with-nsc))
PlanetLab FdNetDevice : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
PyViz visualizer : not enabled (Python Bindings are needed but not enabled)
Python Bindings : not enabled (PyBindGen missing)
Real Time Simulator : enabled
SQlite stats data output : enabled
Tap Bridge : enabled
Tap FdNetDevice : enabled
Tests : not enabled (defaults to disabled)
Threading Primitives : enabled
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
XmlIo : enabled

also when I run
" ./waf build " after above output I get

This error with Build failed
Waf: Leaving directory `/home/pranav/ns3-gym/build'

Build failed
-> task in 'ns3-opengym' failed with exit status 1:
{task 140520639633000: cxx opengym_interface.cc -> opengym_interface.cc.1.o}
['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-fPIC', '-pthread', '-I.', '-I..', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '../src/opengym/model/opengym_interface.cc', '-c', '-o/home/pranav/ns3-gym/build/src/opengym/model/opengym_interface.cc.1.o']

Is it possible to run environment and agent on different PCs?

Hello.

My name is Fabián and I am doing my Master's thesis on robust optimization of Wi-Fi networks configuration. First of all, I wanted to thank you and congratulate you for the great contribution that ns3-gym is to the investigation of these topics.

From the readme it is clear to me that it is possible to run the environment (simulation ns-3) and the agent (Python code) on separate terminals. But is it possible to do this on separate PCs? This is because I would like to train the agent on Google Colab, while keeping the network simulator on my PC.

Thank you very much in advance.
Kind regards.

Fabián.

problem in multi-agent "TypeError: 10 has type numpy uint 64, but expected one of : int"

Dear @pgawlowicz and ns3-gym team,

Just a question and some echos. After successfully running the agent1.py, I got this error:

root@jnbai-ThinkPad-T460:/ns29/ns-allinone-3.29/ns-3.29/scratch/multi-agent# ./agent1.py Waiting for simulation script to connect on port: tcp://localhost:5555 Please start proper ns-3 simulation script using ./waf --run "..." Observation space: Dict(box:Box(0, 10, (5,), uint64), discrete:Discrete(5)) None Action space: Dict(box:Box(0, 10, (5,), uint64), discrete:Discrete(5)) None Step: 0 ---obs: (<google.protobuf.pyext._message.RepeatedScalarContainer object at 0x7fa17eab9a40>, 8) ---action: OrderedDict([('box', array([10, 6, 3, 7, 1], dtype=uint64)), ('discrete', 4)]) Step: 1 Done Traceback (most recent call last): File "./agent1.py", line 39, in <module> obs, reward, done, info = env.step(action) File "/usr/local/lib/python3.6/dist-packages/ns3gym/ns3env.py", line 401, in step response = self.ns3ZmqBridge.step(action) File "/usr/local/lib/python3.6/dist-packages/ns3gym/ns3env.py", line 229, in step self.send_actions(actions) File "/usr/local/lib/python3.6/dist-packages/ns3gym/ns3env.py", line 215, in send_actions actionMsg = self._pack_data(actions, self._action_space) File "/usr/local/lib/python3.6/dist-packages/ns3gym/ns3env.py", line 352, in _pack_data subData = self._pack_data(subAction, subActSpaceType) File "/usr/local/lib/python3.6/dist-packages/ns3gym/ns3env.py", line 316, in _pack_data boxContainerPb.uintData.extend(actions) TypeError: 10 has type numpy.uint64, but expected one of: int
How can I correct it?

Again many thanks for your amazing works on this research project, :)

Error: No module named 'ns3gym.messages_pb2'

Dear ns3-gym team,

really nice work, but I bumped into a problem when I try
$ env = gym.make('ns3-v0')

import ns3gym.messages_pb2 as pb

ModuleNotFoundError: No module named 'ns3gym.messages_pb2'
with these error messages and could not empower the env any further.

I guess the messages_pd2 is this one below, but don't know where shall it be put.
https://github.com/grpc/grpc/blob/master/test/http2_test/messages_pb2.py

Any suggestion? noted I clone the ns3-gym with the version and followed your read.me just today - 10/22. Cheers

user's python environment issue

log informations attached as follow .It seems that protoc and protobuf version are incompatible.But i have no idea how to solve it!
Here are protoc and protobuf version information :

wxzhu@sunlaoshilab-W560-G20-Invalid-entry-length-16-Fixed-up-to-11:~/ns3-gym$ protoc --version
libprotoc 3.2.0

wxzhu@sunlaoshilab-W560-G20-Invalid-entry-length-16-Fixed-up-to-11:~$ pip install protobuf 
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: protobuf in ./anaconda3/lib/python3.6/site-packages (3.5.2.post1)
Requirement already satisfied: six>=1.9 in ./anaconda3/lib/python3.6/site-packages (from protobuf) (1.10.0)
Requirement already satisfied: setuptools in ./anaconda3/lib/python3.6/site-packages (from protobuf) (36.5.0.post20170921)
You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
wxzhu@sunlaoshilab-W560-G20-Invalid-entry-length-16-Fixed-up-to-11:~$ pip install --upgrade protobuf
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting protobuf
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c2/f9/28787754923612ca9bfdffc588daa05580ed70698add063a5629d1a4209d/protobuf-3.6.1-cp36-cp36m-manylinux1_x86_64.whl (1.1MB)
    100% |████████████████████████████████| 1.1MB 454kB/s 
Requirement not upgraded as not directly required: setuptools in ./anaconda3/lib/python3.6/site-packages (from protobuf) (36.5.0.post20170921)
Requirement not upgraded as not directly required: six>=1.9 in ./anaconda3/lib/python3.6/site-packages (from protobuf) (1.10.0)
Installing collected packages: protobuf
  Found existing installation: protobuf 3.5.2.post1
    Uninstalling protobuf-3.5.2.post1:
      Successfully uninstalled protobuf-3.5.2.post1
Successfully installed protobuf-3.6.1
You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

informations after ./waf configure

   wxzhu@sunlaoshilab-W560-G20-Invalid-entry-length-16-Fixed-up-to-11:~/ns3-gym$ ./waf configure
    Setting top to                           : /home/wxzhu/ns3-gym 
    Setting out to                           : /home/wxzhu/ns3-gym/build 
    Checking for 'gcc' (C compiler)          : /usr/bin/gcc 
    Checking for cc version                  : 5.4.0 
    Checking for 'g++' (C++ compiler)        : /usr/bin/g++ 
    Checking for compilation flag -Wl,--soname=foo support : ok 
    Checking for compilation flag -std=c++11 support       : ok 
    Checking for program 'python'                          : /home/wxzhu/anaconda3/bin/python 
    Checking for python version                            : (3, 6, 2, 'final', 0) 
    python-config                                          : /home/wxzhu/anaconda3/bin/python3.6-config 
    Asking python-config for pyembed '--cflags --libs --ldflags' flags : yes 
    Testing pyembed configuration                                      : Could not build a python embedded interpreter 
    Testing pyembed configuration                                      : Could not build a python embedded interpreter 
    Checking boost includes                                            : 1_58 
    Checking boost libs                                                : ok 
    Checking for boost linkage                                         : ok 
    Checking for click location                                        : not found 
    Checking for program 'pkg-config'                                  : /usr/bin/pkg-config 
    Checking for 'gtk+-2.0' >= 2.12                                    : yes 
    Checking for 'libxml-2.0' >= 2.7                                   : yes 
    Checking for type uint128_t                                        : not found 
    Checking for type __uint128_t                                      : yes 
    Checking high precision implementation                             : 128-bit integer (default) 
    Checking for header stdint.h                                       : yes 
    Checking for header inttypes.h                                     : yes 
    Checking for header sys/inttypes.h                                 : not found 
    Checking for header sys/types.h                                    : yes 
    Checking for header sys/stat.h                                     : yes 
    Checking for header dirent.h                                       : yes 
    Checking for header stdlib.h                                       : yes 
    Checking for header signal.h                                       : yes 
    Checking for header pthread.h                                      : yes 
    Checking for header stdint.h                                       : yes 
    Checking for header inttypes.h                                     : yes 
    Checking for header sys/inttypes.h                                 : not found 
    Checking for library rt                                            : yes 
    Checking for header sys/ioctl.h                                    : yes 
    Checking for header net/if.h                                       : yes 
    Checking for header net/ethernet.h                                 : yes 
    Checking for header linux/if_tun.h                                 : yes 
    Checking for header netpacket/packet.h                             : yes 
    Checking for NSC location                                          : not found 
    Checking for OpenFlow location                                     : not found 
    Checking for library zmq                                           : yes 
    Checking for library protobuf                                      : yes 
    Checking for program 'protoc'                                      : /home/wxzhu/bin/protoc 
    Checking for protoc version                                        : 3.2.0 
    Build ns3gym Protobuf C++ messages                                 : Done 
    Build ns3gym Protobuf Python messages                              : Done 
    Checking for 'sqlite3'                                             : yes 
    Checking for header linux/if_tun.h                                 : yes 
    Checking for program 'sudo'                                        : /usr/bin/sudo 
    Checking for program 'valgrind'                                    : /usr/bin/valgrind 
    Checking for 'gsl'                                                 : not found 
    python-config                                                      : not found 
    Checking for compilation flag -Wno-error=deprecated-d... support   : ok 
    Checking for compilation flag -Wno-error=deprecated-d... support   : ok 
    Checking for compilation flag -fstrict-aliasing support            : ok 
    Checking for compilation flag -fstrict-aliasing support            : ok 
    Checking for compilation flag -Wstrict-aliasing support            : ok 
    Checking for compilation flag -Wstrict-aliasing support            : ok 
    Checking for program 'doxygen'                                     : /usr/bin/doxygen 
    ---- Summary of optional NS-3 features:
    Build profile                 : debug
    Build directory               : 
    BRITE Integration             : not enabled (BRITE not enabled (see option --with-brite))
    DES Metrics event collection  : not enabled (defaults to disabled)
    Emulation FdNetDevice         : enabled
    Examples                      : not enabled (defaults to disabled)
    File descriptor NetDevice     : enabled
    GNU Scientific Library (GSL)  : not enabled (GSL not found)
    Gcrypt library                : not enabled (libgcrypt not found: you can use libgcrypt-config to find its location.)
    GtkConfigStore                : enabled
    MPI Support                   : not enabled (option --enable-mpi not selected)
    NS-3 Click Integration        : not enabled (nsclick not enabled (see option --with-nsclick))
    NS-3 OpenFlow Integration     : not enabled (OpenFlow not enabled (see option --with-openflow))
    Network Simulation Cradle     : not enabled (NSC not found (see option --with-nsc))
    PlanetLab FdNetDevice         : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
    PyViz visualizer              : not enabled (Python Bindings are needed but not enabled)
    Python Bindings               : not enabled (Python library or headers missing)
    Real Time Simulator           : enabled
    SQlite stats data output      : enabled
    Tap Bridge                    : enabled
    Tap FdNetDevice               : enabled
    Tests                         : not enabled (defaults to disabled)
    Threading Primitives          : enabled
    Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)
    XmlIo                         : enabled
    'configure' finished successfully (3.336s)

**

information after ./waf build .errors happend in this step

**

wxzhu@sunlaoshilab-W560-G20-Invalid-entry-length-16-Fixed-up-to-11:~/ns3-gym$ ./waf build
Waf: Entering directory `/home/wxzhu/ns3-gym/build'
[ 910/1889] Compiling scratch/opengym/sim.cc
[ 912/1889] Compiling scratch/linear-mesh-2/mygym.cc
[ 913/1889] Compiling scratch/linear-mesh-2/sim.cc
[ 914/1889] Compiling scratch/rl-tcp/sim.cc
[ 915/1889] Compiling scratch/rl-tcp/tcp-rl.cc
[ 916/1889] Compiling scratch/scratch-simulator.cc
In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/opengym/sim.cc:23:
./ns3/messages.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^
./ns3/messages.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^
./ns3/messages.pb.h:14:2: error: #error your headers.
 #error your headers.
  ^
In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/opengym/sim.cc:23:
./ns3/messages.pb.h:23:35: fatal error: google/protobuf/arena.h: 没有那个文件或目录
compilation terminated.

In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/linear-mesh-2/mygym.h:26,
                 from ../scratch/linear-mesh-2/mygym.cc:21:
./ns3/messages.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^
./ns3/messages.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^
./ns3/messages.pb.h:14:2: error: #error your headers.
 #error your headers.
  ^
In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/linear-mesh-2/mygym.h:26,
                 from ../scratch/linear-mesh-2/mygym.cc:21:
./ns3/messages.pb.h:23:35: fatal error: google/protobuf/arena.h: 没有那个文件或目录
compilation terminated.

In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/linear-mesh-2/sim.cc:24:
./ns3/messages.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^
./ns3/messages.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^
./ns3/messages.pb.h:14:2: error: #error your headers.
 #error your headers.
  ^
In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/linear-mesh-2/sim.cc:24:
./ns3/messages.pb.h:23:35: fatal error: google/protobuf/arena.h: 没有那个文件或目录
compilation terminated.

In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/rl-tcp/tcp-rl.h:9,
                 from ../scratch/rl-tcp/tcp-rl.cc:1:
./ns3/messages.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^
./ns3/messages.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^
./ns3/messages.pb.h:14:2: error: #error your headers.
 #error your headers.
  ^
In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/rl-tcp/tcp-rl.h:9,
                 from ../scratch/rl-tcp/tcp-rl.cc:1:
./ns3/messages.pb.h:23:35: fatal error: google/protobuf/arena.h: 没有那个文件或目录
compilation terminated.

In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/rl-tcp/sim.cc:54:
./ns3/messages.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^
./ns3/messages.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^
./ns3/messages.pb.h:14:2: error: #error your headers.
 #error your headers.
  ^
In file included from ./ns3/spaces.h:33:0,
                 from ./ns3/container.h:30,
                 from ./ns3/opengym-module.h:10,
                 from ../scratch/rl-tcp/sim.cc:54:
./ns3/messages.pb.h:23:35: fatal error: google/protobuf/arena.h: 没有那个文件或目录
compilation terminated.

Waf: Leaving directory `/home/wxzhu/ns3-gym/build'
Build failed
 -> task in 'opengym' failed (exit status 1): 
	{task 140473613568600: cxx sim.cc -> sim.cc.1.o}
['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-pthread', '-I.', '-I..', '-I/usr/include/gtk-2.0', '-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include', '-I/usr/include/gio-unix-2.0', '-I/usr/include/cairo', '-I/usr/include/pango-1.0', '-I/usr/include/atk-1.0', '-I/usr/include/pixman-1', '-I/usr/include/libpng12', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/harfbuzz', '-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include/freetype2', '-I/usr/include/libxml2', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_SQLITE3=1', '-DHAVE_GTK2=1', '-DHAVE_LIBXML2=1', '../scratch/opengym/sim.cc', '-c', '-o', '/home/wxzhu/ns3-gym/build/scratch/opengym/sim.cc.1.o']
 -> task in 'linear-mesh-2' failed (exit status 1): 
	{task 140473613569272: cxx mygym.cc -> mygym.cc.3.o}
['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-pthread', '-I.', '-I..', '-I/usr/include/gtk-2.0', '-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include', '-I/usr/include/gio-unix-2.0', '-I/usr/include/cairo', '-I/usr/include/pango-1.0', '-I/usr/include/atk-1.0', '-I/usr/include/pixman-1', '-I/usr/include/libpng12', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/harfbuzz', '-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include/freetype2', '-I/usr/include/libxml2', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_SQLITE3=1', '-DHAVE_GTK2=1', '-DHAVE_LIBXML2=1', '../scratch/linear-mesh-2/mygym.cc', '-c', '-o', '/home/wxzhu/ns3-gym/build/scratch/linear-mesh-2/mygym.cc.3.o']
 -> task in 'linear-mesh-2' failed (exit status 1): 
	{task 140473613569496: cxx sim.cc -> sim.cc.3.o}
['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-pthread', '-I.', '-I..', '-I/usr/include/gtk-2.0', '-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include', '-I/usr/include/gio-unix-2.0', '-I/usr/include/cairo', '-I/usr/include/pango-1.0', '-I/usr/include/atk-1.0', '-I/usr/include/pixman-1', '-I/usr/include/libpng12', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/harfbuzz', '-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include/freetype2', '-I/usr/include/libxml2', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_SQLITE3=1', '-DHAVE_GTK2=1', '-DHAVE_LIBXML2=1', '../scratch/linear-mesh-2/sim.cc', '-c', '-o', '/home/wxzhu/ns3-gym/build/scratch/linear-mesh-2/sim.cc.3.o']
 -> task in 'rl-tcp' failed (exit status 1): 
	{task 140473613569944: cxx tcp-rl.cc -> tcp-rl.cc.4.o}
['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-pthread', '-I.', '-I..', '-I/usr/include/gtk-2.0', '-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include', '-I/usr/include/gio-unix-2.0', '-I/usr/include/cairo', '-I/usr/include/pango-1.0', '-I/usr/include/atk-1.0', '-I/usr/include/pixman-1', '-I/usr/include/libpng12', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/harfbuzz', '-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include/freetype2', '-I/usr/include/libxml2', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_SQLITE3=1', '-DHAVE_GTK2=1', '-DHAVE_LIBXML2=1', '../scratch/rl-tcp/tcp-rl.cc', '-c', '-o', '/home/wxzhu/ns3-gym/build/scratch/rl-tcp/tcp-rl.cc.4.o']
 -> task in 'rl-tcp' failed (exit status 1): 
	{task 140473613569720: cxx sim.cc -> sim.cc.4.o}
['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-Wno-error=deprecated-declarations', '-fstrict-aliasing', '-Wstrict-aliasing', '-pthread', '-pthread', '-I.', '-I..', '-I/usr/include/gtk-2.0', '-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include', '-I/usr/include/gio-unix-2.0', '-I/usr/include/cairo', '-I/usr/include/pango-1.0', '-I/usr/include/atk-1.0', '-I/usr/include/pixman-1', '-I/usr/include/libpng12', '-I/usr/include/gdk-pixbuf-2.0', '-I/usr/include/harfbuzz', '-I/usr/include/glib-2.0', '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', '-I/usr/include/freetype2', '-I/usr/include/libxml2', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_SQLITE3=1', '-DHAVE_GTK2=1', '-DHAVE_LIBXML2=1', '../scratch/rl-tcp/sim.cc', '-c', '-o', '/home/wxzhu/ns3-gym/build/scratch/rl-tcp/sim.cc.4.o']

Build failed

when I run ./waf build ,shell shows that :

Build failed
 -> task in 'ns3-opengym-test' failed with exit status 1: 
	{task 140398157760224: cxx opengym-test-suite.cc -> opengym-test-suite.cc.3.o}
['/usr/bin/g++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-std=c++11', '-fstrict-aliasing', '-Wstrict-aliasing', '-I../src/opengym', '-fPIC', '-pthread', '-I.', '-I..', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_PACKET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '-DHAVE_IF_TUN_H=1', '-DHAVE_GSL=1', '-DNS_TEST_SOURCEDIR="src/opengym/test"', '../src/opengym/test/opengym-test-suite.cc', '-c', '-o/home/hesy/ns3-gym/ns3-gym/build/src/opengym/test/opengym-test-suite.cc.3.o']

opengym module cannot be built while others are built successfully

I built the repo on Ubuntu16.04 LTS and encountered the same error log as a closed issue:

fatal error: ns3/opengym-module.h: No such file or directory compilation terminated.

But I have upgrade to the latest protobuf manually and run ./waf clean each time before I run ./waf configure.

here is my ./waf configure output,

Setting top to                           : /mnt/sdb1/ns3-gym
Setting out to                           : /mnt/sdb1/ns3-gym/build
Checking for 'gcc' (C compiler)          : /usr/bin/gcc
Checking for cc version                  : 6.5.0
Checking for 'g++' (C++ compiler)        : /usr/bin/g++
Checking for compilation flag -Wl,--soname=foo support : ok
Checking for compilation flag -std=c++11 support       : ok
Checking for program 'python'                          : /usr/bin/python3
Checking for python version >= 2.3                     : 3.5.2
python-config                                          : /usr/bin/python3-config
Asking python-config for pyembed '--cflags --libs --ldflags' flags : yes
Testing pyembed configuration                                      : yes
Asking python-config for pyext '--cflags --libs --ldflags' flags   : yes
Testing pyext configuration                                        : yes
Checking for compilation flag -fvisibility=hidden support          : ok
Checking for compilation flag -Wno-array-bounds support            : ok
Checking for pybindgen location                                    : not found
Checking for python module 'pybindgen'                             : 0.21.0
Checking for pybindgen version                                     : 0.21.0
Checking for code snippet                                          : yes
Checking for types uint64_t and unsigned long equivalence          : no
Checking for code snippet                                          : no
Checking for types uint64_t and unsigned long long equivalence     : yes
Checking for the apidefs that can be used for Python bindings      : gcc-LP64
Checking for internal GCC cxxabi                                   : complete
Checking for python module 'pygccxml'                              : not found
Checking boost includes                                            : 1_58
Checking boost libs                                                : ok
Checking for boost linkage                                         : ok
Checking for click location                                        : not found
Checking for program 'pkg-config'                                  : /usr/bin/pkg-config
Checking for 'gtk+-3.0'                                            : not found
Checking for 'libxml-2.0'                                          : not found
checking for uint128_t                                             : not found
checking for __uint128_t                                           : yes
Checking high precision implementation                             : 128-bit integer (default)
Checking for header stdint.h                                       : yes
Checking for header inttypes.h                                     : yes
Checking for header sys/inttypes.h                                 : not found
Checking for header sys/types.h                                    : yes
Checking for header sys/stat.h                                     : yes
Checking for header dirent.h                                       : yes
Checking for header stdlib.h                                       : yes
Checking for header signal.h                                       : yes
Checking for header pthread.h                                      : yes
Checking for header stdint.h                                       : yes
Checking for header inttypes.h                                     : yes
Checking for header sys/inttypes.h                                 : not found
Checking for library rt                                            : yes
Checking for header sys/ioctl.h                                    : yes
Checking for header net/if.h                                       : yes
Checking for header net/ethernet.h                                 : yes
Checking for header linux/if_tun.h                                 : yes
Checking for header netpacket/packet.h                             : yes
Checking for NSC location                                          : not found
Checking for OpenFlow location                                     : not found
Checking for library zmq                                           : not found
Checking for library protobuf                                      : yes
Checking for program 'protoc'                                      : /usr/local/bin/protoc
Checking for protoc version                                        : 3.12.3
Checking for 'sqlite3'                                             : not found
Checking for header linux/if_tun.h                                 : yes
Checking for python module 'gi'                                    : 3.20.0
Checking for python module 'gi.repository.GObject'                 : ok
Checking for python module 'cairo'                                 : ok
Checking for python module 'pygraphviz'                            : not found
Checking for python module 'gi.repository.Gtk'                     : ok
Checking for python module 'gi.repository.Gdk'                     : ok
Checking for python module 'gi.repository.Pango'                   : ok
Checking for python module 'gi.repository.GooCanvas'               : not found
Checking for program 'sudo'                                        : /usr/bin/sudo
Checking for program 'valgrind'                                    : not found
Checking for 'gsl'                                                 : not found
python-config                                                      : not found
Checking for compilation flag -fstrict-aliasing support            : ok
Checking for compilation flag -fstrict-aliasing support            : ok
Checking for compilation flag -Wstrict-aliasing support            : ok
Checking for compilation flag -Wstrict-aliasing support            : ok
Checking for program 'doxygen'                                     : not found
---- Summary of optional NS-3 features:
Build profile                 : debug
Build directory               :
BRITE Integration             : not enabled (BRITE not enabled (see option --with-brite))
DES Metrics event collection  : not enabled (defaults to disabled)
Emulation FdNetDevice         : enabled
Examples                      : not enabled (defaults to disabled)
File descriptor NetDevice     : enabled
GNU Scientific Library (GSL)  : not enabled (GSL not found)
Gcrypt library                : not enabled (libgcrypt not found: you can use libgcrypt-config to find its location.)
GtkConfigStore                : not enabled (library 'gtk+-3.0 >= 3.0' not found)
MPI Support                   : not enabled (option --enable-mpi not selected)
NS-3 Click Integration        : not enabled (nsclick not enabled (see option --with-nsclick))
NS-3 OpenFlow Integration     : not enabled (OpenFlow not enabled (see option --with-openflow))
Network Simulation Cradle     : not enabled (NSC not found (see option --with-nsc))
PlanetLab FdNetDevice         : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
PyViz visualizer              : not enabled (Missing python modules: pygraphviz, gi.repository.GooCanvas)
Python API Scanning Support   : not enabled (Missing 'pygccxml' Python module)
Python Bindings               : enabled
Real Time Simulator           : enabled
SQlite stats data output      : not enabled (library 'sqlite3' not found)
Tap Bridge                    : enabled
Tap FdNetDevice               : enabled
Tests                         : not enabled (defaults to disabled)
Threading Primitives          : enabled
Use sudo to set suid bit      : not enabled (option --enable-sudo not selected)
XmlIo                         : not enabled (library 'libxml-2.0 >= 2.7' not found)
'configure' finished successfully (5.253s)

And the /src/opengym/model/ns3gym/ns3gym/messages_pb2.py is not generated when I run ./waf configure before. After configuration, I run pip install ./src/opengym/model/ns3gym and get this error message "Protocol Buffer messages are missing. Please run ./waf configure to generate the file").

I removed the scratch dir and the other modules are built successfully, except opengym. Do you have any idea why it is not built? I have run ./waf clean before the cofiguration.

Modules built:
antenna                   aodv                      applications
bridge                    buildings                 config-store
core                      csma                      csma-layout
dsdv                      dsr                       energy
fd-net-device             flow-monitor              internet
internet-apps             lr-wpan                   lte
mesh                      mobility                  mpi
netanim (no Python)       network                   nix-vector-routing
olsr                      point-to-point            point-to-point-layout
propagation               sixlowpan                 spectrum
stats                     tap-bridge                test (no Python)
topology-read             traffic-control           uan
virtual-net-device        wave                      wifi
wimax

Modules not built (see ns-3 tutorial for explanation):
brite                     click                     openflow
opengym                   visualizer

Waiting for simulation script to connect

Hi,

Many thanks for the ns3gym work, very timely.

I am having problem running the examples in the scratch folder. I am
constantly getting a message like “Waiting for simulation script to
connect” then the ns3 does notting afterwards.

I am using Ubuntu16.4 with python3.5 over a virtualenv instance.
I am running examples as follows: ./was --run "rl-tcp" (for example)
The same is true when running test files.

Any clue why I am entering such a condition.

Cheers,
Morteza

Nothing output when running"test_tcp.py"

I install successfully on Ubuntu,but when I run "test_tcp.py",nothing shows in my terminal.

When I try to build on macOS Catalina ,
Build failed
-> task in 'ns3-dsr' failed with exit status 1:
{task 4350314872: cxx dsr-rsendbuff.cc -> dsr-rsendbuff.cc.1.o}
['/usr/bin/clang++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-unused-local-typedefs', '-Wno-potentially-evaluated-expression', '-std=c++11', '-fPIC', '-Isrc/dsr', '-I../src/dsr', '-I.', '-I..', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '../src/dsr/model/dsr-rsendbuff.cc', '-c', '-o/Users/kongyuyang/ns3-gym-master/build/src/dsr/model/dsr-rsendbuff.cc.1.o']
-> task in 'ns3-dsr' failed with exit status 1:
{task 4350315320: cxx dsr-errorbuff.cc -> dsr-errorbuff.cc.1.o}
['/usr/bin/clang++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-unused-local-typedefs', '-Wno-potentially-evaluated-expression', '-std=c++11', '-fPIC', '-Isrc/dsr', '-I../src/dsr', '-I.', '-I..', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '../src/dsr/model/dsr-errorbuff.cc', '-c', '-o/Users/kongyuyang/ns3-gym-master/build/src/dsr/model/dsr-errorbuff.cc.1.o']
-> task in 'ns3-dsr' failed with exit status 1:
{task 4350314648: cxx dsr-maintain-buff.cc -> dsr-maintain-buff.cc.1.o}
['/usr/bin/clang++', '-O0', '-ggdb', '-g3', '-Wall', '-Werror', '-Wno-unused-local-typedefs', '-Wno-potentially-evaluated-expression', '-std=c++11', '-fPIC', '-Isrc/dsr', '-I../src/dsr', '-I.', '-I..', '-DNS3_BUILD_PROFILE_DEBUG', '-DNS3_ASSERT_ENABLE', '-DNS3_LOG_ENABLE', '-DHAVE_SYS_IOCTL_H=1', '-DHAVE_IF_NETS_H=1', '-DHAVE_NET_ETHERNET_H=1', '-DHAVE_ZMQ=1', '-DHAVE_PROTOBUF=1', '-DHAVE_SQLITE3=1', '../src/dsr/model/dsr-maintain-buff.cc', '-c', '-o/Users/kongyuyang/ns3-gym-master/build/src/dsr/model/dsr-maintain-buff.cc.1.o']

Applying ns3-gym to multiple nodes

Hello, initially congratulations for the project!

I'm a master's student and I'm developing a project that aims to improve the AODV protocol using machine learning. I would like to know if it is possible to use the ns3-gym module in the AODV protocol, where when defining it as a routing protocol for the network, each node will have an individual instance of ns3-gym. I would like each node in the network to be able to manage their own variables to control their AODV instance using their own neural network, is this possible with ns3-gym? Would you have any example of how this can be done (multiple instances of ns3-gym in parallel)?

Work on MAC os

First, thanks for the excellent project. To make it work on MAC OS, please see my solutions on my fork.

some problem in ./waf build

I meet some problem in ./waf build, like following, does anyone help me? Thanks a lot.
TIM截图20200609161505
Build failed
-> task in 'ns3-opengym' failed with exit status 1 (run with -v to display more information)

How to add the the STA-ID in the MonitorSniffRx

Hello,

Is it possible to add the Id from the station in the MonitorSniffRx callback?
This way, for instance, in the use case wifi-spectrum-per-example.cc, one can use several station nodes and allocate the global variables for each one of them if the Id is known.

Thank you very much in advance.
Kind regards.

Guilherme.

Always pause at place “Got new port for ns3gm interface: ”

When I run cognitive-agent-v1.py, it always pause at "Got new port for ns3gm interface:" after several episodes .Sometime episode: 11/200,sometime episode: 47/200(not fixed,changes every time).

It just stop at there,no error information. I wait several minutes and it has no response!

xiaochang@w:~/ns3-gym-master/scratch/interference-pattern$ ./cognitive-agent-v1.py
Got new port for ns3gm interface:  8567
Observation space:  Box(4,) uint64
Action space:  Discrete(4) 4
2018-11-11 11:49:54.963102: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
episode: 0/200, time: 8, rew: 6.0, eps: 0.99
Got new port for ns3gm interface:  5296
episode: 1/200, time: 8, rew: 6.0, eps: 0.98
Got new port for ns3gm interface:  5485
episode: 2/200, time: 7, rew: 5.0, eps: 0.98
Got new port for ns3gm interface:  9031
episode: 3/200, time: 7, rew: 5.0, eps: 0.97
Got new port for ns3gm interface:  9820
episode: 4/200, time: 4, rew: 2.0, eps: 0.97
Got new port for ns3gm interface:  7310
episode: 5/200, time: 3, rew: 1.0, eps: 0.96
Got new port for ns3gm interface:  5253
episode: 6/200, time: 4, rew: 2.0, eps: 0.96
Got new port for ns3gm interface:  6842
episode: 7/200, time: 2, rew: 0.0, eps: 0.96
Got new port for ns3gm interface:  6411
episode: 8/200, time: 4, rew: 2.0, eps: 0.95
Got new port for ns3gm interface:  7233
episode: 9/200, time: 1, rew: -1.0, eps: 0.95
Got new port for ns3gm interface:  9101
episode: 10/200, time: 11, rew: 5.0, eps: 0.94
Got new port for ns3gm interface:  8633
episode: 11/200, time: 13, rew: 7.0, eps: 0.93
Got new port for ns3gm interface:  8456

Undefined Reference to google::protobuf

I have installed all of the dependencies etc. as stated in the installation instructions at https://apps.nsnam.org/app/ns3-gym/, but when I build ns3, ns3-gym with examples enabled I receive the following error:

contrib/opengym/examples/opengym/sim.cc.1.o: In function google::protobuf::Arena::AllocHook(std::type_info const*, unsigned long) const': /usr/local/include/google/protobuf/arena.h:644: undefined reference to google::protobuf::Arena::OnArenaAllocation(std::type_info const*, unsigned long) const'

This is just the first in a long line of errors that provide the same info: undefined reference to google::protobuf.

I have tried removing different versions of protobuf from /usr and /usr/local, but that has not resolved this issue.

Fix use of ZMQ's deprecated send() and recv() functions

There is a compilation warning triggered by the use of the ZMQ's send() and recv() deprecated functions. Since most compilers now treat warnings as errors, this issue does not allow the compilation of the ns3-gym module.

ns3-gym installation issues about I can't find the 'opengym.h'

Dear author,When I was learning ns3gym, I encountered some problems.

First, I ran
sudo. /waf clean

and then I ran
sudo. / waf-d debug --enable-example --enable-tests configure

and then ran
sudo. /waf
and the following errors occurred:

**../src/opengym/test/opengym-test-suite.cc:4:25: fatal error: ns3/opengym.h: No such file or directory
compilation terminated.

Waf: Leaving directory `/home/zst/cheryl/ns3-gym/ns-allinone-3.26/ns3-gym-master/build'
Build failed
-> task in 'ns3-opengym-test' failed with exit status 1 (run with -v to display more information)**

I want to find the 'opengym.h',but I failed,can you tell me how to deal with this problem?

ZMQError: Operation cannot be accomplished in current state

Hi Piotr,
Hope you are doing fine.

Based on the cognitive-agent example, I did some simple changes to the code using q-learning for the training. When running training the code gets stuck at env.step(action) and the ZMQ socket error occurs. What can I do to fix this issue?
Seems like this issue is related to the Gameover condition.

Is it ok to change the Gameover condition?

ZMQ Error

ns 3 and openai

hello!! please i want to know if we must install ns3 and then, install openAi or we must download ns3 and ns3-gym paquages and then run the ./waf build?

How to update ns-3 version?

Hello!
As far as I know, the latest ns-3 version 3.34 already supports bbr-congestion. How should I update the ns-3 version in ns3-gym?
Thank you so much!

Basic example for connnecting ns3-gym with stable-baselines

It would be very convenient to be able to use stable-baselines out of the box on the gym-esque environments in this project. Although the environment's API access mirrors OpenAI's gym, under the hood there are discrepancies that prevent integration with stable-baselines as is.

ns3-gym Building Error

Hi anyone,

I'm trying to build the ns3-gym module following these two guides:

  1. https://apps.nsnam.org/app/ns3-gym/
  2. https://github.com/tkn-tub/ns3-gym/blob/app/README.md#Examples

When I try to build, with the following command
./waf build
I have these errors:

Waf: Entering directory `/home/jessica/repos/ns-3-allinone/ns-3.32/build'
[2320/2604] Compiling contrib/opengym/examples/interference-pattern/mygym.cc
[2321/2604] Compiling contrib/opengym/examples/interference-pattern/sim.cc
In file included from /usr/include/c++/7/complex.h:36:0,
from ./ns3/matrix-based-channel-model.h:25,
from ./ns3/spectrum-module.h:17,
from ../contrib/opengym/examples/interference-pattern/mygym.h:27,
from ../contrib/opengym/examples/interference-pattern/mygym.cc:21:
./ns3/attribute-container-accessor-helper.h:52:79: error: expected ‘>’ before ‘(’ token
template <typename V, typename T, template <typename...> class U, typename ...I,
^
./ns3/attribute-container-accessor-helper.h:56:28: error: unable to find numeric literal operator ‘operator""iF’
DoMakeAccessorHelperOne (U<I...> T::*memberContainer)
^
./ns3/attribute-container-accessor-helper.h:56:28: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
In file included from ./ns3/core-module.h:16:0,
from ../contrib/opengym/examples/interference-pattern/mygym.cc:23:
./ns3/attribute-container-accessor-helper.h:56:29: error: expected parameter pack before ‘...’
DoMakeAccessorHelperOne (U<I...> T::*memberContainer)
^~~
./ns3/attribute-container-accessor-helper.h:56:32: error: template argument 1 is invalid
DoMakeAccessorHelperOne (U<I...> T::memberContainer)
^
In file included from /usr/include/c++/7/complex.h:36:0,
from ./ns3/matrix-based-channel-model.h:25,
from ./ns3/spectrum-module.h:17,
from ../contrib/opengym/examples/interference-pattern/mygym.h:27,
from ../contrib/opengym/examples/interference-pattern/mygym.cc:21:
./ns3/attribute-container-accessor-helper.h: In function ‘ns3::Ptr ns3::DoMakeAccessorHelperOne(int T::
)’:
./ns3/attribute-container-accessor-helper.h:66:24: error: unable to find numeric literal operator ‘operator""iF’
MemberContainer (U<I...> T::*memberContainer)
^
./ns3/attribute-container-accessor-helper.h:66:24: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
In file included from ./ns3/core-module.h:16:0,
from ../contrib/opengym/examples/interference-pattern/mygym.cc:23:
./ns3/attribute-container-accessor-helper.h:66:25: error: expected parameter pack before ‘...’
MemberContainer (U<I...> T::*memberContainer)
^~~
./ns3/attribute-container-accessor-helper.h:66:28: error: template argument 1 is invalid
MemberContainer (U<I...> T::*memberContainer)
^
In file included from /usr/include/c++/7/complex.h:36:0,
from ./ns3/matrix-based-channel-model.h:25,
from ./ns3/spectrum-module.h:17,
from ../contrib/opengym/examples/interference-pattern/mygym.h:27,
from ../contrib/opengym/examples/interference-pattern/mygym.cc:21:
./ns3/attribute-container-accessor-helper.h:94:7: error: unable to find numeric literal operator ‘operator""iF’
U<I...> T::*m_memberContainer; // Address of the class data member.
^
./ns3/attribute-container-accessor-helper.h:94:7: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes
In file included from ./ns3/core-module.h:16:0,
from ../contrib/opengym/examples/interference-pattern/mygym.cc:23:
./ns3/attribute-container-accessor-helper.h:94:8: error: expected parameter pack before ‘...’
U<I...> T::*m_memberContainer; // Address of the class data member.
^~~
./ns3/attribute-container-accessor-helper.h:94:11: error: template argument 1 is invalid
U<I...> T::*m_memberContainer; // Address of the class data member.
^

In file included from /usr/include/c++/7/complex.h:36:0,
from ./ns3/matrix-based-channel-model.h:25,
from ./ns3/spectrum-module.h:17,
from ../contrib/opengym/examples/interference-pattern/sim.cc:27:
/usr/include/zmq.hpp:212:27: error: expected nested-name-specifier before ‘(’ token
template message_t(I first, I last):
^
/usr/include/zmq.hpp:212:27: error: expected ‘)’ before ‘extension
template message_t(I first, I last):
^
/usr/include/zmq.hpp:212:27: error: expected ‘>’ before ‘extension
/usr/include/zmq.hpp:212:27: error: expected unqualified-id before ‘)’ token
template message_t(I first, I last):
^
/usr/include/zmq.hpp:612:27: error: expected nested-name-specifier before ‘(’ token
template bool send(I first, I last, int flags_=0)
^
/usr/include/zmq.hpp:612:27: error: expected ‘)’ before ‘extension
template bool send(I first, I last, int flags_=0)
^
/usr/include/zmq.hpp:612:27: error: expected ‘>’ before ‘extension
/usr/include/zmq.hpp:612:27: error: expected unqualified-id before ‘)’ token
template bool send(I first, I last, int flags_=0)
^

Waf: Leaving directory `/home/jessica/repos/ns-3-allinone/ns-3.32/build'
Build failed
-> task in 'interference-pattern' failed with exit status 1 (run with -v to display more information)
-> task in 'interference-pattern' failed with exit status 1 (run with -v to display more information)

Can anyone tell me which are the problems and how to solve them?

fatal error: ns3/antenna-module.h: No such file or directory

After running the command ./build.py --enable-examples --enable-tests on Kali Linux I am getting the error

[2253/2895] Compiling build/src/antenna/bindings/ns3module.cc
In file included from src/antenna/bindings/ns3module.cc:1:
src/antenna/bindings/ns3module.h:41:10: fatal error: ns3/antenna-module.h: No such file or directory
   41 | #include "ns3/antenna-module.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

Waf: Leaving directory `/home/pentester/ns3 simulator/ns-allinone-3.33/ns-3.33/build'
Build failed
 -> task in 'ns3module_antenna' failed with exit status 1 (run with -v to display more information)
Traceback (most recent call last):
  File "./build.py", line 175, in <module>
    sys.exit(main(sys.argv))
  File "./build.py", line 166, in main
    build_ns3(config, build_examples, build_tests, args, build_options)
  File "./build.py", line 86, in build_ns3
    run_command([sys.executable, "waf", "build"] + build_options)
  File "/home/pentester/ns3 simulator/ns-allinone-3.33/util.py", line 25, in run_command
    raise CommandError("Command %r exited with code %i" % (argv, retval))
util.CommandError: Command ['/usr/bin/python3', 'waf', 'build'] exited with code 1

ns3-gym speed-up

This is not a bug per-say, but I noticed the following.
By decreasing the TimeStep for the simulation from 1 sec to 0.1sec, the simulation sped up by an order of ten easily. How is this behavior explained ? Is it related to how ZeroMQ batches messages ?

Build of protobuf failed using ns3-mmwave stand alone module

I'm using NS3 stand-alone version - mmwave with IAB feature, that based on ns3 v3.29 and I'm trying to install and build ns3gym but I'm getting the error:

opengym/model/: warning: directory does not exist.
Could not make proto path relative: opengym/model/messages.proto: No such file or directory
Build of ns3gym Protobuf messages failed

I did all the prerequisites installations that needed.

what Should I do?

thanks!

ns3-gym installation issues on macOS Mojave (ns3/opengym-module.h file not found)

I seem to get some weird ./waf build errors (ns3/opengym-module.h file not found) while trying to install ns3-gym on macOS Mojave 10.14.5.

I ran configure with:
./waf configure --disable-werror --enable-examples --enable-tests

And then did:
./waf build

which gave the following errors. I don't seem to have the "opengym-module.h" file anywhere in the source code. Is that file auto-generated, or can I download it from somewhere?

I've Python 3.6.4, and also installed both protobuf (libprotoc 3.6.0) and zmq (zeromq 4.3.2).

[2518/2585] Compiling scratch/linear-mesh/sim.cc
In file included from ../scratch/opengym-2/mygym.cc:21:
../scratch/opengym-2/mygym.h:25:10: fatal error: 'ns3/opengym-module.h' file not found
#include "ns3/opengym-module.h"

^~~~~~~~~~~~~~~~~~~~~~
1 error generated.

../scratch/opengym-2/sim.cc:23:10: fatal error: 'ns3/opengym-module.h' file not found
#include "ns3/opengym-module.h"

^~~~~~~~~~~~~~~~~~~~~~
1 error generated.

../scratch/linear-mesh/sim.cc:24:10: fatal error: 'ns3/opengym-module.h' file not found
#include "ns3/opengym-module.h"

^~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Waf: Leaving directory `/Users/amitabha_ghosh/Work/GIT/ns3-gym/build'

Any help would be much appreciated.

Thank you,
Amitabha

Performance

Do you have some advice to make the interface faster?

python socket recv hanging

I wrote a custom environment following your examples. When running training, sometimes the code will get stuck at env.step(action). From the keyboard interrupt, it seems like an issue with the zmq socket? Is there a way to resolve this so that the training does not get stuck?

^CTraceback (most recent call last):
File "./train.py", line 22, in
ddpg.train(max_epochs=2000)
File "/home/sim-user/ns3-gym/scratch/mm1-queue/ddpg_agent.py", line 197, in train
next_state, reward, done, info = self.env.step(action) # perform action on env
File "/home/sim-user/.local/lib/python3.5/site-packages/ns3gym/ns3env.py", line 401, in step
response = self.ns3ZmqBridge.step(action)
File "/home/sim-user/.local/lib/python3.5/site-packages/ns3gym/ns3env.py", line 231, in step
self.rx_env_state()
File "/home/sim-user/.local/lib/python3.5/site-packages/ns3gym/ns3env.py", line 180, in rx_env_state
request = self.socket.recv()
File "zmq/backend/cython/socket.pyx", line 791, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 827, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 186, in zmq.backend.cython.socket._recv_copy
File "zmq/backend/cython/checkrc.pxd", line 12, in zmq.backend.cython.checkrc._check_rc
KeyboardInterrupt

some problem in example linear-mesh and rl-tcp

I meet some problem in example both linear-mesh and rl-tcp ,like following, does anyone know why?

~ns3-gym-master/scratch/linear-mesh$ ./qlearn.py
Traceback (most recent call last):
File "./qlearn.py", line 42 ,in
state = np.uint (np.array ( state , dtype=np.uint32) / 10)
TypeError: int( ) argument must be a string , a bytes - like object or a number , not 'NoneType'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.