Feature #3977

SABP stream delineation routines

Added by laforge about 2 years ago. Updated over 1 year ago.

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


Spec Reference:


SABP is not only specified as ASN.1 with APER encoding, but 3GPP in their infinite wisdom specified that it will run directly inside a TCP stream.

As TCP, like any stream, doesn't preserve message boudaries, there's no length field or other framing that would tell us once a given SABP PDU is fully received. Instead, we have to implement something like an "incremental APER length determinant parser" which will parse the outer length of the APER encoded data, and then use the result of that to determine the length of one binary/encoded SABP PDU.

See dissect_per_length_determinant() from wireshark packet-per.c which is actually used by the wireshark SABP dissector, facing the same problem.

Related issues

Related to OsmoCBC - Feature #3979: TTCN3 SABP supportResolved05/06/2019

Related to OsmoCBC - Feature #4944: 3G SABP support in OsmoCBCNew01/13/2021


#1 Updated by laforge about 2 years ago

#2 Updated by laforge about 2 years ago

  • Tags set to SMSCB

#3 Updated by laforge almost 2 years ago

  • Priority changed from Normal to High

#4 Updated by laforge over 1 year ago

  • % Done changed from 0 to 30

The implementation in TTCN3 can be seen at, specifically in the functions f_aper_len_det() and f_APER_getMsgLen() which are (as the name implies) written as reather generic helpers for APER-in-TCP.

This code has been validated using SABP_Selftests.ttcn which is part of the upcoming CBC test suite.

#5 Updated by laforge 4 months ago

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)