Feature #1558
openGenerate BSSGP LLC Discarded messages on TBF/MS free
0%
Description
If a TBF is freed (e.g. caused by timeout or replacement), the dropped (unsent/unacknowledged) RLC frames are silently dropped. If an MS object is freed (TBF creation failed during the timeout interval), the dropped LLC frames are also not reported. At least counters should be implemented for these cases.
It's a violation of the spec. OsmoSGSN doesn't care, but if you interface with other SGSNs, they might expect to receive such messages in order to optimize their flow control and/or QoS.
Related issues
Updated by laforge about 3 years ago
- Assignee changed from 4368 to pespin
maybe also something that osmith could have a look? should be rather simple, I guess?
Updated by pespin about 3 years ago
- Assignee changed from pespin to laforge
spec reference: 3GPP TS 48.018 "5.2.15 NM-LLC-DISCARDED.req", "5.3.13 NM-LLC-DISCARDED.ind", "10.4.3 LLC-DISCARDED"
3GPP TS 48.018 8.2.2:
BSSGP UNITDATA PDUs queued within the BSS that are not transferred across the radio interface before the PDU Lifetime expires shall be locally deleted from the BSS. The local deletion of BSSGP UNITDATA PDUs in the BSS shall be signalled to the SGSN by the transmission of a LLC-DISCARDED PDU. For each FLOW-CONTROL PDU received by an SGSN, a confirmation shall always be sent across the Gb interface by the SGSN.
osmo-pcu.git documentation:
doc/manuals/gb/bssgp.adoc 63:| 10.4.3 | 0x2c | LLC-DISCARDED 355:(LLC-DISCARDED) is not implemented by OsmoPCU - see for <<not_impl>>
So to me it looks like we we don't send LLC-DISCARDED whenever the MS/TBF is freed. Actually, we probably don't see it neither when we drop messages due to PDU lifetime expiration.
We seem to be supporting some sort of pdu expiration already internally:
src/tbf_dl.cpp 215: struct timespec expire_time; 223: gprs_llc_queue::calc_pdu_lifetime(bts, pdu_delay_csec, &expire_time); Some if those are even being tested in tests/llc/LlcTest.cpp. So it's probably a matter of start by adding/extending unit tests like LlcTest.cpp to make sure the related BSSGP message is sent to the SGSN. Also it can probably be done in TTCN3 by submitting some DL data and then avoid sending sany RTS through PCUIF (hence data is never requested and eventually expires). Then we should check if we receive the message on BSGGP port.
By the way, under some circumstances it could be that we need to send a SUSPEND instead (7.4 "SUSPEND procedure"), but we already do it (#4761).
I'm fine with osmith taking care of it, feel free to assign as you want.
Updated by pespin over 2 years ago
- Related to Bug #4847: fix LLC-DISCARD behaviour added