General Block Transfer

GBT

What GBT Means

Large messages are split, sent, checked, and reassembled

General Block Transfer, or GBT, is the GBCS mechanism for carrying a Remote Party Message when the message is too large to fit into one normal protocol data unit. Instead of changing the business message, GBT wraps it in a series of smaller blocks.

The sender applies the normal cryptographic protection first, then cuts the protected message into block data. Each block carries routing details and a GBT header so the receiver can tell which series it belongs to, whether it is command or response traffic, and which block number it is.

For a command, the ACB or HHT starts the GBT series and the target device receives it. For a response, the device starts the series back to the ACB or HHT. The receiver waits until it has the final block and all earlier blocks before processing the original message. If blocks are missing, it can ask for those blocks to be resent.

A row marked Always GBT means this SRV/use-case/device/direction is expected to use GBT. A row marked Not always GBT means GBT can apply for that scoped case, but only when the actual message size or content requires it.

Message stream

A GBT Message Series is the full stream of GBT messages needed to carry one complete Remote Party Message. The initiator is the ACB or HHT for a command to a device; for a response or alert, the device starts the stream back to the ACB or HHT. The routing header ties every block in that stream back to the same original message, using the business originator, business target, message code, and originator counter.

Blocks

The original message is fully built and cryptographically protected first. Only then is it split into block data. Each block carries up to 1,149 octets of the protected message, starts at block number 1, and increments by one until the final block. The final block is marked with a last-block flag. The receiver does not process the original command or response until it has the final block and every earlier block number.

Flow control

GBT uses a streaming window so the sender can send several blocks before it needs a reply. For commands the normal window is 6 GBT messages. For responses the normal window is 63. If a response needs more than 63 blocks, the receiver acknowledges each complete set of 63 sequential blocks before the device sends the next set.

Retries

If the receiver reaches the final block but one or more earlier block numbers are missing, it sends a Request Block Resend for the missing block numbers. Recovery can happen before the end of a streaming window, so the receiver does not have to wait until the whole stream has failed. Resend and acknowledgement messages carry the routing and GBT headers but no block data.

Timeouts and malformed blocks

A device sending a GBT stream must be able to resend blocks for a period after it first sends the stream, until either the stream is acknowledged as complete or 24 hours has elapsed. A device receiving a stream may discard it if resend recovery does not succeed within the allowed time. Devices also discard malformed GBT messages, such as a block numbered zero or an acknowledgement for a block number the recipient has never sent.

Summary source: SEC Schedule 8 GBCS v4.4 section 7.2.11 and its subsections.

All applicable GBT rows

