Forwarding and Control Element Separation (ForCES) Protocol Extensions
updates
Extracted elements (23)
Large table dumping uses the same transaction flag mechanism (SOT/MOT/EOT) already present in RFC 5810 for atomic CE-to-FE transactions, applied symmetrically for FE-to-CE GET responses. This reuse avoids introducing new signaling primitives.
The EXTENDEDRESULT-TLV expands the result code space from 8 bits to 32 bits because deployment experience showed that generic codes like E_NOT_SUPPORTED mapped to too many distinct error conditions, making debugging time-consuming. The optional UTF-8 cause string further disambiguates errors for human operators.
The table range operation was introduced because existing approaches to retrieve or delete a sizable number of sparse table rows were both programmatically tedious (requiring up to 10,000 individual requests or complex batching) and wire-inefficient. A single TABLERANGE-TLV replaces all of these approaches.
For backward compatibility, the EXTENDEDRESULT-TLV Result Value first 256 codes (0x00-0xFF) are common to both the old 8-bit RESULT-TLV namespace and the new 32-bit namespace. An FE supporting both modes defaults to EResultNotSupported (EResultAdmin=1) and uses legacy RESULT-TLVs unless explicitly enabled by a master CE.
TABLERANGE-TLV and KEYINFO-TLV must not appear together on the same path, and multiple nested TABLERANGE-TLVs are not allowed. These combinations are rejected for simplicity of operations, with E_INVALID_TFLAGS returned on violation.
An FE advertising FEPO version 1.2 MUST support EXTENDEDRESULT-TLVs at minimum. A master CE can enable extended results by setting EResultAdmin to 2, in which case the FE MUST switch to sending only EXTENDEDRESULT-TLVs.
An FE that does not support a particular result mode MUST reject setting EResultAdmin to an unsupported value by responding with E_NOT_SUPPORTED.
The data content in a table range query response MUST be encapsulated in a SPARSEDATA-TLV, with each row's ILV 'I' indicating the table index.
The FE MUST enforce path flag constraints and ensure the selected path belongs to a defined, indexed table component. Any violation of these constraints MUST be rejected with error code E_INVALID_TFLAGS.
The last message of a large table dump, carrying the EOT flag, MUST NOT carry any data; it carries only a RESULT-TLV with a success code, mirroring the ForCES two-phase commit pattern.
The path flag F_SELTABRANGE (bit 1, value 0x2) MUST be set to indicate the presence of the TABLERANGE-TLV. F_SELTABRANGE can only be used in GET or DEL and is mutually exclusive with F_SELKEY.
Error codes 0x100-0x200 are reserved for private vendor use. FE and CE implementations are expected to agree on semantics and avoid conflicts when using these codes.
EXTENDEDRESULT-TLV (type ID 0x0118) is a new TLV that carries a 32-bit Result Value (a superset of the 8-bit RESULT-TLV Result Value) plus an optional UTF-8 cause content string to provide fine-grained error information.
FEPO LFB is updated to version 1.2, adding component ID 16 (EResultAdmin, read-write, default 1=EResultNotSupported) and capability component ID 32 (EResultCapab, a variable-size table of ExtendedResultType values advertising supported result modes).
Nine new error codes are defined for the EXTENDEDRESULT-TLV: E_TIMED_OUT (0x18), E_INVALID_TFLAGS (0x19), E_INVALID_OP (0x1A), E_CONGEST_NT (0x1B), E_COMPONENT_NOT_A_TABLE (0x1C), E_PERM (0x1D), E_BUSY (0x1E), E_EMPTY (0x1F), and E_UNKNOWN (0x20).
TABLERANGE-TLV (type ID 0x0117) is a new TLV associated with PATH-DATA-TLV that contains a 32-bit start index and a 32-bit end index to specify a range of table rows for GET or DEL operations. A start index of 0 implies the beginning of the table; an end index of 0xFFFFFFFF implies the last entry.
An entry for FE Protocol Object LFB version 1.2 is added to the 'Logical Functional Block (LFB) Class Names and Class Identifiers' sub-registry, reflecting the new EResultAdmin and EResultCapab components.
The 'RESULT-TLV Result Values' sub-registry is updated: codes 0x18-0x20 are defined by this document, codes 0x21-0xFE are marked Unassigned, and codes 0x100-0x200 are reserved for private use. Future allocations in 0x21-0xFE must be made only in the EXTENDEDRESULT-TLV sub-registry.
Two new TLV types are registered in the IANA ForCES 'TLV Types' sub-registry: TABLERANGE-TLV (0x0117) and EXTENDEDRESULT-TLV (0x0118). A new 'EXTENDEDRESULT-TLV Result Values' sub-registry is created with 0x00-0xFF mirrored from RESULT-TLV, 0x100-0x200 reserved for private use, and 0x21-0xFE / 0x201-0xFFFFFFFF as Unassigned (Specification Required).
The security considerations described in the ForCES protocol specification (RFC 5810) apply to this document as well. No new security considerations beyond those in RFC 5810 are introduced by the table range and extended error code extensions.
Large table GET responses use ForCES transaction flags to signal multi-part delivery: the FE sends SOT (Start of Transaction) with the first data chunk, MOT (Middle of Transaction) for intermediate chunks, and EOT (End of Transaction) with an empty RESULT-TLV SUCCESS for the final message. All messages share the same correlator.
EXTENDEDRESULT-TLV is encoded as: 16-bit Type (EXTENDEDRESULT-TLV), 16-bit Length, 32-bit Result Value, variable-length Optional Cause Content. The TLV must be 32-bit aligned.
TABLERANGE-TLV is encoded as: 16-bit Type (0x0117), 16-bit Length, 32-bit Start Index, 32-bit End Index. Total fixed size is 12 bytes (plus any padding for 32-bit alignment).