Bug #1638

BVC RESET ignored

Added by msuraev almost 5 years ago. Updated over 3 years ago.

Target version:
Start date:
Due date:
% Done:


Spec Reference:


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.

Related issues

Related to OsmoPCU - Feature #1537: Move the BSSGP handling to libosmocoreNew02/22/2016


#1 Updated by laforge almost 4 years ago

  • Assignee set to msuraev
  • Priority changed from Normal to Low

#2 Updated by laforge over 3 years ago

  • Priority changed from Low to Normal

#3 Updated by msuraev over 3 years ago

  • Related to Feature #1537: Move the BSSGP handling to libosmocore added

#4 Updated by msuraev over 3 years ago

  • Status changed from New to In Progress
Test command:
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
for PTP BVC:
  • BSS received BVC-RESET:
    1. if BVC is in blocking than after BVC-RESET-ACK BSS should initiate blocking procedure
for signaling BVC:
  • BSS received BVC-RESET:
    1. stop all traffic
    2. complete BVC reset for singalling
    3. 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.

#5 Updated by msuraev over 3 years ago

  • % Done changed from 0 to 10

Related gerrit 3069 with SGSN-side fix has been merged, BSS side will follow.

#6 Updated by msuraev over 3 years ago

  • % Done changed from 10 to 20
Gerrit 3088, 3089 submitted for review: this implements proper BVC RESET for both signaling and PTP BVC with the following limitations:
  • 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

#7 Updated by msuraev over 3 years ago

  • Status changed from In Progress to Stalled

#8 Updated by laforge over 3 years ago

  • Status changed from Stalled to Resolved
  • % Done changed from 20 to 100

I've now merged 3088 and 3089 is just waiting for gerrit V+1 after the rebase.

#9 Updated by laforge over 3 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)