Project

General

Profile

Bug #4652

SI2quater: osmo-bsc seems unable to send more than three E-UARFCNs in SI2quater System Information

Added by neels 7 months ago. Updated 5 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
07/05/2020
Due date:
% Done:

100%

Spec Reference:

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).

osmo_bsc_si2quater.pcapng osmo_bsc_si2quater.pcapng 1.86 KB fixeria, 07/05/2020 08:28 AM

History

#1 Updated by neels 7 months 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },

#2 Updated by fixeria 7 months 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!

#3 Updated by fixeria 7 months 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/

#4 Updated by fixeria 7 months 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...

#5 Updated by neels 7 months ago

  • Status changed from New to In Progress
  • Assignee set to neels
  • % Done changed from 0 to 90

#6 Updated by laforge 7 months 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.

#7 Updated by neels 5 months ago

  • Status changed from In Progress to Resolved
  • % Done changed from 90 to 100

merged last month

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)