This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)(Learn how and when to remove this template message)
Within data communication protocols, TLV (type-length-value or tag-length-value) is an encoding scheme used for optional information element in a certain protocol.
The type and length are fixed in size (typically 1-4 bytes), and the value field is of variable size. These fields are used as follows:
- A binary code, often simply alphanumeric, which indicates the kind of field that this part of the message represents;
- The size of the value field (typically in bytes);
- Variable-sized series of bytes which contains data for this part of the message.
Some advantages of using a TLV representation data system solution are:
- TLV sequences are easily searched using generalized parsing functions;
- New message elements which are received at an older node can be safely skipped and the rest of the message can be parsed. This is similar to the way that unknown XML tags can be safely skipped;
- TLV elements can be placed in any order inside the message body;
- TLV elements are typically used in a binary format which makes parsing faster and the data smaller than in comparable text based protocols.
Imagine a message to make a telephone call. In a first version of a system this might use two message elements: a "command" and a "phoneNumberToCall":
phoneNumberToCall_c are integer constants and 4 and 8 are the lengths of the "value" fields, respectively.
Later (in version 2) a new field containing the calling number could be added:
A version 1 system which received a message from a version 2 system would first read the
command_c element and then read an element of type
callingNumber_c. The version 1 system does not understand ;
so the length field is read (i.e. 14) and the system skips forward 14 bytes to read
which it understands, and message parsing carries on.
An example of usage is the Link Layer Discovery Protocol which allows for the sending of organizational-specific information as a TLV element within LLDP packets. Another example is the RR protocol used in GSM cell phones, defined in 3GPP 04.18.
In the RR protocol, each message is defined as a sequence of information elements.
Other ways of representing data
CSN.1 describes encoding rules using non-TLV semantics.
- KLV, for a very similar key-length-value scheme
- tlve, A common TLV parser