Commit Graph

23 Commits

Author SHA1 Message Date
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
Andre Puschmann c489f190be enb_amarisoft: add rf_dev_sync option to specify the sync type
this allows to specify "external_clock" for example to use
the external REF input of an USRP

Change-Id: Ie066993440840cbd2c18e8f0c0c577b92ac7092d
2020-10-12 16:47:11 +02:00
Andre Puschmann c1c2f3d16f enb_amarisoft: reduce max achievable UL rate for 100 PRB
Change-Id: Ib7a0b8e2948cdf6c0a15d4ad2bf7d218a6b28ea2
2020-10-05 13:49:12 +02:00
Andre Puschmann 0e00f38aa2 lte: update UHD device args for MIMO usage
the USRP B210 device args were not ideal for MIMO configs for
both Amarisoft and srsLTE.

Change-Id: I3785bb96eb7c10a6b10b3d1a86fa71d1f787a7a3
2020-10-05 13:49:12 +02:00
Andre Puschmann 645b5ccd8e enb_amarisoft: temporary reduce max UL rate on 2nd CC
this is due to a confirmed bug in Amarisoft eNB. will
be reverted as soon as the fix is released.

Change-Id: I182b46cf9e6c2f428c9535edf3c7df3daa912f18
2020-10-05 13:49:12 +02:00
Andre Puschmann 7d3b83ee93 enb: incorporate number of carriers into ue_max_rate() API
this allows the enb to calculate the max rate in a single
spot rather than each test individually

Change-Id: Id225a986e0b271cf9c057c74c9aefd6c7f3d39d6
2020-09-20 10:01:17 +00:00
Andre Puschmann 008fd3194b enb_amarisoft: add support for PHY signal log file
when phy.signal=1 is set in the log_options, the eNB will dump
a binary file that needs to be copied back as well

Change-Id: I63d13cb74572ac065d5a3fcfb1632552d0a6dbc6
2020-07-09 13:43:00 +00:00
Andre Puschmann 955249d39d enb_amarisoft: add option to enable and configure DL AWGN channel
expose option to enable DL AWGN noise and make SNR configurable

Change-Id: Ib248e87e5abd855d4c974eab42ec40828c6e1d40
2020-07-09 13:43:00 +00:00
Andre Puschmann 2ebcff934d enb_amarisoft: register log options as config scheme
allows setting those in scenario files

Change-Id: Idefd3c628441ededbee9411117ec426dd585eae0
2020-07-01 12:28:31 +02:00
Andre Puschmann ccb632037d enb_amarisoft: fix typo
Change-Id: Ie898da5eae10af96c2bca6c2413bdff4a5160e9f
2020-06-15 15:09:37 +00:00
Andre Puschmann acdf416796 enb_amarisoft: decrease max rate for TM2+
perhaps additional CRS for MIMO up to 25 PRB result in slighlt lower max rate

Change-Id: I128085e308f400622683905245d42f92a631e81d
2020-06-10 15:41:46 +02:00
Andre Puschmann 61d150b115 enb: refactor ue_max_rate() and move helper function back to sub classes
It turned out that the Amarisoft and SRS eNB scheduler produces
slightly different maximum data rates for both UL and DL.

Change-Id: I30fa7006906d101c53ba586fb06bced3945aa960
2020-06-10 10:12:49 +02:00
Pau Espin b452ed6db1 enb_{srs,amarisoft}: Support selecting tgz based on run_node's run label
Change-Id: Ie1c8ccd2ffc9680bd72159872f3de0d59f1b9b0b
2020-05-28 13:13:05 +00:00
Pau Espin 1abff4e260 enb: Reuse run_node to hold run info
Change-Id: If396940f154813d42ff3d3364c44b8979179127f
2020-05-28 13:13:05 +00:00
Pau Espin 2a2d846430 obj: Fix objects placing their content in suite rundir instead of test rundir
Change-Id: I421d35473575086b93d5c8db98b909cc6c83d896
2020-05-11 10:56:52 +02:00
Pau Espin a442cb8e5f Update obj classes in obj/ to use testenv instead of suite_run
Change-Id: Idf41243a497de7bc507b9f1cd1b38640f456f815
2020-05-05 13:56:01 +02:00
Pau Espin ea8c3d4b12 Generate schemas dynamically from pieces provided by each object class
This way we benefit from:
* knowing which attributes are used/required by each object class and
  subclass
* Having validation function definitions near the class going to use them

Change-Id: I8fd6773c51d19405a585977af4ed72cad2b21db1
2020-05-04 16:36:33 +02:00
Andre Puschmann e2a6da6b48 enb: refactored rf_args handling for ZMQ-based radio
this patch moves the rf_dev_args creation for both eNB types
into the eNB base class, since they are identical.

the patch also fixes the arguments for all CA and MIMO configurations

Change-Id: I8ca3ed83e65dc07927385267e5970bc4f5b120d5
2020-04-21 15:05:51 +02:00
Pau Espin a6d6304afc srsue, amarisoft/srsENB: Support setting rx/tx_gain attributes
Change-Id: I4228ba8746a54db4c17443718c01069d431361b9
2020-04-20 16:10:57 +02:00
Pau Espin d4404d54c0 enb: Implement initial RF emulation API
Two implementations are provided:
* Amarisoft Ctrl interface (websocket)
* Mini-Circuits Programmable Attenuator (HW, HTTP API) [1]

in Amarisoft ENBs, if no rfemu is configured explicitly, the Ctrl
interface one is used by default, while still being possible to use the
HW one.

[1] https://www.minicircuits.com/pdfs/RC4DAT-6G-60.pdf

Change-Id: Ie98a3fb9bcd2b87b96ecbb5b79e0f53981892a32
2020-04-20 13:30:27 +02:00
Pau Espin f46ae22b3d enb: Add cell_list attribute
It allows configuring each cell_list up to a maximum of 'num_cells'.

Change-Id: I4fd30a3e37789b76bfaddc2beba1815154daab7f
2020-04-17 20:08:28 +02:00
Andre Puschmann e4d5a139e3 enb_amarisoft: fix enb conf template name
issue has been introduced during refactor of enb class names

Change-Id: Ib3ad6451c3979440be28d8811f51ce5d1c103518
2020-04-14 22:23:06 +02:00
Pau Espin e1a58bd8dd Move object classes used by tests into obj/ subdir
Change-Id: I0b2963cf00acd1f9036dca2e87aa3b87a0f8066d
2020-04-11 19:15:56 +02:00