Commit d56a2e93 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 1909a9e6
......@@ -6,9 +6,15 @@
rf_driver: {
name: "sdr",
args: "dev0=/dev/sdr0,dev1=/dev/sdr1",
args: "dev0=/dev/sdr0,dev1=/dev/sdr1,dev2=/dev/sdr2@0,dev3=/dev/sdr2@1",
rx_antenna:"tx_rx",
tdd_tx_mod: 1,
cpri_mapping: ",,standard,standard",
cpri_mult: ",,8,8",
cpri_rx_delay: ",,10,10",
cpri_tx_delay: ",,11,11",
cpri_tx_dbm: ",,50,50",
ifname: ",,slaptap9-0,slaptap9-1",
},
......@@ -65,6 +71,43 @@
dl_earfcn: 38100,
tac: 0x0001,
},
{
rat: "nr",
nr_cell_id: 0x123450x03, // -> CELL1_c
n_id_cell: 3,
gnb_id_bits
dl_nr_arfcn
ssb_nr_arfcn
ul_nr_arfcn
tac
band
ssb_subcarrier_spacing: 30,
ssb_period: 20,
ssb_offset: 0,
ssb_duration: 1,
},
{
rat: "eutra",
cell_id: 0x1A2D00x21, // -> CELL2_a
n_id_cell: 21,
dl_earfcn: 3350,
tac: 0x0001,
},
{
rat: "nr",
nr_cell_id: 0x123450x22, // -> CELL2_b
n_id_cell: 22,
gnb_id_bits
dl_nr_arfcn
ssb_nr_arfcn
ul_nr_arfcn
tac
band
ssb_subcarrier_spacing: 30,
ssb_period: 20,
ssb_offset: 0,
ssb_duration: 1,
},
// Inter-ENB HO
......@@ -76,6 +119,10 @@
cell_id: 0x02, // + CELL1_b
cross_carrier_scheduling: false,
},
{
cell_id: 0x21, // + CELL2_a
cross_carrier_scheduling: false,
},
],
......@@ -635,6 +682,43 @@
dl_earfcn: 38050,
tac: 0x0001,
},
{
rat: "nr",
nr_cell_id: 0x123450x03, // -> CELL1_c
n_id_cell: 3,
gnb_id_bits
dl_nr_arfcn
ssb_nr_arfcn
ul_nr_arfcn
tac
band
ssb_subcarrier_spacing: 30,
ssb_period: 20,
ssb_offset: 0,
ssb_duration: 1,
},
{
rat: "eutra",
cell_id: 0x1A2D00x21, // -> CELL2_a
n_id_cell: 21,
dl_earfcn: 3350,
tac: 0x0001,
},
{
rat: "nr",
nr_cell_id: 0x123450x22, // -> CELL2_b
n_id_cell: 22,
gnb_id_bits
dl_nr_arfcn
ssb_nr_arfcn
ul_nr_arfcn
tac
band
ssb_subcarrier_spacing: 30,
ssb_period: 20,
ssb_offset: 0,
ssb_duration: 1,
},
// Inter-ENB HO
......@@ -646,6 +730,10 @@
cell_id: 0x01, // + CELL1_a
cross_carrier_scheduling: false,
},
{
cell_id: 0x21, // + CELL2_a
cross_carrier_scheduling: false,
},
],
......@@ -1180,6 +1268,613 @@
logicalChannelSR_Prohibit: false,
},
},
]
},
// CELL2_a
{
rf_port: 1,
n_antenna_dl: 2,
n_antenna_ul: 1,
cell_id: 0x21,
tac: 0x0001,
n_id_cell: 21,
dl_earfcn: 3350,
root_sequence_index: 207,
// Handover XXX same code for both LTE and NR
ncell_list: [
// Intra-ENB HO
{
rat: "eutra",
cell_id: 0x1A2D00x01, // -> CELL1_a
n_id_cell: 1,
dl_earfcn: 38050,
tac: 0x0001,
},
{
rat: "eutra",
cell_id: 0x1A2D00x02, // -> CELL1_b
n_id_cell: 2,
dl_earfcn: 38100,
tac: 0x0001,
},
{
rat: "nr",
nr_cell_id: 0x123450x03, // -> CELL1_c
n_id_cell: 3,
gnb_id_bits
dl_nr_arfcn
ssb_nr_arfcn
ul_nr_arfcn
tac
band
ssb_subcarrier_spacing: 30,
ssb_period: 20,
ssb_offset: 0,
ssb_duration: 1,
},
{
rat: "nr",
nr_cell_id: 0x123450x22, // -> CELL2_b
n_id_cell: 22,
gnb_id_bits
dl_nr_arfcn
ssb_nr_arfcn
ul_nr_arfcn
tac
band
ssb_subcarrier_spacing: 30,
ssb_period: 20,
ssb_offset: 0,
ssb_duration: 1,
},
// Inter-ENB HO
],
// Carrier Aggregation // XXX + CA LTE-NR
scell_list: [
{
cell_id: 0x01, // + CELL1_a
cross_carrier_scheduling: false,
},
{
cell_id: 0x02, // + CELL1_b
cross_carrier_scheduling: false,
},
],
// tune LTE parameters for the cell
n_rb_dl: 25,
si_coderate: 0.2,
pdsch_dedicated: {
p_a: -3,
p_b: -1,
},
pdcch_format: 2,
prach_config_index: 4,
initial_cqi: 3,
pucch_dedicated: {
n1_pucch_sr_count: 11,
cqi_pucch_n_rb: 1,
n1_pucch_an_cs_count: 8,
n3_pucch_an_n_rb: 3,
},
m_ri: 8,
transmission_mode: 3,
srs_dedicated: {
srs_bandwidth_config: 2,
srs_bandwidth: 3,
srs_subframe_config: 3,
srs_period: 40,
srs_hopping_bandwidth: 0,
},
drb_config:
[
{
qci: 1,
ims_dedicated_bearer: true,
pdcp_config: {
discardTimer: 100,
pdcp_SN_Size: 7,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 12,
pdcp_SN_SizeDL: 12,
statusReportRequired: false,
outOfOrderDelivery: false,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_um: {
sn_FieldLength: 5,
},
dl_um: {
sn_FieldLength: 5,
t_Reordering: 35,
},
},
logical_channel_config: {
priority: 7,
prioritisedBitRate: 0,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 2,
ims_dedicated_bearer: true,
pdcp_config: {
discardTimer: 150,
pdcp_SN_Size: 12,
},
nr_pdcp_config: {
discardTimer: 150,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: false,
outOfOrderDelivery: false,
t_Reordering: 0,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_um: {
sn_FieldLength: 10,
},
dl_um: {
sn_FieldLength: 10,
t_Reordering: 35,
},
},
logical_channel_config: {
priority: 9,
prioritisedBitRate: 0,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 3,
pdcp_config: {
discardTimer: 100,
pdcp_SN_Size: 12,
},
nr_pdcp_config: {
discardTimer: 100,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: false,
outOfOrderDelivery: false,
t_Reordering: 0,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_um: {
sn_FieldLength: 10,
},
dl_um: {
sn_FieldLength: 10,
t_Reordering: 35,
},
},
logical_channel_config: {
priority: 8,
prioritisedBitRate: 0,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 4,
pdcp_config: {
discardTimer: 0,
statusReportRequired: true,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: true,
outOfOrderDelivery: false,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
},
logical_channel_config: {
priority: 10,
prioritisedBitRate: 8,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 65,
ims_dedicated_bearer: true,
pdcp_config: {
discardTimer: 100,
pdcp_SN_Size: 7,
},
nr_pdcp_config: {
discardTimer: 100,
pdcp_SN_SizeUL: 12,
pdcp_SN_SizeDL: 12,
statusReportRequired: false,
outOfOrderDelivery: false,
t_Reordering: 0,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_um: {
sn_FieldLength: 5,
},
dl_um: {
sn_FieldLength: 5,
t_Reordering: 35,
},
},
logical_channel_config: {
priority: 5,
prioritisedBitRate: 0,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 66,
ims_dedicated_bearer: true,
pdcp_config: {
discardTimer: 150,
pdcp_SN_Size: 12,
},
nr_pdcp_config: {
discardTimer: 150,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: false,
outOfOrderDelivery: false,
t_Reordering: 0,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_um: {
sn_FieldLength: 10,
},
dl_um: {
sn_FieldLength: 10,
t_Reordering: 35,
},
},
logical_channel_config: {
priority: 7,
prioritisedBitRate: 0,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 67,
ims_dedicated_bearer: true,
pdcp_config: {
discardTimer: 100,
pdcp_SN_Size: 12,
},
nr_pdcp_config: {
discardTimer: 100,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: false,
outOfOrderDelivery: false,
t_Reordering: 0,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_um: {
sn_FieldLength: 10,
},
dl_um: {
sn_FieldLength: 10,
t_Reordering: 35,
},
},
logical_channel_config: {
priority: 6,
prioritisedBitRate: 0,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 5,
pdcp_config: {
discardTimer: 0,
statusReportRequired: true,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: true,
outOfOrderDelivery: false,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
},
logical_channel_config: {
priority: 6,
prioritisedBitRate: 8,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 6,
pdcp_config: {
discardTimer: 0,
statusReportRequired: true,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: true,
outOfOrderDelivery: false,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
},
logical_channel_config: {
priority: 12,
prioritisedBitRate: 8,
bucketSizeDuration: 100,
logicalChannelGroup: 2,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 7,
pdcp_config: {
discardTimer: 100,
pdcp_SN_Size: 12,
},
nr_pdcp_config: {
discardTimer: 100,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: false,
outOfOrderDelivery: false,
t_Reordering: 0,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_um: {
sn_FieldLength: 10,
},
dl_um: {
sn_FieldLength: 10,
t_Reordering: 35,
},
},
logical_channel_config: {
priority: 13,
prioritisedBitRate: 0,
bucketSizeDuration: 100,
logicalChannelGroup: 2,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 8,
pdcp_config: {
discardTimer: 0,
statusReportRequired: true,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: true,
outOfOrderDelivery: false,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
},
logical_channel_config: {
priority: 14,
prioritisedBitRate: 8,
bucketSizeDuration: 100,
logicalChannelGroup: 2,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 9,
pdcp_config: {
discardTimer: 0,
statusReportRequired: true,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: true,
outOfOrderDelivery: false,
},
en_dc_split: {
type: "scg",
ul_data_threshold: 0
},
rlc_config: {
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
},
logical_channel_config: {
priority: 15,
prioritisedBitRate: 8,
bucketSizeDuration: 100,
logicalChannelGroup: 3,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 69,
pdcp_config: {
discardTimer: 0,
statusReportRequired: true,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: true,
outOfOrderDelivery: false,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
},
logical_channel_config: {
priority: 4,
prioritisedBitRate: 8,
bucketSizeDuration: 100,
logicalChannelGroup: 1,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
{
qci: 70,
pdcp_config: {
discardTimer: 0,
statusReportRequired: true,
},
nr_pdcp_config: {
discardTimer: 0,
pdcp_SN_SizeUL: 18,
pdcp_SN_SizeDL: 18,
statusReportRequired: true,
outOfOrderDelivery: false,
restrict_to_ng_enb: true,
},
rlc_config: {
ul_am: {
t_PollRetransmit: 80,
pollPDU: 64,
pollByte: 125,
maxRetxThreshold: 32,
},
dl_am: {
t_Reordering: 35,
t_StatusProhibit: 10,
},
},
logical_channel_config: {
priority: 11,
prioritisedBitRate: 8,
bucketSizeDuration: 100,
logicalChannelGroup: 2,
logicalChannelSR_Mask: false,
logicalChannelSR_Prohibit: false,
},
},
]
},
],
......
......@@ -12,6 +12,19 @@ json_params_empty = """{
}"""
# iSHARED appends new shared instance with specified configuration to shared_instance_list.
shared_instance_list = []
def iSHARED(title, slave_reference, cfg):
ishared = {
'slave_title': title,
'slave_reference': slave_reference,
'slap_software_type': "enb",
'_': json.dumps(cfg)
}
shared_instance_list.append(ishared)
return ishared
# 3 cells sharing SDR-based RU consisting of 2 SDR boards (4tx + 4rx ports max)
# RU definition is embedded into cell for simplicity of management
RU1 = {
......@@ -22,7 +35,7 @@ RU1 = {
'n_antenna_ul': 2,
}
CELL1_a = {
iSHARED('Cell 1a', '_CELL1_a', {
'cell_type': 'lte',
'rf_mode': 'tdd',
'bandwidth': '5 MHz',
......@@ -30,9 +43,9 @@ CELL1_a = {
'pci': 1,
'cell_id': '0x01',
'ru': RU1, # RU definition embedded into CELL
}
})
CELL1_b = {
iSHARED('Cell 1b', '_CELL1_b', {
'cell_type': 'lte',
'rf_mode': 'tdd',
'bandwidth': '5 MHz',
......@@ -43,9 +56,9 @@ CELL1_b = {
'ru_type': 'ruincell_ref',
'ruincell_ref': 'CELL1_a'
}
}
})
CELL1_c = {
iSHARED('Cell 1c', '_CELL1_c', {
'cell_type': 'nr',
'rf_mode': 'tdd',
'bandwidth': 5,
......@@ -57,7 +70,7 @@ CELL1_c = {
'ru_type': 'ruincell_ref', # CELL1_c shares RU with CELL1_a and CELL1_b
'ruincell_ref': 'CELL1_b' # referring to RU via CELL1_b -> CELL1_a
}
}
})
# LTE + NR cells that use CPRI-based Lopcomm radio units
# here we instantiate RUs separately since embedding RU into a cell is demonstrated by CELL1_a above
......@@ -82,7 +95,11 @@ RU2_b = copy.deepcopy(RU2_a)
RU2_b['mac_addr'] = 'YYY'
RU2_b['cpri_link']['sfp_port'] = 1
CELL2_a = {
iSHARED('Radio Unit 2a', '_RU2_a', RU2_a)
iSHARED('Radio Unit 2b', '_RU2_b', RU2_b)
iSHARED('Cell 2a', '_CELL2_a', {
'cell_type': 'lte',
'rf_mode': 'fdd',
'bandwidth': '5 MHz',
......@@ -93,9 +110,9 @@ CELL2_a = {
'ru_type': 'ru_ref',
'ru_ref': 'RU2_a'
}
}
})
CELL2_b = {
iSHARED('Cell 2b', '_CELL2_b', {
'cell_type': 'nr',
'rf_mode': 'fdd',
'bandwidth': 5,
......@@ -107,16 +124,10 @@ CELL2_b = {
'ru_type': 'ru_ref',
'ru_ref': 'RU2_b'
}
}
})
jjdumps = lambda obj: json.dumps(json.dumps(obj))
jCELL1_a = jjdumps(CELL1_a)
jCELL1_b = jjdumps(CELL1_b)
jCELL1_c = jjdumps(CELL1_c)
jCELL2_a = jjdumps(CELL2_a)
jCELL2_b = jjdumps(CELL2_b)
jRU2_a = jjdumps(RU2_a)
jRU2_b = jjdumps(RU2_b)
jshared_instance_list = json.dumps(shared_instance_list)
json_params = """{
"earfcn": 126357,
"tx_gain": 50,
......@@ -137,20 +148,7 @@ json_params = """{
"configuration.default_n_antenna_dl": 2,
"configuration.default_n_antenna_ul": 2,
"configuration.default_nr_inactivity_timer": 10000,
"slave-instance-list": [
{
"slave_title": "Cell 1a",
"slave_reference": "_CELL1_a",
"slap_software_type": "enb",
"_": %(jCELL1_a)s
},
{
"slave_title": "Cell 1b",
"slave_reference": "_CELL1_b",
"slap_software_type": "enb",
"_": %(jCELL1_b)s
}
]
"slave-instance-list": %(jshared_instance_list)s
},
"directory": {
"log": "log",
......@@ -161,38 +159,7 @@ json_params = """{
}
}""" % globals()
"""
{
"slave_title": "Cell 1c",
"slave_reference": "_CELL1_c",
"slap_software_type": "enb",
"_": %(jCELL1_c)s
},
{
"slave_title": "Cell 2a",
"slave_reference": "_CELL2_a",
"slap_software_type": "enb",
"_": %(jCELL2_a)s
},
{
"slave_title": "Cell 2b",
"slave_reference": "_CELL2_b",
"slap_software_type": "enb",
"_": %(jCELL2_b)s
},
{
"slave_title": "Radio Unit 2a",
"slave_reference": "_RU2_a",
"slap_software_type": "enb",
"_": %(jRU2_a)s
},
{
"slave_title": "Radio Unit 2b",
"slave_reference": "_RU2_b",
"slap_software_type": "enb",
"_": %(jRU2_b)s
}
"""
import os
from jinja2 import Environment, StrictUndefined, \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment