Commit Graph

97 Commits

Author SHA1 Message Date
Andre Puschmann 6c985372a1 ms_srs: add 5G NSA support
extend the MS to allow for NR carriers

Change-Id: I7de9f867e7e32d0ab4f74eb7661928175f6c1a16
2021-05-05 14:26:57 +02:00
Andre Puschmann 6e081aa1dc amarisoft_enb: add NR support
this patch adds the ability to configure NR cells with
Amarisoft eNB. It adds the new DRB-NR template and updates
the normal enb.cfg template to allow using it as LTE only
or with NR cells (5G NSA).

Change-Id: Ia27bbc6db5920ce14bacabe8043601aa2adaa5fe
2021-05-05 14:26:56 +02:00
Andre Puschmann 88b7fd2af6 ms_srs: add short_sn as config option for srsUE
this allows to change the announced support for PDCP
short sequence number lengths

Change-Id: Ibcf72dbb424ae3b6a87b60febb4dadf716407612
2021-05-03 13:50:11 +02:00
Andre Puschmann bde48c3767 ping: add a short delay after UE is attached before starting ping
this is mainly to avoid ping losses in 5G NSA during NR attach.
No impact on 4G though.

Change-Id: Ic507dc4a24e8576b0ec3b301ee8e340ed553b300
2021-05-03 13:43:44 +02:00
Andre Puschmann 4462067afc 4g: add overlay template path for all suites
this allows, without changing the test case, to use a custom
template, which is useful for development. By default, nothing changes
and the OGT template is used

Change-Id: Ifc43ac41b16813116f2559da5223a6fecc186125
2021-05-03 13:43:44 +02:00
Andre Puschmann 47f4f09592 ping.py: add stricter pass/fail check
the ping test should only pass if not a single ping is lost

Change-Id: If089f77df1ffe991f26f1546558d51aac242df83
2021-05-03 13:43:44 +02:00
Andre Puschmann 31ecf59ffd ms_amarisoft: extend AmariUE to support custom frequency bands
this patch adds generic support for custom frequency bands to the ms class.
it then extends the config template for AmariUE to use them.
we set the default values for EARFCNs for DL/UL to the old values.

Change-Id: I7b2250e13fc1161be1a1d73a4348f07b31c0f724
2021-05-03 13:43:44 +02:00
AlaiaL a17140fee4 enb_srs: add support for eNB traces
this patch adds support for srsENB event tracing. it provides
a cfg scenario to enable it.

Change-Id: Icb2342acac5db87a0889cbf1b6c7bb1ad26c16fa
2021-05-03 13:43:44 +02:00
Pau Espin 0696c60812 Initial Open5GS support
Change-Id: Iff8b88dc22d8f156572839abb48b0c1377c55e33
2021-03-30 14:17:47 +02:00
Pau Espin 965ed62fd2 sysmocom/default.conf: Add missing default value for force_ul_amplitude
Change-Id: I04218dca21f27e32d7c85a74a3e9bbf63b499357
2021-03-16 18:36:54 +01:00
Pau Espin 3bb14bedfe sysmo/defaults.conf: Fix attribute name
According to schema, the name is cipher_list.
Same goes for "integrity".

Fixes: a81801558e
Change-Id: Ib7b48ce207b96ea5f5b59db08320563be40edba1
2021-03-16 17:18:47 +00:00
Andre Puschmann 6246a9db19 iperf3_bidir: add extra test for bi-directional iperf test
Change-Id: Ibb62f53dbb15bc4788c92ebb2dee70e31dd851de
2021-03-16 18:09:49 +01:00
Andre Puschmann 1a1970721a mod-enb-ncells@.conf: add scenario file to select number of cells
Change-Id: Ib599de56b0b51a125555895014d78d3d649c01a0
2021-03-16 18:09:49 +01:00
Andre Puschmann 001ca8595d epc-label@.conf: add scenario to select runnode based on label
this allows to select the resource/machine the EPC runs on based on the label

Change-Id: I710c67ad5a11bd33071acd779e19835ae49ce4a3
2021-03-16 18:07:22 +01:00
Andre Puschmann c487f7438c ms_srs: add config scheme to select NAS log level
we've provided only all_log_level so far but sometimes it's needed
to select the level per layer. This patch adds the ability
to do so for the NAS layer in the UE.

