- Type-length-value
Within
data communication protocol s, optional information may be encoded as a type-length-value or TLV element inside of the protocol.The type and length fields are fixed in size (typically 1-4 bytes), and the value field is of variable size. These fields are used as follows:;Type: A numeric code which indicates the kind of field that this part of the message represents.;Length: The size of the value field (typically in bytes).;Value: Variable sized set of bytes which contains data for this part of the message.
Some of the advantages of using a TLV representation 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 unknownXML tags can be safely skipped.
* TLV elements are typically used in a binary format which makes parsing faster and the data smaller.Examples
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": command_c/4/makeCall_c/phoneNumberToCall_c/8/"722-4246"
Here
command_c
,makeCall_c
andphoneNumberToCall_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: command_c/4/makeCall_c/callingNumber_c/14/"1-613-715-9719"/phoneNumberToCall_c/8/"722-4246"
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 typecallingNumber_c
. The revision 1 system does not understandcallingNumber_c
, so the length field is read (i.e. 14) and the system skips forward 14 bytes to readphoneNumberToCall_c
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.
Many other protocols use TLVs, such as COPS,
IS-IS , andRADIUS .Other ways of representing data
Core
TCP/IP protocols (particularly IP, TCP, and UDP) use predefined, static fields.Common
TCP/IP -based protocols such as HTTP, FTP, SMTP, POP3, and SIP use text-based "Field: Value" pairs formatted according to [http://tools.ietf.org/html/rfc2822 RFC 2822] .ASN.1 standards body specifies several TLV based encoding rules (BER, DER), as well as non-TLV based ones (PER, XER).CSN.1 describes encoding rules using non-TLV semantics.More recently,
XML has been used to implement messaging between different nodes in a network. These messages are typically prefixed with line-based text commands, such as withBEEP .ee also
*
Common Open Policy Service (COPS)
*IS-IS
*KLV , for a very similar key-length-value scheme
*Link Layer Discovery Protocol
*RADIUS
Wikimedia Foundation. 2010.