Skip to content

GTPU extension headers seem to not get encoded properly

My goal is to send GTPU packets with extension headers (3GPP TS 29.060 § 6.1).

I'm using type record PDU_GTPU from GTPU_Types.ttcn with:

  • e_bit set to 1
  • opt_part (type record GTPU_Header_optional_part) set as follows:
+               var GTPU_ExtensionHeader ext_hdr := {
+                       lengthfield := 1,
+                       content := '01'O,
+                       nextExtHeader := '00'O
+               }
                var GTPU_Header_optional_part ret := {
                        sequenceNumber := int2oct(valueof(seq), 2),
                        npduNumber := '00'O,
-                       nextExtHeader := '00'O,
-                       gTPU_extensionHeader_List := omit
+                       nextExtHeader := 'C0'O, /* 1100 0000: PDCP PDU number  */
+                       gTPU_extensionHeader_List := {ext_hdr}
                };

To quickly test this, I'm using the existing test case TC_pdp4_clients_interact_without_txseq in the Osmocom GGSN testsuite, with this patch: https://gitea.osmocom.org/osmith/osmo-ttcn3-hacks/commit/b20159fc37846cf01ec328ff5eb97b85be83182d

The test works without modifications. When I modify it with the diff shown / linked above, I see a malformed GTP packet in wireshark:

  • e_bit is set properly
  • nextExtHeader is always 1c (instead of expected c0 in the example above; even if I set nextExtHeader := '01'O, it is still 1c in the pcap)
  • lengthfield (Extension header length in the pcap) is 140 instead of expected 1

Wireshark screenshot: https://nextcloud.sysmocom.de/s/yKCb7gHsc9DgR3d

So it looks like the extension header does not get encoded properly.

EDIT: tested with Eclipse Titan version: 8.2.0

Edited by Oliver Smith