Change-Id: Iab2bce65e8af81f6d344849c97952e6441cb2846
2021-03-16 18:04:40 +01:00
Andre Puschmann aec7fa5390 {enb,ms}-label.conf: raneme and add modifier to select eNB/MS based on label
Change-Id: I26ea160b65b9dd5ef3e5ca1100d4541a0bbcbb27
2021-03-16 18:04:40 +01:00
Andre Puschmann d1732d7820 srsepc.conf.tmpl: double value of T3413 (paging timer)
we've already incrased the t3413 value in 9c7fd618d2
but realized it may still be too low in some cases.

we set it to 12s now.

Change-Id: I9c3c59c0ff8f539a44b420f8ba31eea016c211ce
2021-02-08 17:48:09 +01:00
Andre Puschmann b79a0c5e75 scenarios: remove ncells@ scenario and define number of cells explicitly
the specific cell scenarios files already contain cell-related
information so having a extra ncells scenario seems too much overhead.
furthermore, in more complex tests its helps to reduce the filename/path
lenght to avoid hitting the 255 character limit

Change-Id: If022d9e8d239805ee1280fb52660e68dda7484a0
2021-02-08 17:48:09 +01:00
Nils Fürste a81801558e enb: Set cipher and integrity via scenario file
This patch enables setting cipher and integrity algorithms
in Amarisoft eNB and srsENB via scenario files. If no
settings are defined following defaults are applied:
- Cipher algorithm: EEA0, EEA2, EEA1
- Integrity algorithm: EIA2, EIA1, EIA0

Example of setting cipher algorithms:
- 4g:srsue-rftype@uhd+srsenb-rftype@uhd+mod-enb-cipher@eea1+mod-enb-cipher@eea0+mod-enb-nprb@6

Change-Id: I595206b7d49016fb6d0aec175c828d9537c53886
2021-02-08 17:48:09 +01:00
Andre Puschmann 29263b7389 4g: add checks for received PRACHs for ping tests
the tests already check for sent PRACHs, this will
also check for received PRACHs on the eNB to make
sure we don't detect any fake PRACHs during the tests.

Change-Id: Ib23056b1ad4b18a7dde6cd0c997f5114ac2acb61
2021-02-08 17:48:09 +01:00
Nils Fürste a8263f40e9 Introduce Android UEs as new modems
To expand the test capacities we would like to introduce
Android UEs as new modems. Currently the following tests
are supported:
- Ping
- iPerf3 DL/UL
- RRC Mobile MT Ping

In the following is a small description.

