Coder Social home page Coder Social logo

usnistgov / psc-ns3 Goto Github PK

View Code? Open in Web Editor NEW
69.0 21.0 38.0 249.64 MB

Public Safety Communication modeling tools based on ns-3

License: Other

Makefile 0.14% Python 3.11% C++ 94.71% MATLAB 0.20% Click 0.07% C 1.03% Perl 0.01% Gnuplot 0.03% Shell 0.03% Batchfile 0.01% Assembly 0.33% PHP 0.28% HTML 0.01% NASL 0.04%
public-safety ns-3 ns3 device-to-device lte

psc-ns3's Introduction

The Network Simulator, Version 3

codecov Gitlab CI Github CI

Table of Contents

NOTE: Much more substantial information about ns-3 can be found at https://www.nsnam.org

Overview: An Open Source Project

ns-3 is a free open source project aiming to build a discrete-event network simulator targeted for simulation research and education. This is a collaborative project; we hope that the missing pieces of the models we have not yet implemented will be contributed by the community in an open collaboration process. If you would like to contribute to ns-3, please check the Contributing to ns-3 section below.

This README excerpts some details from a more extensive tutorial that is maintained at: https://www.nsnam.org/documentation/latest/

Building ns-3

The code for the framework and the default models provided by ns-3 is built as a set of libraries. User simulations are expected to be written as simple programs that make use of these ns-3 libraries.

To build the set of default libraries and the example programs included in this package, you need to use the ns3 tool. This tool provides a Waf-like API to the underlying CMake build manager. Detailed information on how to use ns3 is included in the quick start guide.

Before building ns-3, you must configure it. This step allows the configuration of the build options, such as whether to enable the examples, tests and more.

To configure ns-3 with examples and tests enabled, run the following command on the ns-3 main directory:

./ns3 configure --enable-examples --enable-tests

Then, build ns-3 by running the following command:

./ns3 build

By default, the build artifacts will be stored in the build/ directory.

Supported Platforms

The current codebase is expected to build and run on the set of platforms listed in the release notes file.

Other platforms may or may not work: we welcome patches to improve the portability of the code to these other platforms.

Testing ns-3

ns-3 contains test suites to validate the models and detect regressions. To run the test suite, run the following command on the ns-3 main directory:

./test.py

More information about ns-3 tests is available in the test framework section of the manual.

Running ns-3

On recent Linux systems, once you have built ns-3 (with examples enabled), it should be easy to run the sample programs with the following command, such as:

./ns3 run simple-global-routing

That program should generate a simple-global-routing.tr text trace file and a set of simple-global-routing-xx-xx.pcap binary PCAP trace files, which can be read by tcpdump -n -tt -r filename.pcap. The program source can be found in the examples/routing directory.

Running ns-3 from Python

If you do not plan to modify ns-3 upstream modules, you can get a pre-built version of the ns-3 python bindings.

pip install --user ns3

If you do not have pip, check their documents on how to install it.

After installing the ns3 package, you can then create your simulation python script. Below is a trivial demo script to get you started.

from ns import ns

ns.LogComponentEnable("Simulator", ns.LOG_LEVEL_ALL)

ns.Simulator.Stop(ns.Seconds(10))
ns.Simulator.Run()
ns.Simulator.Destroy()

The simulation will take a while to start, while the bindings are loaded. The script above will print the logging messages for the called commands.

Use help(ns) to check the prototypes for all functions defined in the ns3 namespace. To get more useful results, query specific classes of interest and their functions e.g., help(ns.Simulator).

Smart pointers Ptr<> can be differentiated from objects by checking if __deref__ is listed in dir(variable). To dereference the pointer, use variable.__deref__().

Most ns-3 simulations are written in C++ and the documentation is oriented towards C++ users. The ns-3 tutorial programs (first.cc, second.cc, etc.) have Python equivalents, if you are looking for some initial guidance on how to use the Python API. The Python API may not be as full-featured as the C++ API, and an API guide for what C++ APIs are supported or not from Python do not currently exist. The project is looking for additional Python maintainers to improve the support for future Python users.

ns-3 Documentation

Once you have verified that your build of ns-3 works by running the simple-global-routing example as outlined in the running ns-3 section, it is quite likely that you will want to get started on reading some ns-3 documentation.

All of that documentation should always be available from the ns-3 website: https://www.nsnam.org/documentation/.

This documentation includes:

Working with the Development Version of ns-3

If you want to download and use the development version of ns-3, you need to use the tool git. A quick and dirty cheat sheet is included in the manual, but reading through the Git tutorials found in the Internet is usually a good idea if you are not familiar with it.

If you have successfully installed Git, you can get a copy of the development version with the following command:

git clone https://gitlab.com/nsnam/ns-3-dev.git