SRVGBCS Use CaseDeviceDirectionApplicability
1.1.1Update Import Tariff (Primary Element)ECS01a0x0019ESMECommandAlways GBT
1.1.2Update Import Tariff (Secondary Element)ECS01c0x00B7ESMECommandNot always GBT
2.1Update Prepay ConfigurationECS08a0x00DEESMECommandNot always GBT
4.4.2Retrieve Change Of Mode / Tariff Triggered Billing Data LogECS20b0x002FESMEResponseNot always GBT
4.4.2Retrieve Change Of Mode / Tariff Triggered Billing Data LogGCS15b0x00C3GPFResponseNot always GBT
4.4.2Retrieve Change Of Mode / Tariff Triggered Billing Data LogGCS15b0x00C3GSMEResponseNot always GBT
4.4.3Retrieve Billing Calendar Triggered Billing Data LogECS20c0x0030ESMEResponseNot always GBT
4.4.3Retrieve Billing Calendar Triggered Billing Data LogGCS15c0x0076GPFResponseNot always GBT
4.4.3Retrieve Billing Calendar Triggered Billing Data LogGCS15c0x0076GSMEResponseNot always GBT
4.6.1Retrieve Import Daily Read LogECS21a0x0033ESMEResponseNot always GBT
4.6.1Retrieve Import Daily Read LogGCS16a0x0077GPFCommandNot always GBT
4.6.1Retrieve Import Daily Read LogGCS16a0x0077GPFResponseNot always GBT
4.6.1Retrieve Import Daily Read LogGCS16a0x0077GSMECommandNot always GBT
4.6.1Retrieve Import Daily Read LogGCS16a0x0077GSMEResponseNot always GBT
4.8.1Read Active Import Profile DataECS22b0x0037ESMEResponseNot always GBT
4.8.1Read Active Import Profile DataGCS170x0078GPFResponseNot always GBT
4.8.1Read Active Import Profile DataGCS170x0078GSMEResponseNot always GBT
4.8.2Read Reactive Import Profile DataECS22c0x0038ESMEResponseNot always GBT
4.8.3Read Export Profile DataECS22a0x0036ESMEResponseNot always GBT
4.10Read Network DataECS230x0039ESMEResponseNot always GBT
4.10Read Network DataECS23b0x00BCESMEResponseNot always GBT
4.11.1Read Tariff (Primary Element)ECS240x003AESMEResponseNot always GBT
4.11.2Read Tariff (Secondary Element)ECS24b0x00BDESMEResponseNot always GBT
4.13Read Prepayment ConfigurationECS26a0x003BESMEResponseNot always GBT
4.14Read Prepayment Daily Read LogGCS16b0x0096GPFCommandNot always GBT
4.14Read Prepayment Daily Read LogGCS16b0x0096GPFResponseNot always GBT
4.14Read Prepayment Daily Read LogGCS16b0x0096GSMECommandNot always GBT
4.14Read Prepayment Daily Read LogGCS16b0x0096GSMEResponseNot always GBT
4.17Retrieve Daily Consumption LogECS660x0060ESMEResponseNot always GBT
4.17Retrieve Daily Consumption LogGCS610x00A0GPFResponseNot always GBT
6.13Read Event Or Security LogCS10a0x0014GPFResponseNot always GBT
6.13Read Event Or Security LogCS10a0x0014GSMEResponseNot always GBT
6.13Read Event Or Security LogCS10b0x00A1GPFResponseNot always GBT
6.13Read Event Or Security LogCS10b0x00A1GSMEResponseNot always GBT
6.13Read Event Or Security LogECS35a0x0048ESMEResponseNot always GBT
6.13Read Event Or Security LogECS35c0x0093CHFResponseNot always GBT
6.13Read Event Or Security LogECS35f0x00BAESMEResponseNot always GBT
6.14.2Update Device Configuration (Auxiliary Load Control Scheduler)ECS46c0x0054ESMECommandNot always GBT
6.15.1Update Security Credentials (KRP)CS02b0x0102ESMECommandNot always GBT
6.15.1Update Security Credentials (KRP)CS02b0x0103ESMECommandNot always GBT
6.15.1Update Security Credentials (KRP)CS02b0x0102GPFCommandNot always GBT
6.15.1Update Security Credentials (KRP)CS02b0x0103GPFCommandNot always GBT
6.15.1Update Security Credentials (KRP)CS02b0x0102GSMECommandNot always GBT
6.15.1Update Security Credentials (KRP)CS02b0x0102HCALCSCommandAlways GBT
6.21Request Handover Of DCC Controlled DeviceCS02b0x0102ESMECommandAlways GBT
6.21Request Handover Of DCC Controlled DeviceCS02b0x0103ESMECommandAlways GBT
6.21Request Handover Of DCC Controlled DeviceCS02b0x0102GPFCommandAlways GBT
6.21Request Handover Of DCC Controlled DeviceCS02b0x0103GPFCommandAlways GBT
6.21Request Handover Of DCC Controlled DeviceCS02b0x0102GSMECommandAlways GBT
6.21Request Handover Of DCC Controlled DeviceCS02b0x0102HCALCSCommandNot always GBT
6.22Configure Alert BehaviourGCS200x00ADGSMECommandNot always GBT
6.23Update Security Credentials (CoS)CS02b0x0107ESMECommandAlways GBT
6.23Update Security Credentials (CoS)CS02b0x0107GPFCommandAlways GBT
6.23Update Security Credentials (CoS)CS02b0x0107GSMECommandAlways GBT
6.23Update Security Credentials (CoS)CS02b0x0107HCALCSCommandNot always GBT
6.32Read CHF Sub GHz Channel LogDBCH020x010BCHFResponseNot always GBT
7.7Read Auxiliary Load Control Switch DataECS61a0x00BBESMEResponseNot always GBT
8.5Service Opt OutCS02b0x0104ESMECommandNot always GBT
8.5Service Opt OutCS02b0x0104GSMECommandNot always GBT
8.5Service Opt OutCS02b0x0104HCALCSCommandNot always GBT
8.5Service Opt OutCS02b0x0104PPMIDCommandAlways GBT