BVC RESET ignored
Right now OsmoPCU always respond to BVC RESET with STATUS error message due to unknown BVCI.
See gprs_bssgp_pcu_rcvmsg() in src/gprs_bssgp_pcu.cpp for details.
Instead, BVC RESET procedure described in 3GPP TS 08.18 § 8.4 should happen.
The tests were made with "bvc reset nsei 101 bvci 0" command introduced into libosmocore (corresponding patches are under review ATM).
Note: it could as well be some bug with the test command.
Related bug - OW#1303.
#4 Updated by msuraev over 2 years ago
- Status changed from New to In Progress
bssgp bvc nsei 101 bvci 0 reset
Spec 3GPP TS 48.018 §8.4 details to consider:
- before sending BVC-RESET, the operational status of the associated NS shall be obtained
- start T2 after BVC-RESET sent (no PDU transmission)
- stop T2 on BVC-RESET-ACK
- after performing the BVC Reset procedure all affected BVCs are assumed to be unblocked at the SGSN
- if T2 expires with no ACK than retry BVC-RESET-RETRIES times
- after that mark all BVC as blocked
- BVC-RESET with same BVCI equal BVC-RESET-ACK
- BVC-RESET equal BVC-UNBLOCK-ACK (only at BSS)
- BVC_RESET for signalling BVC overrides all pending procedures for PTP BVC
- BSS received BVC-RESET:
- if BVC is in blocking than after BVC-RESET-ACK BSS should initiate blocking procedure
- BSS received BVC-RESET:
- stop all traffic
- complete BVC reset for singalling
- start BVC reset procedure for corresponding PTP
The spec is unclear in this regard: §8.4.1 says that "after sending or receiving a BVC-RESET for the signalling BVC, the BSS shall initiate the BVC-RESET procedure for all corresponding PTP BVC." but "BSS must complete the BVC-RESET procedure for signalling BVC before starting PTP BVC-RESET procedures". So, does sending "BVC-RESET" by BSS counted as "initiate" (which should happen before BVC-RESET-ACK for signaling BVC) or as "start" (which should happen after BVC-RESET-ACK)?
If I interpret spec correctly, both SGSN and BSS can reset any (PTP or signaling) BVC, but if signaling BVC is reset than corresponding PTP BVC are reset by BSS regardless of who initiated the reset for signaling BVC.
Handling all the corner cases seems to tricky without rewriting corresponding state handling into proper FSM, but until than we can implement most common cases as a natural improvement upon current broken state.
#6 Updated by msuraev over 2 years ago
- % Done changed from 10 to 20
- no T2 and retries counter
- does not initiate blocking for reset of blocking BVC
- does not implement corner cases ("equal" in the analysis above)
- has not been tested against 3rd-party implementation