Commit Graph
50 Commits
Author SHA1 Message Date
Cedric Roux 532aa1a904 rfsim: print error if write fails
Some strange behavior may happen if write() to the rfsim socket fails.
Let's print some error, can be useful in case of problem.
2024-08-29 15:06:29 +02:00
Cedric Roux 42539b0bec rfsim: add a check on 'sock'
It is very possible that the operating system returns a file
descriptor bigger than the size of bridge->buf (MAX_FD_RFSIMU, which
is 250 as of now). As a minimum, let's fail if the socket file
descriptor is out of bounds.

A proper solution may be implemented later, if needed.
2024-08-29 14:59:51 +02:00
Thomas Schlichter ede6775ac3 fix for compilers that don't support the CMPLX() macro 2024-08-23 14:57:48 +02:00
Thomas Schlichter 6a8edaf317 rfsimulator: add delay and Doppler simulation for circular orbit and add according channel models SAT_LEO_TRANS and SAT_LEO_REGEN
Delay and Doppler computation is done as in Matlab function dopplerShiftCircularOrbit:
https://de.mathworks.com/help/satcom/ref/dopplershiftcircularorbit.html
2024-08-20 16:46:25 +02:00
Thomas Schlichter 68b07d542c rfsimulator: correctly set center frequency 2024-08-20 16:46:25 +02:00
Thomas Schlichter 359880fa73 rfsimulator: use ceil() to calculate the integer number of chan_offset samples from the prop_delay_ms
The actual propagation delay should not be smaller than the one specified.
A too short propagation delay might result in too early reception of Msg1, and with that in a mis-detection of the RAPID.
2024-07-11 14:48:52 +02:00
Robert Schmidt 13517cd6bc Write documentation on performance tuning and security 2024-06-03 14:21:19 +02:00
Robert Schmidt 6a12784872 RFsim: don't shell out to improve kernel socket buffer sizes, teach the user instead
A later commit in this series adds performance tuning tips, which
includes the call made in RFsim until this commit.
2024-06-03 14:00:41 +02:00
Robert Schmidt 55728a98c1 RFsim: demote log level, remove useless log message 2024-06-03 12:37:33 +02:00
Thomas Schlichter d5a0455560 fix error of taking the absolute value of 'uint64_t' 2024-05-07 20:46:37 +02:00
Thomas Schlichter 5ac881b7c1 rfsimulator: add support to simulate a long propagation delay
Add the option `--rfsimulator.prop_delay` to specify the simulated receive-path (gNB: UL, UE: DL) propagation delay in ms.
This option can be used e.g. to simulate a simple GEO satellite channel by specifying `--rfsimulator.prop_delay 238.74` to both, the gNB and the UE.

