mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 20:50:28 +00:00
Compare commits
296 Commits
fix-docs-m
...
issue-1012
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24812b3499 | ||
|
|
75a68167ea | ||
|
|
1251c44ae8 | ||
|
|
41ce595461 | ||
|
|
a898c18ddc | ||
|
|
23c115dc74 | ||
|
|
57e382ccd1 | ||
|
|
66d8ada982 | ||
|
|
110f5c7304 | ||
|
|
ef4e37d35c | ||
|
|
35a450bd43 | ||
|
|
b7ed2583ac | ||
|
|
27be4e26a9 | ||
|
|
04a1acf376 | ||
|
|
0348aa08b9 | ||
|
|
d760a16827 | ||
|
|
8207a4c352 | ||
|
|
823340a2e2 | ||
|
|
3efaafa633 | ||
|
|
bae1de16d6 | ||
|
|
7376c9545c | ||
|
|
7b42a65ac7 | ||
|
|
68a3a849bc | ||
|
|
350263460b | ||
|
|
747689596a | ||
|
|
2d7999cb28 | ||
|
|
064d2a1ef0 | ||
|
|
e8d36e8af7 | ||
|
|
83fed82bcf | ||
|
|
574a75472c | ||
|
|
bca5939640 | ||
|
|
7c18dfd93a | ||
|
|
f7639e059d | ||
|
|
fba488056c | ||
|
|
61b5417817 | ||
|
|
78f36b64c2 | ||
|
|
e06d0c7199 | ||
|
|
ece138134b | ||
|
|
8ecda65d55 | ||
|
|
5f261d4f4c | ||
|
|
32eae0a0a8 | ||
|
|
7ec646a8d2 | ||
|
|
c3eaef704f | ||
|
|
918802d189 | ||
|
|
e3aa91dec8 | ||
|
|
70d23e43df | ||
|
|
a0f58d7104 | ||
|
|
5b5b9b3a30 | ||
|
|
df3a768811 | ||
|
|
48773b8517 | ||
|
|
7807016ae6 | ||
|
|
ece9d51db3 | ||
|
|
07ce1ed145 | ||
|
|
dcb69986eb | ||
|
|
22a335b1a8 | ||
|
|
34052bf0ce | ||
|
|
e1b06d177e | ||
|
|
ae690217dd | ||
|
|
45499290cf | ||
|
|
7a3da4b7a4 | ||
|
|
af37aaee00 | ||
|
|
ad1b05cd01 | ||
|
|
65ef3cfa74 | ||
|
|
2d27e0fc0a | ||
|
|
c645e8b096 | ||
|
|
f231655b31 | ||
|
|
4d372c5f58 | ||
|
|
c8b09f570f | ||
|
|
2bacf7ba54 | ||
|
|
149c4dbf6e | ||
|
|
867d476397 | ||
|
|
5df7d000f9 | ||
|
|
8424c8ecb6 | ||
|
|
d0089369d3 | ||
|
|
b0ab5e8795 | ||
|
|
7045140845 | ||
|
|
e4f7443552 | ||
|
|
1f0e9abe2f | ||
|
|
9620fd1a6a | ||
|
|
296ae968b1 | ||
|
|
10555929b0 | ||
|
|
5f162c436e | ||
|
|
9803fb29f6 | ||
|
|
e2075b57ca | ||
|
|
d8e9a30fad | ||
|
|
c9b704ed64 | ||
|
|
464762e52b | ||
|
|
e375a13aa5 | ||
|
|
42a54a01a0 | ||
|
|
0ba9a9758b | ||
|
|
f93a71977f | ||
|
|
8c85acbba6 | ||
|
|
1a472e4c0b | ||
|
|
7ff05a98c2 | ||
|
|
ae63a51ceb | ||
|
|
3b517dd5d2 | ||
|
|
2db630e187 | ||
|
|
7ef1e79c0d | ||
|
|
ad878dc7df | ||
|
|
6ddd2bd2af | ||
|
|
2a67719e92 | ||
|
|
b9043d990a | ||
|
|
38c27680eb | ||
|
|
1dd0194e32 | ||
|
|
2b25b32b16 | ||
|
|
1cd3950178 | ||
|
|
0622fb362f | ||
|
|
520d52963e | ||
|
|
aead89e9e7 | ||
|
|
4eb9dd3d38 | ||
|
|
c36a6bcb47 | ||
|
|
455553d129 | ||
|
|
d7c3968df2 | ||
|
|
edc53ac9dd | ||
|
|
4efb142f9a | ||
|
|
3155bf907c | ||
|
|
f4b93dce53 | ||
|
|
114b03f310 | ||
|
|
14b6d0f20f | ||
|
|
769885c05a | ||
|
|
a20640accc | ||
|
|
d20b1120d4 | ||
|
|
9e43f998d9 | ||
|
|
d07771c538 | ||
|
|
7eb65f2adc | ||
|
|
7d0bf3be51 | ||
|
|
99e4f54d61 | ||
|
|
e70a2b3cc1 | ||
|
|
121937ad4c | ||
|
|
677a16a4a9 | ||
|
|
ce4e647fd8 | ||
|
|
dab8db76d7 | ||
|
|
92bc0aee0e | ||
|
|
0dcea09e87 | ||
|
|
e056acc896 | ||
|
|
fb47748fae | ||
|
|
264f7cb817 | ||
|
|
e44d498cba | ||
|
|
34ba85f3b1 | ||
|
|
8711556d9e | ||
|
|
be236d450e | ||
|
|
c537e2cabe | ||
|
|
8b9098b7ca | ||
|
|
1a65abb56c | ||
|
|
00a7890449 | ||
|
|
ba8b23772e | ||
|
|
dd868fd25e | ||
|
|
1ffa012014 | ||
|
|
6843625615 | ||
|
|
5ec7bcdcd2 | ||
|
|
bcc616e654 | ||
|
|
31af716ccb | ||
|
|
ec8efe1b7e | ||
|
|
8910406a9e | ||
|
|
6289409f15 | ||
|
|
f4e4ef74ff | ||
|
|
78d91db964 | ||
|
|
a3ac1dbdfe | ||
|
|
b012700fe4 | ||
|
|
ddf81a175c | ||
|
|
98fea81b39 | ||
|
|
9949c7e71b | ||
|
|
7459e73277 | ||
|
|
2424c182d6 | ||
|
|
b3007ce55b | ||
|
|
bd1dadaa79 | ||
|
|
958fe1ed75 | ||
|
|
8411a428db | ||
|
|
d6047cd83d | ||
|
|
9639cbb436 | ||
|
|
9086fb63de | ||
|
|
7355b55ad1 | ||
|
|
42b6576d81 | ||
|
|
8ca05e51ac | ||
|
|
799934024e | ||
|
|
55a56002de | ||
|
|
97185a6921 | ||
|
|
5047bacd6d | ||
|
|
7eb33a4003 | ||
|
|
3e5681abbd | ||
|
|
8fcea7c314 | ||
|
|
23e0f50af0 | ||
|
|
2dd72d40cb | ||
|
|
e7a45a304b | ||
|
|
2d2f61f253 | ||
|
|
aa323b02f2 | ||
|
|
0721c0fad0 | ||
|
|
25918898a7 | ||
|
|
acd3634d27 | ||
|
|
a0d8baf323 | ||
|
|
2ea4cbbd93 | ||
|
|
8348f83a1f | ||
|
|
5adfeb80c3 | ||
|
|
2dde472cfd | ||
|
|
7935c19d21 | ||
|
|
6193d7c7f4 | ||
|
|
dcb10ffc94 | ||
|
|
dcd7ee711b | ||
|
|
4aafd1e369 | ||
|
|
9d9f272e74 | ||
|
|
205bf7c993 | ||
|
|
1fc057cb08 | ||
|
|
c6a06dc81f | ||
|
|
0cbed89b03 | ||
|
|
3e8354727e | ||
|
|
c2e8743a7b | ||
|
|
feea066c3f | ||
|
|
5e3b4c497c | ||
|
|
7c82312b6d | ||
|
|
3277018fce | ||
|
|
3e79774386 | ||
|
|
ff3245ea90 | ||
|
|
915c41c127 | ||
|
|
487de67ff8 | ||
|
|
59803e221f | ||
|
|
1357158722 | ||
|
|
de07668b0b | ||
|
|
235493aa07 | ||
|
|
524a3ddf85 | ||
|
|
12d92bc836 | ||
|
|
a38aa1bab8 | ||
|
|
b4485ecea2 | ||
|
|
fd50ff43cc | ||
|
|
59ff9ae04e | ||
|
|
83bf140bc3 | ||
|
|
b2174cb8e1 | ||
|
|
8de13fab97 | ||
|
|
ac76c6e27a | ||
|
|
b69b65ba66 | ||
|
|
1c5af6065c | ||
|
|
63397ac592 | ||
|
|
3f9dcee5fa | ||
|
|
7d70617a01 | ||
|
|
d6f0b5a9d7 | ||
|
|
afebd033f6 | ||
|
|
6e424af56b | ||
|
|
1e61c2ccb4 | ||
|
|
0fb8a09b86 | ||
|
|
60ab0a89a2 | ||
|
|
2ff949a16f | ||
|
|
4876533e9c | ||
|
|
cdbfaf835e | ||
|
|
1e476735ea | ||
|
|
1b81c4b09c | ||
|
|
5716d95e97 | ||
|
|
eea7be3977 | ||
|
|
19813283fb | ||
|
|
2a5ed87589 | ||
|
|
1ecb03f5f8 | ||
|
|
2889e55cd8 | ||
|
|
197705f232 | ||
|
|
fd37fba9b7 | ||
|
|
66c3b7d192 | ||
|
|
eef092c318 | ||
|
|
72371ba10b | ||
|
|
46ed4ac36d | ||
|
|
4177c6d182 | ||
|
|
cc094ac737 | ||
|
|
cede449907 | ||
|
|
a68168805b | ||
|
|
1a5e2598a3 | ||
|
|
d6c29b2d2c | ||
|
|
a31838acd7 | ||
|
|
ba3a0d2100 | ||
|
|
124debc2c7 | ||
|
|
03d4ce2e1e | ||
|
|
b43dee1499 | ||
|
|
5f3a19cb7d | ||
|
|
ceda9c1141 | ||
|
|
8222fa27e5 | ||
|
|
a64038658f | ||
|
|
41b33e9124 | ||
|
|
e535fbe6a7 | ||
|
|
50760c04a7 | ||
|
|
8dcd253e60 | ||
|
|
a7257eaff1 | ||
|
|
2bf7c2500e | ||
|
|
c88b7bac72 | ||
|
|
89004ef241 | ||
|
|
912463f752 | ||
|
|
252b19cddb | ||
|
|
b2fce659e8 | ||
|
|
ada7eb8b2a | ||
|
|
acb6f05a6d | ||
|
|
d5bf702f10 | ||
|
|
2d70cec6dd | ||
|
|
24ac0b5602 | ||
|
|
faf230612b | ||
|
|
a49d496b63 | ||
|
|
6009b06101 | ||
|
|
fc8854a040 | ||
|
|
719ae673a3 | ||
|
|
1ee2298a88 | ||
|
|
966bab9cca | ||
|
|
47554f89ce | ||
|
|
72bfd1b5c3 |
46
CHANGELOG.md
46
CHANGELOG.md
@@ -1,5 +1,51 @@
|
||||
# RELEASE NOTES: #
|
||||
|
||||
## [v2.3.0](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tags/v2.3.0) -> July 2025. ##
|
||||
|
||||
General new features and improvements (both RAN and UE):
|
||||
- Preliminary support for RedCap UEs
|
||||
- Support for NTN LEO scenarios including SIB19 and channel emulation (see
|
||||
doc/RUNMODEM.md)
|
||||
- VRTSIM: new shared memory realtime radio (see develop/radio/vrtsim/README.md)
|
||||
- Support for TDD pattern 2
|
||||
- Support for long PRACH
|
||||
- Support for SIB2
|
||||
- Add unit tests using ctest (see doc/UnitTests.md)
|
||||
|
||||
Stability and bug fixes:
|
||||
- Improve various procedures (e.g., RRC reestablishment, RRC Reject, ...)
|
||||
- Add improvements for ImScope
|
||||
- Bugfixes in the entire stack (e.g., #803, #805, #810, #812, #818, #852, #878,
|
||||
#884, #890, #895, #901, #907, #932, #939 ...)
|
||||
- Documentation updates
|
||||
- And many other small fixes, like memory leaks, crashes, ...
|
||||
|
||||
RAN changes (gNB/CU/CU-CP/CU-UP/DU/DU-high/DU-low):
|
||||
- Stability and performance improvements when running with 4-layer DL MIMO
|
||||
- Stability and performance improvements when running with 2-layer UL MIMO
|
||||
- Interoperability testing with Metanoia Jura and Foxconn RUs
|
||||
- Support of O-RAN 7.2 M-plane (Start-up procedure including configuration
|
||||
management, see also doc/ORAN_FHI7.2_Tutorial.md)
|
||||
- Upgrade OSC FHI (xran) from E to F release
|
||||
- Refactoring of LDPC interface and performance improvements
|
||||
- Support for nFAPI in all scenarios for FR1 (see doc/nfapi.md)
|
||||
- Support at least 32 UEs concurrently
|
||||
- Improve robustness when running in split modes (F1, E1)
|
||||
- Add basic support for beam management in FR2
|
||||
- Add support for O1 on DU (see also https://gitlab.eurecom.fr/oai/o1-adapter)
|
||||
- E2 agent: Support for multiple E2SM-RC report service styles
|
||||
|
||||
nrUE changes:
|
||||
- Refactoring of threading towards better code and performance
|
||||
- Add or rework various procedures (e.g., RA with C-RNTI, Going to Idle, RA, ...)
|
||||
- Refactor and extend NAS implementation (e.g., Service Request, Registration
|
||||
Request, Service Acept, Service Reject, ...)
|
||||
- Support for continuous frequency offset compensation
|
||||
- Reduce minimum RX-to-TX time to 3
|
||||
|
||||
Regression:
|
||||
- Multiple BWPs do not work reliably on gNB; use tag 2025.w17
|
||||
|
||||
## [v2.2.0](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tags/v2.2.0) -> November 2024. ##
|
||||
|
||||
General 5G improvements (both gNB and UE):
|
||||
|
||||
116
CMakeLists.txt
116
CMakeLists.txt
@@ -19,8 +19,6 @@
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
|
||||
# Author: laurent THOMAS, Lionel GAUTHIER
|
||||
|
||||
cmake_minimum_required (VERSION 3.16)
|
||||
project (OpenAirInterface LANGUAGES C CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@@ -173,9 +171,6 @@ else ()
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=armv8.2-a")
|
||||
endif()
|
||||
|
||||
# add autotools definitions that were maybe used!
|
||||
add_definitions(-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP)
|
||||
|
||||
# we need -rdynamic to incorporate all symbols in shared objects, see man page
|
||||
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing -rdynamic")
|
||||
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
|
||||
@@ -469,9 +464,6 @@ target_include_directories(f1ap PUBLIC F1AP_DIR)
|
||||
target_link_libraries(f1ap PUBLIC asn1_f1ap GTPV1U)
|
||||
target_link_libraries(f1ap PRIVATE ngap nr_rrc HASHTABLE f1ap_lib)
|
||||
target_include_directories(f1ap PRIVATE ${F1AP_DIR}/lib)
|
||||
if(E2_AGENT)
|
||||
target_compile_definitions(f1ap PRIVATE E2_AGENT)
|
||||
endif()
|
||||
|
||||
# LPP
|
||||
##############
|
||||
@@ -549,7 +541,6 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories("${OPENAIR_DIR}/executables")
|
||||
include_directories("${OPENAIR2_DIR}/COMMON")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
|
||||
include_directories("${OPENAIR3_DIR}/COMMON")
|
||||
include_directories("${OPENAIR3_DIR}/UTILS")
|
||||
include_directories("${NFAPI_DIR}/nfapi/public_inc")
|
||||
@@ -590,12 +581,7 @@ include_directories("${OPENAIR3_DIR}/ocp-gtpu")
|
||||
include_directories("${OPENAIR3_DIR}/M3AP")
|
||||
include_directories("${OPENAIR3_DIR}/MME_APP")
|
||||
include_directories("${OPENAIR_DIR}/radio/COMMON")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OSA")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MEM")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LISTS")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/FIFO")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MATH")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/TIMER")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OTG")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OPT")
|
||||
include_directories("${OPENAIR_DIR}")
|
||||
@@ -623,11 +609,6 @@ add_library(UTIL
|
||||
${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
|
||||
${OPENAIR2_DIR}/UTIL/OPT/probe.c
|
||||
)
|
||||
if (ENABLE_LTTNG)
|
||||
find_package(LTTngUST 2.3.8 EXACT REQUIRED)
|
||||
else()
|
||||
message(STATUS "LTTNG support disabled")
|
||||
endif()
|
||||
|
||||
pkg_check_modules(cap libcap)
|
||||
if (cap_FOUND)
|
||||
@@ -1203,7 +1184,6 @@ set(NR_L2_SRC_UE
|
||||
${NR_UE_RRC_DIR}/L2_interface_ue.c
|
||||
${NR_UE_RRC_DIR}/main_ue.c
|
||||
${NR_UE_RRC_DIR}/rrc_UE.c
|
||||
${NR_UE_RRC_DIR}/rrc_nsa.c
|
||||
${NR_UE_RRC_DIR}/rrc_timers_and_constants.c
|
||||
${NR_UE_RRC_DIR}/rrc_sl_preconfig.c
|
||||
)
|
||||
@@ -1318,12 +1298,6 @@ add_library(L2
|
||||
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
|
||||
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2 PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(L2 PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
|
||||
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
|
||||
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs PUBLIC nr_ue_power_procedures nr_ue_ra_procedures)
|
||||
|
||||
@@ -1350,10 +1324,6 @@ target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc nr_co
|
||||
if(OAI_AERIAL)
|
||||
target_compile_definitions(L2_NR PRIVATE ENABLE_AERIAL)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2_NR PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
add_library(L2_LTE_NR
|
||||
# temporary solution until 4G/5G code completely untangled (as evidenced by deletion of the following file)
|
||||
@@ -1683,13 +1653,6 @@ include_directories(${NAS_SRC}UE/EMM/SAP)
|
||||
include_directories(${NAS_SRC}UE/ESM)
|
||||
include_directories(${NAS_SRC}UE/ESM/SAP)
|
||||
|
||||
# nbiot
|
||||
add_definitions("-DNUMBER_OF_UE_MAX_NB_IoT=16")
|
||||
set (NBIOT_SOURCES
|
||||
${OPENAIR2_DIR}/ENB_APP/NB_IoT_config.c
|
||||
)
|
||||
add_library(NB_IoT MODULE ${NBIOT_SOURCES} )
|
||||
|
||||
# Simulation library
|
||||
##########################
|
||||
set (SIMUSRC
|
||||
@@ -1715,9 +1678,8 @@ include_directories("${NFAPI_DIR}/nfapi/inc")
|
||||
include_directories("${NFAPI_DIR}/sim_common/inc")
|
||||
include_directories("${NFAPI_DIR}/pnf_sim/inc")
|
||||
|
||||
add_library(oai_iqplayer MODULE
|
||||
${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
|
||||
)
|
||||
add_library(oai_iqplayer MODULE ${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c)
|
||||
target_link_libraries(oai_iqplayer PRIVATE log_headers)
|
||||
|
||||
#################################
|
||||
# add executables for operation
|
||||
@@ -1727,10 +1689,6 @@ add_library(minimal_lib
|
||||
)
|
||||
target_link_libraries(minimal_lib PUBLIC pthread dl ${T_LIB} LOG)
|
||||
|
||||
add_executable(nfapi_test
|
||||
${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
|
||||
)
|
||||
|
||||
add_executable(measurement_display
|
||||
${OPENAIR_DIR}/common/utils/threadPool/measurement_display.c)
|
||||
target_link_libraries (measurement_display minimal_lib)
|
||||
@@ -1770,6 +1728,7 @@ target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(lte-softmodem PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIES} ${lapacke_LIBRARIES} ${lapack_LIBRARIES})
|
||||
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(lte-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
@@ -1873,6 +1832,7 @@ if (OAI_AERIAL)
|
||||
target_link_libraries(nr-softmodem PUBLIC aerial_lib)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(nr-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
|
||||
@@ -1947,14 +1907,14 @@ target_link_libraries(nr-uesoftmodem PRIVATE
|
||||
#####################################
|
||||
|
||||
#special case for dlim TM4, which uses its own version of phy_scope code
|
||||
add_executable(dlsim_tm4
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
||||
)
|
||||
target_link_libraries (dlsim_tm4
|
||||
-Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
|
||||
pthread m rt CONFIG_LIB ${T_LIB}
|
||||
)
|
||||
#add_executable(dlsim_tm4
|
||||
# ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
||||
# ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
||||
# )
|
||||
#target_link_libraries (dlsim_tm4
|
||||
# -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
|
||||
# pthread m rt CONFIG_LIB ${T_LIB}
|
||||
# )
|
||||
|
||||
add_executable(rftest
|
||||
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
|
||||
@@ -2016,7 +1976,6 @@ target_link_libraries(nr_pbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_psbchsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/psbchsim.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${NR_UE_RRC_DIR}/rrc_nsa.c
|
||||
${NFAPI_USER_DIR}/nfapi.c
|
||||
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
@@ -2037,7 +1996,6 @@ target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_dlsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${NR_UE_RRC_DIR}/rrc_nsa.c
|
||||
${NFAPI_USER_DIR}/nfapi.c
|
||||
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
@@ -2067,7 +2025,6 @@ target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_ulsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${NR_UE_RRC_DIR}/rrc_nsa.c
|
||||
${NFAPI_USER_DIR}/nfapi.c
|
||||
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
@@ -2079,7 +2036,9 @@ target_link_libraries(nr_ulsim PRIVATE
|
||||
)
|
||||
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
|
||||
# these simulators do not compile:
|
||||
# dlsim_tm7 pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim
|
||||
foreach(myExe dlsim ulsim)
|
||||
|
||||
add_executable(${myExe}
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
||||
@@ -2099,22 +2058,23 @@ endforeach(myExe)
|
||||
|
||||
#unitary tests for Core NEtwork pieces
|
||||
#################################
|
||||
foreach(myExe s1ap
|
||||
secu_knas_encrypt_eia1
|
||||
secu_kenb
|
||||
aes128_ctr
|
||||
secu_knas_encrypt_eea2
|
||||
secu_knas secu_knas_encrypt_eea1
|
||||
kdf
|
||||
aes128_cmac_encrypt
|
||||
secu_knas_encrypt_eia2)
|
||||
add_executable(test_${myExe}
|
||||
${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
||||
)
|
||||
target_link_libraries (test_${myExe}
|
||||
-Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
|
||||
)
|
||||
endforeach(myExe)
|
||||
#foreach(myExe
|
||||
# s1ap
|
||||
# secu_knas_encrypt_eia1
|
||||
# secu_kenb
|
||||
# aes128_ctr
|
||||
# secu_knas_encrypt_eea2
|
||||
# secu_knas secu_knas_encrypt_eea1
|
||||
# kdf
|
||||
# aes128_cmac_encrypt
|
||||
# secu_knas_encrypt_eia2)
|
||||
# add_executable(test_${myExe}
|
||||
# ${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
||||
# )
|
||||
# target_link_libraries (test_${myExe}
|
||||
# -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
|
||||
# )
|
||||
#endforeach(myExe)
|
||||
|
||||
#ensure that the T header files are generated before targets depending on them
|
||||
if (${T_TRACER})
|
||||
@@ -2124,17 +2084,17 @@ if (${T_TRACER})
|
||||
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
|
||||
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
|
||||
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
|
||||
nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
|
||||
nr_ulschsim ldpctest polartest smallblocktest
|
||||
#all "add_library" definitions
|
||||
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
||||
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
||||
oai_eth_transpro oai_mobipass HASHTABLE UTIL OMG_SUMO
|
||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
|
||||
params_libconfig
|
||||
oai_eth_transpro HASHTABLE UTIL
|
||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB
|
||||
NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
||||
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU
|
||||
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_UE_NR ngap
|
||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU OPENAIR0_LIB
|
||||
GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE SIMU
|
||||
dfts config_internals nr_common crc_byte)
|
||||
if (TARGET ${i})
|
||||
add_dependencies(${i} generate_T)
|
||||
@@ -2142,8 +2102,6 @@ if (${T_TRACER})
|
||||
endforeach(i)
|
||||
endif (${T_TRACER})
|
||||
|
||||
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
|
||||
|
||||
set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests")
|
||||
set_property(CACHE ENABLE_TESTS PROPERTY TYPE BOOL)
|
||||
set(ENABLE_PHYSIM_TESTS OFF CACHE STRING "Activate build of physim tests")
|
||||
|
||||
@@ -267,6 +267,24 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("DockerHub-Push") {
|
||||
when { expression {doBuild && "PUSH".equals(env.gitlabActionType)} }
|
||||
steps {
|
||||
script {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
triggerSlaveJob ('RAN-DockerHub-Push', 'DockerHub-Push')
|
||||
}
|
||||
}
|
||||
}
|
||||
post {
|
||||
failure {
|
||||
script {
|
||||
echo "Push to Docker-Hub KO"
|
||||
failingStages += '\n * RAN-DockerHub-Push'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("Image Test Processes") {
|
||||
when { expression {doBuild} }
|
||||
parallel {
|
||||
@@ -756,23 +774,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("DockerHub-Push") {
|
||||
when { expression {doBuild && "PUSH".equals(env.gitlabActionType)} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-DockerHub-Push', 'DockerHub-Push')
|
||||
}
|
||||
}
|
||||
post {
|
||||
failure {
|
||||
script {
|
||||
echo "Push to Docker-Hub KO"
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += '\n * RAN-DockerHub-Push'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
post {
|
||||
success {
|
||||
|
||||
@@ -84,12 +84,20 @@ pipeline {
|
||||
sh "docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1"
|
||||
sh "docker login -u oaicicd -p oaicicd ${OAI_Registry} > /dev/null 2>&1"
|
||||
listOfImages.eachWithIndex { item, iindex ->
|
||||
sh "docker pull --quiet ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:develop"
|
||||
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
if (["oai-gnb", "oai-nr-ue", "oai-nr-cuup"].contains(item)) {
|
||||
// For images built on AMD64 and ARMv8 Jetson
|
||||
echo "Pushing image '${item}' for both AMD64 and ARM64 architectures with tags: ${WEEK_TAG} and develop"
|
||||
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop || true"
|
||||
sh "docker buildx imagetools create --tag ${DH_Account}/${item}:${WEEK_TAG} ${OAI_Registry}/${item}:armv8_develop-${WEEK_SHA} ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker buildx imagetools create --tag ${DH_Account}/${item}:develop ${OAI_Registry}/${item}:armv8_develop-${WEEK_SHA} ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
} else {
|
||||
sh "docker pull --quiet ${OAI_Registry}/${item}:develop-${WEEK_SHA}"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:develop"
|
||||
sh "docker image tag ${OAI_Registry}/${item}:develop-${WEEK_SHA} ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:develop"
|
||||
sh "docker push --quiet ${DH_Account}/${item}:${WEEK_TAG}"
|
||||
}
|
||||
sh "docker rmi ${DH_Account}/${item}:${WEEK_TAG} ${DH_Account}/${item}:develop ${OAI_Registry}/${item}:develop-${WEEK_SHA} || true"
|
||||
}
|
||||
// Proxy is not following the same pattern.
|
||||
sh "docker image tag proxy:develop ${DH_Account}/proxy:develop"
|
||||
|
||||
@@ -44,4 +44,4 @@ rf_driver: {
|
||||
#endif
|
||||
|
||||
tx_gain: 75.0, /* TX gain (in dB) */
|
||||
rx_gain: 55.0, /* RX gain (in dB) */
|
||||
rx_gain: 52.0, /* RX gain (in dB) */
|
||||
|
||||
175
ci-scripts/attenuatorctl.py
Normal file
175
ci-scripts/attenuatorctl.py
Normal file
@@ -0,0 +1,175 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import itertools
|
||||
import usb.core
|
||||
import usb.util
|
||||
import sys
|
||||
import time
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG,
|
||||
stream=sys.stdout,
|
||||
format="%(message)s"
|
||||
)
|
||||
|
||||
# helper class parsing command line options for channels and attenuators
|
||||
class ValidateChAtt(argparse.Action):
|
||||
def _parse_channels(s):
|
||||
if len(s.split("-")) == 2:
|
||||
s, e = [int(x) for x in s.split("-")]
|
||||
chs = [x for x in range(s, e+1)]
|
||||
if len(chs) == 0:
|
||||
raise Exception(f"empty range")
|
||||
elif len(s.split(",")) > 1:
|
||||
chs = [int(x) for x in s.split(",")]
|
||||
elif s.isdigit():
|
||||
chs = [int(s)]
|
||||
else:
|
||||
raise Exception(f"could not parse channel expression")
|
||||
for c in chs:
|
||||
if not 1 <= c <= 4:
|
||||
raise Exception(f"channel number must be within [1,4], but have {c}")
|
||||
return chs
|
||||
|
||||
def __call__(self, parse, args, values, option_string=None):
|
||||
ch, att = values
|
||||
try:
|
||||
chs = ValidateChAtt._parse_channels(ch)
|
||||
except Exception as e:
|
||||
parse.exit(1, f"while parsing channel expression {ch}: {e}\n")
|
||||
if not att.isdigit():
|
||||
parse.exit(1, f'expected number for attenuation, but got {att}\n')
|
||||
if not 0 <= int(att) <= 63:
|
||||
parse.exit(1, f'attenuation must be within [0,63], but is {att}\n')
|
||||
opts = getattr(args, self.dest) or {}
|
||||
for c in chs:
|
||||
opts[c] = int(att)
|
||||
setattr(args, self.dest, opts)
|
||||
|
||||
def _parse_args() -> argparse.Namespace:
|
||||
epilog = '''
|
||||
[CHs] can have the following forms:
|
||||
(1) single channel number w (within [1-4])
|
||||
(2) a range of channels in the form x-y (x <= y)
|
||||
(3) a list of channels in the form a,b,c
|
||||
[ATT] must be within [0,63] (dB)
|
||||
|
||||
--set and --reach are mutually exclusive
|
||||
|
||||
Examples:
|
||||
- reset all channels to 0: -s 1-4 0
|
||||
- set channels 3 and 4 to attenuation 60: -s 3,4 60
|
||||
- perform attenuation sweep during 10s, reaching ch. 1+2 to 60: -r 1,2 60 -d 10
|
||||
'''
|
||||
parser = argparse.ArgumentParser(description='Mini-Circuit RC*DAT attenuator controller',
|
||||
epilog=epilog,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
|
||||
parser.add_argument('--info', '-i', action='store_true', default=False,
|
||||
help='Get Infos for all connected Mini-Circuits RC*DAT',)
|
||||
parser.add_argument('--set', '-s', nargs=2, metavar=("[CHs]","[ATT]"),
|
||||
action=ValidateChAtt, help="Set a fixed attenuation ATT on channels CHs")
|
||||
parser.add_argument('--reach', '-r', nargs=2, metavar=("[CHs]","[ATT]"),
|
||||
action=ValidateChAtt, help="Perform an \"attenuation sweep\": reach attenuation ATT on channels CHs")
|
||||
parser.add_argument('--duration', '-d', action='store', type=float, default=5.0,
|
||||
help='DURATION for attenuation sweep to --reach given attenuation (Default: 5)',)
|
||||
parser.add_argument('--progress', '-p', action='store_true', default=False,
|
||||
help='If provided, will show progress during attenuation sweep',)
|
||||
return parser.parse_args()
|
||||
|
||||
def _exec(dev, cmd):
|
||||
dev.write(1, cmd)
|
||||
ans = dev.read(0x81,64)
|
||||
# take from ans(wer) while valid bytes
|
||||
sn = itertools.takewhile(lambda x: x < 255 and x > 0, ans)
|
||||
# turn bytes into characters and accumulate into string
|
||||
return "".join(map(chr, sn))
|
||||
|
||||
def devId(dev):
|
||||
return f"{dev.idVendor:04x}:{dev.idProduct:04x}"
|
||||
|
||||
def _info(dev):
|
||||
ident = devId(dev)
|
||||
SerialN = _exec(dev, "*:SN?")
|
||||
ModelN = _exec(dev, "*:MN?")
|
||||
Fw = _exec(dev, "*:FIRMWARE?")
|
||||
|
||||
logging.info(f'{ident}: model is {ModelN}')
|
||||
logging.info(f'{ident}: serial number is {SerialN}')
|
||||
logging.info(f'{ident}: FW version is {Fw}')
|
||||
|
||||
def _get_attenuation(dev):
|
||||
ident = devId(dev)
|
||||
att = _exec(dev, "*:ATT?")
|
||||
# remove leading "*" and split by channels
|
||||
return [float(n) for n in att[1:].split(" ")]
|
||||
|
||||
def _set_attenuation(dev, ch_att):
|
||||
ident = devId(dev)
|
||||
for ch, att in ch_att:
|
||||
#logging.debug(f"{ident}: Set attenuation channel {ch}: {att} dB")
|
||||
att = round(4 * att) / 4 # round to closest 0.25dB
|
||||
resp = _exec(dev, f"*:CHAN:{ch}:SETATT:{att};" )
|
||||
|
||||
def _continuous_set_attenuation(dev, ch_att_end, duration, show_progress=False, step_duration=0.25):
|
||||
ident = devId(dev)
|
||||
|
||||
current = _get_attenuation(dev)
|
||||
steps = duration / step_duration
|
||||
ch_att_step = [(ch, (att_end - current[ch - 1]) / steps) for ch, att_end in ch_att_end]
|
||||
logging.info(f"{ident}: sweep attenuation during {duration} s in {steps} steps: increments {ch_att_step}")
|
||||
for i in range(1, int(steps)+1):
|
||||
next_att = [(ch, current[ch - 1] + i * att_step) for ch, att_step in ch_att_step]
|
||||
_set_attenuation(dev, next_att)
|
||||
if show_progress:
|
||||
logging.debug(f"{ident}: attenuation for channel(s): {next_att}")
|
||||
time.sleep(step_duration)
|
||||
_set_attenuation(dev, ch_att_end)
|
||||
|
||||
def _get_usb_devs(idVendor, idProduct):
|
||||
devs = []
|
||||
for dev in usb.core.find(idVendor=idVendor, idProduct=idProduct, find_all=True):
|
||||
for configuration in dev:
|
||||
for interface in configuration:
|
||||
ifnum = interface.bInterfaceNumber
|
||||
if not dev.is_kernel_driver_active(ifnum):
|
||||
continue
|
||||
try:
|
||||
dev.detach_kernel_driver(ifnum)
|
||||
except e:
|
||||
pass
|
||||
devs.append(dev)
|
||||
return devs
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Parse the arguments
|
||||
args = _parse_args()
|
||||
if args.set and args.reach:
|
||||
logging.error("--set and --reach are mutually exclusive")
|
||||
sys.exit(1)
|
||||
|
||||
# 20ce:0023 is Mini-Circuit RC*DAT device
|
||||
devs = _get_usb_devs(idVendor=0x20ce, idProduct=0x0023)
|
||||
if len(devs) == 0:
|
||||
logging.error('no Mini-Circuits RC*DAT device detected')
|
||||
sys.exit(-1)
|
||||
if len(devs) > 1:
|
||||
logging.error('more than one Mini-Circuits RC*DAT device detected')
|
||||
sys.exit(-1)
|
||||
dev = devs[0]
|
||||
|
||||
if args.info:
|
||||
_info(dev)
|
||||
|
||||
if args.set:
|
||||
_set_attenuation(dev, [(k,v) for k,v in args.set.items()])
|
||||
|
||||
if args.reach:
|
||||
_continuous_set_attenuation(dev, [(k,v) for k,v in args.reach.items()], args.duration, args.progress)
|
||||
|
||||
ident = devId(dev)
|
||||
for i, a in enumerate(_get_attenuation(dev)):
|
||||
logging.info(f"{ident}: Attenuation channel {i+1}: {a} dB")
|
||||
sys.exit(0)
|
||||
@@ -85,7 +85,7 @@ oc-cn5g-20897:
|
||||
Undeploy: "! scripts/oc-cn5g-undeploy.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-fhi72"
|
||||
LogCollect: "! scripts/oc-cn5g-logcollect.sh /opt/oai-cn5g-fed-develop-2025-jan oaicicd-core-for-fhi72 %%log_dir%%"
|
||||
|
||||
oc-cn5g-00102-ho:
|
||||
oc-cn5g-00103-ho:
|
||||
Host: groot
|
||||
NetworkScript: echo "inet 172.21.6.111"
|
||||
RunIperf3Server: False
|
||||
|
||||
@@ -395,13 +395,13 @@ class Containerize():
|
||||
elif image != 'ran-build':
|
||||
cmd.run(f'sed -i -e "s#ran-build:latest#ran-build:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
if image == 'oai-gnb-aerial':
|
||||
cmd.run('cp -f /opt/nvidia-ipc/nvipc_src.2025.08.27.tar.gz .')
|
||||
cmd.run('cp -f /opt/nvidia-ipc/nvipc_src.2025.10.09.tar.gz .')
|
||||
logfile = f'{lSourcePath}/cmake_targets/log/{name}.docker.log'
|
||||
ret = cmd.run(f'{self.cli} build {self.cliBuildOptions} --target {image} --tag {name}:{imageTag} --file docker/Dockerfile.{pattern}{self.dockerfileprefix} {option} . > {logfile} 2>&1', timeout=1200)
|
||||
t = (name, archiveArtifact(cmd, ctx, logfile))
|
||||
log_files.append(t)
|
||||
if image == 'oai-gnb-aerial':
|
||||
cmd.run('rm -f nvipc_src.2025.08.27.tar.gz')
|
||||
cmd.run('rm -f nvipc_src.2025.10.09.tar.gz')
|
||||
# check the status of the build
|
||||
ret = cmd.run(f"{self.cli} image inspect --format=\'Size = {{{{.Size}}}} bytes\' {name}:{imageTag}")
|
||||
if ret.returncode != 0:
|
||||
|
||||
@@ -255,7 +255,7 @@ def Deploy_Physim(ctx, HTML, node, workdir, script, options):
|
||||
logging.debug(f'Running physims on server {node} workdir {workdir}')
|
||||
with cls_cmd.getConnection(node) as c:
|
||||
sys_info = c.exec_script("scripts/sys-info.sh", 5)
|
||||
ret = c.exec_script(script, 600, options)
|
||||
ret = c.exec_script(script, 1000, options)
|
||||
logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}')
|
||||
HTML.CreateHtmlTestRowQueue('Query system info', 'OK', [sys_info.stdout])
|
||||
with cls_cmd.getConnection(node) as ssh:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Active_gNBs = ( "oai-cu");
|
||||
Active_gNBs = ( "CU-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
@@ -10,7 +10,7 @@ gNBs =
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "oai-cu";
|
||||
gNB_name = "CU-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
|
||||
@@ -135,11 +135,11 @@ gNBs =
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
dl_UL_TransmissionPeriodicity = 5;
|
||||
nrofDownlinkSlots = 3;
|
||||
nrofDownlinkSymbols = 10;
|
||||
nrofUplinkSlots = 1;
|
||||
nrofUplinkSymbols = 2;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Active_gNBs = ( "oai-du0");
|
||||
Active_gNBs = ( "DU0-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
@@ -8,7 +8,7 @@ gNBs =
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
gNB_DU_ID = 0xe00;
|
||||
gNB_name = "oai-du0";
|
||||
gNB_name = "DU0-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1 ;
|
||||
@@ -26,11 +26,11 @@ gNBs =
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# 4.01 GHz
|
||||
absoluteFrequencySSB = 629376;
|
||||
dl_frequencyBand = 78;
|
||||
# 4 GHz
|
||||
dl_absoluteFrequencyPointA = 628720;
|
||||
# 4186.56 MHz
|
||||
absoluteFrequencySSB = 679104;
|
||||
dl_frequencyBand = 77;
|
||||
# 4175.82 MHz
|
||||
dl_absoluteFrequencyPointA = 678388;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -50,7 +50,7 @@ gNBs =
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -107,7 +107,7 @@ gNBs =
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
@@ -159,9 +159,7 @@ MACRLCs = (
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "172.21.19.98";
|
||||
remote_n_address = "172.21.19.98";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2154;
|
||||
remote_n_portc = 501;
|
||||
remote_n_portd = 2153;
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 230;
|
||||
@@ -176,7 +174,6 @@ L1s = (
|
||||
prach_dtx_threshold = 100;
|
||||
pucch0_dtx_threshold = 10;
|
||||
max_ldpc_iterations = 20;
|
||||
sl_ahead = 3;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
@@ -188,7 +185,8 @@ RUs = (
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [78];
|
||||
sl_ahead = 3;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Active_gNBs = ( "oai-du1");
|
||||
Active_gNBs = ( "DU1-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
@@ -8,7 +8,7 @@ gNBs =
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe88;
|
||||
gNB_DU_ID = 0xe01;
|
||||
gNB_name = "oai-du1";
|
||||
gNB_name = "DU1-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1 ;
|
||||
@@ -26,11 +26,11 @@ gNBs =
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# 4.01 GHz
|
||||
absoluteFrequencySSB = 629376;
|
||||
dl_frequencyBand = 78;
|
||||
# 4 GHz
|
||||
dl_absoluteFrequencyPointA = 628720;
|
||||
# 4186.56 MHz
|
||||
absoluteFrequencySSB = 679104;
|
||||
dl_frequencyBand = 77;
|
||||
# 4175.82 MHz
|
||||
dl_absoluteFrequencyPointA = 678388;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -50,7 +50,7 @@ gNBs =
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -107,8 +107,8 @@ gNBs =
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
ssb_PositionsInBurst_Bitmap = 2;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
@@ -159,9 +159,7 @@ MACRLCs = (
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "172.21.19.99";
|
||||
remote_n_address = "172.21.19.98";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2154;
|
||||
remote_n_portc = 501;
|
||||
remote_n_portd = 2153;
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 230;
|
||||
@@ -176,7 +174,6 @@ L1s = (
|
||||
prach_dtx_threshold = 100;
|
||||
pucch0_dtx_threshold = 10;
|
||||
max_ldpc_iterations = 20;
|
||||
sl_ahead = 3;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
@@ -188,7 +185,8 @@ RUs = (
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [78];
|
||||
sl_ahead = 3;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
Active_gNBs = ( "gNB-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
nfapi = "AERIAL";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_name = "gNB-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1; }); });
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
uess_agg_levels = [0,6,0,0,0];
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
pdsch_AntennaPorts_XP = 2;
|
||||
pdsch_AntennaPorts_N1 = 2;
|
||||
pusch_AntennaPorts = 2;
|
||||
do_CSIRS = 1;
|
||||
do_SRS = 0;
|
||||
min_rxtxtime = 2;
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# center frequency = 3350.01 MHz
|
||||
# selected SSB frequency = 3349.92 MHz
|
||||
absoluteFrequencySSB = 623328;
|
||||
dl_frequencyBand = 78;
|
||||
# frequency point A = 3300.87 MHz
|
||||
dl_absoluteFrequencyPointA = 620058;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 273;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=0,L=162 (275*(275-L+1))+(274-RBstart))
|
||||
initialDLBWPlocationAndBandwidth = 1099;
|
||||
#
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 12;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 273;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 1099;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 159;# testMAC 158; OAI gNB 98
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 12;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant = -90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 5;
|
||||
nrofDownlinkSlots = 1;
|
||||
nrofDownlinkSymbols = 10;
|
||||
nrofUplinkSlots = 3;
|
||||
nrofUplinkSymbols = 0;
|
||||
|
||||
ssPBCH_BlockPower = -10;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "172.21.6.103"; });
|
||||
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.202";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.202";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
remote_s_address = "127.0.0.1"; // pnf addr [!]
|
||||
local_s_address = "127.0.0.2"; // vnf addr
|
||||
local_s_portc = 50001; // vnf p5 port
|
||||
remote_s_portc = 50000; // pnf p5 port [!]
|
||||
local_s_portd = 50011; // vnf p7 port [!]
|
||||
remote_s_portd = 50010; // pnf p7 port [!]
|
||||
tr_s_preference = "aerial";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 220; # 150;
|
||||
pucch_TargetSNRx10 = 200; #200;
|
||||
dl_max_mcs = 28;
|
||||
ul_max_mcs = 28;
|
||||
ul_min_mcs = 16;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="debug";
|
||||
};
|
||||
@@ -16,7 +16,7 @@ gNBs =
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
do_SINR = 1;
|
||||
CSI_report_type = "ssb_sinr";
|
||||
min_rxtxtime = 6;
|
||||
disable_harq = 1;
|
||||
cu_sibs = [2];
|
||||
|
||||
@@ -106,8 +106,7 @@ gNBs =
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
|
||||
237
ci-scripts/conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf
Normal file
237
ci-scripts/conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf
Normal file
@@ -0,0 +1,237 @@
|
||||
Active_gNBs = ( "gNB-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_name = "gNB-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 001; mnc = 03; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
|
||||
// Include neighbour configuration for N2 handover
|
||||
@include "neighbour-config-ho.conf"
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3610.56 MHz
|
||||
absoluteFrequencySSB = 679104;
|
||||
dl_frequencyBand = 77;
|
||||
# this is 3599.94 MHz
|
||||
dl_absoluteFrequencyPointA = 678388;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 51;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 12;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 51;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#one (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "172.21.6.109"; });
|
||||
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.19.98";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.19.98";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
ul_prbblack_SNR_threshold = 10;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 120;
|
||||
pucch0_dtx_threshold = 100;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
clock_src = "external";
|
||||
time_src = "external";
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="debug";
|
||||
};
|
||||
|
||||
@@ -184,7 +184,7 @@ L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 130;
|
||||
prach_dtx_threshold = 150;
|
||||
#pucch0_dtx_threshold = 150;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -6,9 +6,9 @@ neighbour_list = (
|
||||
gNB_ID = 0xe01;
|
||||
nr_cellid = 11111111;
|
||||
physical_cellId = 1;
|
||||
absoluteFrequencySSB = 629376;
|
||||
absoluteFrequencySSB = 679104;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
band = 78;
|
||||
band = 77;
|
||||
plmn = { mcc = 001; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
@@ -21,9 +21,9 @@ neighbour_list = (
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 12345678;
|
||||
physical_cellId = 0;
|
||||
absoluteFrequencySSB = 629376;
|
||||
absoluteFrequencySSB = 679104;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
band = 78;
|
||||
band = 77;
|
||||
plmn = { mcc = 001; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ key = "fec86ba6eb707ed08905757b1bb44b8f";
|
||||
opc= "C42449363BBAD02B66D16BC975D77CC1";
|
||||
dnn= "oai";
|
||||
nssai_sst=1;
|
||||
nssai_sd=16777215;
|
||||
}
|
||||
|
||||
MACRLCs = (
|
||||
|
||||
@@ -4,7 +4,6 @@ uicc0 = {
|
||||
opc= "c42449363bbad02b66d16bc975d77cc1";
|
||||
dnn= "oai";
|
||||
nssai_sst=1;
|
||||
nssai_sd=66051;
|
||||
}
|
||||
|
||||
thread-pool = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1"
|
||||
|
||||
@@ -42,5 +42,6 @@ WORKDIR /oai-ran/build
|
||||
RUN cmake -GNinja -DENABLE_PHYSIM_TESTS=ON \
|
||||
-DSANITIZE_UNDEFINED=OFF -DSANITIZE_ADDRESS=OFF \
|
||||
-DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror \
|
||||
-DPHYSIM_CHECK_FILES="ThresholdsGracehopper.cmake" \
|
||||
.. && \
|
||||
ninja ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim
|
||||
|
||||
@@ -321,11 +321,15 @@ def ExecuteActionWithParam(action, ctx):
|
||||
# Change all execution targets to localhost
|
||||
node = 'localhost'
|
||||
command = test.findtext('command')
|
||||
# Allow referencing repository workspace path in XML via %%workspace%%
|
||||
command = command.replace("%%workspace%%", CONTAINERS.eNBSourceCodePath)
|
||||
success = cls_oaicitest.Custom_Command(HTML, node, command)
|
||||
|
||||
elif action == 'Custom_Script':
|
||||
node = test.findtext('node')
|
||||
script = test.findtext('script')
|
||||
# Allow referencing repository workspace path in XML via %%workspace%%
|
||||
script = script.replace("%%workspace%%", CONTAINERS.eNBSourceCodePath)
|
||||
success = cls_oaicitest.Custom_Script(HTML, node, script)
|
||||
|
||||
elif action == 'Pull_Cluster_Image':
|
||||
|
||||
@@ -22,5 +22,5 @@ git config user.name "OAI Jenkins"
|
||||
git config advice.detachedHead false
|
||||
mkdir -p cmake_targets/log
|
||||
git checkout -f ${ref}
|
||||
[ -n "${merge}" ] && git merge --ff ${merge} -m "Temporary merge for CI"
|
||||
[ -n "${merge}" ] && git fetch origin ${merge} && git merge --ff FETCH_HEAD -m "Temporary merge for CI"
|
||||
exit 0
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
function die() { echo $@; exit 1; }
|
||||
[ $# -eq 4 ] || die "usage: $0 <namespace> <release> <image tag> <oai directory>"
|
||||
|
||||
@@ -11,11 +9,17 @@ IMG_TAG=${3}
|
||||
OAI_DIR=${4}
|
||||
|
||||
cat /opt/oc-password | oc login -u oaicicd --server https://api.oai.cs.eurecom.fr:6443 > /dev/null
|
||||
set -x
|
||||
oc project ${OC_NS} > /dev/null
|
||||
oc tag oaicicd-ran/oai-physim:${IMG_TAG} ${OC_NS}/oai-physim:${IMG_TAG}
|
||||
helm install ${OC_RELEASE} ${OAI_DIR}/charts/${OC_RELEASE} --set global.image.version=${IMG_TAG} --wait --timeout 120s
|
||||
set +x
|
||||
POD_ID=$(oc get pods | grep oai-${OC_RELEASE} | awk '{print $1}')
|
||||
sleep 10
|
||||
wait_creating=30
|
||||
while [[ $(oc describe pod "$POD_ID" | grep "ContainerCreating") && ${wait_creating} > 0 ]]; do
|
||||
sleep 1;
|
||||
let wait_creating=$wait_creating-1
|
||||
done
|
||||
echo "Monitoring logs for 'FINISHED' in pod '$POD_ID'"
|
||||
oc logs -f -n ${OC_NS} "$POD_ID" | while read -r line; do
|
||||
if [[ "$line" == *"FINISHED"* ]]; then
|
||||
@@ -27,6 +31,7 @@ oc logs -f -n ${OC_NS} "$POD_ID" | while read -r line; do
|
||||
break
|
||||
fi
|
||||
done
|
||||
set -x
|
||||
oc logs -n ${OC_NS} "$POD_ID" >> ${OAI_DIR}/physim_log.txt
|
||||
oc describe pod $POD_ID >> ${OAI_DIR}/physim_log.txt
|
||||
helm uninstall ${OC_RELEASE} --wait
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<node>obelix</node>
|
||||
<node>localhost</node>
|
||||
<images>oai-enb oai-lte-ue</images>
|
||||
</testCase>
|
||||
<testCase id="800813">
|
||||
@@ -88,16 +88,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping trf-gen from LTE-UE 1</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>l2sim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -106,9 +106,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE 1 from trf-gen</desc>
|
||||
<id>l2sim4g_ext_dn</id>
|
||||
<nodes>obelix</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>l2sim4g_ue</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -117,9 +117,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP Downlink</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>l2sim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -129,9 +129,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP Uplink</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>l2sim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 3M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -149,7 +149,7 @@
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>obelix</node>
|
||||
<node>localhost</node>
|
||||
<images>oai-enb oai-lte-ue</images>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -103,16 +103,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -121,9 +121,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -136,8 +136,8 @@
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_node>acamas</svr_node>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_node>localhost</svr_node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030011">
|
||||
@@ -148,8 +148,8 @@
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
<nodes>acamas</nodes>
|
||||
<svr_node>acamas</svr_node>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_node>localhost</svr_node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
|
||||
@@ -83,9 +83,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_enb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -94,9 +94,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from eNB</desc>
|
||||
<id>rfsim4g_enb_nos1</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -105,9 +105,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_enb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -117,9 +117,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_enb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
|
||||
@@ -103,16 +103,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -121,9 +121,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -132,9 +132,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -144,9 +144,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
|
||||
@@ -103,16 +103,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -121,9 +121,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -132,9 +132,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -144,9 +144,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
|
||||
@@ -80,9 +80,9 @@
|
||||
<class>Iperf2_Unidir</class>
|
||||
<desc>Iperf2 UDP DL</desc>
|
||||
<id>rfsim4g_ue_fembms</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_enb_fembms</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
|
||||
@@ -80,9 +80,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_enb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
|
||||
@@ -103,9 +103,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -114,9 +114,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -125,9 +125,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -137,9 +137,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
|
||||
@@ -76,16 +76,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
|
||||
<nodes>acamas acamas acamas</nodes>
|
||||
<nodes>localhost localhost localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020021">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all NR-UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
|
||||
<nodes>acamas acamas acamas</nodes>
|
||||
<nodes>localhost localhost localhost</nodes>
|
||||
<svr_id>rfsim5g_5gc_fixed_ip</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -55,6 +55,10 @@
|
||||
000031
|
||||
020022
|
||||
040026
|
||||
040025
|
||||
000031
|
||||
020022
|
||||
040027
|
||||
100021
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
@@ -64,7 +68,7 @@
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<node>localhost</node>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
<images>oai-gnb-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
@@ -103,7 +107,7 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
@@ -118,9 +122,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all NR-UEs</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -128,18 +132,18 @@
|
||||
<testCase id="030020">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Simulate a DL radio channel with noise (3 dB)</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo channelmod modify 0 noise_power_dB 3 | ncat --send-only 192.168.71.181 8091</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030021">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/5Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 5M -t 20 -R</iperf_args>
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -149,9 +153,9 @@
|
||||
<desc>Iperf (UL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -159,7 +163,7 @@
|
||||
<testCase id="040001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Reestablishment</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci force_reestab | ncat 192.168.71.171 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment'</command>
|
||||
</testCase>
|
||||
|
||||
@@ -167,9 +171,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i0.5 -w25</ping_args>
|
||||
<ping_packetloss_threshold>80</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -177,56 +181,56 @@
|
||||
<testCase id="040002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Verify Reestablishment</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci get_reestab_count | ncat 192.168.71.150 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1'</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040021">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Simulate a disruption of DL radio channel (ploss 55)</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo channelmod modify 0 ploss 55 | ncat 192.168.71.181 8091</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040022">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Get UE sync state (UE ID 0)</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ciUE sync_state 0 | ncat 192.168.71.181 8091 | grep -E UE_NOT_SYNC</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040023">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Restoration of the original DL channel conditions (ploss 20)</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo channelmod modify 0 ploss 20 | ncat 192.168.71.181 8091</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040024">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Get UE sync state (UE ID 0)</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ciUE sync_state 0 | ncat 192.168.71.181 8091 | grep -E UE_CONNECTED</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040025">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 192.168.71.150 9090</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040026">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 0?</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040027">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 1?</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
@@ -245,7 +249,7 @@
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>localhost</node>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
<images>oai-gnb-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -70,16 +70,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -88,9 +88,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -100,9 +100,9 @@
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -112,9 +112,9 @@
|
||||
<desc>Iperf (UL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -125,16 +125,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
<nodes>acamas acamas acamas acamas acamas acamas acamas acamas acamas acamas</nodes>
|
||||
<nodes>localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -143,9 +143,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -154,9 +154,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from Second NR-UE</desc>
|
||||
<id>rfsim5g_ue2</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -165,9 +165,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping Second NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue2</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -176,9 +176,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from both UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<nodes>acamas acamas</nodes>
|
||||
<nodes>localhost localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -187,9 +187,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
<nodes>acamas acamas acamas acamas acamas acamas acamas acamas acamas acamas</nodes>
|
||||
<nodes>localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25 -s 1016</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -199,9 +199,9 @@
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -211,9 +211,9 @@
|
||||
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -222,21 +222,21 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE 1 and 2</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<nodes>acamas acamas</nodes>
|
||||
<nodes>localhost localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444444">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach OAI UE 1 and 2</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<nodes>acamas acamas</nodes>
|
||||
<nodes>localhost localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444445">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach OAI UE 3 to 10</desc>
|
||||
<id>rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
<nodes>acamas acamas acamas acamas acamas acamas acamas acamas</nodes>
|
||||
<nodes>localhost localhost localhost localhost localhost localhost localhost localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
@@ -101,9 +101,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args> -c 20 -i0.5</ping_args>
|
||||
<ping_packetloss_threshold>80</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -112,9 +112,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -124,9 +124,9 @@
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -136,9 +136,9 @@
|
||||
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -146,14 +146,14 @@
|
||||
<testCase id="040001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Force Msg3 C-RNTI RA</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ciUE force_crnti_ra | ncat 192.168.71.150 8091</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Force RRC_IDLE (UE ID 0)</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ciUE force_RRC_IDLE | ncat 192.168.71.150 8091</command>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -70,16 +70,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -88,9 +88,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -100,9 +100,9 @@
|
||||
<desc>Iperf (DL/10Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 10M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -112,9 +112,9 @@
|
||||
<desc>Iperf (UL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config -f</command>
|
||||
</testCase>
|
||||
<testCase id="800813">
|
||||
@@ -77,9 +77,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping gNB from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_gnb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c20 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -88,9 +88,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from gNB</desc>
|
||||
<id>rfsim5g_gnb_nos1</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c20 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -100,9 +100,9 @@
|
||||
<desc>Iperf (DL/30kbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 0.03M -t 20 -R -c 10.0.1.1</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_gnb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -112,9 +112,9 @@
|
||||
<desc>Iperf (UL/30kbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 0.03M -t 20 -c 10.0.1.1</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_gnb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -70,16 +70,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -88,9 +88,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -48,56 +48,52 @@
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<node>localhost</node>
|
||||
<images>oai-gnb-asan oai-nr-ue</images>
|
||||
</testCase>
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<node>localhost</node>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<node>localhost</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_multiue</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB RF sim SA</desc>
|
||||
<node>localhost</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_multiue</yaml_path>
|
||||
<services>oai-gnb</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
|
||||
<node>localhost</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_multiue</yaml_path>
|
||||
<services>oai-nr-ue</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10</id>
|
||||
<nodes>acamas acamas acamas acamas acamas acamas acamas acamas acamas acamas</nodes>
|
||||
<nodes>localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_multiue1</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -106,9 +102,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_multiue1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -117,9 +113,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from Second NR-UE</desc>
|
||||
<id>rfsim5g_multiue2</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -128,9 +124,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping Second NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_multiue2</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -139,9 +135,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from both UEs</desc>
|
||||
<id>rfsim5g_multiue1 rfsim5g_multiue2</id>
|
||||
<nodes>acamas acamas</nodes>
|
||||
<nodes>localhost localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -150,9 +146,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all UEs</desc>
|
||||
<id>rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10</id>
|
||||
<nodes>acamas acamas acamas acamas acamas acamas acamas acamas acamas acamas</nodes>
|
||||
<nodes>localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25 -s 1016</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -162,9 +158,9 @@
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_multiue1</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -174,9 +170,9 @@
|
||||
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_multiue1</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -185,7 +181,7 @@
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach OAI UEs</desc>
|
||||
<id>rfsim5g_multiue1</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
@@ -195,15 +191,14 @@
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_multiue</yaml_path>
|
||||
<d_retx_th>1,0,0,0</d_retx_th>
|
||||
<u_retx_th>1,0,0,0</u_retx_th>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<node>localhost</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<node>localhost</node>
|
||||
<images>oai-gnb-asan oai-nr-ue</images>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -31,9 +31,6 @@
|
||||
000002
|
||||
000003
|
||||
020001
|
||||
020002
|
||||
030001
|
||||
030002
|
||||
000004
|
||||
040001
|
||||
050001
|
||||
@@ -58,59 +55,55 @@
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<node>localhost</node>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<node>localhost</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<node>localhost</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CU-CP/CU-UP/DU 0 + UE RFsim SA</desc>
|
||||
<node>localhost</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>oai-cucp-0 oai-cuup-0 oai-du-0 oai-nr-ue</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CU-CP/CU-UP/DU 1 RFsim SA</desc>
|
||||
<node>localhost</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<services>oai-cucp-1 oai-cuup-1 oai-du-1</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<ping_args>-c 100 -i 0.25</ping_args>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 50 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -118,10 +111,10 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<ping_args>-c 100 -i 0.25</ping_args>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 50 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>10</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -130,9 +123,9 @@
|
||||
<desc>Iperf (DL/10Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -142,9 +135,9 @@
|
||||
<desc>Iperf (UL/4Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -158,7 +151,7 @@
|
||||
<testCase id="050001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger N2 Handover</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci trigger_n2_ho 1,1 | ncat 192.168.71.150 9090</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
@@ -166,14 +159,14 @@
|
||||
<testCase id="050002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 1?</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.180 9090 | grep "1234"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050003">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger N2 Handover</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci trigger_n2_ho 0,1 | ncat 192.168.71.180 9090</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
@@ -181,7 +174,7 @@
|
||||
<testCase id="050004">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE (1) connected to DU-PCI 0?</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 192.168.71.150 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
@@ -189,9 +182,8 @@
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<node>localhost</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_n2_ho</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<d_retx_th>10,100,100,100</d_retx_th>
|
||||
<u_retx_th>10,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
@@ -200,7 +192,7 @@
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<svr_id>0</svr_id>
|
||||
<node>localhost</node>
|
||||
<images>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -74,16 +74,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -92,9 +92,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -102,7 +102,7 @@
|
||||
<testCase id="040001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Reestablishment</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci force_reestab | ncat 192.168.71.140 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
@@ -111,9 +111,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i0.5 -w25</ping_args>
|
||||
<ping_packetloss_threshold>80</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -121,7 +121,7 @@
|
||||
<testCase id="040002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Verify Reestablishment</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>echo ci get_reestab_count | ncat 192.168.71.140 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
@@ -69,16 +69,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -87,9 +87,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
<testCase id="000005">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Check that UE synched</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>docker logs rfsim5g-oai-nr-ue-2 | grep -m 1 "PSBCH RX:OK"</command>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>acamas</node>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_tdd_dora_rrc.config -f</command>
|
||||
</testCase>
|
||||
<testCase id="800813">
|
||||
@@ -83,9 +83,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping gNB from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_gnb_nos1</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c20 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -94,9 +94,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from gNB</desc>
|
||||
<id>rfsim5g_gnb_nos1</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c20 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -72,16 +72,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -90,9 +90,9 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ue</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -101,16 +101,16 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Verify 2nd PDU session is up</desc>
|
||||
<id>rfsim5g_ue_pdu_2</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020003">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE on PDU session ID 2</desc>
|
||||
<id>rfsim5g_ue_pdu_2</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<ping_args>-c 20 -i 0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -120,9 +120,9 @@
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -132,9 +132,9 @@
|
||||
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>acamas</nodes>
|
||||
<nodes>localhost</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>acamas</svr_node>
|
||||
<svr_node>localhost</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
37
ci-scripts/xml_files/container_sa_aerial_cn_start.xml
Normal file
37
ci-scripts/xml_files/container_sa_aerial_cn_start.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-AERIAL-SA-CN-START</htmlTabRef>
|
||||
<htmlTabName>Deploy 5GC</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
555000
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
<testCase id="555000">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g-20897-aerial</cn_id>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
|
||||
38
ci-scripts/xml_files/container_sa_aerial_cn_stop.xml
Normal file
38
ci-scripts/xml_files/container_sa_aerial_cn_stop.xml
Normal file
@@ -0,0 +1,38 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-AERIAL-SA-CN-STOP</htmlTabRef>
|
||||
<htmlTabName>Undeploy 5GC</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
000555
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
<testCase id="000555">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<cn_id>oc-cn5g-20897-aerial</cn_id>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
<htmlTabName>AERIAL 100 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
555000
|
||||
111111
|
||||
000222
|
||||
800813
|
||||
@@ -40,15 +39,8 @@
|
||||
000222
|
||||
222222
|
||||
333333
|
||||
000555
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
<testCase id="555000">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g-20897-aerial</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
@@ -160,12 +152,5 @@
|
||||
<node>gracehopper1-oai</node>
|
||||
<images>oai-gnb-aerial</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000555">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<cn_id>oc-cn5g-20897-aerial</cn_id>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
|
||||
|
||||
144
ci-scripts/xml_files/container_sa_aerial_quectel_ul_heavy.xml
Normal file
144
ci-scripts/xml_files/container_sa_aerial_quectel_ul_heavy.xml
Normal file
@@ -0,0 +1,144 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-AERIAL-SA-UL-Heavy</htmlTabRef>
|
||||
<htmlTabName>AERIAL 100 MHz DSUUU SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
000222
|
||||
800813
|
||||
002222
|
||||
002223
|
||||
000111
|
||||
000011
|
||||
000032
|
||||
000033
|
||||
000022
|
||||
000222
|
||||
222222
|
||||
333333
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<node>gracehopper1-oai</node>
|
||||
<images>oai-gnb-aerial</images>
|
||||
<tag_prefix>arm_</tag_prefix>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace for server 0</desc>
|
||||
<node>gracehopper1-oai</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002222">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy PNF/Nvidia CUBB in a container</desc>
|
||||
<node>gracehopper1-oai</node>
|
||||
<yaml_path>ci-scripts/yaml_files/sa_gnb_aerial_ul</yaml_path>
|
||||
<services>nv-cubb</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002223">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy VNF in a container</desc>
|
||||
<node>gracehopper1-oai</node>
|
||||
<yaml_path>ci-scripts/yaml_files/sa_gnb_aerial_ul</yaml_path>
|
||||
<services>oai-gnb-aerial</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000111">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach Quectel</desc>
|
||||
<id>up2-aerial</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100pings in 20sec</desc>
|
||||
<id>up2-aerial</id>
|
||||
<svr_id>oc-cn5g-20897-aerial</svr_id>
|
||||
<ping_args>-c 100 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/UDP/200M)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 200M -t 30 -R</iperf_args>
|
||||
<svr_id>oc-cn5g-20897-aerial</svr_id>
|
||||
<id>up2-aerial</id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000032">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/UDP/200M)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 200M -t 30 -l 1428</iperf_args>
|
||||
<svr_id>oc-cn5g-20897-aerial</svr_id>
|
||||
<id>up2-aerial</id>
|
||||
<iperf_packetloss_threshold>10</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000033">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/UDP/220M)(30 sec)(single-ue profile)</desc>
|
||||
<may_fail>true</may_fail>
|
||||
<iperf_args>-u -b 220M -t 30 -l 1428</iperf_args>
|
||||
<svr_id>oc-cn5g-20897-aerial</svr_id>
|
||||
<id>up2-aerial</id>
|
||||
<iperf_packetloss_threshold>10</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000222">
|
||||
<class>Detach_UE</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Detach Quectel</desc>
|
||||
<id>up2-aerial</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy gNB</desc>
|
||||
<node>gracehopper1-oai</node>
|
||||
<yaml_path>ci-scripts/yaml_files/sa_gnb_aerial_ul</yaml_path>
|
||||
<d_retx_th>20,100,100,100</d_retx_th>
|
||||
<u_retx_th>20,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="333333">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>gracehopper1-oai</node>
|
||||
<images>oai-gnb-aerial</images>
|
||||
</testCase>
|
||||
</testCaseList>
|
||||
|
||||
@@ -36,18 +36,6 @@
|
||||
102002
|
||||
302002
|
||||
102003
|
||||
102004
|
||||
102005
|
||||
102006
|
||||
102007
|
||||
102008
|
||||
102009
|
||||
102010
|
||||
102011
|
||||
102012
|
||||
102013
|
||||
102014
|
||||
102015
|
||||
100100
|
||||
100010
|
||||
100020
|
||||
@@ -118,80 +106,8 @@
|
||||
|
||||
<testCase id="102003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 3</desc>
|
||||
<id>amarisoft_ue_3</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102004">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 4</desc>
|
||||
<id>amarisoft_ue_4</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102005">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 5</desc>
|
||||
<id>amarisoft_ue_5</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102006">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 6</desc>
|
||||
<id>amarisoft_ue_6</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102007">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 7</desc>
|
||||
<id>amarisoft_ue_7</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 8</desc>
|
||||
<id>amarisoft_ue_8</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102009">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 9</desc>
|
||||
<id>amarisoft_ue_9</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102010">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 10</desc>
|
||||
<id>amarisoft_ue_10</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102011">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 11</desc>
|
||||
<id>amarisoft_ue_11</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102012">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 12</desc>
|
||||
<id>amarisoft_ue_12</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102013">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 13</desc>
|
||||
<id>amarisoft_ue_13</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102014">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE 14</desc>
|
||||
<id>amarisoft_ue_14</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="102015">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach (RedCap) UE 15</desc>
|
||||
<id>amarisoft_ue_15</id>
|
||||
<desc>Attach UE 3 - 15</desc>
|
||||
<id>amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100010">
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
000024
|
||||
000025
|
||||
000026
|
||||
000027
|
||||
000028
|
||||
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -58,7 +60,7 @@
|
||||
<testCase id="000001">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00102-ho</cn_id>
|
||||
<cn_id>oc-cn5g-00103-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
@@ -88,127 +90,134 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-CU in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<node>groot</node>
|
||||
<services>oai_cu</services>
|
||||
<class>Custom_Command</class>
|
||||
<desc>Set attenuator to 0 for DU0 and 17 for DU1</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 0 -r 3,4 17 -d 5</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU0 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<desc>Deploy gNB-CU in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<services>oai_du0</services>
|
||||
<node>groot</node>
|
||||
<services>oai-cu</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU0 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<services>oai-du0</services>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000009">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU1 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<node>rocket</node>
|
||||
<services>oai-du1</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000009">
|
||||
<testCase id="000011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100pings in 20sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<svr_id>oc-cn5g-00103-ho</svr_id>
|
||||
<ping_args>-c 100 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU1 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
<node>rocket</node>
|
||||
<services>oai_du1</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<testCase id="000012">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<testCase id="000013">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
<desc>Attenuate DU0 by 15 and remove the attenuation on DU1 to trigger Handover</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 15 -r 3,4 0 -d 5</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<testCase id="000014">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<svr_id>oc-cn5g-00103-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<testCase id="000015">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU1?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
<testCase id="000016">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Attenuate DU1 by 17dB and remove attenuation on DU0 to trigger Handover</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 0 -r 3,4 17 -d 5</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000016">
|
||||
<testCase id="000017">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<svr_id>oc-cn5g-00103-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000017">
|
||||
<testCase id="000018">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU0?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000018">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Handover</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci trigger_f1_ho | ncat 127.0.0.1 9090</command>
|
||||
<testCase id="000019">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Attenuate DU0 by 15 and remove the attenuation on DU1 to trigger Handover</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 15 -r 3,4 0 -d 5</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000019">
|
||||
<testCase id="000020">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00102-ho</svr_id>
|
||||
<svr_id>oc-cn5g-00103-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
<testCase id="000021">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to DU1?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<testCase id="000022">
|
||||
<class>Detach_UE</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Detach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<testCase id="000023">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy CU-DU0</desc>
|
||||
@@ -216,7 +225,7 @@
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<testCase id="000024">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy DU1 </desc>
|
||||
@@ -224,7 +233,15 @@
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_f1_b210_ho</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
<testCase id="000025">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Reset all channels on the attenuator to 0</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1-4 0</command>
|
||||
<always_exec>true</always_exec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000026">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
@@ -232,7 +249,7 @@
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000025">
|
||||
<testCase id="000027">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
@@ -240,11 +257,11 @@
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000026">
|
||||
<testCase id="000028">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00102-ho</cn_id>
|
||||
<cn_id>oc-cn5g-00103-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
230
ci-scripts/xml_files/container_sa_n2_ho_b210_quectel.xml
Normal file
230
ci-scripts/xml_files/container_sa_n2_ho_b210_quectel.xml
Normal file
@@ -0,0 +1,230 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-MONO-N2-HO-B210</htmlTabRef>
|
||||
<htmlTabName>Monolithic N2 Handover 20 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
000001
|
||||
000002
|
||||
000023
|
||||
000003
|
||||
000004
|
||||
000005
|
||||
000006
|
||||
000007
|
||||
000008
|
||||
000009
|
||||
000010
|
||||
000011
|
||||
000012
|
||||
000013
|
||||
000014
|
||||
000015
|
||||
000017
|
||||
000018
|
||||
000019
|
||||
000016
|
||||
000020
|
||||
000021
|
||||
000022
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00103-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>rocket</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace for groot</desc>
|
||||
<node>groot</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace on rocket</desc>
|
||||
<node>rocket</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Set initial attenuation on target gNB</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1,2 0 -s 3,4 15</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Monolithic gNB-PCI0 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n2_ho_b210</yaml_path>
|
||||
<node>groot</node>
|
||||
<services>oai-gnb-pci0</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Monolithic gNB-PCI1 (TDD/Band77/20MHz/B210) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n2_ho_b210</yaml_path>
|
||||
<node>rocket</node>
|
||||
<services>oai-gnb-pci1</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100pings in 20sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00103-ho</svr_id>
|
||||
<ping_args>-c 100 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000009">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Gradually attenuate gNB-PCI0 (ch1-2=15dB) and gNB-PCI1 (ch3-4=0dB) over 5s to trigger N2 Handover to gNB-PCI1</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 15 -r 3,4 0 -d 5</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00103-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to gNB-PCI1?</desc>
|
||||
<node>rocket</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3585"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Gradually attenuate gNB-PCI0 (ch1-2=0dB) and gNB-PCI1 (ch3-4=15dB) over 5s to trigger N2 Handover back to gNB-PCI0</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -r 1,2 0 -r 3,4 15 -d 5</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 50pings in 10sec</desc>
|
||||
<id>raspix</id>
|
||||
<svr_id>oc-cn5g-00103-ho</svr_id>
|
||||
<ping_args>-c 50 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Custom_Command</class>
|
||||
<desc>UE connected to gNB-PCI0?</desc>
|
||||
<node>groot</node>
|
||||
<command>echo ci fetch_du_by_ue_id 1 | ncat 127.0.0.1 9090 | grep "3584"</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000016">
|
||||
<class>Custom_Command</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Reset all attenuators to 0dB</desc>
|
||||
<node>rocket</node>
|
||||
<command>python3 %%workspace%%/ci-scripts/attenuatorctl.py -s 1-4 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000017">
|
||||
<class>Detach_UE</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Detach Quectel</desc>
|
||||
<id>raspix</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000018">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy Monolithic gNB-PCI0</desc>
|
||||
<node>groot</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n2_ho_b210</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000019">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy Monolithic gNB-PCI1</desc>
|
||||
<node>rocket</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n2_ho_b210</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>groot</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>rocket</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<cn_id>oc-cn5g-00103-ho</cn_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
179
ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml
Normal file
179
ci-scripts/xml_files/container_sa_n310_nrue_longrun.xml
Normal file
@@ -0,0 +1,179 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>LONGRUN-5G-NRUE</htmlTabRef>
|
||||
<htmlTabName>Longrun 40 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
060000
|
||||
010000 010001
|
||||
800813
|
||||
020000
|
||||
800814
|
||||
020001
|
||||
000001
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000100
|
||||
001000
|
||||
000200
|
||||
001000
|
||||
000200
|
||||
001000
|
||||
000200
|
||||
040001 040000
|
||||
333333
|
||||
444444
|
||||
060001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="060000">
|
||||
<class>DeployCoreNetwork</class>
|
||||
<desc>Initialize 5G Core</desc>
|
||||
<cn_id>oc-cn5g</cn_id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Pull_Cluster_Image</class>
|
||||
<desc>Pull Images from Cluster</desc>
|
||||
<images>oai-gnb</images>
|
||||
<node>avra</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010001">
|
||||
<class>Pull_Cluster_Image</class>
|
||||
<desc>Pull Images from Cluster</desc>
|
||||
<images>oai-nr-ue</images>
|
||||
<node>caracal</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>avra</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020000">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB (TDD/Band78/40MHz/N310) in a container</desc>
|
||||
<node>avra</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_gnb</yaml_path>
|
||||
<num_attempts>3</num_attempts>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800814">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>caracal</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy nrUE (TDD/Band78/40MHz/N310) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_nrue</yaml_path>
|
||||
<node>caracal</node>
|
||||
<num_attempts>3</num_attempts>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAIUE</desc>
|
||||
<id>oai_ue_caracal</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000100">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/10Mbps/UDP)(10 min)</desc>
|
||||
<iperf_args>-u -b 10M -t 600 -i 1 -R</iperf_args>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000200">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/2Mbps/UDP)(10 min)</desc>
|
||||
<iperf_args>-u -b 2M -t 600 -i 1 </iperf_args>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="001000">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20pings in 20sec</desc>
|
||||
<id>oai_ue_caracal</id>
|
||||
<svr_id>oc-cn5g</svr_id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>25</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040000">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy gNB</desc>
|
||||
<node>avra</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_gnb</yaml_path>
|
||||
<d_retx_th>20,100,100,100</d_retx_th>
|
||||
<u_retx_th>20,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="040001">
|
||||
<class>Undeploy_Object</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Undeploy nr UE</desc>
|
||||
<node>caracal</node>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_sa_n310_nrue</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="333333">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>avra</node>
|
||||
<images>oai-gnb</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444444">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<always_exec>true</always_exec>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<node>caracal</node>
|
||||
<images>oai-nr-ue</images>
|
||||
</testCase>
|
||||
|
||||
<testCase id="060001">
|
||||
<class>UndeployCoreNetwork</class>
|
||||
<desc>Terminate 5G Core</desc>
|
||||
<always_exec>true</always_exec>
|
||||
<cn_id>oc-cn5g</cn_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -42,7 +42,7 @@
|
||||
<class>Build_eNB</class>
|
||||
<desc>Build gNB (USRP)</desc>
|
||||
<node>caracal</node>
|
||||
<Build_eNB_args>--gNB -w USRP --ninja -c -P --build-lib ldpc_cuda --build-lib ldpc_aal --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c</Build_eNB_args>
|
||||
<Build_eNB_args>--gNB -w USRP --ninja -c -P --build-lib ldpc_cuda --build-lib ldpc_aal --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c --cmake-opt -DPHYSIM_CHECK_FILES="ThresholdsOffload.cmake"</Build_eNB_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100000">
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>build-tab</htmlTabRef>
|
||||
<htmlTabRef>physim-tab</htmlTabRef>
|
||||
<htmlTabName>PhySim</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
@@ -38,9 +38,9 @@
|
||||
|
||||
<testCase id="010201">
|
||||
<class>Build_Deploy_Docker_PhySim</class>
|
||||
<desc>Deploy and Deploy PhySim</desc>
|
||||
<desc>Build and Deploy PhySim</desc>
|
||||
<node>localhost</node>
|
||||
<ctest-opt>-R 5g -E physim.5g.nr_dlsim.mcs.mimo.test9 -j16</ctest-opt> <!-- one nr_dlsim test fails on ARM -->
|
||||
</testCase>
|
||||
<ctest-opt>-R 5g -E "nr_dlsim|nr_ulsim|ldpctest" -j32</ctest-opt> <!-- one nr_dlsim test fails on ARM -->
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
46
ci-scripts/xml_files/physim_timed_gracehopper.xml
Normal file
46
ci-scripts/xml_files/physim_timed_gracehopper.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>physim-timed-tab</htmlTabRef>
|
||||
<htmlTabName>PhySim with timing check</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
800813
|
||||
010202
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Create new Workspace</desc>
|
||||
<node>localhost</node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010202">
|
||||
<class>Build_Deploy_Docker_PhySim</class>
|
||||
<desc>Build and Deploy PhySim with timing check</desc>
|
||||
<node>localhost</node>
|
||||
<ctest-opt>-R 5g -R "nr_dlsim|nr_ulsim|ldpctest" -E physim.5g.nr_dlsim.mcs.mimo.test9 -j1</ctest-opt> <!-- one nr_dlsim test fails on ARM -->
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -150,7 +150,6 @@ services:
|
||||
--telnetsrv --telnetsrv.listenaddr 192.168.71.171
|
||||
--telnetsrv.shrmod ci
|
||||
--rfsimulator.serveraddr 192.168.71.190
|
||||
--gNBs.[0].servingCellConfigCommon.[0].ra_ResponseWindow 5
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
depends_on:
|
||||
- oai-cucp-0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
services:
|
||||
oai_cu:
|
||||
oai-cu:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-cu
|
||||
cap_drop:
|
||||
@@ -25,7 +25,7 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai_du0:
|
||||
oai-du0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-du0
|
||||
cap_drop:
|
||||
@@ -57,7 +57,7 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai_du1:
|
||||
oai-du1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-du1
|
||||
cap_drop:
|
||||
|
||||
61
ci-scripts/yaml_files/5g_sa_n2_ho_b210/docker-compose.yml
Normal file
61
ci-scripts/yaml_files/5g_sa_n2_ho_b210/docker-compose.yml
Normal file
@@ -0,0 +1,61 @@
|
||||
services:
|
||||
oai-gnb-pci0:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-gnb-pci0
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --RUs.[0].sdr_addrs serial=30AD30F
|
||||
--telnetsrv --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||
devices:
|
||||
- /dev/bus/usb/:/dev/bus/usb/
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config-ho.conf:/opt/oai-gnb/etc/neighbour-config-ho.conf
|
||||
- ../../conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
network_mode: "host"
|
||||
healthcheck:
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-gnb-pci1:
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop}
|
||||
container_name: oai-gnb-pci1
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --RUs.[0].sdr_addrs serial=31F8010
|
||||
--gNBs.[0].nr_cellid 11111111
|
||||
--gNBs.[0].gNB_ID 0xe01
|
||||
--gNBs.[0].servingCellConfigCommon.[0].physCellId 1
|
||||
--gNBs.[0].servingCellConfigCommon.[0].ssb_PositionsInBurst_Bitmap 2
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NG_AMF 172.21.19.99
|
||||
--gNBs.[0].NETWORK_INTERFACES.GNB_IPV4_ADDRESS_FOR_NGU 172.21.19.99
|
||||
--telnetsrv --telnetsrv.shrmod ci
|
||||
--log_config.global_log_options level,nocolor,utc_time,line_num,function
|
||||
devices:
|
||||
- /dev/bus/usb/:/dev/bus/usb/
|
||||
volumes:
|
||||
- ../../conf_files/neighbour-config-ho.conf:/opt/oai-gnb/etc/neighbour-config-ho.conf
|
||||
- ../../conf_files/gnb.sa.band77.51prb.usrpb200.n2-ho.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
network_mode: "host"
|
||||
healthcheck:
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -17,7 +17,7 @@ services:
|
||||
#entrypoint: /bin/bash -c "sleep infinity"
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.10.2 -r 106 --numerology 1 --band 78 -C 3425010000 --ssb 509 --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 -A 90 --log_config.global_log_options level,nocolor,time --uicc0.imsi 001020000000111 --uicc0.nssai_sd 16777215
|
||||
USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.10.2 -r 106 --numerology 1 --band 78 -C 3425010000 --ssb 509 --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 -A 90 --log_config.global_log_options level,nocolor,time --uicc0.imsi 001020000000111
|
||||
volumes:
|
||||
- ../../conf_files/ue.sa.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
|
||||
@@ -23,7 +23,7 @@ services:
|
||||
- ../../../cmake_targets/share:/opt/cuBB/share
|
||||
userns_mode: host
|
||||
ipc: "shareable"
|
||||
image: cubb-build:25-2-srs
|
||||
image: cubb-build:25-2.1
|
||||
environment:
|
||||
- cuBB_SDK=/opt/nvidia/cuBB
|
||||
command: bash -c "sudo rm -rf /tmp/phy.log && sudo chmod +x /opt/nvidia/cuBB/aerial_l1_entrypoint.sh && /opt/nvidia/cuBB/aerial_l1_entrypoint.sh"
|
||||
|
||||
34
ci-scripts/yaml_files/sa_gnb_aerial_ul/aerial_l1_entrypoint.sh
Executable file
34
ci-scripts/yaml_files/sa_gnb_aerial_ul/aerial_l1_entrypoint.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if cuBB_SDK is defined, if not, use default path
|
||||
cuBB_Path="${cuBB_SDK:-/opt/nvidia/cuBB}"
|
||||
|
||||
cd "$cuBB_Path" || exit 1
|
||||
# Add gdrcopy to LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/opt/mellanox/dpdk/lib/x86_64-linux-gnu:/opt/mellanox/doca/lib/x86_64-linux-gnu:/opt/nvidia/cuBB/cuPHY-CP/external/gdrcopy/build/x86_64/
|
||||
|
||||
# Restart MPS
|
||||
# Export variables
|
||||
export CUDA_DEVICE_MAX_CONNECTIONS=8
|
||||
export CUDA_MPS_PIPE_DIRECTORY=/var
|
||||
export CUDA_MPS_LOG_DIRECTORY=/var
|
||||
|
||||
# Stop existing MPS
|
||||
sudo -E echo quit | sudo -E nvidia-cuda-mps-control
|
||||
|
||||
# Start MPS
|
||||
sudo -E nvidia-cuda-mps-control -d
|
||||
sudo -E echo start_server -uid 0 | sudo -E nvidia-cuda-mps-control
|
||||
|
||||
# Start cuphycontroller_scf
|
||||
# Check if an argument is provided
|
||||
if [ $# -eq 0 ]; then
|
||||
# No argument provided, use default value
|
||||
argument="P5G_FXN_GH"
|
||||
else
|
||||
# Argument provided, use it
|
||||
argument="$1"
|
||||
fi
|
||||
|
||||
sudo -E "$cuBB_Path"/build/cuPHY-CP/cuphycontroller/examples/cuphycontroller_scf "$argument"
|
||||
sudo -E ./build/cuPHY-CP/gt_common_libs/nvIPC/tests/pcap/pcap_collect
|
||||
66
ci-scripts/yaml_files/sa_gnb_aerial_ul/docker-compose.yaml
Normal file
66
ci-scripts/yaml_files/sa_gnb_aerial_ul/docker-compose.yaml
Normal file
@@ -0,0 +1,66 @@
|
||||
services:
|
||||
nv-cubb:
|
||||
container_name: nv-cubb
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities:
|
||||
- gpu
|
||||
network_mode: host
|
||||
shm_size: 4096m
|
||||
privileged: true
|
||||
stdin_open: true
|
||||
tty: true
|
||||
volumes:
|
||||
- /lib/modules:/lib/modules
|
||||
- /dev/hugepages:/dev/hugepages
|
||||
- /usr/src:/usr/src
|
||||
- ./aerial_l1_entrypoint.sh:/opt/nvidia/cuBB/aerial_l1_entrypoint.sh
|
||||
- /var/log/aerial:/var/log/aerial
|
||||
- ../../../cmake_targets/share:/opt/cuBB/share
|
||||
userns_mode: host
|
||||
ipc: "shareable"
|
||||
image: cubb-build:25-2.1_srs-ul-heavy
|
||||
environment:
|
||||
- cuBB_SDK=/opt/nvidia/cuBB
|
||||
command: bash -c "sudo rm -rf /tmp/phy.log && sudo chmod +x /opt/nvidia/cuBB/aerial_l1_entrypoint.sh && /opt/nvidia/cuBB/aerial_l1_entrypoint.sh"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL",'grep -q "L1 is ready!" /tmp/phy.log && echo 0 || echo 1']
|
||||
interval: 20s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-gnb-aerial:
|
||||
cpuset: "13-16"
|
||||
image: ${REGISTRY:-oaisoftwarealliance}/oai-gnb-aerial:${TAG:-develop}
|
||||
depends_on:
|
||||
nv-cubb:
|
||||
condition: service_healthy
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ipc: "container:nv-cubb"
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities:
|
||||
- gpu
|
||||
network_mode: host
|
||||
shm_size: 4096m
|
||||
volumes:
|
||||
- ../../conf_files/gnb-vnf.sa.band78.273prb.aerial.ul-heavy.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
container_name: oai-gnb-aerial
|
||||
healthcheck:
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -92,7 +92,7 @@ Options:
|
||||
USRP, BLADERF, LMSSDR, IRIS, SIMU, AW2SORI, AERIAL, None (Default)
|
||||
Adds this RF board support (in external packages installation and in compilation)
|
||||
-t | --transport
|
||||
Selects the transport protocol type, options: None, Ethernet, benetel4g, benetel5g, oran_fhlib_5g, oran_fhlib_5g_mplane, WLS
|
||||
Selects the transport protocol type, options: None, Ethernet, oran_fhlib_5g, oran_fhlib_5g_mplane, WLS
|
||||
-P | --phy_simulators
|
||||
Makes the unitary tests Layer 1 simulators
|
||||
-V | --vcd
|
||||
@@ -278,10 +278,6 @@ function main() {
|
||||
TARGET_LIST="$TARGET_LIST oai_eth_transpro"
|
||||
CMAKE_CMD="$CMAKE_CMD -DOAI_${2^^}=ON" # ^^ makes uppercase
|
||||
;;
|
||||
"benetel4g" | "benetel5g" | "oran_fhlib_4g")
|
||||
TARGET_LIST="$TARGET_LIST $2"
|
||||
CMAKE_CMD="$CMAKE_CMD -DOAI_${2^^}=ON" # ^^ makes uppercase
|
||||
;;
|
||||
"oran_fhlib_5g")
|
||||
TARGET_LIST="$TARGET_LIST $2"
|
||||
CMAKE_CMD="$CMAKE_CMD -DOAI_FHI72=ON"
|
||||
|
||||
@@ -575,7 +575,7 @@ install_asn1c_from_source(){
|
||||
# Showing which version is used
|
||||
git log -n1
|
||||
autoreconf -iv
|
||||
./configure --prefix /opt/asn1c/
|
||||
CFLAGS="-O2 -fno-strict-aliasing" ./configure --prefix /opt/asn1c/
|
||||
make -j`nproc`
|
||||
$SUDO make install
|
||||
cd -
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/fhi_lib/app/src/common.h b/fhi_lib/app/src/common.h
|
||||
index ac5f471..5efcce3 100644
|
||||
index ac5f471..b0f7ed1 100644
|
||||
--- a/fhi_lib/app/src/common.h
|
||||
+++ b/fhi_lib/app/src/common.h
|
||||
@@ -28,7 +28,7 @@
|
||||
@@ -7,7 +7,7 @@ index ac5f471..5efcce3 100644
|
||||
#include <rte_mbuf.h>
|
||||
|
||||
-#define VERSIONX "oran_f_release_v1.0"
|
||||
+#define VERSIONX "oran_f_release_v1.4"
|
||||
+#define VERSIONX "oran_f_release_v1.5"
|
||||
|
||||
#define APP_O_DU 0
|
||||
#define APP_O_RU 1
|
||||
@@ -919,7 +919,7 @@ index 4acade1..c939edc 100644
|
||||
for(i = 0; i < xran_ports_num; i++){
|
||||
g_xran_dev_ctx[i] = pCtx;
|
||||
diff --git a/fhi_lib/lib/src/xran_main.c b/fhi_lib/lib/src/xran_main.c
|
||||
index 7c472d7..216c7f5 100644
|
||||
index 7c472d7..9da3621 100644
|
||||
--- a/fhi_lib/lib/src/xran_main.c
|
||||
+++ b/fhi_lib/lib/src/xran_main.c
|
||||
@@ -35,7 +35,11 @@
|
||||
@@ -969,7 +969,29 @@ index 7c472d7..216c7f5 100644
|
||||
print_dbg("PRACH eAxC_offset %d\n", pPrachCPConfig->eAxC_offset);
|
||||
|
||||
/* Save some configs for app */
|
||||
@@ -1570,6 +1593,7 @@ int32_t handle_ecpri_ethertype(struct rte_mbuf* pkt_q[], uint16_t xport_id, stru
|
||||
@@ -1169,6 +1192,10 @@ xran_prepare_cp_ul_slot(uint16_t xran_port_id, uint32_t nSlotIdx, uint32_t nCcS
|
||||
uint8_t seqid = xran_get_cp_seqid(pHandle, XRAN_DIR_UL, cc_id, port_id);
|
||||
|
||||
beam_id = xran_get_beamid(pHandle, XRAN_DIR_UL, cc_id, port_id, slot_id);
|
||||
+ pBufList = &(p_xran_dev_ctx->sFrontHaulRxPrbMapBbuIoBufCtrl[buf_id][cc_id][ant_id].sBufferList);
|
||||
+ struct xran_prb_map *prbMap = pBufList->pBuffers->pData;
|
||||
+ struct xran_prb_elm *pPrbElm = &prbMap->prbMap[0]; //mjoang
|
||||
+ beam_id = pPrbElm->nBeamIndex;
|
||||
ret = generate_cpmsg_prach(pHandle, ¶ms, sect_geninfo, mbuf, p_xran_dev_ctx,
|
||||
frame_id, subframe_id, slot_id, tti,
|
||||
beam_id, cc_id, port_id, occasionid, seqid);
|
||||
@@ -1338,6 +1365,10 @@ tx_cp_ul_cb(struct rte_timer *tim, void *arg)
|
||||
uint8_t seqid = xran_get_cp_seqid(pHandle, XRAN_DIR_UL, cc_id, port_id);
|
||||
|
||||
beam_id = xran_get_beamid(pHandle, XRAN_DIR_UL, cc_id, port_id, slot_id);
|
||||
+ pBufList = &(p_xran_dev_ctx->sFrontHaulRxPrbMapBbuIoBufCtrl[buf_id][cc_id][ant_id].sBufferList);
|
||||
+ struct xran_prb_map *prbMap = pBufList->pBuffers->pData;
|
||||
+ struct xran_prb_elm *pPrbElm = &prbMap->prbMap[0]; //mjoang
|
||||
+ beam_id = pPrbElm->nBeamIndex;
|
||||
ret = generate_cpmsg_prach(pHandle, ¶ms, sect_geninfo, mbuf, p_xran_dev_ctx,
|
||||
frame_id, subframe_id, slot_id, tti,
|
||||
beam_id, cc_id, port_id, occasionid, seqid);
|
||||
@@ -1570,6 +1601,7 @@ int32_t handle_ecpri_ethertype(struct rte_mbuf* pkt_q[], uint16_t xport_id, stru
|
||||
{
|
||||
case ECPRI_IQ_DATA:
|
||||
pkt_data[num_data++] = pkt;
|
||||
@@ -977,7 +999,7 @@ index 7c472d7..216c7f5 100644
|
||||
break;
|
||||
// For RU emulation
|
||||
case ECPRI_RT_CONTROL_DATA:
|
||||
@@ -1587,7 +1611,7 @@ int32_t handle_ecpri_ethertype(struct rte_mbuf* pkt_q[], uint16_t xport_id, stru
|
||||
@@ -1587,7 +1619,7 @@ int32_t handle_ecpri_ethertype(struct rte_mbuf* pkt_q[], uint16_t xport_id, stru
|
||||
break;
|
||||
default:
|
||||
if (p_dev_ctx->fh_init.io_cfg.id == O_DU) {
|
||||
@@ -986,7 +1008,7 @@ index 7c472d7..216c7f5 100644
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1876,7 +1900,7 @@ xran_sector_get_instances (uint32_t xran_port, void * pDevHandle, uint16_t nNumI
|
||||
@@ -1876,7 +1908,7 @@ xran_sector_get_instances (uint32_t xran_port, void * pDevHandle, uint16_t nNumI
|
||||
for (i = 0; i < nNumInstances; i++) {
|
||||
|
||||
/* Allocate Memory for CC handles */
|
||||
@@ -995,7 +1017,7 @@ index 7c472d7..216c7f5 100644
|
||||
|
||||
if(pCcHandle == NULL)
|
||||
return XRAN_STATUS_RESOURCE;
|
||||
@@ -2347,8 +2371,7 @@ ring_processing_func_per_port(void* args)
|
||||
@@ -2347,8 +2379,7 @@ ring_processing_func_per_port(void* args)
|
||||
for (i = 0; i < ctx->io_cfg.num_vfs && i < XRAN_VF_MAX; i = i+1) {
|
||||
if (ctx->vf2xran_port[i] == port_id) {
|
||||
for(qi = 0; qi < ctx->rxq_per_port[port_id]; qi++){
|
||||
@@ -1005,7 +1027,7 @@ index 7c472d7..216c7f5 100644
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2414,9 +2437,6 @@ xran_spawn_workers(void)
|
||||
@@ -2414,9 +2445,6 @@ xran_spawn_workers(void)
|
||||
nWorkerCore = nWorkerCore << 1;
|
||||
}
|
||||
|
||||
@@ -1015,7 +1037,7 @@ index 7c472d7..216c7f5 100644
|
||||
printf("O-XU %d\n", eth_ctx->io_cfg.id);
|
||||
printf("HW %d\n", icx_cpu);
|
||||
printf("Num cores %d\n", total_num_cores);
|
||||
@@ -2453,7 +2473,7 @@ xran_spawn_workers(void)
|
||||
@@ -2453,7 +2481,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->time_wrk_cfg.arg = NULL;
|
||||
eth_ctx->time_wrk_cfg.state = 1;
|
||||
|
||||
@@ -1024,7 +1046,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2475,7 +2495,7 @@ xran_spawn_workers(void)
|
||||
@@ -2475,7 +2503,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1033,7 +1055,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2502,7 +2522,7 @@ xran_spawn_workers(void)
|
||||
@@ -2502,7 +2530,7 @@ xran_spawn_workers(void)
|
||||
}
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1042,7 +1064,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2536,7 +2556,7 @@ xran_spawn_workers(void)
|
||||
@@ -2536,7 +2564,7 @@ xran_spawn_workers(void)
|
||||
else
|
||||
p_dev->tx_sym_gen_func = xran_process_tx_sym_cp_on_opt;
|
||||
|
||||
@@ -1051,7 +1073,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2559,7 +2579,7 @@ xran_spawn_workers(void)
|
||||
@@ -2559,7 +2587,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1060,7 +1082,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2586,7 +2606,7 @@ xran_spawn_workers(void)
|
||||
@@ -2586,7 +2614,7 @@ xran_spawn_workers(void)
|
||||
}
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1069,7 +1091,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2613,7 +2633,7 @@ xran_spawn_workers(void)
|
||||
@@ -2613,7 +2641,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1078,7 +1100,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2628,7 +2648,7 @@ xran_spawn_workers(void)
|
||||
@@ -2628,7 +2656,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1087,7 +1109,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2643,7 +2663,7 @@ xran_spawn_workers(void)
|
||||
@@ -2643,7 +2671,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 UP GEN **/
|
||||
@@ -1096,7 +1118,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2682,7 +2702,7 @@ xran_spawn_workers(void)
|
||||
@@ -2682,7 +2710,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1105,7 +1127,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2697,7 +2717,7 @@ xran_spawn_workers(void)
|
||||
@@ -2697,7 +2725,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1114,7 +1136,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2712,7 +2732,7 @@ xran_spawn_workers(void)
|
||||
@@ -2712,7 +2740,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 UP GEN **/
|
||||
@@ -1123,7 +1145,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2727,7 +2747,7 @@ xran_spawn_workers(void)
|
||||
@@ -2727,7 +2755,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 3 UP GEN **/
|
||||
@@ -1132,7 +1154,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2766,7 +2786,7 @@ xran_spawn_workers(void)
|
||||
@@ -2766,7 +2794,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1141,7 +1163,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2781,7 +2801,7 @@ xran_spawn_workers(void)
|
||||
@@ -2781,7 +2809,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 Eth Tx **/
|
||||
@@ -1150,7 +1172,7 @@ index 7c472d7..216c7f5 100644
|
||||
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
@@ -2797,7 +2817,7 @@ xran_spawn_workers(void)
|
||||
@@ -2797,7 +2825,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 - CP GEN **/
|
||||
@@ -1159,7 +1181,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2812,7 +2832,7 @@ xran_spawn_workers(void)
|
||||
@@ -2812,7 +2840,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 3 UP GEN **/
|
||||
@@ -1168,7 +1190,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2827,7 +2847,7 @@ xran_spawn_workers(void)
|
||||
@@ -2827,7 +2855,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 4 UP GEN **/
|
||||
@@ -1177,7 +1199,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2861,7 +2881,7 @@ xran_spawn_workers(void)
|
||||
@@ -2861,7 +2889,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 Eth RX */
|
||||
@@ -1186,7 +1208,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2876,7 +2896,7 @@ xran_spawn_workers(void)
|
||||
@@ -2876,7 +2904,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 FH RX and BBDEV */
|
||||
@@ -1195,7 +1217,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2891,7 +2911,7 @@ xran_spawn_workers(void)
|
||||
@@ -2891,7 +2919,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 FH RX and BBDEV */
|
||||
@@ -1204,7 +1226,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2906,7 +2926,7 @@ xran_spawn_workers(void)
|
||||
@@ -2906,7 +2934,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 3 FH RX and BBDEV */
|
||||
@@ -1213,7 +1235,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2921,7 +2941,7 @@ xran_spawn_workers(void)
|
||||
@@ -2921,7 +2949,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** FH TX and BBDEV */
|
||||
@@ -1222,7 +1244,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -2969,7 +2989,7 @@ xran_spawn_workers(void)
|
||||
@@ -2969,7 +2997,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* p_dev->tx_sym_gen_func = xran_process_tx_sym_cp_on_opt; */
|
||||
|
||||
@@ -1231,7 +1253,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3004,7 +3024,7 @@ xran_spawn_workers(void)
|
||||
@@ -3004,7 +3032,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1240,7 +1262,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3031,7 +3051,7 @@ xran_spawn_workers(void)
|
||||
@@ -3031,7 +3059,7 @@ xran_spawn_workers(void)
|
||||
}
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1249,7 +1271,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3062,7 +3082,7 @@ xran_spawn_workers(void)
|
||||
@@ -3062,7 +3090,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1258,7 +1280,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3089,7 +3109,7 @@ xran_spawn_workers(void)
|
||||
@@ -3089,7 +3117,7 @@ xran_spawn_workers(void)
|
||||
}
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1267,7 +1289,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3115,7 +3135,7 @@ xran_spawn_workers(void)
|
||||
@@ -3115,7 +3143,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1276,7 +1298,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3130,7 +3150,7 @@ xran_spawn_workers(void)
|
||||
@@ -3130,7 +3158,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1285,7 +1307,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3145,7 +3165,7 @@ xran_spawn_workers(void)
|
||||
@@ -3145,7 +3173,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 UP GEN **/
|
||||
@@ -1294,7 +1316,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3184,7 +3204,7 @@ xran_spawn_workers(void)
|
||||
@@ -3184,7 +3212,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 FH RX and BBDEV */
|
||||
@@ -1303,7 +1325,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3199,7 +3219,7 @@ xran_spawn_workers(void)
|
||||
@@ -3199,7 +3227,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1312,7 +1334,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3214,7 +3234,7 @@ xran_spawn_workers(void)
|
||||
@@ -3214,7 +3242,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 UP GEN **/
|
||||
@@ -1321,7 +1343,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3229,7 +3249,7 @@ xran_spawn_workers(void)
|
||||
@@ -3229,7 +3257,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 3 UP GEN **/
|
||||
@@ -1330,7 +1352,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3266,7 +3286,7 @@ xran_spawn_workers(void)
|
||||
@@ -3266,7 +3294,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1339,7 +1361,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3281,7 +3301,7 @@ xran_spawn_workers(void)
|
||||
@@ -3281,7 +3309,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1348,7 +1370,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3296,7 +3316,7 @@ xran_spawn_workers(void)
|
||||
@@ -3296,7 +3324,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 UP GEN **/
|
||||
@@ -1357,7 +1379,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3311,7 +3331,7 @@ xran_spawn_workers(void)
|
||||
@@ -3311,7 +3339,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 3 UP GEN **/
|
||||
@@ -1366,7 +1388,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3326,7 +3346,7 @@ xran_spawn_workers(void)
|
||||
@@ -3326,7 +3354,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 4 UP GEN **/
|
||||
@@ -1375,7 +1397,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3348,7 +3368,7 @@ xran_spawn_workers(void)
|
||||
@@ -3348,7 +3376,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 Eth RX */
|
||||
@@ -1384,7 +1406,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3363,7 +3383,7 @@ xran_spawn_workers(void)
|
||||
@@ -3363,7 +3391,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 FH RX and BBDEV */
|
||||
@@ -1393,7 +1415,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3378,7 +3398,7 @@ xran_spawn_workers(void)
|
||||
@@ -3378,7 +3406,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 FH RX and BBDEV */
|
||||
@@ -1402,7 +1424,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3393,7 +3413,7 @@ xran_spawn_workers(void)
|
||||
@@ -3393,7 +3421,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 3 FH RX and BBDEV */
|
||||
@@ -1411,7 +1433,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3408,7 +3428,7 @@ xran_spawn_workers(void)
|
||||
@@ -3408,7 +3436,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** FH TX and BBDEV */
|
||||
@@ -1420,7 +1442,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3435,7 +3455,7 @@ xran_spawn_workers(void)
|
||||
@@ -3435,7 +3463,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 Eth RX */
|
||||
@@ -1429,7 +1451,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3450,7 +3470,7 @@ xran_spawn_workers(void)
|
||||
@@ -3450,7 +3478,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 1 FH RX and BBDEV */
|
||||
@@ -1438,7 +1460,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3465,7 +3485,7 @@ xran_spawn_workers(void)
|
||||
@@ -3465,7 +3493,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 FH RX and BBDEV */
|
||||
@@ -1447,7 +1469,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3480,7 +3500,7 @@ xran_spawn_workers(void)
|
||||
@@ -3480,7 +3508,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 3 FH RX and BBDEV */
|
||||
@@ -1456,7 +1478,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3495,7 +3515,7 @@ xran_spawn_workers(void)
|
||||
@@ -3495,7 +3523,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 4 FH RX and BBDEV */
|
||||
@@ -1465,7 +1487,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3510,7 +3530,7 @@ xran_spawn_workers(void)
|
||||
@@ -3510,7 +3538,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** FH TX and BBDEV */
|
||||
@@ -1474,7 +1496,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3537,7 +3557,7 @@ xran_spawn_workers(void)
|
||||
@@ -3537,7 +3565,7 @@ xran_spawn_workers(void)
|
||||
|
||||
/* workers */
|
||||
/** 0 **/
|
||||
@@ -1483,7 +1505,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3562,7 +3582,7 @@ xran_spawn_workers(void)
|
||||
@@ -3562,7 +3590,7 @@ xran_spawn_workers(void)
|
||||
}
|
||||
|
||||
/** 1 - CP GEN **/
|
||||
@@ -1492,7 +1514,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3577,7 +3597,7 @@ xran_spawn_workers(void)
|
||||
@@ -3577,7 +3605,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 2 UP GEN **/
|
||||
@@ -1501,7 +1523,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3602,7 +3622,7 @@ xran_spawn_workers(void)
|
||||
@@ -3602,7 +3630,7 @@ xran_spawn_workers(void)
|
||||
}
|
||||
|
||||
/** 3 UP GEN **/
|
||||
@@ -1510,7 +1532,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3627,7 +3647,7 @@ xran_spawn_workers(void)
|
||||
@@ -3627,7 +3655,7 @@ xran_spawn_workers(void)
|
||||
}
|
||||
|
||||
/** 4 UP GEN **/
|
||||
@@ -1519,7 +1541,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -3642,7 +3662,7 @@ xran_spawn_workers(void)
|
||||
@@ -3642,7 +3670,7 @@ xran_spawn_workers(void)
|
||||
eth_ctx->pkt_wrk_cfg[pThCtx->worker_id].arg = pThCtx;
|
||||
|
||||
/** 5 UP GEN **/
|
||||
@@ -1528,7 +1550,7 @@ index 7c472d7..216c7f5 100644
|
||||
if(pThCtx == NULL){
|
||||
print_err("pThCtx allocation error\n");
|
||||
return XRAN_STATUS_FAIL;
|
||||
@@ -4034,6 +4054,24 @@ xran_get_slot_idx (uint32_t PortId, uint32_t *nFrameIdx, uint32_t *nSubframeIdx,
|
||||
@@ -4034,6 +4062,24 @@ xran_get_slot_idx (uint32_t PortId, uint32_t *nFrameIdx, uint32_t *nSubframeIdx,
|
||||
return tti;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,9 +37,7 @@ typedef struct nssai_s {
|
||||
|
||||
// Globally Unique AMF Identifier
|
||||
typedef struct nr_guami_s {
|
||||
uint16_t mcc;
|
||||
uint16_t mnc;
|
||||
uint8_t mnc_len;
|
||||
plmn_id_t plmn;
|
||||
uint8_t amf_region_id;
|
||||
uint16_t amf_set_id;
|
||||
uint8_t amf_pointer;
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "common/config/config_paramdesc.h"
|
||||
#include "common/utils/T/T.h"
|
||||
#define CONFIG_MAX_OOPT_PARAMS 10 // maximum number of parameters in the -O option (-O <cfgmode>:P1:P2...
|
||||
#define CONFIG_MAX_ALLOCATEDPTRS 32768 // maximum number of parameters that can be dynamicaly allocated in the config module
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ else()
|
||||
endif()
|
||||
|
||||
add_library(params_yaml_static config_yaml.cpp)
|
||||
target_link_libraries(params_yaml_static PUBLIC UTIL yaml-cpp::yaml-cpp)
|
||||
target_link_libraries(params_yaml_static PUBLIC yaml-cpp::yaml-cpp)
|
||||
if (ENABLE_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
add_library(params_yaml MODULE config_yaml.cpp)
|
||||
target_link_libraries(params_yaml PUBLIC UTIL yaml-cpp::yaml-cpp)
|
||||
target_link_libraries(params_yaml PUBLIC yaml-cpp::yaml-cpp)
|
||||
set_target_properties(params_yaml PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
add_executable(test_yaml_config test_yaml_config.cpp)
|
||||
target_link_libraries(test_yaml_config PRIVATE params_yaml_static GTest::gtest)
|
||||
target_link_libraries(test_yaml_config PRIVATE params_yaml_static GTest::gtest CONFIG_LIB)
|
||||
add_dependencies(tests test_yaml_config)
|
||||
add_test(NAME test_yaml_config
|
||||
COMMAND ./test_yaml_config)
|
||||
|
||||
@@ -33,6 +33,39 @@
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define ALIGNARRAYSIZE(a, b) (((a + b - 1) / b) * b)
|
||||
#define ALNARS_16_4(a) ALIGNARRAYSIZE(a, 4)
|
||||
|
||||
typedef struct complexd {
|
||||
double r;
|
||||
double i;
|
||||
} cd_t;
|
||||
|
||||
typedef struct complexf {
|
||||
float r;
|
||||
float i;
|
||||
} cf_t;
|
||||
|
||||
typedef struct complex8 {
|
||||
int8_t r;
|
||||
int8_t i;
|
||||
} c8_t;
|
||||
|
||||
typedef struct complex16 {
|
||||
int16_t r;
|
||||
int16_t i;
|
||||
} c16_t;
|
||||
|
||||
typedef struct complex32 {
|
||||
int32_t r;
|
||||
int32_t i;
|
||||
} c32_t;
|
||||
|
||||
typedef struct complex64 {
|
||||
int64_t r;
|
||||
int64_t i;
|
||||
} c64_t;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// GENERIC ACCESS STRATUM TYPES
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -45,7 +78,6 @@ typedef uint16_t module_id_t;
|
||||
typedef uint8_t slice_id_t;
|
||||
typedef uint8_t eNB_index_t;
|
||||
typedef uint64_t ue_id_t;
|
||||
typedef int16_t smodule_id_t;
|
||||
typedef long rb_id_t;
|
||||
typedef long srb_id_t;
|
||||
|
||||
@@ -74,24 +106,7 @@ typedef enum {
|
||||
FDD = 0
|
||||
} frame_type_t;
|
||||
|
||||
typedef enum link_direction_e { UNKNOWN_DIR = 0, DIR_UPLINK = 1, DIR_DOWNLINK = 2 } link_direction_t;
|
||||
|
||||
typedef enum rb_type_e { UNKNOWN_RADIO_BEARER = 0, SIGNALLING_RADIO_BEARER = 1, RADIO_ACCESS_BEARER = 2 } rb_type_t;
|
||||
|
||||
typedef enum { CR_ROUND = 0, CR_SRB12 = 1, CR_HOL = 2, CR_LC = 3, CR_CQI = 4, CR_LCP = 5, CR_NUM = 6 } sorting_criterion_t;
|
||||
|
||||
typedef enum { POL_FAIR = 0, POL_GREEDY = 1, POL_NUM = 2 } accounting_policy_t;
|
||||
//-----------------------------------------------------------------------------
|
||||
// PHY TYPES
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef uint8_t crc8_t;
|
||||
typedef uint16_t crc16_t;
|
||||
typedef uint32_t crc32_t;
|
||||
typedef unsigned int crc_t;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// MAC TYPES
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef sdu_size_t tbs_size_t;
|
||||
typedef sdu_size_t tb_size_t;
|
||||
typedef unsigned int logical_chan_id_t;
|
||||
@@ -103,9 +118,6 @@ typedef uint8_t mac_enb_index_t;
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef unsigned int mui_t;
|
||||
typedef unsigned int confirm_t;
|
||||
typedef unsigned int rlc_tx_status_t;
|
||||
typedef int16_t rlc_sn_t;
|
||||
typedef uint16_t rlc_usn_t;
|
||||
typedef int32_t rlc_buffer_occupancy_t;
|
||||
typedef signed int rlc_op_status_t;
|
||||
|
||||
@@ -130,7 +142,6 @@ typedef struct {
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef uint16_t pdcp_sn_t;
|
||||
typedef uint32_t pdcp_hfn_t;
|
||||
typedef int16_t pdcp_hfn_offset_t;
|
||||
|
||||
typedef enum pdcp_transmission_mode_e {
|
||||
PDCP_TRANSMISSION_MODE_UNKNOWN = 0,
|
||||
@@ -177,7 +188,6 @@ typedef struct net_ip_address_s {
|
||||
typedef uint32_t mbms_session_id_t;
|
||||
typedef uint16_t mbms_service_id_t;
|
||||
typedef uint16_t rnti_t;
|
||||
typedef uint8_t rrc_enb_index_t;
|
||||
typedef uint8_t mme_code_t;
|
||||
typedef uint32_t m_tmsi_t;
|
||||
|
||||
@@ -188,7 +198,6 @@ typedef uint32_t m_tmsi_t;
|
||||
#define P_RNTI (rnti_t)0xFFFE
|
||||
#define SI_RNTI (rnti_t)0xFFFF
|
||||
#define CBA_RNTI (rnti_t)0xfff4
|
||||
#define OAI_C_RNTI (rnti_t)0x1234
|
||||
typedef enum config_action_e {
|
||||
CONFIG_ACTION_NULL = 0,
|
||||
CONFIG_ACTION_ADD = 1,
|
||||
@@ -256,8 +265,6 @@ typedef struct protocol_ctxt_s {
|
||||
eNB_index_t eNB_index; /*!< \brief valid for UE indicating the index of connected eNB(s) */
|
||||
bool brOption;
|
||||
} protocol_ctxt_t;
|
||||
// warning time hardcoded
|
||||
#define PROTOCOL_CTXT_TIME_MILLI_SECONDS(CtXt_h) ((CtXt_h)->frame * 10 + (CtXt_h)->subframe)
|
||||
|
||||
#define UE_MODULE_ID_TO_INSTANCE(mODULE_iD) mODULE_iD + RC.nb_inst
|
||||
#define ENB_MODULE_ID_TO_INSTANCE(mODULE_iD) mODULE_iD
|
||||
@@ -309,12 +316,6 @@ typedef struct protocol_ctxt_s {
|
||||
#define PROTOCOL_CTXT_ARGS(CTXT_Pp) \
|
||||
(CTXT_Pp)->frame, ((CTXT_Pp)->enb_flag == ENB_FLAG_YES) ? "eNB" : " UE", (CTXT_Pp)->module_id, (CTXT_Pp)->rntiMaybeUEid
|
||||
|
||||
#define PROTOCOL_NR_CTXT_ARGS(CTXT_Pp) \
|
||||
(CTXT_Pp)->frame, ((CTXT_Pp)->enb_flag == GNB_FLAG_YES) ? "gNB" : " UE", (CTXT_Pp)->module_id, (CTXT_Pp)->rntiMaybeUEid
|
||||
|
||||
#define CHECK_CTXT_ARGS(CTXT_Pp)
|
||||
|
||||
|
||||
static inline int ceil_mod(const unsigned int v, const unsigned int mod)
|
||||
{
|
||||
return ((v + mod - 1) / mod) * mod;
|
||||
|
||||
@@ -4,10 +4,12 @@ target_link_libraries(log_headers INTERFACE T_headers)
|
||||
|
||||
set(log_sources log.c)
|
||||
if (ENABLE_LTTNG)
|
||||
find_package(LTTngUST 2.3.8 EXACT REQUIRED)
|
||||
set(log_sources ${log_sources} lttng-tp.c)
|
||||
else()
|
||||
message(STATUS "LTTNG support disabled")
|
||||
endif()
|
||||
add_library(LOG ${log_sources})
|
||||
target_include_directories(LOG PUBLIC .)
|
||||
target_link_libraries(LOG PRIVATE CONFIG_LIB)
|
||||
target_link_libraries(LOG PUBLIC log_headers)
|
||||
if (ENABLE_LTTNG)
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
#include <common/utils/utils.h>
|
||||
#include "common/utils/T/T.h"
|
||||
#if ENABLE_LTTNG
|
||||
#include "lttng-log.h"
|
||||
#endif
|
||||
|
||||
@@ -47,7 +47,7 @@ add_custom_target(generate_T DEPENDS T_IDs.h check_vcd)
|
||||
# even if T is off, we need the headers as many targets depend on it
|
||||
# for this, create an INTERFACE (header-only) library T_headers. To ensure the
|
||||
# headers have really been created, we make this headers library explicitly
|
||||
# depend on the generated headers.
|
||||
# depend on the generate_T target.
|
||||
add_library(T_headers INTERFACE)
|
||||
add_dependencies(T_headers T_IDs.h generate_T)
|
||||
target_include_directories(T_headers INTERFACE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
@@ -143,6 +143,10 @@ ID = GNB_PHY_UL_TIME_CHANNEL_ESTIMATE
|
||||
DESC = gNodeB channel estimation in the time domain
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB
|
||||
FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : buffer,chest_t
|
||||
ID = GNB_PHY_UL_SNR_ESTIMATE
|
||||
DESC = gNodeB SNR estimation based on SRS
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB
|
||||
FORMAT = int,gNB_ID : int,rnti : int,frame : int,subframe : int,antenna : buffer,snr
|
||||
ID = GNB_PHY_PRACH_INPUT_SIGNAL
|
||||
DESC = gNodeB input data in the time domain for slots with PRACH detection
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:GNB
|
||||
|
||||
@@ -19,6 +19,7 @@ typedef struct {
|
||||
widget *pucch_pusch_iq_plot;
|
||||
widget *ul_freq_estimate_ue_xy_plot;
|
||||
widget *ul_time_estimate_ue_xy_plot;
|
||||
widget *ul_snr_estimate_ue_xy_plot;
|
||||
widget *current_ue_label;
|
||||
widget *current_ue_button;
|
||||
widget *prev_ue_button;
|
||||
@@ -26,6 +27,7 @@ typedef struct {
|
||||
logger *pucch_pusch_iq_logger;
|
||||
logger *ul_freq_estimate_ue_logger;
|
||||
logger *ul_time_estimate_ue_logger;
|
||||
logger *ul_snr_ue_logger;
|
||||
} gnb_gui;
|
||||
|
||||
typedef struct {
|
||||
@@ -98,6 +100,9 @@ static void set_current_ue(gui *g, gnb_data *e, int ue)
|
||||
|
||||
sprintf(s, "UL channel estimation in time domain [UE %d]", ue);
|
||||
xy_plot_set_title(g, e->e->ul_time_estimate_ue_xy_plot, s);
|
||||
|
||||
sprintf(s, "UL SNR per RB based on SRS [UE %d]", ue);
|
||||
xy_plot_set_title(g, e->e->ul_snr_estimate_ue_xy_plot, s);
|
||||
}
|
||||
|
||||
void reset_ue_ids(void)
|
||||
@@ -146,12 +151,13 @@ static void gnb_main_gui(gnb_gui *e, gui *g, event_handler *h, void *database, g
|
||||
logger *l;
|
||||
view *v;
|
||||
|
||||
main_window = new_toplevel_window(g, 1500, 230, "gNB tracer");
|
||||
main_window = new_toplevel_window(g, 1500, 460, "gNB tracer");
|
||||
top_container = new_container(g, VERTICAL);
|
||||
widget_add_child(g, main_window, top_container, -1);
|
||||
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
|
||||
logo = new_image(g, openair_logo_png, openair_logo_png_len);
|
||||
|
||||
/* logo + prev/next UE buttons */
|
||||
@@ -206,6 +212,21 @@ static void gnb_main_gui(gnb_gui *e, gui *g, event_handler *h, void *database, g
|
||||
logger_add_view(l, v);
|
||||
e->ul_time_estimate_ue_logger = l;
|
||||
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
|
||||
/* UL SNR based on SRS */
|
||||
w = new_xy_plot(g, 1280, 200, "", 190);
|
||||
e->ul_snr_estimate_ue_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 273, -10, 65);
|
||||
l = new_framelog(h, database, "GNB_PHY_UL_SNR_ESTIMATE", "subframe", "snr");
|
||||
framelog_set_update_only_at_sf9(l, 0);
|
||||
framelog_set_type_buffer_db(l);
|
||||
v = new_view_xy(273, 10, g, w, new_color(g, "#0c0c72"), XY_LOOP_MODE);
|
||||
logger_add_view(l, v);
|
||||
e->ul_snr_ue_logger = l;
|
||||
|
||||
set_current_ue(g, ed, ed->ue);
|
||||
register_notifier(g, "click", e->current_ue_button, click, ed);
|
||||
register_notifier(g, "click", e->prev_ue_button, click, ed);
|
||||
@@ -251,6 +272,7 @@ int main(int n, char **v)
|
||||
on_off(database, "GNB_PHY_PUCCH_PUSCH_IQ", is_on, 1);
|
||||
on_off(database, "GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE", is_on, 1);
|
||||
on_off(database, "GNB_PHY_UL_TIME_CHANNEL_ESTIMATE", is_on, 1);
|
||||
on_off(database, "GNB_PHY_UL_SNR_ESTIMATE", is_on, 1);
|
||||
|
||||
gnb_data.ue = 0;
|
||||
gnb_data.e = ⪚
|
||||
|
||||
@@ -8,6 +8,11 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
typedef enum {
|
||||
FRAMELOG_BUFFER,
|
||||
FRAMELOG_BUFFER_dB,
|
||||
} framelog_buffer_type_t;
|
||||
|
||||
struct framelog {
|
||||
struct logger common;
|
||||
void *database;
|
||||
@@ -22,6 +27,7 @@ struct framelog {
|
||||
int skip_current; /* internal data for the skip mechanism */
|
||||
int skip_on; /* internal data for the skip mechanism */
|
||||
int update_only_at_sf9;
|
||||
framelog_buffer_type_t type;
|
||||
};
|
||||
|
||||
static void _event(void *p, event e)
|
||||
@@ -52,7 +58,10 @@ static void _event(void *p, event e)
|
||||
}
|
||||
if (l->skip_on) return;
|
||||
|
||||
nsamples = bsize / (2*sizeof(int16_t));
|
||||
if (l->type == FRAMELOG_BUFFER)
|
||||
nsamples = bsize / (2 * sizeof(int16_t));
|
||||
else
|
||||
nsamples = bsize / sizeof(int16_t);
|
||||
|
||||
if (l->blength != nsamples * 10) {
|
||||
l->blength = nsamples * 10;
|
||||
@@ -71,10 +80,15 @@ static void _event(void *p, event e)
|
||||
}
|
||||
|
||||
/* TODO: compute the LOGs in the plotter (too much useless computations) */
|
||||
for (i = 0; i < nsamples; i++) {
|
||||
int I = ((int16_t *)buffer)[i*2];
|
||||
int Q = ((int16_t *)buffer)[i*2+1];
|
||||
l->buffer[subframe * nsamples + i] = 10*log10(1.0+(float)(I*I+Q*Q));
|
||||
if (l->type == FRAMELOG_BUFFER_dB) {
|
||||
for (i = 0; i < nsamples; i++)
|
||||
l->buffer[subframe * nsamples + i] = ((int16_t *)buffer)[i];
|
||||
} else {
|
||||
for (i = 0; i < nsamples; i++) {
|
||||
int I = ((int16_t *)buffer)[i * 2];
|
||||
int Q = ((int16_t *)buffer)[i * 2 + 1];
|
||||
l->buffer[subframe * nsamples + i] = 10 * log10(1.0 + (float)(I * I + Q * Q));
|
||||
}
|
||||
}
|
||||
|
||||
if (l->update_only_at_sf9 == 0 || subframe == 9)
|
||||
@@ -132,6 +146,8 @@ logger *new_framelog(event_handler *h, void *database,
|
||||
abort();
|
||||
}
|
||||
|
||||
ret->type = FRAMELOG_BUFFER;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -153,3 +169,9 @@ void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9)
|
||||
struct framelog *l = _this;
|
||||
l->update_only_at_sf9 = update_only_at_sf9;
|
||||
}
|
||||
|
||||
void framelog_set_type_buffer_db(logger *_this)
|
||||
{
|
||||
struct framelog *l = _this;
|
||||
l->type = FRAMELOG_BUFFER_dB;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ logger *new_iqdotlog(void *event_handler, void *database,
|
||||
|
||||
void framelog_set_skip(logger *_this, int skip_delay);
|
||||
void framelog_set_update_only_at_sf9(logger *_this, int update_only_at_sf9);
|
||||
void framelog_set_type_buffer_db(logger *_this);
|
||||
|
||||
void textlog_dump_buffer(logger *_this, int dump_buffer);
|
||||
void textlog_raw_time(logger *_this, int raw_time);
|
||||
|
||||
@@ -196,7 +196,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
view *v;
|
||||
logger *l;
|
||||
|
||||
main_window = new_toplevel_window(g, 1200, 900, "eNB tracer");
|
||||
main_window = new_toplevel_window(g, 1200, 900, "UE tracer");
|
||||
top_container = new_container(g, VERTICAL);
|
||||
widget_add_child(g, main_window, top_container, -1);
|
||||
|
||||
@@ -207,7 +207,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
/* logo */
|
||||
widget_add_child(g, line, logo, -1);
|
||||
|
||||
input_signal_plot = new_xy_plot(g, 256, 55, "input signal", 20);
|
||||
input_signal_plot = new_xy_plot(g, 512, 110, "input signal", 20);
|
||||
widget_add_child(g, line, input_signal_plot, -1);
|
||||
xy_plot_set_range(g, input_signal_plot, 0, 7680*10, 20, 70);
|
||||
input_signal_log = new_framelog(h, database,
|
||||
@@ -221,7 +221,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
logger_add_view(input_signal_log, input_signal_view);
|
||||
|
||||
/* UE x PDSCH IQ data */
|
||||
w = new_xy_plot(g, 55, 55, "", 50);
|
||||
w = new_xy_plot(g, 110, 110, "", 50);
|
||||
e->pdsch_iq_ue_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, -500, 500, -500, 500);
|
||||
@@ -232,7 +232,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
e->pdsch_iq_ue_logger = l;
|
||||
|
||||
/* UE x estimated DL channel */
|
||||
w = new_xy_plot(g, 280, 55, "", 50);
|
||||
w = new_xy_plot(g, 560, 110, "", 50);
|
||||
e->dl_estimate_ue_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 512*10, -10, 80);
|
||||
@@ -245,7 +245,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
e->dl_estimate_ue_logger = l;
|
||||
|
||||
/* PHY Meas */
|
||||
w = new_xy_plot(g, 128, 55, "", 50);
|
||||
w = new_xy_plot(g, 256, 110, "", 50);
|
||||
e->phy_meas_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 1024*10, -130, 35);
|
||||
@@ -271,7 +271,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
/* UE x DL mcs */
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
w = new_xy_plot(g, 128, 55, "", 20);
|
||||
w = new_xy_plot(g, 192, 110, "", 20);
|
||||
xy_plot_set_range(g, w, 0, 1024*10, -2, 30);
|
||||
e->dl_mcs_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
@@ -282,7 +282,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
e->dl_mcs_logger = l;
|
||||
|
||||
/* UE x UL mcs */
|
||||
w = new_xy_plot(g, 128, 55, "", 20);
|
||||
w = new_xy_plot(g, 192, 110, "", 20);
|
||||
xy_plot_set_range(g, w, 0, 1024*10, -2, 30);
|
||||
e->ul_mcs_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
@@ -295,7 +295,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
/* UE x PUSCH TX Power */
|
||||
// line = new_container(g, HORIZONTAL);
|
||||
// widget_add_child(g, top_container, line, -1);
|
||||
w = new_xy_plot(g, 128, 55, "", 20);
|
||||
w = new_xy_plot(g, 192, 110, "", 20);
|
||||
e->pusch_power_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 1024*10, -30, 50);
|
||||
@@ -313,7 +313,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
/* UE x PUCCH TX Power */
|
||||
// line = new_container(g, HORIZONTAL);
|
||||
// widget_add_child(g, top_container, line, -1);
|
||||
w = new_xy_plot(g, 128, 55, "", 20);
|
||||
w = new_xy_plot(g, 192, 110, "", 20);
|
||||
e->pucch_power_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 1024*10, -30, 50);
|
||||
@@ -329,7 +329,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
e->pucch_ampl_logger = l;
|
||||
|
||||
/* UE x PDSCH energy */
|
||||
w = new_xy_plot(g, 128, 55, "", 50);
|
||||
w = new_xy_plot(g, 192, 110, "", 50);
|
||||
e->pdsch_energy_ue_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 1024*10, -10, 80);
|
||||
@@ -355,7 +355,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
e->pdsch_energy_logger = l;
|
||||
|
||||
/* UE x PDCCH energy */
|
||||
w = new_xy_plot(g, 128, 55, "", 50);
|
||||
w = new_xy_plot(g, 192, 110, "", 50);
|
||||
e->pdcch_energy_ue_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, 0, 1024*10, -10, 80);
|
||||
@@ -381,7 +381,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
e->pdcch_energy_logger = l;
|
||||
|
||||
/* UE x PDCCH IQ data */
|
||||
w = new_xy_plot(g, 55, 55, "", 50);
|
||||
w = new_xy_plot(g, 110, 110, "", 50);
|
||||
e->pdcch_iq_ue_xy_plot = w;
|
||||
widget_add_child(g, line, w, -1);
|
||||
xy_plot_set_range(g, w, -100, 100, -100, 100);
|
||||
@@ -544,16 +544,16 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
/* phy/mac/rlc/pdcp/rrc textlog */
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
container_set_child_growable(g, top_container, line, 1);
|
||||
container_set_child_growable(g, top_container, line, 0);
|
||||
|
||||
/* phy */
|
||||
col = new_container(g, VERTICAL);
|
||||
widget_add_child(g, line, col, -1);
|
||||
container_set_child_growable(g, line, col, 1);
|
||||
widget_add_child(g, col, new_label(g, "PHY"), -1);
|
||||
text = new_textlist(g, 100, 10, new_color(g, "#afa"));
|
||||
text = new_textlist(g, 100, 5, new_color(g, "#afa"));
|
||||
widget_add_child(g, col, text, -1);
|
||||
container_set_child_growable(g, col, text, 1);
|
||||
container_set_child_growable(g, col, text, 0);
|
||||
textview = new_view_textlist(10000, 10, g, text);
|
||||
e->phyview = textview;
|
||||
|
||||
@@ -562,24 +562,24 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
widget_add_child(g, line, col, -1);
|
||||
container_set_child_growable(g, line, col, 1);
|
||||
widget_add_child(g, col, new_label(g, "MAC"), -1);
|
||||
text = new_textlist(g, 100, 10, new_color(g, "#adf"));
|
||||
text = new_textlist(g, 100, 5, new_color(g, "#adf"));
|
||||
widget_add_child(g, col, text, -1);
|
||||
container_set_child_growable(g, col, text, 1);
|
||||
container_set_child_growable(g, col, text, 0);
|
||||
textview = new_view_textlist(10000, 10, g, text);
|
||||
e->macview = textview;
|
||||
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
container_set_child_growable(g, top_container, line, 1);
|
||||
container_set_child_growable(g, top_container, line, 0);
|
||||
|
||||
/* rlc */
|
||||
col = new_container(g, VERTICAL);
|
||||
widget_add_child(g, line, col, -1);
|
||||
container_set_child_growable(g, line, col, 1);
|
||||
widget_add_child(g, col, new_label(g, "RLC"), -1);
|
||||
text = new_textlist(g, 100, 10, new_color(g, "#aff"));
|
||||
text = new_textlist(g, 100, 5, new_color(g, "#aff"));
|
||||
widget_add_child(g, col, text, -1);
|
||||
container_set_child_growable(g, col, text, 1);
|
||||
container_set_child_growable(g, col, text, 0);
|
||||
textview = new_view_textlist(10000, 10, g, text);
|
||||
e->rlcview = textview;
|
||||
|
||||
@@ -588,24 +588,24 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
|
||||
widget_add_child(g, line, col, -1);
|
||||
container_set_child_growable(g, line, col, 1);
|
||||
widget_add_child(g, col, new_label(g, "PDCP"), -1);
|
||||
text = new_textlist(g, 100, 10, new_color(g, "#ed9"));
|
||||
text = new_textlist(g, 100, 5, new_color(g, "#ed9"));
|
||||
widget_add_child(g, col, text, -1);
|
||||
container_set_child_growable(g, col, text, 1);
|
||||
container_set_child_growable(g, col, text, 0);
|
||||
textview = new_view_textlist(10000, 10, g, text);
|
||||
e->pdcpview = textview;
|
||||
|
||||
line = new_container(g, HORIZONTAL);
|
||||
widget_add_child(g, top_container, line, -1);
|
||||
container_set_child_growable(g, top_container, line, 1);
|
||||
container_set_child_growable(g, top_container, line, 0);
|
||||
|
||||
/* rrc */
|
||||
col = new_container(g, VERTICAL);
|
||||
widget_add_child(g, line, col, -1);
|
||||
container_set_child_growable(g, line, col, 1);
|
||||
widget_add_child(g, col, new_label(g, "RRC"), -1);
|
||||
text = new_textlist(g, 100, 10, new_color(g, "#fdb"));
|
||||
text = new_textlist(g, 100, 5, new_color(g, "#fdb"));
|
||||
widget_add_child(g, col, text, -1);
|
||||
container_set_child_growable(g, col, text, 1);
|
||||
container_set_child_growable(g, col, text, 0);
|
||||
textview = new_view_textlist(10000, 10, g, text);
|
||||
e->rrcview = textview;
|
||||
|
||||
|
||||
@@ -25,52 +25,6 @@
|
||||
#include "common/utils/mem/oai_memory.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
|
||||
/****************************************************************************
|
||||
** **
|
||||
** Name: memory_get_path() **
|
||||
** **
|
||||
** Description: Gets the absolute path of the file where non-volatile **
|
||||
** data are located **
|
||||
** **
|
||||
** Inputs: dirname: The directory where data file is located **
|
||||
** filename: The name of the data file **
|
||||
** Others: None **
|
||||
** **
|
||||
** Outputs: None **
|
||||
** Return: The absolute path of the non-volatile data **
|
||||
** file. The returned value is a dynamically **
|
||||
** allocated octet string that needs to be **
|
||||
** freed after usage. **
|
||||
** Others: None **
|
||||
** **
|
||||
***************************************************************************/
|
||||
char* memory_get_path(const char* dirname, const char* filename)
|
||||
{
|
||||
/* Get non-volatile data directory */
|
||||
const char* path = getenv(dirname);
|
||||
|
||||
if (path == NULL) {
|
||||
path = getenv(DEFAULT_NAS_PATH);
|
||||
}
|
||||
|
||||
if (path == NULL) {
|
||||
path = ".";
|
||||
}
|
||||
|
||||
/* Append non-volatile data file name */
|
||||
size_t size = strlen(path) + strlen(filename) + 1;
|
||||
char* data_filename = (char*)malloc(size + 1);
|
||||
|
||||
if (data_filename != NULL) {
|
||||
if (size != sprintf(data_filename, "%s/%s", path, filename)) {
|
||||
free(data_filename);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return data_filename;
|
||||
}
|
||||
|
||||
char* memory_get_path_from_ueid(const char* dirname, const char* filename, int ueid)
|
||||
{
|
||||
/* Get non-volatile data directory */
|
||||
|
||||
@@ -35,8 +35,6 @@ typedef unsigned char uint8_t;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
char* memory_get_path(const char* dirname, const char* filename);
|
||||
|
||||
char* memory_get_path_from_ueid(const char* dirname, const char* filename, int ueid);
|
||||
|
||||
int memory_read(const char* datafile, void* data, size_t size);
|
||||
|
||||
@@ -152,6 +152,17 @@ void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out)
|
||||
#endif
|
||||
}
|
||||
|
||||
/** @brief 3GPP TS 38.133 Table 10.1.6.1-1 mapping from dBm to RSRP index */
|
||||
uint8_t get_rsrp_index(int rsrp_dBm)
|
||||
{
|
||||
int index = rsrp_dBm + 157;
|
||||
if (rsrp_dBm > -44)
|
||||
index = 113;
|
||||
if (rsrp_dBm < -140)
|
||||
index = 16;
|
||||
return (uint8_t)index;
|
||||
}
|
||||
|
||||
// Reverse bits implementation based on http://graphics.stanford.edu/~seander/bithacks.html
|
||||
uint64_t reverse_bits(uint64_t in, int n_bits)
|
||||
{
|
||||
|
||||
@@ -88,8 +88,6 @@ static inline const char *rnti_types(nr_rnti_type_t rr)
|
||||
#define NR_NUMBER_OF_SYMBOLS_PER_SLOT_EXTENDED_CP 12
|
||||
#define NR_MAX_NB_LAYERS 4 // 8
|
||||
|
||||
#define BOUNDED_EVAL(a, b, c) (min(c, max(a, b)))
|
||||
|
||||
// Since the IQ samples are represented by SQ15 R+I (see https://en.wikipedia.org/wiki/Q_(number_format)) we need to compensate when
|
||||
// calcualting signal energy. Instead of shifting each sample right by 15, we can normalize the result in dB scale once its
|
||||
// calcualted. Signal energy is calculated using RMS^2, where each sample is squared before taking the average of the sum, therefore
|
||||
@@ -188,6 +186,9 @@ typedef struct meas_s {
|
||||
val_init_t csi_rsrp_dBm;
|
||||
} meas_t;
|
||||
|
||||
/** @brief Returns NR RSRP index per 3GPP TS 38.133 Table 10.1.6.1-1 */
|
||||
uint8_t get_rsrp_index(int rsrp_dBm);
|
||||
|
||||
/**
|
||||
* @brief To start a timer
|
||||
* @param timer Timer to be started
|
||||
|
||||
@@ -321,8 +321,6 @@ typedef struct {
|
||||
TASK_DEF(TASK_DU_F1, 200) \
|
||||
TASK_DEF(TASK_CUCP_E1, 200) \
|
||||
TASK_DEF(TASK_CUUP_E1, 200) \
|
||||
TASK_DEF(TASK_RRC_NSA_UE, 200) \
|
||||
TASK_DEF(TASK_RRC_NSA_NRUE, 200) \
|
||||
TASK_DEF(TASK_NAS_NRUE, 200) \
|
||||
TASK_DEF(TASK_MAX, 200)
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ add_library(telnetsrv_enb MODULE
|
||||
telnetsrv_enb_phycmd.c
|
||||
)
|
||||
add_dependencies(telnetsrv telnetsrv_enb)
|
||||
target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(telnetsrv_enb PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs log_headers)
|
||||
|
||||
message(STATUS "No specific telnet functions for gnb")
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
while ( 1 ) {
|
||||
if ( read(fd,&doneRequest, sizeof(doneRequest)) == sizeof(doneRequest)) {
|
||||
printf("%lu" SEP "%lu" SEP "%lu" SEP "%lu" "\n",
|
||||
printf("%lu" SEP "%llu" SEP "%llu" SEP "%llu" "\n",
|
||||
doneRequest.key,
|
||||
(doneRequest.startProcessingTime-doneRequest.creationTime)/cpuCyclesMicroSec,
|
||||
(doneRequest.endProcessingTime-doneRequest.startProcessingTime)/cpuCyclesMicroSec,
|
||||
|
||||
@@ -7,7 +7,7 @@ add_library(time_management_core OBJECT
|
||||
time_client.c)
|
||||
|
||||
target_link_libraries(time_management PUBLIC time_management_core)
|
||||
target_link_libraries(time_management_core PRIVATE ${T_LIB})
|
||||
target_link_libraries(time_management_core PRIVATE log_headers)
|
||||
|
||||
if(ENABLE_TESTS)
|
||||
add_subdirectory(tests)
|
||||
|
||||
@@ -232,10 +232,10 @@ After preparing the L1 software, the container needs to be committed to create a
|
||||
In this file the RU MAC address needs to be specified before commiting the image.
|
||||
|
||||
```bash
|
||||
~$ docker commit nv-cubb cubb-build:25-2
|
||||
~$ docker commit nv-cubb cubb-build:25-2.1
|
||||
~$ docker image ls
|
||||
..
|
||||
cubb-build 25-2 824156e0334c 2 weeks ago 23.9GB
|
||||
cubb-build 25-2.1 824156e0334c 2 weeks ago 23.9GB
|
||||
-..
|
||||
```
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ PROJECT_BRIEF = "Full experimental OpenSource LTE and NR implementation
|
||||
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
||||
# the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO = @CMAKE_SOURCE_DIR@/doc/oai_logo.png
|
||||
PROJECT_LOGO = @CMAKE_SOURCE_DIR@/doc/images/oai_logo.png
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
||||
# into which the generated documentation will be written. If a relative path is
|
||||
@@ -1836,7 +1836,6 @@ INPUT = \
|
||||
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/RRC/common.h \
|
||||
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/RRC/NR_UE/rrc_UE.c \
|
||||
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/RRC/NR_UE/rrc_sl_preconfig.c \
|
||||
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/RRC/NR_UE/rrc_nsa.c \
|
||||
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/RRC/NR_UE/rrc_proto.h \
|
||||
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/RRC/NR_UE/rrc_vars.h \
|
||||
@CMAKE_CURRENT_SOURCE_DIR@/../openair2/RRC/NR_UE/sl_preconfig_paramvalues.h \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[[_TOC_]]
|
||||
|
||||
# 1. Introduction
|
||||
## 1. Introduction
|
||||
|
||||
E1 is the interface that lies between the nodes CU Control Plane (CUCP) and CU User Plane (CUUP). Once the nodes are configured, all user plane traffic flows through CUUP.
|
||||
|
||||
@@ -77,11 +77,11 @@ sequenceDiagram
|
||||
```
|
||||
More details about the E1AP procedures in OAI are available in this document: [E1 Procedures](./e1ap_procedures.md).
|
||||
|
||||
# 2. Running the E1 Split
|
||||
## 2. Running the E1 Split
|
||||
|
||||
The setup is assuming that all modules are running on the same machine. The user can refer to the [F1 design document](./../F1AP/F1-design.md) for local deployment of the DU.
|
||||
|
||||
## 2.1 Configuration File
|
||||
### 2.1 Configuration File
|
||||
|
||||
The gNB is started based on the node type that is specified in the configuration file. The following parameters must be configured accordingly.
|
||||
|
||||
@@ -130,9 +130,9 @@ The CUUP uses the IP address specified in `gNBs.[0].local_s_address` for F1-U an
|
||||
|
||||
Alternatively, you can use the config files `ci-scripts/conf_files/gnb-cucp.sa.f1.conf` and `ci-scripts/conf_files/gnb-cuup.sa.f1.conf`.
|
||||
|
||||
## 2.2 Steps to Run the Split in rfsimulator with OAI UE
|
||||
### 2.2 Steps to Run the Split in rfsimulator with OAI UE
|
||||
|
||||
Note: A 5G core must be running at this point. Steps to start the OAI 5G core can be found [in the oai-cn5g-fed repository](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md) or [here](NR_SA_CN5G_gNB_USRP_COTS_UE_Tutorial.md).
|
||||
Note: A 5G core must be running at this point. Steps to start the OAI 5G core can be found [in the oai-cn5g-fed repository](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/docs/DEPLOY_HOME.md) or [here](../NR_SA_Tutorial_OAI_CN5G.md).
|
||||
|
||||
0. Open wireshark to capture the E1AP messages. You might set the capture filter
|
||||
to `sctp` to limit the number of captured packages.
|
||||
@@ -165,7 +165,7 @@ OAI UE:
|
||||
sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --rfsimulator.serveraddr 127.0.0.1
|
||||
```
|
||||
|
||||
# 3. Configuration file IP addresses of network functions
|
||||
## 3. Configuration file IP addresses of network functions
|
||||
|
||||
You can also run the nodes on different machines. If you do so please change the interface parameters accordingly and make sure the interfaces are reachable. Please refer to the following figure for an overview of all parameters.
|
||||
|
||||
@@ -173,7 +173,7 @@ You can also run the nodes on different machines. If you do so please change the
|
||||
|
||||
[PDF version](./images/e1-archi.pdf) | [LaTeX/TikZ version](./images/e1-archi.tex) if you want to modify to reflect your setup
|
||||
|
||||
# 4. Multiple CU-UP
|
||||
## 4. Multiple CU-UP
|
||||
|
||||
It is possible to connect multiple CU-UP to the same CU-CP. In the handler of
|
||||
the E1 Setup Request, the CU-CP verifies that the PLMN(s) (MCC, MNC) between
|
||||
@@ -195,6 +195,6 @@ that you have to restart the CU-CP if you want to connect the CU-UP again
|
||||
(e.g., after a crash). The CU-CP might also misfunction during attach if a
|
||||
CU-UP was connected, but disconnected in the meantime.
|
||||
|
||||
# 5. Abnormal conditions
|
||||
## 5. Abnormal conditions
|
||||
|
||||
* The CU-UP goes offline during normal operation (e.g. UEs have a valid PDU Session and are exchanging data on the UP): after restarting the CU-UP, the UP is not restored and the user will notice GTP errors. In this case the UEs have to reconnect.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
<img src="../images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
# Introduction
|
||||
## Introduction
|
||||
|
||||
The F1 interface is the functional split of 3GPP between the CU (centralized
|
||||
unit: PDCP, RRC, SDAP) and the DU (distributed unit: RLC, MAC, PHY). It is
|
||||
@@ -33,17 +33,17 @@ F1-U:
|
||||
|
||||
No equivalent for 4G exists.
|
||||
|
||||
## Control plane (F1-C)
|
||||
### Control plane (F1-C)
|
||||
|
||||
The interface F1-C is designed for the exchange of signalling messages between the
|
||||
Radio Network Layer (RNL) and the Transport Network Layer (TNL). It
|
||||
consists of F1 Application Protocol messages (F1-AP) exchanged over SCTP.
|
||||
|
||||
## Data plane (F1-U)
|
||||
### Data plane (F1-U)
|
||||
|
||||
F1-U uses GTP-U for information exchange.
|
||||
|
||||
# OAI Implementation Status
|
||||
## OAI Implementation Status
|
||||
|
||||
The implementation of F1AP messages is seamlessly integrated into OAI, supporting both Monolithic SA
|
||||
and CU/DU functional split modes. The F1 code is therefore always compiled with nr-softmodem.
|
||||
@@ -63,13 +63,13 @@ This is the current status:
|
||||
- Not supported:
|
||||
* NSA
|
||||
|
||||
## F1-C
|
||||
### F1-C
|
||||
|
||||
### F1AP messages
|
||||
#### F1AP messages
|
||||
|
||||
Refer to [FEATURE_SET.md](FEATURE_SET.md#gNB-F1AP) to learn about the current F1AP implementation status.
|
||||
Refer to [FEATURE_SET.md](../FEATURE_SET.md#gnb-f1ap) to learn about the current F1AP implementation status.
|
||||
|
||||
### High-level F1-C code structure
|
||||
#### High-level F1-C code structure
|
||||
|
||||
The F1 interface is used internally between CU (mostly RRC) and DU (mostly MAC)
|
||||
to exchange information. In DL, the CU sends messages as defined by the
|
||||
@@ -170,7 +170,7 @@ sequenceDiagram
|
||||
TASK_MAC_GNB->>+TASK_RRC_GNB: raw F1AP message (ITTI)
|
||||
```
|
||||
|
||||
## F1-U
|
||||
### F1-U
|
||||
|
||||
Current status:
|
||||
|
||||
@@ -178,7 +178,7 @@ Current status:
|
||||
* Each packet is acknowledged individually
|
||||
* Support of multiple DUs per CU
|
||||
|
||||
# How to run
|
||||
## How to run
|
||||
|
||||
As mentioned earlier, OAI uses F1 internally. It is always compiled in.
|
||||
To start CU/DU, you use `./nr-softmodem` with the appropriate configuration
|
||||
@@ -190,7 +190,7 @@ sudo cmake_targets/ran_build/build/nr-softmodem -O ci-scripts/conf_files/gnb-du.
|
||||
```
|
||||
|
||||
These files are tested in the CI, and are configured for use in docker,
|
||||
see [this `docker-compose` file](../ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml).
|
||||
see [this `docker-compose` file](../../ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml).
|
||||
|
||||
The rules to decide if a config triggers a start of a DU, CU, or monolithic
|
||||
gNB, are, in order:
|
||||
@@ -200,7 +200,7 @@ gNB, are, in order:
|
||||
(`tr_s_preference`), it is a CU.
|
||||
3. It is a (monolithic) gNB.
|
||||
|
||||
## F1 IP configuration for Local network deployment of F1
|
||||
### F1 IP configuration for Local network deployment of F1
|
||||
|
||||
The following paragraphs explain the IP configuration for F1 in the OAI config
|
||||
files on the example of a a local deployment. We assume that the CU will bind
|
||||
@@ -242,7 +242,7 @@ the options `MACRLCs.[0].local_n_address` and
|
||||
`MACRLCs.[0].local_n_address_f1u`, respectively. Note that this is not foreseen
|
||||
for the CU; in the case of the CU, please use separate CU-UP and CU-CP.
|
||||
|
||||
## Configuration of multiple DUs
|
||||
### Configuration of multiple DUs
|
||||
|
||||
Upon F1 Setup Request of a new DU, the CU cross-checks that
|
||||
|
||||
@@ -260,9 +260,9 @@ You have to of course make sure that the local interface of the DU
|
||||
Assuming you use RFsim, you should make the RFsimulator server side (typically
|
||||
the gNB) bind on different hosts (`rfsimulator.serverport`).
|
||||
|
||||
# Code documentation
|
||||
## Code documentation
|
||||
|
||||
## Common multi-threading architecture
|
||||
### Common multi-threading architecture
|
||||
|
||||
The CU and DU interfaces are based on ITTI threads (see `common/utils/ocp_itti/itti.md`)
|
||||
adopted by all OAI upper layers to run isolated threads dedicated to one feature.
|
||||
@@ -301,7 +301,7 @@ All GTP-U tunnels are managed in a Linux Thread, that have partially ITTI design
|
||||
3. incoming packets are sent to the tunnel creator using a C callback (the callback function is given in tunnel creation order). The callback should not block
|
||||
|
||||
|
||||
## F1-C messages towards the CU
|
||||
### F1-C messages towards the CU
|
||||
|
||||
The CU thread starts when the CU starts. It opens listening socket on the
|
||||
configuration-specified IP/port by sending the appropriate message to
|
||||
@@ -332,7 +332,7 @@ You might also want to consult TS 38.401 regarding the message exchange.
|
||||
| UE Context Release Request | `F1AP_UE_CONTEXT_RELEASE_REQ` | `rrc_CU_process_ue_context_release_request()` | RRC will trigger UE release |
|
||||
| UE Context Release Complete | `F1AP_UE_CONTEXT_RELEASE_COMPLETE` | `rrc_CU_process_ue_context_release_complete()` | frees UE Context, signals to NGAP |
|
||||
|
||||
## F1-C Messages towards the DU
|
||||
### F1-C Messages towards the DU
|
||||
|
||||
The task "gNB app", after reading the configuration file, sends a message
|
||||
`F1AP_DU_REGISTER_REQ` to the DU task. This message contains network
|
||||
@@ -371,9 +371,9 @@ You might also want to consult TS 38.401 regarding the message exchange.
|
||||
a reconfiguration has to be triggered if the CU receives a CellGroupConfig,
|
||||
originating at the DU. See also flag `expect_reconfiguration`.
|
||||
|
||||
## F1-U messages
|
||||
### F1-U messages
|
||||
|
||||
### General
|
||||
#### General
|
||||
|
||||
In the DU in UL, RLC checks in `deliver_sdu()` if we are operating in split
|
||||
mode, and either (direct) calls `pdcp_data_ind` (DRB) or (f1ap) sends a GTP
|
||||
@@ -390,7 +390,7 @@ In the DU in DL, assuming the GTP-U tunnel exists, GTP decapsulates the packet
|
||||
and calls the reception call back `nr_rlc_data_req()`, which enqueues the
|
||||
packet into the UE's RLC buffer.
|
||||
|
||||
## Tunnel Setup
|
||||
### Tunnel Setup
|
||||
|
||||
In GTP-U, TS 29.281 specifies a optional header (NR RAN Container). This
|
||||
extension header may be transmitted in a G-PDU over the X2-U, Xn-U and F1-U user
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<tr style="border-collapse: collapse; border: none;">
|
||||
<td style="border-collapse: collapse; border: none;">
|
||||
<a href="http://www.openairinterface.org/">
|
||||
<img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
<img src="../images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||
</img>
|
||||
</a>
|
||||
</td>
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
- FAPI (IF2) : specified by Small Cell Forum (open-nFAPI implementation)
|
||||
- IF1 : F1 in 3GPP Release 15
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
# OpenAirInterface Block Diagram #
|
||||
|
||||

|
||||

|
||||
|
||||
# OpenAirInterface 5G-NR Feature Set #
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
The following features are valid for the gNB and the 5G-NR UE.
|
||||
|
||||
* Static TDD
|
||||
- Multi TDD pattern supported refer [TDD Configuration](NR_SA_Multi_TDD_Pattern.md)
|
||||
- Multi TDD pattern supported refer [TDD Configuration](MAC/mac-usage.md)
|
||||
* Static FDD
|
||||
* Normal CP
|
||||
* Subcarrier spacings: 15 and 30kHz (FR1), 120kHz (FR2)
|
||||
* Bandwidths: 10, 20, 40, 60, 80, 100MHz
|
||||
* Bandwidths: 5-100MHz (FR1), 100 and 200MHz (FR2)
|
||||
* Intermediate downlink and uplink frequencies to interface with IF equipment
|
||||
* Procedures for 2-layer DL and UL MIMO
|
||||
* Procedures for 4-layer DL and 2-layer UL SU-MIMO
|
||||
* Slot format: 14 OFDM symbols in UL or DL
|
||||
* Highly efficient 3GPP compliant LDPC encoder and decoder (BG1 and BG2 supported)
|
||||
* Highly efficient 3GPP compliant polar encoder and decoder
|
||||
@@ -47,7 +47,7 @@ These modes of operation are supported:
|
||||
* "noS1" mode (DL and UL, gNB, nrUE):
|
||||
- Connection setup stops after RA; RRC configuration is exchanged through
|
||||
files
|
||||
- Creates TUN interface to PDCP to inject and receive user-place traffic
|
||||
- Creates TUN interface to SDAP to inject and receive user-place traffic
|
||||
- No connection to the core network
|
||||
* Standalone (SA) mode (gNB, nrUE):
|
||||
- UE can register with the 5G Core Network through the gNB, establish a PDU
|
||||
@@ -73,7 +73,7 @@ These modes of operation are supported:
|
||||
- Single and multiple DMRS symbols
|
||||
- PTRS support
|
||||
- Support for up to 4 TX antennas
|
||||
- Support for up to 2 layers
|
||||
- Support for up to 4 layers
|
||||
- Support for 256 QAM
|
||||
* NR-CSIRS Generation of sequence at PHY
|
||||
* NR-PUSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc).
|
||||
@@ -104,7 +104,9 @@ These modes of operation are supported:
|
||||
## gNB MAC
|
||||
|
||||
- MAC -> PHY configuration using NR FAPI P5 interface
|
||||
- MAC <-> PHY data interface using FAPI P7 interface for BCH PDU, DCI PDU, PDSCH PDU
|
||||
- MAC <-> PHY data interface using FAPI P7 interface for DL_TTI.request,
|
||||
UL_TTI.request, UL_DCI.request, TX_data.request, RX_Data.indication,
|
||||
CRC.indication, UCI.indication, SRS.indication
|
||||
- Generation of and scheduler procedures for MIB/SIB1
|
||||
- Scheduler procedures for RA
|
||||
- 4-Step RA
|
||||
@@ -123,13 +125,14 @@ These modes of operation are supported:
|
||||
- MAC downlink scheduler
|
||||
- phy-test scheduler (fixed allocation and usable also without UE)
|
||||
- regular scheduler with dynamic proportionally-fair allocation
|
||||
- MCS adaptation from HARQ BLER
|
||||
- MCS adaptation from HARQ BLER or SSB-SINR report
|
||||
- MAC header generation (including timing advance)
|
||||
- ACK / NACK handling and HARQ procedures for downlink
|
||||
- ACK/NACK handling and HARQ procedures for downlink
|
||||
- MAC uplink scheduler
|
||||
- phy-test scheduler (fixed allocation)
|
||||
- regular scheduler with dynamic proportionally-fair allocation
|
||||
- HARQ procedures for uplink
|
||||
- MCS adaption from HARQ BLER or PUSCH SINR
|
||||
- Scheduler procedures for SRS reception
|
||||
- Periodic SRS reception
|
||||
- Channel rank computation up to 2x2 scenario
|
||||
@@ -144,7 +147,15 @@ These modes of operation are supported:
|
||||
neighbors include cells operating on different frequencies
|
||||
- DUs must be synchronized with each other for the measurements to be properly performed
|
||||
- Initial support for RedCap
|
||||
- Scheduling of SIBs (2, 19)
|
||||
- RedCap SIB1 v17 IEs supported
|
||||
- Coexistence of RedCap and Normal UEs
|
||||
- Handling of RedCap capability for small PDCP/RLC SN size
|
||||
- Scheduling of other SIBs (2, 19)
|
||||
- NTN
|
||||
- Support downlinkHARQ-FeedbackDisabled-r17
|
||||
- Support for 32 PDSCH and PUSCH HARQ processes per UE
|
||||
- Consider ntn-Config-r17.cellSpecificKoffset-r17 in scheduling
|
||||
- Function-based interface for ntn-Config-r17 updates (used by NTN-LEO RFsimulator)
|
||||
|
||||
## gNB RLC
|
||||
|
||||
@@ -180,7 +191,7 @@ These modes of operation are supported:
|
||||
- NR RRC (38.331) Rel 17 messages using new [asn1c](https://github.com/mouse07410/asn1c)
|
||||
- LTE RRC (36.331) also updated to Rel 15
|
||||
- Generation of system information (SIB2)
|
||||
- RRC can configure PDCP, RLC, MAC
|
||||
- RRC can configure PDCP and SDAP (through E1), and RLC and MAC (through F1)
|
||||
- Interface with GTP-U (tunnel creation/handling for S1-U (NSA), N3 (SA), F1 interfaces)
|
||||
- Integration of RRC messages and procedures supporting UE 5G SA connection
|
||||
- RRCSetupRequest/RRCSetup/RRCSetupComplete
|
||||
@@ -190,8 +201,17 @@ These modes of operation are supported:
|
||||
- Support for MasterCellGroup configuration (from DU)
|
||||
- Interface with NGAP for the interactions with the AMF
|
||||
- Interface with F1AP for CU/DU split deployment option
|
||||
- Periodic RRC measurements of serving cell (no A/B events)
|
||||
- Initial support for RedCap
|
||||
- Interface with E1AP for CU-CP/CU-CP split deployment option
|
||||
- Periodic RRC measurements of serving/neighbour cells and A2/A3 event
|
||||
handling
|
||||
- RRC Mobility Management Procedures:
|
||||
- Inter-DU Handover (F1-based handover within same CU)
|
||||
- Inter-gNB Handover (N2-based handover between different gNBs)
|
||||
- Handover Preparation Information generation and processing
|
||||
- Handover Command generation and processing
|
||||
- PDCP Status transfer procedures
|
||||
- Support for handover decision triggers (A3 events, manual triggers)
|
||||
- Initial support for RedCap (see MAC)
|
||||
|
||||
## gNB X2AP
|
||||
|
||||
@@ -209,6 +229,16 @@ These modes of operation are supported:
|
||||
- NGAP UE context release request/complete
|
||||
- NGAP UE radio capability info indication
|
||||
- NGAP PDU session resource setup request/response
|
||||
- NGAP Mobility Management Procedures:
|
||||
* NGAP Handover Required
|
||||
* NGAP Handover Request
|
||||
* NGAP Handover Request Acknowledge
|
||||
* NGAP Handover Command
|
||||
* NGAP Handover Notify
|
||||
* NGAP Handover Cancel
|
||||
* NGAP Handover Cancel Acknowledge
|
||||
* NGAP Uplink RAN Status Transfer
|
||||
* NGAP Downlink RAN Status Transfer
|
||||
- Interface with RRC
|
||||
|
||||
## gNB F1AP
|
||||
@@ -226,7 +256,10 @@ These modes of operation are supported:
|
||||
* F1 UE Context modification required
|
||||
* F1 UE Context release req/cmd/complete
|
||||
- F1 gNB CU configuration update
|
||||
- F1 gNB DU configuration update
|
||||
- F1 Reset (handled at DU only, full reset only)
|
||||
- F1 Mobility Management Procedures:
|
||||
* F1 Intra-CU Handover (Inter-DU mobility)
|
||||
- Interface with RRC
|
||||
- Interface with GTP-u (tunnel creation/handling for F1-U interface)
|
||||
- One CU(-CP) can handle multiple DUs
|
||||
@@ -245,7 +278,8 @@ These modes of operation are supported:
|
||||
- Bearer Context Modification (gNB-CU-CP initiated)
|
||||
- E1 Bearer Context Modification Request
|
||||
- E1 Bearer Context Modification Response
|
||||
- Interface with RRC and PDCP
|
||||
- E1 Reset
|
||||
- Interface with RRC and PDCP/SDAP
|
||||
- One CU-CP can handle multiple CU-UPs
|
||||
|
||||
## gNB GTP-U
|
||||
@@ -268,7 +302,8 @@ These modes of operation are supported:
|
||||
- non-blind synchronization (information required: carrier frequency, bandwidth, numerology)
|
||||
- option to search SSB inside the bandwidth available
|
||||
* Time tracking based on PBCH DMRS
|
||||
* Frequency offset estimation based on PSS and SSS
|
||||
* Initial Frequency offset estimation based on PSS and SSS
|
||||
* Continuous Frequency offset estimation and compensation based on PBCH DMRS
|
||||
* 15kHz and 30kHz SCS for FR1 and 120 kHz SCS for FR2
|
||||
* Reception of NR-PSS/NR-SSS
|
||||
* NR-PBCH supports multiple SSBs and flexible periodicity
|
||||
@@ -279,6 +314,7 @@ These modes of operation are supported:
|
||||
- DCI formats: 00, 10, 01 and 11
|
||||
* Reception of NR-PDSCH (including Segmentation, LDPC decoding, rate de-matching, de-scrambling, de-modulation, RB de-mapping, etc).
|
||||
- PDSCH mapping type A and B
|
||||
- Downlink resource allocation type 0 and 1
|
||||
- DMRS configuration type 1 and 2
|
||||
- Single and multiple DMRS symbols
|
||||
- PTRS support
|
||||
@@ -298,6 +334,7 @@ These modes of operation are supported:
|
||||
- Support for 256 QAM
|
||||
- Support for up to 2 TX antenna
|
||||
- Support for up to 2 layers
|
||||
- Support for UCI on PUSCH
|
||||
* NR-PUCCH
|
||||
- Format 0 (2 bits for ACK/NACK and SR)
|
||||
- Format 2 (mainly for CSI feedback)
|
||||
@@ -313,6 +350,10 @@ These modes of operation are supported:
|
||||
- Support for multiple gNB reception with gNBs synced via GPSDO
|
||||
* NR-PRACH
|
||||
- Formats 0,1,2,3, A1-A3, B1-B3
|
||||
* NTN
|
||||
- TA adjustemt based on ntn-Config-r17 information
|
||||
- Autonomous TA adjustemt between SIB19 receptions based on DL time tracking
|
||||
- UL Doppler pre-compensation based on continuous DL FO estimation
|
||||
* Highly efficient 3GPP compliant LDPC encoder and decoder (BG1 and BG2 are supported)
|
||||
* Highly efficient 3GPP compliant polar encoder and decoder
|
||||
* Encoder and decoder for short block
|
||||
@@ -330,6 +371,8 @@ These modes of operation are supported:
|
||||
* Minimum system information (MSI)
|
||||
- MIB processing
|
||||
- Scheduling of system information block 1 (SIB1) reception
|
||||
* Other system information
|
||||
- Scheduling of other system information blocks reception
|
||||
* Random access procedure (needs improvement, there is still not a clear separation between MAC and PHY)
|
||||
- Mapping SSBs to multiple ROs
|
||||
- Scheduling of PRACH
|
||||
@@ -366,6 +409,10 @@ These modes of operation are supported:
|
||||
- Periodic and aperiodic SRS transmission
|
||||
* Bandwidth part (BWP) operation
|
||||
- Operation in configured dedicated BWP through RRCSetup or RRCReconfiguration
|
||||
* NTN
|
||||
- Support downlinkHARQ-FeedbackDisabled-r17
|
||||
- Support for 32 PDSCH and PUSCH HARQ processes
|
||||
- Consider ntn-Config-r17.cellSpecificKoffset-r17 in scheduling
|
||||
|
||||
|
||||
## UE RLC
|
||||
@@ -398,25 +445,41 @@ These modes of operation are supported:
|
||||
|
||||
* Integration of RRC messages and procedures supporting UE 5G SA connection according to 38.331 Rel.16
|
||||
- RRCSetupRequest/RRCSetup/RRCSetupComplete
|
||||
- RRCReject
|
||||
- RRCRelease/ RRC going to IDLE
|
||||
- RRC Uplink/Downlink Information transfer carrying NAS messages transparently
|
||||
- RRC Reconfiguration/Reconfiguration complete
|
||||
- RRCSetup fallback (after reestablishment)
|
||||
- RRCReestablishmentRequest/RRC Reestablishment/Reestablishment complete
|
||||
- Support for master cell group configuration
|
||||
- Reception of UECapabilityEnquiry, encoding and transmission of UECapability
|
||||
* NTN according to 38.331 Rel.17
|
||||
- Reception of ntn-Config-r17 from SIB19 or reconfigurationWithSync
|
||||
- Handling of ntn-UlSyncValidityDuration-r17 in SIB19
|
||||
* Interface with PDCP: configuration, DCCH and CCCH message handling
|
||||
* Interface with RLC and MAC for configuration
|
||||
|
||||
## UE NAS
|
||||
## UE 5G NAS
|
||||
|
||||
* Transfer of NAS messages between the AMF and the UE supporting the UE registration with the core network and the PDU session establishment according to 24.501 Rel.16
|
||||
* Transfer of NAS messages between the AMF and the UE supporting the UE registration with the core network and the PDU session establishment according to 24.501 Rel.16
|
||||
* 5GMM (5G Mobility Management) messages:
|
||||
- Service Request/Accept/Reject (enc/dec library only)
|
||||
- Identity Request/Response
|
||||
- Authentication Request/Response
|
||||
- Security Mode Command/Complete
|
||||
- Registration Request/Accept/Complete
|
||||
- Deregistration Request (UE originating)
|
||||
- Uplink NAS Transport
|
||||
* 5GSM (5G Session Management) messages:
|
||||
- PDU Session Establishment Request/Accept
|
||||
- NAS configuration and basic interfacing with RRC
|
||||
|
||||
* Security Features:
|
||||
- NAS message integrity protection and ciphering
|
||||
- Security context establishment and management
|
||||
* Integration:
|
||||
- NAS configuration and interfacing with RRC
|
||||
- Integration with SDAP for user plane data transfer
|
||||
|
||||
For detailed implementation status, encoding/decoding support, and unit test coverage, see [5G NAS Implementation Documentation](5Gnas.md).
|
||||
|
||||
# OpenAirInterface 4G LTE eNB Feature Set #
|
||||
|
||||
|
||||
@@ -40,48 +40,7 @@ Normally it should be fine to run both executables on the same host using the `l
|
||||
|
||||
**2022/03/08: Starting the `2022.w01` tag on the `develop` branch, the L2 nFAPI simulation is using a proxy.**
|
||||
|
||||
## 5G L2 nFAPI simulator
|
||||
|
||||
**Note: L2 simulator does not work anymore.**
|
||||
|
||||
### Download and Build the Proxy Server (from EpiSci)
|
||||
|
||||
```bash
|
||||
$ cd ~
|
||||
$ git clone https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy.git
|
||||
$ cd oai-lte-multi-ue-proxy
|
||||
$ make
|
||||
```
|
||||
|
||||
### Start Proxy Server
|
||||
Set the number of UEs to connect to server as 1 and the mode is SA.
|
||||
```bash
|
||||
$ number_of_ues=1
|
||||
$ sudo -E ./build/proxy $number_of_ues --nr
|
||||
```
|
||||
|
||||
### Start gNB
|
||||
```bash
|
||||
$ sudo -E ./nr-softmodem -O ../ci-scripts/conf_files/episci/proxy_rcc.band78.tm1.106PRB.nfapi.conf --nfapi VNF --noS1 --emulate-l1
|
||||
```
|
||||
### Start UE
|
||||
```bash
|
||||
$ sudo -E ./nr-uesoftmodem -O ../ci-scripts/conf_files/nrue.uicc.conf --nfapi STANDALONE_PNF --node-number 2 --emulate-l1
|
||||
```
|
||||
### EpiSci's Documentation
|
||||
A more detailed tutorial is available on the [EpiSci GitHub Repository](https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy#readme).
|
||||
|
||||
This proxy allows to perform L2 nFAPI simulator for:
|
||||
|
||||
* LTE
|
||||
* 5G-NSA
|
||||
* 5G-SA
|
||||
|
||||
### L2 Simulator as Docker Containers
|
||||
|
||||
There used to be docker deployment with L2sim that was run in the CI. Since L2
|
||||
simulator does not work anymore, it has been removed. However, you can see the
|
||||
old `README.md` from tag `2024.w44`
|
||||
[here](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/2024.w44/ci-scripts/yaml_files/5g_l2sim_tdd/README.md).
|
||||
In the same directory is a `docker-compose.yaml` file that can be used to run
|
||||
L2sim.
|
||||
Since 5G code has been removed, this proxy allows to perform L2 nFAPI simulator for LTE only.
|
||||
|
||||
@@ -183,7 +183,7 @@ See [nFAPI documentation](../nfapi.md) or [Aerial
|
||||
tutorial](../Aerial_FAPI_Split_Tutorial.md) for information about the (n)FAPI
|
||||
split.
|
||||
|
||||
See [F1 documentation](../F1-design.md) for information about the F1 split.
|
||||
See [F1 documentation](../F1AP/F1-design.md) for information about the F1 split.
|
||||
|
||||
## MAC scheduler-related configuration options
|
||||
|
||||
@@ -257,7 +257,7 @@ configuration](../RRC/rrc-usage.md) as well for SIB configuration.
|
||||
* `do_CSIRS` (default 0): flag whether to use channel-state information
|
||||
reference signal (CSI-RS)
|
||||
* `do_SRS` (default 0): flag whether to use sounding reference signal (SRS)
|
||||
* `do_SINR` (default 0): flag whether to enable CSI reporting of SSB-SINR (introduced in rel16)
|
||||
* `CSI_report_type` (default `ssb_rsrp`): parameter to enable different CSI reporting (options: `ssb_rsrp`, `ssb_sinr` and `cri_rsrp`)
|
||||
Default setting of CSI reporting quantity is SSB-RSRP.
|
||||
* `min_rxtxtime` (default 2): minimum feedback time for UE to respond to
|
||||
transmissions (k1 and k2 in 3GPP spec)
|
||||
@@ -281,14 +281,17 @@ configuration](../RRC/rrc-usage.md) as well for SIB configuration.
|
||||
- `du_sibs` (default `[]`): list of SIBs to transmit in the cell. Currently,
|
||||
SIB19 (for NTN) is supported.
|
||||
|
||||
| DL MIMO |`do_CSIRS`|`do_SINR`| CSI report Quantity |
|
||||
| ---------------------------- | -------- | ------- | --------------------------------------------------|
|
||||
| OFF (pdsch_AntennaPorts = 1) | 0 | 0 | SSB-RSRP |
|
||||
| OFF (pdsch_AntennaPorts = 1) | 0 | 1 | SSB-SINR |
|
||||
| OFF (pdsch_AntennaPorts = 1) | 1 | 0 | CSI-Reference signal RSRP |
|
||||
| OFF (pdsch_AntennaPorts = 1) | 1 | 1 | CSI-Reference signal SINR (not supported yet) |
|
||||
| ON (pdsch_AntennaPorts > 1) | 1 | 0 | cri-RI-PMI-CQI |
|
||||
| DL MIMO |`do_CSIRS`|`CSI_report_type`| CSI report Quantity |
|
||||
| ------------------------------ | -------- | --------------- | --------------------------------------------------|
|
||||
| any | any | `ssb_rsrp` | SSB-RSRP |
|
||||
| any | 0 | `cri_rsrp` | SSB-RSRP (no CSI-RS configured) |
|
||||
| any | 1 | `cri_rsrp` | CRI-RSRP |
|
||||
| any | any | `ssb_sinr` | SSB-SINR |
|
||||
| ON (`pdsch_AntennaPorts` > 1) | 1 | any | cri-RI-PMI-CQI |
|
||||
|
||||
|
||||
Note that activating `cri-RI-PMI-CQI` will result in that report to be produced
|
||||
in addition to either `SSB-SINR`, `SSB-RSRP` or `CRI-RSRP`.
|
||||
DL-MIMO is configured using following parameters:
|
||||
`pdsch_AntennaPorts_XP` , `pdsch_AntennaPorts_N1` , `pdsch_AntennaPorts_N2`, `maxMIMO_layers`
|
||||
(see also [`RUNMODEM.md`](../RUNMODEM.md))
|
||||
|
||||
@@ -52,7 +52,7 @@ There is some general information in the [OpenAirInterface Gitlab Wiki](https://
|
||||
* IF setups and arbitrary frequencies
|
||||
* MIMO
|
||||
- [How to run OAI with O-RAN 7.2 FHI](./ORAN_FHI7.2_Tutorial.md)
|
||||
- [How to run a 5G-NSA setup](./TESTING_GNB_W_COTS_UE.md)
|
||||
- [How to run a 5G-NSA setup](./TESTING_OAI_NSA_COTS_UE.md)
|
||||
- [How to run a 4G setup using L1 simulator](./L1SIM.md) _Note: we recommend the RFsimulator_
|
||||
- [How to use the L2 simulator](./L2NFAPI.md)
|
||||
- [How to use the OAI channel simulator](../openair1/SIMULATION/TOOLS/DOC/channel_simulation.md)
|
||||
@@ -60,20 +60,19 @@ There is some general information in the [OpenAirInterface Gitlab Wiki](https://
|
||||
- [How to run OAI-VNF and OAI-PNF](./nfapi.md): how to run the FAPI/nFAPI split,
|
||||
including some general remarks on FAPI/nFAPI.
|
||||
- [How to use the positioning reference signal (PRS)](./RUN_NR_PRS.md)
|
||||
- [How to use device-to-device communication (D2D, 4G)](./d2d_emulator_setup.txt)
|
||||
- [How to use device-to-device communication (D2D, 4G)](./d2d_emulator_setup.md)
|
||||
- [How to run with E2 agent](../openair2/E2AP/README.md)
|
||||
- [How to run the physical simulators](./physical-simulators.md)
|
||||
- [How to setup OAI with Nvidia Aerial and Foxconn](./Aerial_FAPI_Split_Tutorial.md)
|
||||
- [How to setup OAI with LDPC accelerators (Xilinx T2/Intel ACCs)](./LDPC_OFFLOAD_SETUP.md)
|
||||
- [How to setup OAI with the XDMA FPGA LDPC accelerator](./LDPC_XDMA_offload_setup.md)
|
||||
- [How to do a handover](./handover-tutorial.md)
|
||||
- [How to setup gNB frequency](./gNB_frequency_setup.md)
|
||||
- [How to use the RT data recording app](./data_recording.md)
|
||||
|
||||
Legacy unmaintained files:
|
||||
- [`L2NFAPI_NOS1.md`](./L2NFAPI_NOS1.md), [`L2NFAPI_S1.md`](./L2NFAPI_S1.md):
|
||||
old L2simulator, not valid anymore
|
||||
- [`SystemX-tutorial-design.md`](./SystemX-tutorial-design.md): old, high-level
|
||||
documentation
|
||||
- [`UL_MIMO.txt`](./UL_MIMO.txt): UL-MIMO specific notes
|
||||
|
||||
# Designs
|
||||
|
||||
@@ -87,6 +86,7 @@ Legacy unmaintained files:
|
||||
- [Information on gNB RRC](./RRC/rrc-usage.md)
|
||||
- [Information on analog beamforming implementation](./analog_beamforming.md)
|
||||
- [Information on the UE 5G NAS implementation](./5Gnas.md)
|
||||
- [Information on UL-MIMO](./UL_MIMO.md): UL-MIMO specific notes
|
||||
|
||||
# Building and running from images
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ The RRC layer controls the basic connection setup of UEs as well as additional
|
||||
procedures. It is the fundamental building block of OAI's CU-CP, and interacts
|
||||
with lower layers (DU, basically MAC and RLC) through F1AP messages, and with
|
||||
the CU-UP through E1AP messages. More information can be found in the
|
||||
respective [F1AP page](../F1-design.md) and [E1AP page](../E1AP/E1-design.md).
|
||||
respective [F1AP page](../F1AP/F1-design.md) and [E1AP page](../E1AP/E1-design.md).
|
||||
|
||||
# Periodic output and interpretation
|
||||
|
||||
@@ -57,7 +57,7 @@ As of now, it does not print information about connected CU-UPs or AMFs.
|
||||
|
||||
## Split-related options (when running in a CU or CU-CP)
|
||||
|
||||
See [F1 documentation](../F1-design.md) for information about the F1 split.
|
||||
See [F1 documentation](../F1AP/F1-design.md) for information about the F1 split.
|
||||
See [E1 documentation](../E1AP/E1-design.md) for information about the E1 split.
|
||||
|
||||
## RRC-specific configuration options
|
||||
@@ -99,26 +99,43 @@ the [MAC configuration](../MAC/mac-usage.md) as well for SIB configuration.
|
||||
|
||||
### Neighbor-gNB configuration
|
||||
|
||||
#### What is a gNB neighbor?
|
||||
|
||||
Network continuity is a key aspect of 5G. In the 5G architecture, gNB neighbors play a central role in maintaining service continuity through mechanisms such as handover and load balancing. By definition, a gNB neighbor is another gNB that can be measured and linked by the UE. If the current serving gNB is no longer optimal, the UE may connect to a neighbor gNB.
|
||||
|
||||
To support this behavior, the network configuration specifies additional frequencies and cells that the UE should measure. The UE reports these measurements to the network, which then decides whether or not to initiate a handover.
|
||||
|
||||
Neighbor types include:
|
||||
- **Intra-gNB neighbors** - cells belonging to the same gNB
|
||||
- **Inter-gNB neighbors** - cells belonging to different gNBs
|
||||
- **Inter-RAT neighbors** - cells belonging to another RAT (e.g., LTE)
|
||||
Refer to the [handover tutorial](../handover-tutorial.md) for detailed information about gNB neighbors and handover procedures.
|
||||
|
||||
#### Required configuration parameters
|
||||
|
||||
To define a neighbor cell in the configuration file, the following parameters are typically needed:
|
||||
- **gNB ID** - unique identifier of the gNB
|
||||
- **Cell ID** - identifier of the cell within the gNB
|
||||
- **Physical Cell ID** - identifier of the cell’s synchronization signal (PCI)
|
||||
- **Absolute Frequency** - frequency used by the SSB (absoluteFrequencySSB)
|
||||
- **Subcarrier Spacing** - numerology (e.g., 15 kHz, 30 kHz)
|
||||
- **PLMN configuration** - MCC, MNC, and MNC length
|
||||
- **Tracking Area Code (TAC)** - identifier of the tracking area
|
||||
To define a neighbor cell in the configuration file, the following parameters are required:
|
||||
|
||||
Refer to the [handover tutorial](../handover-tutorial.md) for more information.
|
||||
- `gNB_ID` - identifier of the neighbor gNB (e.g., `0xe01`)
|
||||
- `nr_cellid` - cell identifier of the neighbor cell (e.g., `11111111`)
|
||||
- `physical_cellId` - physical cell ID for radio identification (e.g., `1`)
|
||||
- `absoluteFrequencySSB` - SSB frequency in ARFCN notation (e.g., `643296`)
|
||||
- `subcarrierSpacing` - numerology index: 0=15kHz, 1=30kHz, 2=60kHz, 3=120kHz
|
||||
- `band` - 3GPP frequency band number (e.g., `78` for 3.5GHz)
|
||||
- `plmn` - PLMN configuration object with:
|
||||
- `mcc` - mobile country code (3 digits, e.g., `001`)
|
||||
- `mnc` - mobile network code (2-3 digits, e.g., `01`)
|
||||
- `mnc_length` - number of digits in MNC (must be `2` or `3`)
|
||||
- `tracking_area_code` - tracking area identifier (e.g., `1`)
|
||||
|
||||
Example configuration structure:
|
||||
```
|
||||
neighbour_list = (
|
||||
{
|
||||
nr_cellid = 12345678;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe01;
|
||||
nr_cellid = 11111111;
|
||||
physical_cellId = 1;
|
||||
absoluteFrequencySSB = 643296;
|
||||
subcarrierSpacing = 1; # 30 kHz
|
||||
band = 78;
|
||||
plmn = { mcc = 001; mnc = 01; mnc_length = 2 };
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
```
|
||||
|
||||
Refer to the [handover tutorial](../handover-tutorial.md) for complete examples and detailed setup instructions.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user