An organizationally unique identifier (OUI) is a 24-bit number that uniquely identifies a vendor, manufacturer, or other organization.
OUIs are purchased from the Institute of Electrical and Electronics (IEEE) Registration Authority by the assignee (IEEE term for the vendor, manufacturer, or other organization). Only assignment from MA-L registry assigns new OUI. They are used to uniquely identify a particular piece of equipments through derived identifiers such as MAC addresses, [1] [2] Subnetwork Access Protocol protocol identifiers, World Wide Names for Fibre Channel devices or vendor blocks in EDID. [1]
In MAC addresses, the OUI is combined with a 24-bit number (assigned by the assignee of the OUI) to form the address. The first three octets of the address are the OUI.
The following terms are defined (either implicitly or explicitly) in IEEE Standard 802-2001 for use in referring to the various representations and formats of OUIs and the identifiers that may be created using them. [3]
“The representation of a sequence of octet values in which the values of the individual octets are displayed in order from left to right, with each octet value represented as a two-digit hexadecimal numeral, and with the resulting pairs of hexadecimal digits separated by hyphens. The order of the hexadecimal digits in each pair, and the mapping between the hexadecimal digits and the bits of the octet value, are derived by interpreting the bits of the octet value as a binary numeral using the normal mathematical rules for digit significance.” [3] (See hexadecimal).
“The format of a MAC data frame in which the octets of any MAC addresses conveyed in the MAC user data field have the same bit ordering as in the Hexadecimal Representation.” [3] (See MAC data frame, MAC addresses)
This appears from the context of the IEEE Standard 802-2001 to be another term for the 'Hexadecimal Representation' – i.e., “by interpreting the bits of the octet value as a binary numeral using the normal mathematical rules for digit significance.” [3]
“The representation of a sequence of octet values in which the values of the individual octets are displayed in order from left to right, with each octet value represented as a two-digit hexadecimal numeral, and with the resulting pairs of hexadecimal digits separated by colons. The order of the hexadecimal digits in each pair, and the mapping between the hexadecimal digits and the bits of the octet value, are derived by reversing the order of the bits in the octet value and interpreting the resulting bit sequence as a binary numeral using the normal mathematical rules for digit significance.” [3]
The bit-reversed representation corresponds to the convention of transmitting the least-significant-bit of each byte first in serial data communications.
“The format of a MAC data frame in which the octets of MAC addresses conveyed in the MAC user data field have the same bit ordering as in the Bit-reversed representation.” [3]
The order in which an octet or a sequence of octets is transmitted over the transmission medium – this order normally corresponds to the bit-reversed representation.
Example:
An OUI consisting of the hexadecimal digits ACDE4816 would be represented as follows:
The following figure shows the position of these bits in significance order:
| OUI | | Octet 0 | Octet 1 | Octet 2 | | nibble | nibble | nibble | | __||__ | __||__ | __||__ | | | | | | | | | | | | 0 || 1 | 2 || 3 | 4 || 5 | |bits||bits|bits||bits|bits||bits| |7654||3210|7654||3210|7654||3210| ||||| ||||||||| ||||||||| ||||| | A C | D E | 4 8 | |1010 1100|1101 1110|0100 1000| | | || | | | | || | least-significant-bit of OUI | | || least-significant-byte of OUI | | |least-significant-bit of first octet of OUI = I/G or M bit | | next-to-least-significant-bit of first octet of OUI = U/L or X bit | most-significant-byte of OUI most-significant-bit of OUI
Notes:
Ethernet users are used to seeing canonical form, such as in the output of the ifconfig command. Canonical form is the intended standard.
However, since IEEE 802.3 (Ethernet) and IEEE 802.4 (Token Bus) send the bytes (octets) over the wire, left-to-right, with least significant bit in each byte first, while IEEE 802.5 (Token Ring) and IEEE 802.6 (FDDI) send the bytes over the wire with the most significant bit first, confusion may arise when an OUI in the latter scenario is represented with bits reversed from the canonical representation. So for instance, an OUI whose canonical form is ACDE48
could be seen written as 357B12
if translation is done improperly or inconsistently. The latter form (bit-reversed or noncanonical representation), may also be referred to in the literature as "MSB format", "IBM format", or "Token Ring format" for this reason. RFC2469 explains the problem in more detail.
The OUI is normally discussed and represented as a set of octets in hexadecimal notation separated by dashes (i.e., FF-FF-FF) or as a set of octets separated by colons in bit-reversed notation (i.e., FF:FF:FF). [4]
The two least-significant-bits of the second nibble of the first octet of the hexadecimal representation (i.e., the two least significant bits of the first octet) of the OUI are reserved as flag bits for some protocols (e.g., 'M' bit and 'X' bit), flags to indicate whether the address is part of an individual (unicast) or group (multicast) address block (e.g., Individual/Group [I/G] bit or Unicast/Multicast [U/M] bit), flags to indicate whether an address is universally or locally administered (e.g., Universal/Local [U/L] bit), etc., and should not contain the values 1, 2, 3, 5, 6, 7, 9, a, b, d, e, or f, unless these values reflect the true meaning of these flag bits – if the organization that owns the OUI does set one of these bits when creating an identifier, then the value of the second nibble of the first octet changes accordingly in representations of the OUI (e.g., if the hexadecimal value of the second nibble of the first octet is 'C' and the least-significant-bit is set, then the value becomes 'D').
Notes:
The CDI-32 was historically recommended as context dependent identifier that was formed by concatenating the 24-bit OUI with an 8-bit extension identifier that is assigned by the organization that purchased the OUI – the resulting identifier was generally represented as a set of octets separated by dashes (hexadecimal notation) or colons (bit-reversed notation) as in FF-FF-FF-FF or FF:FF:FF:FF, as a string of 4 bytes as in {FF,FF,FF,FF}, or as a base 16 number as in FFFFFFFF16. [5]
The CDI-40 was historically recommended as context dependent identifier that was formed by concatenating the 24-bit OUI with a 16-bit extension or by concatenating a 36-bit OUI-36 with a 4-bit extension. [5] In either case, the extension was assigned by the organization that purchased the OUI. The resulting identifier was generally represented as a set of octets separated by dashes (hexadecimal notation) or colons (bit-reversed notation) as in FF-FF-FF-FF-FF or FF:FF:FF:FF:FF, as a string of 5 bytes as in {FF,FF,FF,FF,FF}, or as a base 16 number as in FFFFFFFFFF16.
Note: There were also IAB based CDI-40 sequences that were formed by combining the 36-bit IEEE assigned IAB base value with the 4-bit extension identifier assigned by the organization – e.g., if the IEEE assigned IAB base value is 0x0050C257A and the 4-bit extension identifier is 0xF, then the CDI-40 values generated by combining these two numbers are from 0x0050C257AF00 to 0x0050C257AFFF
The IEEE now considers the label MAC-48 to be an obsolete term which was previously used to refer to a specific type of EUI-48 identifier used to address hardware interfaces (e.g., Network Interface Controllers and other network hardware) within existing IEEE 802 based networking applications and should not be used in the future. [5] Instead, the term EUI-48 should be used by manufacturers and others in the field for this purpose – i.e., MAC-48 identifier is identical to the EUI-48 identifier and is an obsolete label for it, although some distinction is still made when encapsulating MAC-48 and EUI-48 identifiers within EUI-64 identifiers (but now, the encapsulating mechanism is also deprecated). [5]
The EUI-48 is an identifier that is formed by concatenating the 24-bit OUI with a 24-bit extension identifier that is assigned by the organization that purchased the OUI – the resulting identifier is generally represented as a set of octets separated by dashes (hexadecimal notation) or colons (bit-reversed notation) as in FF-FF-FF-FF-FF-FF or FF:FF:FF:FF:FF:FF, as a string of 6 bytes as in {FF,FF,FF,FF,FF,FF}, or as a base 16 number as in FFFFFFFFFFFF16. [5]
The EUI-60 is an identifier that is formed by concatenating the 24-bit OUI with a 36-bit extension identifier that is assigned by the organization that purchased the OUI – the resulting identifier is generally represented by a string of 15 nibbles, as a base 16 number as in FFFFFFFFFFFFFFF16, or as FF-FF-FF:F.F.F.F.F.F.F.F.F as an EUI-64 value. [5]
Note: This identifier was previously used as the worldwide name (WWN) identifier within some storage systems. Its use is now considered deprecated by the IEEE and the EUI-64 identifier should be used in the future for this and all other purposes for which the EUI-60 was previously used. Some of the storage systems in which an OUI based variant was used are Fibre Channel, and Serial Attached SCSI (SAS). [5]
The EUI-64 is an identifier that is formed by concatenating the 24-bit OUI with a 40-bit extension identifier that is assigned by the organization that purchased the OUI – the resulting identifier is generally represented as a set of octets separated by dashes (hexadecimal notation) or colons (bit-reversed notation) as in FF-FF-FF-FF-FF-FF-FF-FF or FF:FF:FF:FF:FF:FF:FF:FF, as a string of 8 bytes as in {FF,FF,FF,FF,FF,FF,FF,FF}, or as a base 16 number as in FFFFFFFFFFFFFFFF16. [5]
Note: According to the IEEE guidelines, the first four digits of the organizationally assigned identifier (i.e., the first four digits of the extension identifier) portion of an EUI-64 “shall not be FFFE16 or FFFF16” (i.e., EUI-64 identifiers of the form ccccccFFFEeeeeee and ccccccFFFFeeeeee are not allowed) – this is to support the encapsulation of EUI-48 (FFFE16) and MAC-48 (FFFF16) values into EUI-64 values (though now the encapsulation is deprecated).
IPv6 uses a 64-bit Modified Extended Unique Identifier (Modified EUI-64) in the lower half of some IPv6 addresses. A Modified EUI-64 is an EUI-64 with the U/L bit inverted. [6]
There are other identifiers that may be formed using the OUI but those listed above are the most commonly used.
Mapping an EUI-48 to an EUI-64 is deprecated. The mapping is described here for historical reasons.
Other identifiers, such as MAC-48 and EUI-48 values, can be contained within a larger identifier or 'container', such as EUI-64, by creating the larger identifier through a process of combining the smaller identifier with specified values placed in specified bit-positions within the larger identifier – this process is known as 'encapsulation' and is provided for the purpose of easing the transition from MAC-48 and EUI-48 to EUI-64 and to provide a mechanism for the conversion of MAC-48 and EUI-48 identifiers to EUI-64 in such a way that duplicate or conflicting values are avoided. [5]
Encapsulation of MAC-48 within EUI-64 Example:
Assuming that an organization has registered the OUI of AC-DE-48 and that the organization has created the MAC-48 value of AC-DE-48-23-45-67 by concatenating the extension identifier 23-45-67, this MAC-48 identifier has the following binary transmission order:
| OUI | extension identifier | field | 1st | 2nd | 3rd | 4th | 5th | 6th | octet | C A | E D | 8 4 | 3 2 | 5 4 | 7 6 | hex 0011 0101 0111 1011 0001 0010 1100 0100 1010 0010 1110 0110 bits | | | | | | | | | | | | lsb msb lsb msb lsb msb lsb msb lsb msb lsb msb
The same MAC-48 identifier after encapsulation within an EUI-64 has the following transmission order:
| OUI | MAC label | extension identifier | field | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | order | C A | E D | 8 4 | F F | F F | 3 2 | 5 4 | 7 6 | hex 00110101 01111011 00010010 11111111 11111111 11000100 10100100 11100110 bits | | | | | | | | | | | | | | | | lsb msb lsb msb lsb msb lsb msb lsb msb lsb msb lsb msb lsb msb
The same MAC-48 identifier after encapsulation within an EUI-64 has the following significance order:
| OUI | MAC label | extension identifier | field | AC | DE | 48 | FF | FF | 23 | 45 | 67 | hex 10101100 11011110 01001000 11111111 11111111 00100011 01000101 01100111 bits | | | | | most-significant-byte least-significant-byte | most-significant-bit least-significant-bit
Encapsulation of EUI-48 within EUI-64 example:
Assuming that an organization has registered the OUI of AC-DE-48 and that the organization has created the EUI-48 value of AC-DE-48-23-45-67 by concatenating the extension identifier 23-45-67, this EUI-48 identifier has the following format in significance order:
| company_id | extension identifier | field | AC | DE | 48 | 23 | 45 | 67 | hex 10101100 11011110 01001000 00100011 01000101 01100111 bits | | | | | most-significant-byte least-significant-byte | most-significant-bit least-significant-bit
The same EUI-48 identifier after encapsulation within an EUI-64 has the following format in significance order:
| company_id | EUI label | extension identifier | field | AC | DE | 48 | FF | FE | 23 | 45 | 67 | hex 10101100 11011110 01001000 11111111 11111110 00100011 01000101 01100111 bits | | | | | most-significant-byte least-significant-byte | most-significant-bit least-significant-bit
Encapsulation of MAC-48 or EUI-48 within modified EUI-64 example:
In the encapsulation within a Modified EUI-64 a MAC-48 is treated as an EUI-48 and the U/L bit is inverted. [6] Assuming that an organization has registered the OUI of AC-DE-48 and that the organization has created the MAC-48 or EUI-48 value of AC-DE-48-23-45-67 by concatenating the extension identifier 23-45-67, this MAC-48 or EUI-48 identifier has the following format in significance order:
| company_id | extension identifier | field | AC | DE | 48 | 23 | 45 | 67 | hex 10101100 11011110 01001000 00100011 01000101 01100111 bits | | | | | most-significant-byte least-significant-byte | most-significant-bit least-significant-bit
The same MAC-48 or EUI-48 identifier after encapsulation within a Modified EUI-64 has the following format in significance order:
| company_id | EUI label | extension identifier | field | AE | DE | 48 | FF | FE | 23 | 45 | 67 | hex 10101110 11011110 01001000 11111111 11111110 00100011 01000101 01100111 bits | | | | | most-significant-byte least-significant-byte | most-significant-bit least-significant-bit
Network Address Authority (NAA) Name_Identifier formats define the first nibble (4 bits) to define the format of the identifier:
Value | NAA type | Length |
---|---|---|
1h | NAA IEEE 48-bit | 8 bytes |
2h | NAA IEEE Extended | 8 bytes |
5h | NAA IEEE Registered | 8 bytes |
6h | NAA IEEE Registered Extended | 16 bytes |
Ch, Dh, Eh, Fh | NAA EUI-64 Mapped | 8 bytes |
This encapsulation is used in Fibre Channel [7] and SAS, and is also supported in iSCSI in RFC 3980. This addition requires either a shortened vendor-specific identifier field, or some OUI bits are assumed to be 0, such as when using EUI-64 Mapped format.
An Individual Address Block (IAB) is an inactive registry activity which has been replaced by the MA-S registry product as of 1 January 2014. The IAB uses a MA-L (and OUI) belonging to the IEEE Registration Authority, concatenated with 12 additional IEEE-provided bits (for a total of 36 bits), leaving only 12 bits for the IAB owner to assign to their (up to 4096) individual devices. An IAB is ideal for organizations requiring not more than 4096 unique 48-bit numbers (EUI-48). Unlike an OUI, which allows the assignee to assign values in various different number spaces (for example, EUI-48, EUI-64, and the various context-dependent identifier number spaces), the Individual Address Block could only be used to assign EUI-48 identifiers. All other potential uses based on the OUI from which the IABs are allocated are reserved, and remain the property of the IEEE Registration Authority. It should also be noted that, between 2007 and September 2012, the OUI value 00:50:C2 was used for IAB assignments. After September 2012, the value 40:D8:55 was used. The owners of an already assigned IAB may continue to use the assignment. [8] [5]
The OUI-36 is a deprecated registry activity name, which has been replaced by the MA-S registry product name as of 1 January 2014. This registry activity includes both a 36-bit unique number used in some standards and the assignment of a block of EUI-48 and EUI-64 identifiers (while owner of IAB cannot assign EUI-64) by the IEEE Registration Authority. The owner of an already assigned OUI-36 registry product may continue to use the assignment.
Example of EUI-48 created within an IAB: An EUI-48 identifier is formed by combining the 36-bit IEEE assigned IAB base value with a 12-bit extension identifier assigned by the organization – e.g., if the IEEE assigned IAB base-16 value is 0x0050C257A and the 12-bit extension identifier is 0xFFF, then the EUI-48 value generated by combining these two numbers is 0x0050C257AFFF.
In computer science, an integer is a datum of integral data type, a data type that represents some range of mathematical integers. Integral data types may be of different sizes and may or may not be allowed to contain negative values. Integers are commonly represented in a computer as a group of binary digits (bits). The size of the grouping varies so the set of integer sizes available varies between different types of computers. Computer hardware nearly always provides a way to represent a processor register or memory address as an integer.
Internetwork Packet Exchange (IPX) is the network-layer protocol in the IPX/SPX protocol suite. IPX is derived from Xerox Network Systems' IDP. It also has the ability to act as a transport layer protocol.
A MAC address is a unique identifier assigned to a network interface controller (NIC) for use as a network address in communications within a network segment. This use is common in most IEEE 802 networking technologies, including Ethernet, Wi-Fi, and Bluetooth. Within the Open Systems Interconnection (OSI) network model, MAC addresses are used in the medium access control protocol sublayer of the data link layer. As typically represented, MAC addresses are recognizable as six groups of two hexadecimal digits, separated by hyphens, colons, or without a separator.
In computing, a nibble (occasionally nybble, nyble, or nybl to match the spelling of byte) is a four-bit aggregation, or half an octet. It is also known as half-byte or tetrade. In a networking or telecommunications context, the nibble is often called a semi-octet, quadbit, or quartet. A nibble has sixteen (24) possible values. A nibble can be represented by a single hexadecimal digit (0
–F
) and called a hex digit.
In computing, endianness is the order in which bytes within a word of digital data are transmitted over a data communication medium or addressed in computer memory, counting only byte significance compared to earliness. Endianness is primarily expressed as big-endian (BE) or little-endian (LE), terms introduced by Danny Cohen into computer science for data ordering in an Internet Experiment Note published in 1980. The adjective endian has its origin in the writings of 18th century Anglo-Irish writer Jonathan Swift. In the 1726 novel Gulliver's Travels, he portrays the conflict between sects of Lilliputians divided into those breaking the shell of a boiled egg from the big end or from the little end. By analogy, a CPU may read a digital word big end first, or little end first.
Lempel–Ziv–Welch (LZW) is a universal lossless data compression algorithm created by Abraham Lempel, Jacob Ziv, and Terry Welch. It was published by Welch in 1984 as an improved implementation of the LZ78 algorithm published by Lempel and Ziv in 1978. The algorithm is simple to implement and has the potential for very high throughput in hardware implementations. It is the algorithm of the Unix file compression utility compress and is used in the GIF image format.
EtherType is a two-octet field in an Ethernet frame. It is used to indicate which protocol is encapsulated in the payload of the frame and is used at the receiving end by the data link layer to determine how the payload is processed. The same field is also used to indicate the size of some Ethernet frames.
A Universally Unique Identifier (UUID) is a 128-bit label used for information in computer systems. The term Globally Unique Identifier (GUID) is also used, mostly in Microsoft systems.
In computer programming, Base64 is a group of binary-to-text encoding schemes that transforms binary data into a sequence of printable characters, limited to a set of 64 unique characters. More specifically, the source binary data is taken 6 bits at a time, then this group of 6 bits is mapped to one of 64 unique characters.
Hexadecimal floating point is a format for encoding floating-point numbers first introduced on the IBM System/360 computers, and supported on subsequent machines based on that architecture, as well as machines which were intended to be application-compatible with System/360.
Modbus or MODBUS is a client/server data communications protocol in the application layer. It was originally designed for use with programmable logic controllers (PLCs), but has become a de facto standard communication protocol for communication between industrial electronic devices in a wide range of buses and networks.
A World Wide Name (WWN) or World Wide Identifier (WWID) is a unique identifier used in storage technologies including Fibre Channel, Parallel ATA, Serial ATA, SCSI and Serial Attached SCSI (SAS).
IEEE 802.1Q, often referred to as Dot1q, is the networking standard that supports virtual local area networking (VLANs) on an IEEE 802.3 Ethernet network. The standard defines a system of VLAN tagging for Ethernet frames and the accompanying procedures to be used by bridges and switches in handling such frames. The standard also contains provisions for a quality-of-service prioritization scheme commonly known as IEEE 802.1p and defines the Generic Attribute Registration Protocol.
The Subnetwork Access Protocol (SNAP) is a mechanism for multiplexing, on networks using IEEE 802.2 LLC, more protocols than can be distinguished by the eight-bit 802.2 Service Access Point (SAP) fields. SNAP supports identifying protocols by EtherType field values; it also supports vendor-private protocol identifier spaces. It is used with IEEE 802.3, IEEE 802.4, IEEE 802.5, IEEE 802.11 and other IEEE 802 physical network layers, as well as with non-IEEE 802 physical network layers such as FDDI that use 802.2 LLC.
Intel hexadecimal object file format, Intel hex format or Intellec Hex is a file format that conveys binary information in ASCII text form, making it possible to store on non-binary media such as paper tape, punch cards, etc., to display on text terminals or be printed on line-oriented printers. The format is commonly used for programming microcontrollers, EPROMs, and other types of programmable logic devices and hardware emulators. In a typical application, a compiler or assembler converts a program's source code to machine code and outputs it into a object or executable file in hexadecimal format. In some applications, the Intel hex format is also used as a container format holding packets of stream data. Common file extensions used for the resulting files are .HEX or .H86. The HEX file is then read by a programmer to write the machine code into a PROM or is transferred to the target system for loading and execution. There are various tools to convert files between hexadecimal and binary format, and vice versa.
In computer networking, an Ethernet frame is a data link layer protocol data unit and uses the underlying Ethernet physical layer transport mechanisms. In other words, a data unit on an Ethernet link transports an Ethernet frame as its payload.
In computing, bit numbering is the convention used to identify the bit positions in a binary number.
A variable-length quantity (VLQ) is a universal code that uses an arbitrary number of binary octets to represent an arbitrarily large integer. A VLQ is essentially a base-128 representation of an unsigned integer with the addition of the eighth bit to mark continuation of bytes. VLQ is identical to LEB128 except in endianness. See the example below.
LEB128 or Little Endian Base 128 is a variable-length code compression used to store arbitrarily large integers in a small number of bytes. LEB128 is used in the DWARF debug file format and the WebAssembly binary encoding for all integer literals.
An Internet Protocol version 6 address is a numeric label that is used to identify and locate a network interface of a computer or a network node participating in a computer network using IPv6. IP addresses are included in the packet header to indicate the source and the destination of each packet. The IP address of the destination is used to make decisions about routing IP packets to other networks.