Feature #3977
openSABP 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
Updated by laforge almost 5 years ago
- Related to Feature #3979: TTCN3 SABP support added
Updated by laforge over 4 years 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.
Updated by laforge about 3 years ago
- Related to Feature #4944: 3G SABP support in OsmoCBC added