However, we recommend to follow the GitLab guidelines for starters, that includes creating a GitLab account, forking the ns-3-dev project under the new account's name, and then cloning the forked repository. You can find more information in the manual.

Contributing to ns-3

The process of contributing to the ns-3 project varies with the people involved, the amount of time they can invest and the type of model they want to work on, but the current process that the project tries to follow is described in the contributing code website and in the CONTRIBUTING.md file.

Reporting Issues

If you would like to report an issue, you can open a new issue in the GitLab issue tracker. Before creating a new issue, please check if the problem that you are facing was already reported and contribute to the discussion, if necessary.

ns-3 App Store

The official ns-3 App Store is a centralized directory listing third-party modules for ns-3 available on the Internet.

More information on how to submit an ns-3 module to the ns-3 App Store is available in the ns-3 App Store documentation.

psc-ns3's People

Contributors

a-andre avatar ameyanrd avatar bhaskar792 avatar bpswenson avatar cawka avatar edalm avatar gab-arrobo avatar gabrielcarvfer avatar lalithsuresh avatar linlinjava avatar lparcerisa avatar mkbanchi avatar mohittahiliani avatar mrichart avatar natale-p avatar nikkipui avatar pasquimp avatar rajb245 avatar rediet-orange avatar richardrouil avatar sderonne avatar stavallo avatar thehajime avatar tom5760 avatar tomhenderson avatar tommypec avatar vedranmiletic avatar vivek-anand-jain avatar wdgj avatar zorazeali 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

Watchers

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

psc-ns3's Issues

How to set Pcmax

Slightly modifying lte-sl-out-of-covrg-comm.cc for PC1 simulation.

Increased TxPower to 31, but results no different than 23.0 setting

Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (31.0)); // simulation results no different from 23.0 setting

Probably Pcmax must be increased however it is not obvious how to do it.

Config::SetDefault ("ns3::LteUePowerControl::SetPcmax", DoubleValue (31.0)); // does not work

'build' finished successfully (4.046s)
msg="Could not set default value for ns3::LteUePowerControl::SetPcmax", file=../src/core/model/config.cc, line=854
terminate called without an active exception

Any hint would be welcome, and if this will be enough for PC1 results.

Constant values of SINR

Hello,

I am trying to visualize the SINR values vs. time. In the "SlRxPhyStats.txt", SINR values are constant. Is it because this is the average value at each instant? and if this is the case, how can I get the non-average values ?

Thanks in advance.

MCPTT access time values in private calls

Hello,

I wanted to compare the average MCPTT access time values in private calls in three different coverage and sidelink mode scenarios (i.e., in-coverage UEs with sidelink mode-1, in-coverage UEs with sidelink mode-2, and out-of-coverage UEs with sidelink mode-2).

I found that in in-coverage UEs with sidelink mode-1 and out-of-coverage UEs with sidelink mode-2 scenarios, the average access time values are around 80 ms (for a sidelink period of 40 ms). However in the in-coverage UEs with sidelink mode-2 scenario, the average values are around 500 ms for the same sidelink period.

Is there an explanation for this gap that can be related to sidelink configurations?

Thanks in advance for your thoughts.

PS: for in-coverage UEs with sidelink mode-2 and out-of-coverage UEs with sidelink mode-2, I used the "Fixed" scheduling method with the same KTRP, MCS, and RB size values.

LTE Sidelink vs. NR Sidelink

Hello,

Apart from the supported frequency bands and bandwidths, are there major differences in the ns-3 implementations of Sidelink between LENA and 5G LENA modules?

If yes, are you planning to implement the NR Sidelink feature on 5G LENA module also?

Thanks a lot,
Salwa.

Build failure with python bindings enabled

Hi,
I am trying to build the psc-ns3 code using ns-allinone-3.28.1 base with python bindings enabled. When I give the ./waf command to build I get the errors mentioned below. Any idea on what is wrong here? Do i need to build the python bindings again for lte module ?

compilation logs below:
[1910/2061] Compiling src/wifi/model/supported-rates.cc
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteAsSapProvider__tp_init__0(PyNs3LteAsSapProvider*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:38054:61: error: invalid new-expression of abstract class type ‘PyNs3LteAsSapProvider__PythonHelper’
self->obj = new PyNs3LteAsSapProvider__PythonHelper();
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:4919:7: note: because the following virtual functions are pure within ‘PyNs3LteAsSapProvider__PythonHelper’:
class PyNs3LteAsSapProvider__PythonHelper : public ns3::LteAsSapProvider
^
In file included from ./ns3/epc-ue-nas.h:27:0,
from ./ns3/lte-module.h:28,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-as-sap.h:94:16: note: virtual void ns3::LteAsSapProvider::SendData(ns3::Ptrns3::Packet, uint32_t)
virtual void SendData (Ptr packet, uint32_t group) = 0;
^
./ns3/lte-as-sap.h:110:16: note: virtual void ns3::LteAsSapProvider::ActivateSidelinkRadioBearer(uint32_t, bool, bool)
virtual void ActivateSidelinkRadioBearer (uint32_t group, bool tx, bool rx) = 0;
^
./ns3/lte-as-sap.h:117:16: note: virtual void ns3::LteAsSapProvider::DeactivateSidelinkRadioBearer(uint32_t)
virtual void DeactivateSidelinkRadioBearer (uint32_t group) = 0;
^
./ns3/lte-as-sap.h:124:16: note: virtual void ns3::LteAsSapProvider::AddDiscoveryApps(std::list, bool)
virtual void AddDiscoveryApps (std::list<uint32_t> apps, bool rxtx) = 0;
^
./ns3/lte-as-sap.h:131:16: note: virtual void ns3::LteAsSapProvider::RemoveDiscoveryApps(std::list, bool)
virtual void RemoveDiscoveryApps (std::list<uint32_t> apps, bool rxtx) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteAsSapProvider__tp_init__1(PyNs3LteAsSapProvider*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:38082:99: error: invalid new-expression of abstract class type ‘PyNs3LteAsSapProvider__PythonHelper’
self->obj = new PyNs3LteAsSapProvider__PythonHelper(((PyNs3LteAsSapProvider ) arg0)->obj);
^
src/lte/bindings/ns3module.cc: In function ‘PyObject
_wrap_PyNs3LteAsSapProvider_SendData(PyNs3LteAsSapProvider
, PyObject*, PyObject*)’:
src/lte/bindings/ns3module.cc:38135:67: error: call of overloaded ‘SendData(ns3::Ptrns3::Packet, int&)’ is ambiguous
self->obj->SendData(ns3::Ptr< ns3::Packet > (packet_ptr), bid);
^
src/lte/bindings/ns3module.cc:38135:67: note: candidates are:
In file included from ./ns3/epc-ue-nas.h:27:0,
from ./ns3/lte-module.h:28,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-as-sap.h:86:16: note: virtual void ns3::LteAsSapProvider::SendData(ns3::Ptrns3::Packet, uint8_t)
virtual void SendData (Ptr packet, uint8_t bid) = 0;
^
./ns3/lte-as-sap.h:94:16: note: virtual void ns3::LteAsSapProvider::SendData(ns3::Ptrns3::Packet, uint32_t)
virtual void SendData (Ptr packet, uint32_t group) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteAsSapUser__tp_init__0(PyNs3LteAsSapUser*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:38573:57: error: invalid new-expression of abstract class type ‘PyNs3LteAsSapUser__PythonHelper’
self->obj = new PyNs3LteAsSapUser__PythonHelper();
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:4970:7: note: because the following virtual functions are pure within ‘PyNs3LteAsSapUser__PythonHelper’:
class PyNs3LteAsSapUser__PythonHelper : public ns3::LteAsSapUser
^
In file included from ./ns3/epc-ue-nas.h:27:0,
from ./ns3/lte-module.h:28,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-as-sap.h:180:16: note: virtual void ns3::LteAsSapUser::NotifySidelinkRadioBearerActivated(uint32_t)
virtual void NotifySidelinkRadioBearerActivated (uint32_t group) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteAsSapUser__tp_init__1(PyNs3LteAsSapUser*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:38601:91: error: invalid new-expression of abstract class type ‘PyNs3LteAsSapUser__PythonHelper’
self->obj = new PyNs3LteAsSapUser__PythonHelper(((PyNs3LteAsSapUser ) arg0)->obj);
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUeCmacSapUser__tp_init__0(PyNs3LteUeCmacSapUser
, PyObject
, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:77317:61: error: invalid new-expression of abstract class type ‘PyNs3LteUeCmacSapUser__PythonHelper’
self->obj = new PyNs3LteUeCmacSapUser__PythonHelper();
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:6982:7: note: because the following virtual functions are pure within ‘PyNs3LteUeCmacSapUser__PythonHelper’:
class PyNs3LteUeCmacSapUser__PythonHelper : public ns3::LteUeCmacSapUser
^
In file included from ./ns3/lte-ue-rrc.h:30:0,
from ./ns3/lte-helper.h:49,
from ./ns3/lte-3gpp-hex-grid-enb-topology-helper.h:39,
from ./ns3/lte-module.h:41,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-ue-cmac-sap.h:256:16: note: virtual void ns3::LteUeCmacSapUser::NotifySidelinkReception(uint8_t, uint32_t, uint32_t)
virtual void NotifySidelinkReception (uint8_t lcId, uint32_t srcL2Id, uint32_t dstL2Id) = 0;
^
./ns3/lte-ue-cmac-sap.h:261:16: note: virtual void ns3::LteUeCmacSapUser::NotifyMacHasSlDataToSend()
virtual void NotifyMacHasSlDataToSend () = 0;
^
./ns3/lte-ue-cmac-sap.h:265:16: note: virtual void ns3::LteUeCmacSapUser::NotifyMacHasNoSlDataToSend()
virtual void NotifyMacHasNoSlDataToSend () = 0;
^
./ns3/lte-ue-cmac-sap.h:272:16: note: virtual void ns3::LteUeCmacSapUser::NotifyDiscoveryReception(ns3::Ptrns3::LteControlMessage)
virtual void NotifyDiscoveryReception (Ptr msg) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUeCmacSapUser__tp_init__1(PyNs3LteUeCmacSapUser*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:77345:99: error: invalid new-expression of abstract class type ‘PyNs3LteUeCmacSapUser__PythonHelper’
self->obj = new PyNs3LteUeCmacSapUser__PythonHelper(((PyNs3LteUeCmacSapUser ) arg0)->obj);
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUeCphySapProvider__tp_init__0(PyNs3LteUeCphySapProvider
, PyObject
, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:78391:65: error: invalid new-expression of abstract class type ‘PyNs3LteUeCphySapProvider__PythonHelper’
self->obj = new PyNs3LteUeCphySapProvider__PythonHelper();
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:7038:7: note: because the following virtual functions are pure within ‘PyNs3LteUeCphySapProvider__PythonHelper’:
class PyNs3LteUeCphySapProvider__PythonHelper : public ns3::LteUeCphySapProvider
^
In file included from ./ns3/lte-ue-phy.h:33:0,
from ./ns3/component-carrier-ue.h:29,
from ./ns3/lte-module.h:14,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-ue-cphy-sap.h:154:16: note: virtual void ns3::LteUeCphySapProvider::SetSlDiscTxPool(ns3::Ptrns3::SidelinkTxDiscResourcePool)
virtual void SetSlDiscTxPool (Ptr pool) = 0;
^
./ns3/lte-ue-cphy-sap.h:160:16: note: virtual void ns3::LteUeCphySapProvider::SetSlDiscRxPools(std::list<ns3::Ptrns3::SidelinkRxDiscResourcePool >)
virtual void SetSlDiscRxPools (std::list<Ptr > pools) = 0;
^
./ns3/lte-ue-cphy-sap.h:165:16: note: virtual void ns3::LteUeCphySapProvider::RemoveSlDiscTxPool()
virtual void RemoveSlDiscTxPool () = 0;
^
./ns3/lte-ue-cphy-sap.h:172:16: note: virtual void ns3::LteUeCphySapProvider::SetSlCommTxPool(ns3::Ptrns3::SidelinkTxCommResourcePool)
virtual void SetSlCommTxPool (Ptr pool) = 0;
^
./ns3/lte-ue-cphy-sap.h:178:16: note: virtual void ns3::LteUeCphySapProvider::SetSlCommRxPools(std::list<ns3::Ptrns3::SidelinkRxCommResourcePool >)
virtual void SetSlCommRxPools (std::list<Ptr > pools) = 0;
^
./ns3/lte-ue-cphy-sap.h:183:16: note: virtual void ns3::LteUeCphySapProvider::RemoveSlCommTxPool()
virtual void RemoveSlCommTxPool () = 0;
^
./ns3/lte-ue-cphy-sap.h:189:16: note: virtual void ns3::LteUeCphySapProvider::AddSlDestination(uint32_t)
virtual void AddSlDestination (uint32_t destination) = 0;
^
./ns3/lte-ue-cphy-sap.h:195:16: note: virtual void ns3::LteUeCphySapProvider::RemoveSlDestination(uint32_t)
virtual void RemoveSlDestination (uint32_t destination) = 0;
^
./ns3/lte-ue-cphy-sap.h:201:16: note: virtual void ns3::LteUeCphySapProvider::SetSlssId(uint64_t)
virtual void SetSlssId (uint64_t slssid) = 0;
^
./ns3/lte-ue-cphy-sap.h:206:17: note: virtual void ns3::LteUeCphySapProvider::SendSlss(ns3::LteRrcSap::MasterInformationBlockSL)
virtual void SendSlss (LteRrcSap::MasterInformationBlockSL mibSl) = 0;
^
./ns3/lte-ue-cphy-sap.h:212:17: note: virtual void ns3::LteUeCphySapProvider::SynchronizeToSyncRef(ns3::LteRrcSap::MasterInformationBlockSL)
virtual void SynchronizeToSyncRef (LteRrcSap::MasterInformationBlockSL mibSl) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUeCphySapProvider__tp_init__1(PyNs3LteUeCphySapProvider*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:78419:107: error: invalid new-expression of abstract class type ‘PyNs3LteUeCphySapProvider__PythonHelper’
self->obj = new PyNs3LteUeCphySapProvider__PythonHelper(((PyNs3LteUeCphySapProvider ) arg0)->obj);
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUeCphySapUser__tp_init__0(PyNs3LteUeCphySapUser
, PyObject
, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:79024:61: error: invalid new-expression of abstract class type ‘PyNs3LteUeCphySapUser__PythonHelper’
self->obj = new PyNs3LteUeCphySapUser__PythonHelper();
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:7099:7: note: because the following virtual functions are pure within ‘PyNs3LteUeCphySapUser__PythonHelper’:
class PyNs3LteUeCphySapUser__PythonHelper : public ns3::LteUeCphySapUser
^
In file included from ./ns3/lte-ue-phy.h:33:0,
from ./ns3/component-carrier-ue.h:29,
from ./ns3/lte-module.h:14,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-ue-cphy-sap.h:305:16: note: virtual void ns3::LteUeCphySapUser::ReportSlssMeasurements(ns3::LteUeCphySapUser::UeSlssMeasurementsParameters, uint64_t, uint16_t)
virtual void ReportSlssMeasurements (LteUeCphySapUser::UeSlssMeasurementsParameters params, uint64_t slssid, uint16_t offset) = 0;
^
./ns3/lte-ue-cphy-sap.h:311:16: note: virtual void ns3::LteUeCphySapUser::ReportSubframeIndication(uint16_t, uint16_t)
virtual void ReportSubframeIndication (uint16_t frameNo, uint16_t subFrameNo) = 0;
^
./ns3/lte-ue-cphy-sap.h:316:16: note: virtual void ns3::LteUeCphySapUser::ReceiveMibSL(ns3::LteRrcSap::MasterInformationBlockSL)
virtual void ReceiveMibSL (LteRrcSap::MasterInformationBlockSL mibSl) = 0;
^
./ns3/lte-ue-cphy-sap.h:324:16: note: virtual void ns3::LteUeCphySapUser::ReportChangeOfSyncRef(ns3::LteRrcSap::MasterInformationBlockSL, uint16_t, uint16_t)
virtual void ReportChangeOfSyncRef (LteRrcSap::MasterInformationBlockSL mibSl, uint16_t frameNo, uint16_t subFrameNo) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUeCphySapUser__tp_init__1(PyNs3LteUeCphySapUser*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:79052:99: error: invalid new-expression of abstract class type ‘PyNs3LteUeCphySapUser__PythonHelper’
self->obj = new PyNs3LteUeCphySapUser__PythonHelper(((PyNs3LteUeCphySapUser ) arg0)->obj);
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUePhySapProvider__tp_init__0(PyNs3LteUePhySapProvider
, PyObject
, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:80009:64: error: invalid new-expression of abstract class type ‘PyNs3LteUePhySapProvider__PythonHelper’
self->obj = new PyNs3LteUePhySapProvider__PythonHelper();
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:7166:7: note: because the following virtual functions are pure within ‘PyNs3LteUePhySapProvider__PythonHelper’:
class PyNs3LteUePhySapProvider__PythonHelper : public ns3::LteUePhySapProvider
^
In file included from ./ns3/lte-ue-phy.h:32:0,
from ./ns3/component-carrier-ue.h:29,
from ./ns3/lte-module.h:14,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-ue-phy-sap.h:70:17: note: virtual void ns3::LteUePhySapProvider::AddDiscTxApps(std::list)
virtual void AddDiscTxApps (std::list<uint32_t> apps) = 0;
^
./ns3/lte-ue-phy-sap.h:76:17: note: virtual void ns3::LteUePhySapProvider::AddDiscRxApps(std::list)
virtual void AddDiscRxApps (std::list<uint32_t> apps) = 0;
^
./ns3/lte-ue-phy-sap.h:82:16: note: virtual void ns3::LteUePhySapProvider::SetDiscGrantInfo(uint8_t)
virtual void SetDiscGrantInfo (uint8_t resPsdch) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUePhySapProvider__tp_init__1(PyNs3LteUePhySapProvider*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:80037:105: error: invalid new-expression of abstract class type ‘PyNs3LteUePhySapProvider__PythonHelper’
self->obj = new PyNs3LteUePhySapProvider__PythonHelper(((PyNs3LteUePhySapProvider ) arg0)->obj);
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUePhySapUser__tp_init__0(PyNs3LteUePhySapUser
, PyObject
, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:80454:60: error: invalid new-expression of abstract class type ‘PyNs3LteUePhySapUser__PythonHelper’
self->obj = new PyNs3LteUePhySapUser__PythonHelper();
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:7211:7: note: because the following virtual functions are pure within ‘PyNs3LteUePhySapUser__PythonHelper’:
class PyNs3LteUePhySapUser__PythonHelper : public ns3::LteUePhySapUser
^
In file included from ./ns3/lte-ue-phy.h:32:0,
from ./ns3/component-carrier-ue.h:29,
from ./ns3/lte-module.h:14,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/lte-ue-phy-sap.h:126:17: note: virtual void ns3::LteUePhySapUser::NotifyChangeOfTiming(uint32_t, uint32_t)
virtual void NotifyChangeOfTiming (uint32_t frameNo, uint32_t subframeNo) = 0;
^
./ns3/lte-ue-phy-sap.h:131:16: note: virtual void ns3::LteUePhySapUser::NotifySidelinkEnabled()
virtual void NotifySidelinkEnabled () = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3LteUePhySapUser__tp_init__1(PyNs3LteUePhySapUser*, PyObject*, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:80482:97: error: invalid new-expression of abstract class type ‘PyNs3LteUePhySapUser__PythonHelper’
self->obj = new PyNs3LteUePhySapUser__PythonHelper(((PyNs3LteUePhySapUser ) arg0)->obj);
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3EpcHelper__tp_init__0(PyNs3EpcHelper
, PyObject
, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:109490:85: error: invalid new-expression of abstract class type ‘PyNs3EpcHelper__PythonHelper’
self->obj = new PyNs3EpcHelper__PythonHelper(((PyNs3EpcHelper ) arg0)->obj);
^
In file included from src/lte/bindings/ns3module.cc:1:0:
src/lte/bindings/ns3module.h:8696:7: note: because the following virtual functions are pure within ‘PyNs3EpcHelper__PythonHelper’:
class PyNs3EpcHelper__PythonHelper : public ns3::EpcHelper
^
In file included from ./ns3/emu-epc-helper.h:32:0,
from ./ns3/lte-module.h:17,
from src/lte/bindings/ns3module.h:78,
from src/lte/bindings/ns3module.cc:1:
./ns3/epc-helper.h:122:16: note: virtual void ns3::EpcHelper::ActivateSidelinkBearer(ns3::Ptrns3::NetDevice, ns3::Ptrns3::LteSlTft)
virtual void ActivateSidelinkBearer (Ptr ueDevice, Ptr tft) = 0;
^
./ns3/epc-helper.h:130:16: note: virtual void ns3::EpcHelper::DeactivateSidelinkBearer(ns3::Ptrns3::NetDevice, ns3::Ptrns3::LteSlTft)
virtual void DeactivateSidelinkBearer (Ptr ueDevice, Ptr tft) = 0;
^
./ns3/epc-helper.h:140:16: note: virtual void ns3::EpcHelper::StartDiscovery(ns3::Ptrns3::NetDevice, std::list, bool)
virtual void StartDiscovery (Ptr ueDevice, std::list<uint32_t> apps, bool rxtx) = 0;
^
./ns3/epc-helper.h:148:16: note: virtual void ns3::EpcHelper::StopDiscovery(ns3::Ptrns3::NetDevice, std::list, bool)
virtual void StopDiscovery (Ptr ueDevice, std::list<uint32_t> apps, bool rxtx) = 0;
^
src/lte/bindings/ns3module.cc: In function ‘int _wrap_PyNs3EpcHelper__tp_init__1(PyNs3EpcHelper
, PyObject
, PyObject*, PyObject**)’:
src/lte/bindings/ns3module.cc:109519:54: error: invalid new-expression of abstract class type ‘PyNs3EpcHelper__PythonHelper’
self->obj = new PyNs3EpcHelper__PythonHelper();

Output of ./waf configure:

Checking for 'gcc' (C compiler) : /usr/bin/gcc
Checking for cc version : 4.9.3
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/python
Checking for python version : (2, 7, 12, 'final', 0)
python-config : /usr/bin/python-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 : ../pybindgen-0.17.0.post58+ngcf00cc0 (guessed)
Checking for python module 'pybindgen' : 0.17.0.post58+gcf00cc0
Checking for pybindgen version : 0.17.0.post58+gcf00cc0
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' : 1.9.1
Checking for pygccxml version : 1.9.1
Checking for program 'castxml' : /usr/bin/castxml
Checking for castxml version : 0.1
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' >= 3.0 : 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 'sqlite3' : yes
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' : 1.3.1
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' : ok
Checking for program 'sudo' : /usr/bin/sudo
Checking for program 'valgrind' : /usr/bin/valgrind
Checking for 'gsl' : yes
python-config : /usr/bin/libgcrypt-config
Checking for libgcrypt : yes
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) : enabled
Gcrypt library : enabled
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 : enabled
Python API Scanning Support : enabled
Python Bindings : enabled
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.121s)

PC5 Mode 3 and 4 for V2X communication

Evaluating the newest addition to D2D communication makes these modes essential.
Due to the fundamental changes on the MAC layer for resource allocation the currently implemented Mode 2 does not sufficiently model Mode 4.

  1. Are there any plans to implement those, yet?
  2. Can I get an educated guess, how easy it is to change the layout of PSCCH and PSSCH from TDM to FDM in Mode 4?

MCPTT Private Call Configuration

Hello,

I was checking the MCPTT examples that you provided and I only found a basic group call example.

I was trying to make a scenario of a private call but I didn't know how to configure it the same way as a basic group call (screenshot below).

So, can you please provide me with an example of MCPTT private call setup? if possible of course.

Thanks in advance.

Capture

Channel Model for NR V2X sidelink

Hi there,
I'm confused about the channel model in releases 16 and 17. For example, In 3GPP TR 37.885, we can see that it is clearly defined the channel model for the NR V2V sidelink. While for the V2B, they are referred to TR 38.901. So, I would like to know what is the channel model for NR V2I sidelink.
I appreciate any help you can provide.

Originally posted by @ibrahimth in #16 (comment)

lte-sl-out-of-covrg-comm.cc with small change crashes

lte-sl-out-of-covrg-comm.cc as is works fine, and works when run from ./scratch.

I slightly modified lte-sl-out-of-covrg-comm.cc to use B14 and a PC1 power level by setting:

//Set the frequency
uint32_t ulEarfcn = 23330; // 18100;
uint16_t ulBandwidth = 10; // 50;
Config::SetDefault ("ns3::LteUePhy::TxPower", DoubleValue (30.0));

and named the file lte-sl-out-of-covrg-comm-awc.cc

Upon running the simulation the program terminated with SIGIOT.
Running with gdb gave the following back trace (below), it seems the 10Mhz bandwidth is a problem, do I need to modify the resource pool? Also the powerTx is at 23 instead of 30. I suspect I need to make more changes, I simply copied lte-sl-out-of-covrg-comm.cc to ./scratch and used:
../waf --run "lte-sl-out-of-covrg-comm-awc --simTime=7"
../waf --run "lte-sl-out-of-covrg-comm-awc --simTime=7" --gdb
from ./scratch to run the simulations.

Thank you,
Mike

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff3b90921 in __GI_abort () at abort.c:79
#2 0x00007ffff47bc957 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff47c2ae6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff47c2b21 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff47c2d54 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff47be85d in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007ffffc2de1b2 in std::vector<double, std::allocator >::_M_range_check (this=0x849f750, __n=31) at /usr/include/c++/7/bits/stl_vector.h:825
#8 0x00007ffffc2d56fd in std::vector<double, std::allocator >::at (this=0x849f750, __n=31) at /usr/include/c++/7/bits/stl_vector.h:846
#9 0x00007ffffb6cf06f in ns3::SpectrumValue::operator[] (this=0x849f740, index=31) at ../src/spectrum/model/spectrum-value.cc:44
#10 0x00007ffffc38c11d in ns3::LteSpectrumValueHelper::CreateUlTxPowerSpectralDensity (earfcn=23330, txBandwidthConfiguration=10, powerTx=23, activeRbs=std::vector of length 1, capacity 1 = {...})
at ../src/lte/model/lte-spectrum-value-helper.cc:352
#11 0x00007ffffc33b685 in ns3::LteUePhy::CreateTxPowerSpectralDensity (this=0x8597830) at ../src/lte/model/lte-ue-phy.cc:823
#12 0x00007ffffc33af56 in ns3::LteUePhy::SetSubChannelsForTransmission (this=0x8597830, mask=std::vector of length 1, capacity 1 = {...}) at ../src/lte/model/lte-ue-phy.cc:789
#13 0x00007ffffc3475cb in ns3::LteUePhy::SubframeIndication (this=0x8597830, frameNo=305, subframeNo=7) at ../src/lte/model/lte-ue-phy.cc:1823
#14 0x00007ffffc364258 in ns3::EventImpl* ns3::MakeEvent<void (ns3::LteUePhy::)(unsigned int, unsigned int), ns3::LteUePhy, unsigned int, unsigned int>(void (ns3::LteUePhy::)(unsigned int, unsigned int), ns3::LteUePhy, unsigned int, unsigned int)::EventMemberImpl2::Notify() (this=0x85a2d80) at ./ns3/make-event.h:436
#15 0x00007ffff5b709f9 in ns3::EventImpl::Invoke (this=0x85a2d80) at ../src/core/model/event-impl.cc:51
#16 0x00007ffff5b75b14 in ns3::DefaultSimulatorImpl::ProcessOneEvent (this=0x8460af0) at ../src/core/model/default-simulator-impl.cc:151
#17 0x00007ffff5b75f19 in ns3::DefaultSimulatorImpl::Run (this=0x8460af0) at ../src/core/model/default-simulator-impl.cc:204
#18 0x00007ffff5b71785 in ns3::Simulator::Run () at ../src/core/model/simulator.cc:176
#19 0x000000000801b0e9 in main (argc=2, argv=0x7ffffffee1d8) at ../scratch/lte-sl-out-of-covrg-comm-awc.cc:394

Problematic SL-Tag tbSize data cast

Hi,

a student of mine and me found a possibly quite severe bug during routine test evaluations of the PSC toolbox for NS3.

The evaluation in question is the provided wns3-2017-pssch scenario, which was introduced to evaluate the throughput for a simple sidelink communication for varying configurations.

One of the main analyzed parameters was the sub-band size, which was iterated from 2 to 50 RBs in steps of twos. The expected behavior would indicate an increasing throughput with larger sub-band sizes. (Plotted in Figure 5 of the complementary publication)

However, the data-rate calculations showed anomalies:
image

As one can see from the output, the data-rate follows changes in a "saw-tooth"-pattern w.r.t. to sub-band size, which is clearly a rather weird behavior and also different from the expected one.

A rather extensive search identified the tbSize as the main inconsistency, which was correctly reported on the MAC layer, but not on the PHY layer stats.

After some more digging, we found that the problem stemmed from a bad data type cast in the de-serialize function of the LTE SL Tag.
More specifically - Line 104/105 of the lte-sl-tag.cc file.
image

The tbSize is here cast into a uint_8 which will wrap around at 255, explaining the fall in data-rate as well as the saw-tooth like behavior.

Changing the casts to their correct data type resulted in the following output of the wns3-2017-pssch script:
image

The new results fit the data from the publication and are also more in line with the expected behavior of the LTE Sidelink communication.

Maybe someone from the official team would be available to comment on this possibily quite severe bug in the LTE PSC Sidelink toolbox?

This bug was found in the most current version of this toolbox.

Thanks and much thanks for your work.
Leonard Fisser

When trying to install 2 SL bearers, make error message more clear

If a UE RRC already has a sidelink bearer installed for a certain src/group configuration a cryptic assertion error doesn't help finding the problem.

assert failed. cond="m_sidelinkConfiguration->GetSidelinkRadioBearer (m_sidelinkConfiguration->m_sourceL2Id, group) == NULL", file=../src/nist/model/nist-lte-ue-rrc.cc, line=907

For Help to build and run the project

I am the new to use github and your project . I have downloaded the project named 'psc-dev' ,but I dont konw how to do the next step, can anybody tell me or give me some suggestions? Thank you very very much.

Not able to capture d2d traces in netAnim.

Hi All,

I'm using lte-sl-in-covrg-comm-mode1.cc file from the path:
psc-ns3-psc-1.0/src/lte/examples/d2d-examples/

I did following modifications regarding netAnim interface.

AnimationInterface anim ("d2d.xml"); // for creating xml file and setting nodes
anim.UpdateNodeDescription(enbNode.Get(0),"EnodeB");
anim.SetConstantPosition(ueNodes.Get(0),30.00,0.00);
anim.SetConstantPosition(ueNodes.Get(1),40.00,0.00);
anim.UpdateNodeDescription(ueNodes.Get(0),"UE_1");
anim.UpdateNodeDescription(ueNodes.Get(1),"UE_2");

but while running "d2d.xml" file at netAnim it is not showing any traverse packets between eNodeB, UE_1 or UE_2. It only displays nodes.

Here are XML tags that I captured in "d2d.xml" file.

127.0.0.1 7.0.0.1 10.0.0.6 127.0.0.1 7.0.0.1 10.0.0.6 127.0.0.1 7.0.0.1 10.0.0.6 10.0.0.5 127.0.0.1 10.0.0.5 127.0.0.1 7.0.0.2 127.0.0.1 7.0.0.2 127.0.0.1 7.0.0.3 127.0.0.1 7.0.0.3 127.0.0.1 ::1 fe80::200:ff:fe00:1 7777:f00d::200:ff:fe00:1 ::1 ::1 ::1

Please check what is missing for other packets and how can I capture other packets. so nodes on netAnim can traverse the packets.

Thanks in advance.

licensing terms

Please replace the GPLv2 text in LICENSE with the approved statement.
Please also replace (or delete) the similar statement in README.

Thank you.

For Help about project API

I am new to this project and I have run the lte-sl-in-covrg-comm-model1.cc . I want to learn the API for this project,for example I want to know the all pathloss model and I want to change it to rayleign fading model, how can I do.I need your help!

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.