PCMD record format
A PCMD record is logically divided into several parts known as containers. Containers are sorted and can be present multiple times. They can be of fixed or variable size and must be divisible by four. If the size is not divisible by four, padding 0s are appended.
- 1248 bytes for standard records
- 1532 bytes for extended records
- 32 bytes for heartbeat records
If the system IP address inserted in the PCMD record is IPv4, the sizes are decreased by 12 bytes. The PCMD record size equals the UDP payload length of the IP packet, if there is just one PCMD record present.
Every PCMD record begins with a header as defined in PCMD record header format. The version of the PCMD record conveyed in the PCMD header changes when either of the following occurs:
- The structure or format of any container changes.
- A new container type is introduced.
The PCMD version for this release is 6.
The following notation specifies the structure of each container. This notation is similar to the 3GPP specifications, with the left side of a byte holding the most significant bit. Four bytes are shown per table row. The leftmost byte is transmitted first.
bytes: | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
bits: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
When more than one byte is merged in a single information element, the bit numbering is contiguous and the left is the logically more significant. See HeaderFlags in PCMD record report header2 for an example.
PCMD record header format
The PCMD record header is composed of the PCMD record common header, the PCMD record report header, and the SendingNodeIP container.
PCMD record common header |
PCMD record report header2 |
SendingNodeIP container |
PCMD record common header
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | PCMDVersion=6 | RecordType | RecordLength |
PCMD record report header2
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | RecordOpeningTime | |||
4 | ||||
8 | RecordSequenceNumber | |||
12 | GwId | MscpGroupId | SendingNodeType | HeaderFlags |
16 | Reserved | |||
20 | UEid | |||
24 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
SendingNodeIpV6 | Reserved |
For descriptions of the PCMD record header container information elements, see Header information elements.
SendingNodeIP container
The length of the SendingNodeIP container depends on the IP address type:
-
4 bytes for IPv4
- 16 bytes for IPv6
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | Sending node IPv4 |
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | Sending node IPv6 | |||
4 | ||||
8 | ||||
12 |
Session PCMD record format
The following tables describe the formats of the Session PCMD and Session Extended PCMD records.
The IMEI container is present when the ImeiFlag is set to 1.
The MSISDN container is present when the MsisdnFlag is set to 1.
The APN container is present when ApnFlag is set to 1.
The Procedure container is present only once, except if another procedure or procedures occur before the original procedure completes. See PCMD record generation for more information about the meaning of a concurrent procedure.
The Bearer, TEID, FTEID IP and Bearer Extended containers are present only when a bearer is involved in the procedure (bearer creation, modification, and deletion).
The Session Extended container and Bearer Extended container are present when the ExtendedFlag is set to 1.
One MessageAI container is present for every Message container.
One Charging container is present if BLC=0.
One Charging container is present for every Bearer container if BLC=1.
Container | Multiplicity |
---|---|
PCMD Record Common Header | 1 |
PCMD Record Report Header2 | |
Sending Node IP container | |
Session Decoding container 2 | |
Session 3 container | |
Procedure container | 1-3 |
IMEI container | 1 |
MSISDN container | |
Peers container | |
APN container | |
Message container | 0-40 |
— | |
Message_n container | |
MessageAI_1 container | 0-40 |
— | |
MessageAI_n container | |
Bearer/QoS Flow container | 0-11 |
TEID container | |
FTEID IP container | |
5G QoS container | |
Charging container | 1-11 |
— | |
Charging_n container | |
UE IP container | 1 |
SNSSAI container | 0-1 |
Container | Multiplicity |
---|---|
PCMD Record Common Header | 1 |
PCMD Record Report Header2 | |
Sending Node IP container | |
Session Decoding container2 | |
Session 3 container | |
Procedure container | 1-3 |
IMEI container | 1 |
MSISDN container | |
Peers container | |
APN container | |
Session Extended container | |
Message_1 container | 0-40 |
— | |
Message_n container | |
MessageAI_1 container | 0-40 |
— | |
MessageAI_n container | |
Bearer/QoS Flow container | 0-11 |
TEID container | |
FTEID IP container | |
Bearer Extended container | |
5G QoS container | |
Charging_1 container | 1-11 |
— | |
Charging_n container | |
UE IP container | 1 |
SNSSAI container | 0-1 |
Session PCMD Decoding container 2
Bytes | 0 | 1 | 2 | 3 | |
---|---|---|---|---|---|
0 | MessageNum |
ProcNum (4 bits) |
PeerNum (4 bits) |
Reserved | SessionFlagsV2 |
4 | SessionFlags2 | Reserved |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
BrNum | ApnFlag | Extended Flag | ImeiFlag | MsisdnFlag |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
SnssaiFlag | UliTypeFlag | Reserved |
Session3 container
Bytes | 0 | 1 | 2 | 3 | ||||||
---|---|---|---|---|---|---|---|---|---|---|
0 | RatType (4 bits) |
DT (2 bits) |
BLC (1 bit) |
CI (1 bit) |
PDN Type (3 bits) |
Iwki (3 bits) |
Reserved (3 bits) |
UP Selection (6 bits) |
SSCM (2 bits) |
PduSessionId |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
UPSAttributes | UPSelectionPeer |
Procedure container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | ProcedureID | ProcedureResult | ProcedureCause | |
4 | ProcedureDetailedCause | ProcedureDuration |
IMEI container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | IMEI | |||
4 |
MSISDN container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | MSISDN | |||
4 |
Peer container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | Peer1TypeV2 | Peer2TypeV2 or padding | Peer3TypeV2 or padding | Peer4TypeV2 or padding |
... | ||||
4 - 12 | PeerXTypeV2 | Peer(X+1)TypeV2 or padding | Peer(X+2)TypeV2 or padding | Peer(X+3)TypeV2 or padding |
4 - 16 | Peer1Id | |||
... | ... | |||
... 252 | PeerYId |
- X in [5..13]
- Y in [2..15] = PeerNum
The Peer container contains at least 1 peer and up to 15 peers maximum, as specified by PeerNum in the Session PCMD Decoding container 2.
Each peer is described by a PeerTypeV2 field and a PeerId field.
PeerTypeV2 field:
- Length is 1 byte.
- Padding may be added after the PeerTypeV2 fields to align with a 4-byte boundary.
- The total number of bytes depends on the total number of peers in the
record:
- 1 to 4 peers use 4 bytes
- 5 to 8 peers use 8 bytes
- 9 to 12 peers use 12 bytes
- 13 to 15 peers use 16 bytes
The PeerId field length is 4 bytes (IPv4) or 16 bytes (IPv6 or UUID), as specified by the PeerIdType.
The maximum length of a Peer container is 256 bytes.7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
PeerIdType | PeerType |
APN container
Bytes | 0 | 1 | 2 | 3 | |
---|---|---|---|---|---|
0 | ApnLength | APN (0 – 2 bytes) | |||
... | APN (continued) | ||||
96 | (APN continued) | Padding to 4 bytes if needed |
Session Extended container
Bytes | 0 | 1 | 2 | 3 | |
---|---|---|---|---|---|
0 | UliLength | ULI | |||
... | ULI (continued) | ||||
16 | ULI (continued) | Padding to 4 bytes if needed |
The Session Extended container size is up to 20 bytes, depending on the ULI length, and is always a multiple of 4 bytes; for example, for 5G sessions it can be up to 17 bytes.
Message container
There is one Message container for every message that is transmitted or received in the reported procedure. The Message containers are appended in chronological order.
When concurrent procedures are reported, to preserve the chronology the messages of the concurrent procedure are interleaved with the messages of the reported procedure.
Bits | 31-22 | 21-17 | 16 | 15-0 |
---|---|---|---|---|
0 | MessageMarker_n | ReferencePoint_n | Direction_n | timestampMM_n |
MessageAI container
There is one MessageAI (additional information) container for each Message container. Matching of the MessageAI container to the Message container is performed in the order that the Message containers appear.
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | MessageCauseCode | Padding to 4 bytes at the last MessageAI container |
Bearer / QoS Flow container
Bits | 31-28 | 27-24 | 23-16 | 15-8 | 7 | 6 | 5- 2 | 1 | 0 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
0 | BearerID | LBI | BearerResult | BearerCause | |||||||
4 | BearerDetailedCause | Bearer QCI | PVI | PCI | PL | Reserved | 5GQos Flag | ||||
8 | FTeidUIp V4BrIdRef (4 bit) | FTeidUIp V6 BrIdRef (4 bit) | 5GTun Ipv4 (1 bit) |
5GTun Ipv6 (1 bit) |
Reserved |
TEID container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | TeidU |
FTEID IP container
The length of the FTEID IP container shown in the following tables depends on the IP address type:
- 4 bytes for IPv4
- 16 bytes for IPv6
- 20 bytes for IPv4 followed by IPv6
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | FTEID IPv4 |
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | FTEID IPv6 | |||
4 | ||||
8 | ||||
12 |
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | FTEID IPv4 and IPv6 | |||
4 | ||||
8 | ||||
12 | ||||
16 |
Bearer Extended container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | Uplink APN-AMBR | |||
4 | Downlink APN-AMBR | |||
8 | Uplink MBR | |||
12 | Downlink MBR | |||
16 | Uplink GBR | |||
20 | Downlink GBR |
5G QoS container
Bytes | 0 | 1 | 2 | 3 | |||||
---|---|---|---|---|---|---|---|---|---|
0 | QFI (6bit) | RT (2 bit) | PDB (5 bit) | PEB (3 bit) | QNC (1 bit) | RQI (1 bit) | Reserved | ||
4 | AW (12 bit) | MBV (12 bit) | Reserved |
Charging container
There is one Charging container per procedure, when BLC=0. There is one Charging container for each Bearer container when BLC=1. The Charging container to Bearer container matching is performed in the order that the Bearer containers appear.
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | GCID |
UE IP container
The length of the UE IP container shown in the following tables depends on the IP address type:
- 4 bytes for IPv4
- 16 bytes for IPv6
- 20 bytes for IPv4 followed by IPv6
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | UE IPv4 |
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | UE IPv6 | |||
4 | ||||
8 | ||||
12 |
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | UE IPv4 and IPv6 | |||
4 | ||||
8 | ||||
12 | ||||
16 |
SNSSAI container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | sst | sd |
PCMD Heartbeat format
The following table describes the PCMD Heartbeat format.
PCMD record common header |
PCMD Heartbeat container |
SendingNodeIP container |
PCMD Heartbeat container
Bytes | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | HBSequenceNumber | GwId | HBFlags | |
4 | Reserved | |||
8 | HBTxTime |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
SendingNodeIpV6 | Reserved |