Prerequisites:
    - Android UE
        - Rooted (Ping, iPerf, RRC Idle MT Ping)
        - Qualcomm baseband with working diag_mdlog (RRC Idle MT Ping)
        - iPerf3
        - Dropbear
    - OGT Slave Unit
        - Android SDK Platform-Tools
	  (https://developer.android.com/studio/releases/platform-tools#downloads)
        - Pycrate (https://github.com/P1sec/pycrate)
        - SCAT
            clone https://github.com/bedrankara/scat/ & install dependencies
            checkout branch ogt
            symlink scat (ln -s ~/scat/scat.py /usr/local/bin/scat)

Infrastructure explaination:
The Android UEs are connected to the OGT Units via USB. We
activate tethering and set up a SSH server (with Dropbear).
We chose tethering over WiFi to have a more stable route
for the ssh connection. We forward incoming connections to
the OGT unit hosting the Android UE(s) on specific ports
to the UEs via iptables. This enables OGT to issue commands
directly to the UEs. In case of local execution we use ADB
to issue commands to the AndroidUE. The set up was tested
with 5 Android UEs connected in parallel but it should be
scalable to the number of available IPs in the respective
subnet. Furthermore, we need to cross compile Dropbear
and iPerf3 to use them on the UEs. These tools have to be
added to the $PATH variable of the UEs.

Examplary set up:
In this example we have two separate OGT units (master
and slave) and two Android UEs that are connected to the
slave unit. An illustration may be found here: https://ibb.co/6BXSP2C

On UE 1:
ip address add 192.168.42.130/24 dev rndis0
ip route add 192.168.42.0/24 dev rndis0 table local_network
dropbearmulti dropbear -F -E -p 130 -R -T /data/local/tmp/authorized_keys  -U 0 -G 0 -N root -A

On UE 2:
ip address add 192.168.42.131/24 dev rndis0
ip route add 192.168.42.0/24 dev rndis0 table local_network
dropbearmulti dropbear -F -E -p 131 -R -T /data/local/tmp/authorized_keys  -U 0 -G 0 -N root -A

On OGT slave unit:
sudo ip link add name ogt type bridge
sudo ip l set eth0 master ogt
sudo ip l set enp0s20f0u1 master ogt
sudo ip l set enp0s20f0u2 master ogt
sudo ip a a 192.168.42.1/24 dev ogt
sudo ip link set ogt up

Now we have to manually connect to every UE from OGT Master
to set up SSH keys and verify that the setup works.
Therefore, use:
ssh -p [UE-PORT] root@[OGT SLAVE UNIT's IP]

Finally, to finish the setup procedure create the
remote_run_dir for Android UEs on the slave unit like
following:
mkdir /osmo-gsm-tester-androidue
chown jenkins /osmo-gsm-tester-androidue

Example for modem in resource.conf:
- label: mi5g
  type: androidue
  imsi: '901700000034757'
  ki: '85E9E9A947B9ACBB966ED7113C7E1B8A'
  opc: '3E1C73A29B9C293DC5A763E42C061F15'
  apn:
    apn: 'srsapn'
    mcc: '901'
    mnc: '70'
    select: 'True'
    auth_algo: 'milenage'
  features: ['4g', 'dl_qam256', 'qc_diag']
  run_node:
    run_type: ssh
    run_addr: 100.113.1.170
    ssh_user: jenkins
    ssh_addr: 100.113.1.170
    ue_ssh_port: 130
    adb_serial_id: '8d3c79a7'
  scat_parser:
    run_type: local
    run_addr: 127.0.0.1
    adb_serial_id: '8d3c79a7'

Example for default-suites.conf:
- 4g:ms-label@mi5g+srsenb-rftype@uhd+mod-enb-nprb@25+mod-enb-txmode@1

Change-Id: I79a5d803e869a868d4dac5e0d4c2feb38038dc5c
2021-01-13 19:45:56 +01:00
Andre Puschmann eee4f5f715 intraenb-intrafreq-ho.conf: add eNB to cell config
make sure to have the right eNB that matches the
cells neighbor ECIDs, otherwise the eNB may trigger
a S1 HO if the eNB ID is set elsewhere

Change-Id: Id494ac1984846e78a6456bb6a17e72d63c9dacf5
2021-01-07 16:30:25 +01:00
Pau Espin Pedrol d95d494fcc sysmocom: Port nitb_netreg_mass suite to osmo split network
Change-Id: I221df84d76f73e15eed98036b31adc8089c8dc99
2020-12-21 18:32:43 +01:00
Pau Espin Pedrol 929a4f963c sysmocom/resources.conf.virtual: remove no longer existing arfcn resources
ARFCN are not resources anymore since a recent commit.

Fixes: ecce402f43
Change-Id: Icc0971b285e8db085670808b7d7bb98c38db2753
2020-12-21 18:25:32 +01:00
Pau Espin Pedrol 7ecfaa6a0f sysmocom resources.conf.prod: Update modem paths + add new modems after HW upgrade
Change-Id: I346a5bb38270a32695ec73994179bd75d873b67a
2020-12-11 13:28:28 +01:00
Neels Hofmeyr 7187510def run handover_2G in default-suites.conf
Change-Id: Ic6bb013cc2c395211eeb86fe7a3d3f42671793c7
2020-12-11 00:41:17 +01:00
Neels Hofmeyr de6743de9a add handover_2G suite, with handover.py test
Via VTY, handover two lchans of a voice call from bts0 to bts1 and back.

New scenarios/bts1-* allow selecting various types for bts1,
complementing the already existing files for selecting bts0.

Change-Id: I0b2671304165a1aaae2b386af46fbd8b098e3bd8
2020-12-11 00:41:17 +01:00
Neels Hofmeyr ecce402f43 configure fixed ARFCN per bts
Remove ARFCNs as a concept from resource pool, assign a fixed ARFCN to
each BTS and TRX in the resource pools.

Using ARFCNs on specific bands as resources was an idea that is hard to
implement, because specific BTS dictate selection of bands which
influences which ARFCNs can be picked. That means reserving ARFCN
resources is only possible after reserving specific BTS resources, but
the tester is currently not capable of such two-stage resolution.

Writing handover tests, I got the problem that both BTS in a scenario
attempt to use the same ARFCN.

The by far easiest solution is to assign one fixed ARFCN to each BTS and
TRX. If ever needed, a scenario modifier can still configure different
ARFCNs.

(Due to uncertainty about OC2G operation stability, I prefer to leave
OC2G on ARFCN 50, as it happened to end up being configured before this
patch.)

Change-Id: I0a6c60544226f4261f9106013478d6a27fc39f38
2020-12-11 00:19:13 +01:00
Neels Hofmeyr 2bd357cf02 prod: after hardware move, adjust modem pci for sierra_1st and sierra_2nd (ONLY TWO)
Doing only the first two modems so far because I need them for handover
runs. The other modems are still todo!

Change-Id: Ibd71acfc76c01ffd105abe5effc1d246b1e65f85
2020-12-03 01:02:11 +01:00
Andre Puschmann 65a9e741ad ms_amarisoft: fix various regressions
this patch fixes some regressions in the Amarisoft UE class,
the config template, etc. that have been undetected bc we never
executed tests with it.

Change-Id: I397e675a4018acf3372a3b7e29fd864703b2b919
2020-11-23 12:33:52 +01:00
Andre Puschmann 25bc1e07e4 add scenario to modify bandwith of 2 eNB objects
required for Inter-eNB HO configs, for example.

Change-Id: Iaf053941ff31c4ba94edf67fc54c0f1c1441577d
2020-11-20 13:03:07 +01:00
Andre Puschmann 3166b6353e enb: add QAM64 support for UL
* add new UE feature
* enable in srsue.conf.templ
* add new table for maximum rates
* add config scenario to enable SIB option for QAM64

Change-Id: I6ac2c9989a761e91b93d76c2507f55f0140b202d
2020-11-20 11:50:43 +01:00
Andre Puschmann 76021babc7 cell_modifiers: refactor HO cell configs
* rename intrafreq vs intraenb
* add missing mandatory params

Change-Id: Icc1fe5c1711ecbed2f1b8b1e6a0b51c2d28ec651
2020-11-20 11:50:43 +01:00
Andre Puschmann e8ab10cb22 enb: add scenario file for inter-eNB HO with two cells
Change-Id: I356a81814a2d7714a1a5252aa357257901fa6227
2020-11-12 09:23:36 +01:00
Andre Puschmann 5e6d5ffd01 enb-cells_2ca: add missing cell params
the default params are set for a single cell in defaults.conf
but this 2 cell config requires them to be set explicitly.

Change-Id: I8b3c486eb3e42aeb04b6a7548d3f0de2aa40ee0c
2020-11-11 17:16:21 +01:00
Andre Puschmann d253a101a1 iperf3_{dl,ul}: adapt pass/fail threshold
change pass threshold to 80% of the max rate for
half of the testduration (rolling average).

the overall average might be lowered because of a slower
TCP start or a late UE attach.

Change-Id: I8a545b8175784e9d6b49d6bf80f637ef7aa731f7
2020-11-11 12:47:47 +01:00
Pau Espin 998be6574b sysmocom: Introduce suite 4g2enb
Change-Id: I73b1a5e07f81fa1e3d3db1db243a3d0b137bda8e
2020-11-09 19:12:22 +01:00
Pau Espin ef7256a138 enb: Support cells from different ENBs in ncell_list
Change-Id: I1242c56ff42caea06e7f96317def82064fd11325
2020-11-09 18:54:26 +01:00
Andre Puschmann a7fd39448c srsenb_rr.conf: add PCI, TAC and root_seq_idx as cell param
make sure to insert cell specific TAC, PCI and root seq ind
into cell config and do not depend on cell index for a particular
enb. This causes issues in multi-eNB setups.

Change-Id: I6642128a449a0562dd23f7fa393ff48ae2503006
2020-11-09 13:10:21 +01:00
Pau Espin 17f7c38755 sysmocom: emergency_preemptive_call.py: Avoid test failure if 2nd call not fully established
It may happen that the non-emergency call MT leg is still not properly
released when the emergency call MT leg is to be assigned a TCH, meaning
BSC will fail with an Assignment Failure upon Assignment request from
MSC.
The test sometimes passed and sometimes didn't, due to above mentioned
race condition. Let's relax a bit the test expectancies to have it
always passing, while still verifying preemption happens, and MT phone
is reached.

Related: OS#4549
Change-Id: I3697227cac56a1327f9ea08c5c2f52568e8d2a8a
2020-10-21 18:02:07 +02:00
Andre Puschmann c230efcb19 intra-freq-ho{-sameport}.conf: add scenarios for intra-freq HO cells
we need to use two different configs for Amarisoft and srsENB.
Amarisoft combines the two cells and transmits them on the same
RF port, whereas srsENB sends them on a single port each.

Change-Id: I3a2a8ae7bf4ed2dab6efba8550f442a741ad92e0
2020-10-16 14:17:36 +00:00
Andre Puschmann caa680ceeb mod-gr-broker: add scenario to easily enable the GR broker
Change-Id: I4397e26713778721b7138b03b7a5f8f63f780d44
2020-10-16 14:17:36 +00:00
Andre Puschmann 27b603f7e2 mod-enb-cell-2ca: fix EARFCN
this scenario for 2xCA needs to have both cells on different EARFCN

Change-Id: I3cd12da5453aa659839862775e23d4a308b92c8e
2020-10-16 14:17:36 +00:00
Andre Puschmann d0682bad0f enb: add basic TDD config option
this patch adds the basic notion of FDD and TDD duplexing modes
to the eNB object. So far we've always assume FDD.

Since only Amarisoft eNB supports TDD, the required config
template changes, etc. are only applied there.

The patch also adds a scenario to enable the default TDD config.

Change-Id: I37216b5bfdf527d221913283b6c41d3c8fd6b500
2020-10-16 14:17:36 +00:00
Pau Espin 66c054288b sysmocom: Introduce test to verify emergency call preemption
Change-Id: I59993e65b3fd34fb2c3e5b002ab9666db9b7bad5
2020-10-15 19:02:27 +02:00
Pau Espin 3329d9db0a sysmocom: Enable emergency call testing in default-suites.conf
Change-Id: I9524ed9bc4f2d5f8e29313565400e90c64820988
2020-10-15 15:50:48 +00:00
Pau Espin 680ba03038 sysmocom: Introduce suite to test emergency calls
Change-Id: I2e851c94311ded0abd4ff072b8cc72316d972750
2020-10-15 15:50:48 +00:00
Pau Espin 410912333e 4g: Introduce ZMQ GnuRadio stream broker
srsENB currently creates 1 zmq stream (1 tx, 1 rx) for each cell (2 if
MIMO is enabled). Each cell transceives on a given EARFCN (and several
cells can transmit on same EARFCN).

However, for handover test purposes, we want to join all cells operating
on the same EARFCN to transceive on the same ZMQ conn, so that an srsUE
can interact with them at the same time (same as if the medium was shared).
Furthermore, we want to set different gains on each of those paths
before merging them in order to emulate RF conditions like handover.

In order to do so, a new element called the Broker is introduced, which
is placed in between ENBs and UEs ZMQ conenctions, multiplexing the
connections on the ENB side towards the UE side.

A separate process for the broker is run remotely (ENB run host) which
listens on a ctrl socket for commands. An internal Broker class is used
in osmo-gsm-tester to interact with the remote script, for instance to
configure the ports, start and stop the remote process, send commands to
it, etc.
On each ENB, when the rfemu "gnuradio_zmq" rfemu implementation is selected
in configuration, it will configure its zmq connections and the UE ones to
go over the Broker.

As a result, that means the UE zmq port configuration is expected to be
different than when no broker is in used, since there's the multiplexing
per EARFCN in between.

In this commit, only 1 ENB is supported, but multi-enb support is
planned in the future.

The handover test passes in the docker setup with this config:
"""
OSMO_GSM_TESTER_OPTS="-T -l dbg -s 4g:srsue-rftype@zmq+srsenb-rftype@zmq+" \
	"mod-enb-nprb@6+mod-enb-ncells@2+mod-enb-cells-2ca+suite-4g@10,2+" \
	"mod-enb-meas-enable -t =handover.py"
"""

and in resources.conf (or scenario), added:
"""
enb:
  ...
  cell_list:
    - dl_rfemu:
       type: gnuradio_zmq
    - dl_rfemu:
        type: gnuradio_zmq
"""

Note that since the broker is used, there's not need for mod-srsue-ncarriers@2
since the broker is joining the 2 enb cells into 1 stream on the UE side.

Change-Id: I6282cda400558dcb356276786d91e6388524c5b1
2020-10-15 12:34:36 +00:00
Pau Espin 4b7c585561 ms: Fix and use ms msisdn() getter
The getter method was named the same as the itnernal field, and hence
when used it would fail since the intenral field would be sleect and
fail to be called.

Change-Id: I2f631eb6256eb0e065f41d5b7531395c4a054cd8
2020-10-15 14:01:27 +02:00
Andre Puschmann 6628a50e4e enb-cells-2ca: fix config to match cell-id and cc idx
add comment explaining how the sceneario can be used.
also adopt cell IDs to match the CC index of the eNB.
This makes sure the cell_gain command of srsENB works with the config.

Change-Id: I1d14485df700ef3ba9220507f72c50b819d5e334
2020-10-14 14:31:20 +02:00