Bug #4652
closedSI2quater: osmo-bsc seems unable to send more than three E-UARFCNs in SI2quater System Information
100%
Description
Encoding the E-UARFCNs list in SI2quater seems broken in the presence of multiple E-UARFCNs.
When three E-UARFCN are added in osmo-bsc.cfg, there is one SI2quater sent with a list containing those three.
When a fourth E-UARFCN is added, there is still a single SI2quater sent, but it no longer contains any E-UARFCNs at all.
When a fifth E-UARFCN is added in the config, there are two SI2quaters sent (index 0 and 1), and only the second SI2quater contains exactly the last added E-UARFCN.
With six, two SI2quaters are sent, but only the second one contains E-UARFCNS (the last two configured ones).
Files
Updated by neels over 3 years ago
Three E-UARFCNS: 111, 23, 24
si2quater := { { ba_ind := '0'B, ba_3g_ind := '1'B, mp_change_mark := '0'B, si2quater_index := 0, si2quater_count := 0, meas_params_desc := { presence := '0'B, desc := omit }, gprs := { rt_diff_desc := { presence := '0'B, desc := omit }, bsic_desc := { presence := '0'B, desc := omit }, rep_prio_desc := { presence := '0'B, desc := omit }, meas_params_desc := { presence := '0'B, desc := omit } }, nc_meas_params := { presence := '0'B, params := omit }, ext_info := { presence := '0'B, info := omit }, utran_neigh_desc := { presence := '0'B, desc := omit }, utran_meas_params_desc := { presence := '0'B, desc := omit }, utran_gprs_meas_params_desc := { presence := '0'B, desc := omit }, rel_additions := { rel5_presence := '1'B, rel5 := { umts_add_meas_params_desc := { presence := '0'B, desc := omit }, umts_add_meas_params_desc2 := { presence := '0'B, desc := omit }, rel6_presence := '1'B, rel6 := { umts_ccn_active := '0'B, rel7_presence := '1'B, rel7 := { rep700 := { presence := '0'B, val := omit }, rep810 := { presence := '0'B, val := omit }, rel8_presence := '1'B, rel8 := { prio_eutran_params_desc := { presence := '1'B, desc := { sc_prio_params_desc := { presence := '1'B, desc := { geran_priority := 0, thresh_priority_search := 0, thresh_gsm_low := 0, h_prio := 0, t_reselection := 0 } }, utran_prio_params_desc := { presence := '0'B, desc := omit }, eutran_params_desc := { presence := '1'B, desc := { ccn_active := '0'B, e_start := '1'B, e_stop := '1'B, meas_params_desc := { presence := '0'B, desc := omit }, gprs_meas_params_desc := { presence := '0'B, desc := omit }, neigh_cell_list := { neigh_cell_list := { { item_ind := '1'B, cell_desc_list := { { item_ind := '1'B, e_arfcn := 111, meas_bw_presence := '1'B, meas_bw := 3 }, { item_ind := '1'B, e_arfcn := 23, meas_bw_presence := '1'B, meas_bw := 3 }, { item_ind := '1'B, e_arfcn := 24, meas_bw_presence := '1'B, meas_bw := 3 } }, cell_desc_list_term := '0'B, prio_presence := '1'B, prio := 3, thresh_high := 20, thresh_low_presence := '1'B, thresh_low := 10, qrxlevmin_presence := '1'B, qrxlevmin := 22 } }, neigh_cell_list_term := '0'B, not_allowed_cell_list := omit, not_allowed_cell_list_term := '0'B, pcid2ta_map_list := omit, pcid2ta_map_list_term := '0'B } } } }, utran_csg_desc := { presence := '0'B, desc := omit }, eutran_csg_desc := { presence := '0'B, desc := omit } } } } } } } },
Six E-UARFCNs:
111, 23, 24, 25, 26, 27
si2quater := { { ba_ind := '0'B, ba_3g_ind := '1'B, mp_change_mark := '0'B, si2quater_index := 0, si2quater_count := 1, meas_params_desc := { presence := '0'B, desc := omit }, gprs := { rt_diff_desc := { presence := '0'B, desc := omit }, bsic_desc := { presence := '0'B, desc := omit }, rep_prio_desc := { presence := '0'B, desc := omit }, meas_params_desc := { presence := '0'B, desc := omit } }, nc_meas_params := { presence := '0'B, params := omit }, ext_info := { presence := '0'B, info := omit }, utran_neigh_desc := { presence := '0'B, desc := omit }, utran_meas_params_desc := { presence := '0'B, desc := omit }, utran_gprs_meas_params_desc := { presence := '0'B, desc := omit }, rel_additions := { rel5_presence := '1'B, rel5 := { umts_add_meas_params_desc := { presence := '0'B, desc := omit }, umts_add_meas_params_desc2 := { presence := '0'B, desc := omit }, rel6_presence := '1'B, rel6 := { umts_ccn_active := '0'B, rel7_presence := '1'B, rel7 := { rep700 := { presence := '0'B, val := omit }, rep810 := { presence := '0'B, val := omit }, rel8_presence := '1'B, rel8 := omit } } } } }, ///// second SI2quater { ba_ind := '0'B, ba_3g_ind := '1'B, mp_change_mark := '0'B, si2quater_index := 1, si2quater_count := 1, meas_params_desc := { presence := '0'B, desc := omit }, gprs := { rt_diff_desc := { presence := '0'B, desc := omit }, bsic_desc := { presence := '0'B, desc := omit }, rep_prio_desc := { presence := '0'B, desc := omit }, meas_params_desc := { presence := '0'B, desc := omit } }, nc_meas_params := { presence := '0'B, params := omit }, ext_info := { presence := '0'B, info := omit }, utran_neigh_desc := { presence := '0'B, desc := omit }, utran_meas_params_desc := { presence := '0'B, desc := omit }, utran_gprs_meas_params_desc := { presence := '0'B, desc := omit }, rel_additions := { rel5_presence := '1'B, rel5 := { umts_add_meas_params_desc := { presence := '0'B, desc := omit }, umts_add_meas_params_desc2 := { presence := '0'B, desc := omit }, rel6_presence := '1'B, rel6 := { umts_ccn_active := '0'B, rel7_presence := '1'B, rel7 := { rep700 := { presence := '0'B, val := omit }, rep810 := { presence := '0'B, val := omit }, rel8_presence := '1'B, rel8 := { prio_eutran_params_desc := { presence := '1'B, desc := { sc_prio_params_desc := { presence := '1'B, desc := { geran_priority := 0, thresh_priority_search := 0, thresh_gsm_low := 0, h_prio := 0, t_reselection := 0 } }, utran_prio_params_desc := { presence := '0'B, desc := omit }, eutran_params_desc := { presence := '1'B, desc := { ccn_active := '0'B, e_start := '1'B, e_stop := '1'B, meas_params_desc := { presence := '0'B, desc := omit }, gprs_meas_params_desc := { presence := '0'B, desc := omit }, neigh_cell_list := { { item_ind := '1'B, cell_desc_list := { { item_ind := '1'B, e_arfcn := 26, meas_bw_presence := '1'B, meas_bw := 3 }, { item_ind := '1'B, e_arfcn := 27, meas_bw_presence := '1'B, meas_bw := 3 } }, cell_desc_list_term := '0'B, prio_presence := '1'B, prio := 3, thresh_high := 20, thresh_low_presence := '1'B, thresh_low := 10, qrxlevmin_presence := '1'B, qrxlevmin := 22 } }, neigh_cell_list_term := '0'B, not_allowed_cell_list := omit, not_allowed_cell_list_term := '0'B, pcid2ta_map_list := omit, pcid2ta_map_list_term := '0'B } } } }, utran_csg_desc := { presence := '0'B, desc := omit }, eutran_csg_desc := { presence := '0'B, desc := omit } } } } } } } },
Updated by fixeria over 3 years ago
Hi Neels,
Six E-UARFCNs:
111, 23, 24, 25, 26, 27
so osmo-bsc generates two fragments of SI2quater. Interesting, I would expect all six E-UARFCNs to fit into a single message.
rel6 := { umts_ccn_active := '0'B, rel7_presence := '1'B, rel7 := { rep700 := { presence := '0'B, val := omit }, rep810 := { presence := '0'B, val := omit }, rel8_presence := '1'B, rel8 := omit // <----- (!) } }
Sigh, this is a negative side of the TITAN's RAW codec. If it does not like something in the message, the whole record containing a problematic IE, and N parent records would be just marked as 'omit'. It would not even print a warning! I believe it's somehow related to the recursive list of E-UARFCNs, maybe 'cell_desc_list_term' is missing.
I'll try to reproduce this on my side, but still it would be nice to have a *.pcap with problematic messages attached. Thanks!
Updated by fixeria over 3 years ago
I'll try to reproduce this on my side, [...]
Ok, not only TITAN is unhappy. Wireshark marks the first message as malformed.
.... .H.. = Additions in Rel-8: Present .... ..1. = 3G Supplementary Parameters Description: Present <--- (!) This is a bug in Wireshark [1] Priority and E-UTRAN Parameters Description .... ...1 = Serving Cell Priority Parameters Description: Present Serving Cell Priority Parameters Description 000. .... = GERAN_PRIORITY: 0 ...0 000. = THRESH_Priority_Search: -98 dBm (0) .... ...0 000. .... = THRESH_GSM_low: 0 dB (0) ...0 0... = H_PRIO: disabled (0) .... .00. = T_Reselection: 5 s (0) .... ...0 = 3G Priority Parameters Description: Not Present 1... .... = E-UTRAN Parameters Description: Present E-UTRAN Parameters Description .0.. .... = E-UTRAN_CCN_ACTIVE: The broadcast E-UTRAN_CCN_ACTIVE parameter shall apply if applicable. ..1. .... = E-UTRAN Start: This is the first instance of the message ...1 .... = E-UTRAN Stop: This is the last instance of the message .... 0... = E-UTRAN Measurement Parameters Description: Not Present .... .0.. = GPRS E-UTRAN Measurement Parameters Description: Not Present .... ..1. = Repeated E-UTRAN Neighbour Cells: Present E-UTRAN Neighbour Cells .... ...1 = E-UTRAN Neighbour Cells Struct: Present 0000 0000 0110 1111 = EARFCN: 111 1... .... = Measurement Bandwidth: Present .011 .... = Measurement Bandwidth: NRB = 50 (3) .... 1... = E-UTRAN Neighbour Cells Struct: Present .... .000 0000 0000 1011 1... = EARFCN: 23 .... .1.. = Measurement Bandwidth: Present .... ..01 1... .... = Measurement Bandwidth: NRB = 50 (3) .1.. .... = E-UTRAN Neighbour Cells Struct: Present ..00 0000 0000 0110 00.. .... = EARFCN: 24 ..1. .... = Measurement Bandwidth: Present ...0 11.. = Measurement Bandwidth: NRB = 50 (3) .... ..1. = E-UTRAN Neighbour Cells Struct: Present .... ...0 0000 0000 0011 001. = EARFCN: 25 .... ...1 = Measurement Bandwidth: Present 011. .... = Measurement Bandwidth: NRB = 50 (3) ...0 .... = E-UTRAN Neighbour Cells Struct: Not Present .... 1... = E-UTRAN Priority: Present .... .011 = E-UTRAN_PRIORITY: 3 1010 0... = THRESH_EUTRAN_high: 40 dB (20) .... .1.. = Threshold E-UTRAN Low: Present .... ..01 010. .... = THRESH_EUTRAN_low: 20 dB (10) ...1 .... = E-UTRAN Qrxlev Min: Present // <----- (!) Last octet [Malformed Packet: GSM CCCH] [Expert Info (Error/Malformed): Malformed Packet (Exception occurred)] [Malformed Packet (Exception occurred)] [Severity level: Error] [Group: Malformed]
so it looks like osmo-bsc fails to estimate the remaining room properly, and some IEs simply do not fit. This is definitely a bug.
P.S. That's also another reason why we should use the CSN.1 codec from osmo-pcu instead of hand-written, message specific codecs.
[1] (merged) https://code.wireshark.org/review/#/c/37657/
Updated by fixeria over 3 years ago
[...] it would be nice to have a *.pcap with problematic messages attached.
See attached.
I am now wondering how well osmo-bts handles multiple segments of SI2quater...
Updated by neels over 3 years ago
- Status changed from New to In Progress
- Assignee set to neels
- % Done changed from 0 to 90
Updated by laforge over 3 years ago
On Sun, Jul 05, 2020 at 08:30:10AM +0000, fixeria [REDMINE] wrote:
I am now wondering how well osmo-bts handles multiple segments of SI2quater...
it has been tested at the time it was implemented, and the code supports up to 16 segments.
however, it seems there's no test coverage for multiple segments in TTCN3 yet. I'll add
a related ticket.
Updated by neels over 3 years ago
- Status changed from In Progress to Resolved
- % Done changed from 90 to 100
merged last month