This is part of the work developed by Fraunhofer IIS within the ESA-funded project 5G-GOA (https://connectivity.esa.int/projects/5ggoa).
2024-05-07 20:46:37 +02:00
Robert Schmidt 42254e6267 Memory sanitizer: unitialized read
Reset all the circular buffer to zero; this ensures that we cannot read
uninitialized data. Since this is RFsimulator, performance is not a
problem here either (and zeroing out happens only once).
2024-04-18 14:16:09 +02:00
Robert Schmidt 513f56e215 One RFsimulator end, close open connections
Use the correct function in order to close open RFsim connections,
instead of a simple close(). If this is not done correctly, it might
happen that the softmodem closes, but an L1 thread might still read
samples (bug in higher layers). Then, RFsim tries to read a socket
(because it has an open connection), but the actual connection had been
close()d. This commit fixes this behavior.
2024-03-19 15:26:49 +01:00
Jaroslava Fiedlerova 64e58c1d67 Merge remote-tracking branch 'origin/739-rf-channel-sim-improvements' into integration_2024_w09 2024-03-04 17:39:13 +01:00
Laurent THOMAS 7466297568 move command line sample offset and 3/4 sampling option at top level, as it is common option for 4G,5G xNB and UE 2024-03-04 10:07:07 +01:00
Guido Casati 4cfba89e68 Updated and enhanced channel simulation documentation
- centralized channel simulation documentation in channel_simulation.md
- removed redundant documentation repeated in multipled .md files
- updated links
- removed obsolete information
- introduced mermaid flowchart for rfsim
- added missing information about available options and usage
- deleted:    ../../../openair1/SIMULATION/TOOLS/DOC/devusage.md
- deleted:    ../../../openair1/SIMULATION/TOOLS/DOC/rtusage.md
- deleted:    ../../../openair1/SIMULATION/TOOLS/DOC/arch.md

related to issue #739
2024-03-01 15:48:24 +01:00
Guido Casati 563109a88f Cleanup of unused and outdated legacy RFSIM code
- deleted:    ../../../executables/rfsim.c
- removed unused command line options to set SINR and SNR
- removed unused functions to get SINR and SNR
- removed unused RFSIM struct members
2024-02-20 15:06:59 +01:00
Robert Schmidt 52bfd463de Demote multiple non-error logs to warning in RFsim
In all these cases, we simply continue with processing; it therefore
seems that these are more warnings than errors.
2024-02-03 11:24:41 +01:00
Robert Schmidt 1fe4cef03d Update/Improve RFsim documentation
- Add TOC
- Better describe what RFsim does
- Remove misleading, wrong, unnecessary information
  * It is futile to mention --phy-test or other modes, RFsim works with
    all
  * Explaining how to ping is not the task of the RFsim documentation
    (that is what tutorials are for)
  * Remove useless/outdated build log information
- Add some more information on which flags to run
- Improve formatting, and minor clarifications
2024-01-05 13:39:00 +01:00
Robert Schmidt 09652061bb Lower RFsim EAGAIN error message to debug message
We set the RFsim TCP socket to non-blocking. Thus, it may happen that we
cannot write() to the socket when the kernel cannot handle the request,
in which case we wait some time before trying again. This is the
correct/expected behavior.

Since this is *normal*, an error message is not justified; we did not
even print a message in this case before commit 21790f9c4f introduced it.
2023-12-20 15:22:15 +01:00
Cedric Roux 578cd23d59 rfsimulator: ignore PIPE signal
When au UE disconnects, a write on the rf simulator socket may
generate a PIPE signal in the gnb and crash it.

Let's ignore this signal.
2023-11-18 21:44:21 +01:00
Laurent THOMAS f50d5f5a9b make multiple config instead of one implicit global 2023-11-10 10:23:11 +01:00
Arash Sahbafard e46eeffe2a There was a simple bug in detecting the channel models in rfsim which is fixed.
modified:   radio/rfsimulator/simulator.c
2023-10-16 18:08:55 +02:00
Laurent THOMAS f8c122a7cf increase the max fd of rfsim, that have been shorten to tightly for cpu saving 2023-10-06 11:21:27 +02:00
Robert Schmidt d8c8c6b103 Merge remote-tracking branch 'origin/rfsimu-optim' into integration_2023_w38 2023-09-22 08:38:18 +02:00
Bruno Mongazon-Cazavet eac8f3b5d6 Limit some optimization to 1 tx and 1 ue 2023-09-18 13:49:48 +02:00
Robert Schmidt 8db0e44d4c Log which sysctl variables are changed in RFsim 2023-09-14 09:26:35 +02:00
Raymond Knopp a7bc282302 First-level of support for new aarch64 machines
Testing on Neoverse N1 (Ampere 3GHz). Tested only on a subset of phy-simulators.

- Changes:
- use SIMDE consistently
- adaptations of LDPC decoder generator for ARMv8 performance
- SIMDe modifications of Intel CRC to allow for aarch64 build.
  optimizations for 128-bit to improve performance of LDPC encode/decode
  on aarch64 (Neoverse 1)
- added BG2 files for 128-bit ldpc encoder (aarch64)
- testing on Xeon
- testing on x86
- minor changes to build/run on x86
- change in crc.h after returning to aarch64
- removed some warning in ldpc decoder generator for x86_64
- char
- Delete irrelevant constants
- Correctly declare variables
- Define stdbool for all architectures
- Remove definition of _MM_SHUFFLE and use SIMDE_MM_SHUFFLE
- Remove commented code
- Fix CMakeLists.txt
- Include SIMDE avx2 functions in tools_defs.h
2023-09-13 17:19:20 +02:00
Bruno Mongazon-Cazavet 21790f9c4f Optimize RFsimulator to improve E2E performance
This improves the RFsimulator code to reach a ~40% E2E throughput
improvement (depending on the machines).

Changes:
- reduce ring buffer size
- code cleanup for readability
- set TCP kernel parameters
2023-09-13 16:36:17 +02:00
Robert Schmidt a87cd3e83c Rewrite RUNMODEM.md section for phytest; simplify rfsim doc 2023-08-09 17:38:05 +02:00
Robert Schmidt 9f45f1d769 Deprecate NR-UE --rrc_config_path, use --r{e,b}config-file instead
Config options --reconfig_file and --rbconfig-file have been introduced
to modify the filenames of reconfig.raw and rbconfig.raw (e.g., in the
case of multiple UEs). These filen*ames* were to be prepended with
--rrc_config_path to set the path. In summary, three options were
necessary, when two are sufficient.

In this commit, change to the options --reconfig-file and
--rbconfig-file (slight change for harmonization with other options,
which mostly use dashes) to give the full path to the corresponding
files, and avoid to surprise users who would not expect to have three
options.

--rrc_config_path has been deprecated and an error will be printed if a
user attempts to use it.
2023-08-09 17:32:45 +02:00
Robert Schmidt 79fe8f58a7 Speed up rfsimulator build
The ASN.1 RRC (4G/5G) headers are not needed
2023-07-10 16:33:04 +02:00
Robert Schmidt 4ae73af46f Merge remote-tracking branch 'origin/cmake-refactor' into integration_2023_w27 2023-07-08 13:29:55 +02:00
Robert Schmidt ddf549b1f3 Move radio CMakeLists.txt to subdirectory
- move following radios: AW2S, BladeRF, IRIS, LMSSDR, RFsimulator, USRP
- move following transports: Ethernet, benetel4g, benetel5g
- for each: create independent cmake variable to switch compilation
  on/off, in order: OAI_AW2S, OAI_BLADERF, OAI_IRIS, OAI_LMSSDR,
  OAI_SIMU, OAI_USRP, OAI_ETHERNET, OAI_BENETEL4G, OAI_BENETEL5G
- Remove RF_BOARD variable, allows to compile multiple boards at once
- where applicable: remove USERSPACE/LIB in path, i.e., move files up to
  directories, as all are userspace libraries

Note that with the above, it is now mandatory to enable a radio
implementation before compiling it, e.g., for USRP:

./build_oai -w USRP
cmake .. -DOAI_USRP=ON && ninja oai_usrpdevif
2023-07-07 08:35:28 +02:00
Robert Schmidt 04247d501d Remove RFSIMULATOR environment variable from repository 2023-06-28 07:16:43 +02:00
Robert Schmidt 7a3aaca1ef Print warning if RFSIMULATOR environment variable is used 2023-06-28 07:16:00 +02:00
luis_pereira87 655925ddea Remove outdated documentation 2023-05-24 09:30:02 +01:00
francescomani 971bacb76f clang warning fixes to compile rfsimulator 2023-04-14 13:52:12 +02:00
Robert Schmidt 232700e417 Merge remote-tracking branch 'origin/rfsim-timeout' into integration_2023_w10b 2023-03-11 12:01:21 +01:00
Robert Schmidt b925dd3e2b rfsimulator: introduce configurable wait timeout if no UE connected
Use --rfsimulator.wait_timeout 20
2023-03-09 10:02:56 +01:00
Rúben Soares da Silva 94faf0b46c Set default behaviour regarding nokrnmod as enabled, updating references and usages 2023-03-07 13:27:37 +00:00
Robert Schmidt 9a0dd7c1b3 Update for webserver; cleanup in CMakeLists.txt
- Add oai header to typescript and html sources, add support to commands
  requiring two parameters, add more helpfiles
- Fix help bug (html comments not removed from tooltips)
- Fix backend build problem and 2 warnings
- Correctly initialize variables in nr_phy_scope.c
- Use add_subdirectory for websrv cmake build
- correctly link to asn1_lte_rrc and asn1_nr_rrc
- fix bug: correctly recognize npm packet
- only configure targets if explicitly asked for by users
- use add_subdirectory
- Use add_subdirectory for telnet cmake build
- Minor cleanup in build_oai
- Move softscope build in dedicated CMakeLists, and comment out
  DEBUG_MAC_INTERFACE option (not found in code)
- Make DEBUG_ASN1 a cmake only option ( no C macro) as it's not used as
  a C macro in the code, and develop align
2023-02-21 17:01:07 +01:00
Robert Schmidt 805dbe7272 Lower RFsim timeout when no UE connected
This will lead to quicker drop of the UE context in the gNB once it
disconnected from RFsim.
2022-12-15 17:04:10 +01:00
Robert Schmidt 23c92ee0ed Merge remote-tracking branch 'origin/websrv2' into integration_2022_wk50 2022-12-15 16:30:33 +01:00
frtabu 21b3484e02 Initial web server implementation 2022-11-30 11:34:54 +01:00
Roberto Louro Magueta 9b04af1b52 Put the center_freq and maxDoppler as input of new_channel_desc_scm() function 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta 255ad24410 Replace gaussdouble() by gaussZiggurat() in random_channel() and add_noise() 2022-11-09 18:58:09 +00:00
Arash Sahbafard ec25c623d1 Fix: check RFsim bind() return code 2022-11-04 09:26:46 +01:00
Roberto Louro Magueta 6f51b930c1 Put the correlation level (low, medium or high) as input of new_channel_desc_scm() 2022-10-27 17:07:25 +01:00
francescomani e79b926905 rename sdr to radio 2022-10-19 17:42:26 +02:00