Feature #3977
SABP stream delineation routines
30%
Description
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
History
#1 Updated by laforge over 1 year ago
- Related to Feature #3979: TTCN3 SABP support added
#2 Updated by laforge over 1 year ago
- Tags set to SMSCB
#3 Updated by laforge over 1 year 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 https://gerrit.osmocom.org/#/c/osmo-ttcn3-hacks/+/15590/, 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 6 days ago
- Related to Feature #4944: 3G SABP support in OsmoCBC added