---
title: IEEE EUI, OUI, and CID
description: IEEE EUI, OUI, and CID
# image: https://hackmd.io/screenshot.png
tags: IEEE
# robots: noindex, nofollow
langs: zh-Hant
---
# IEEE EUI, OUI, and CID
> IEEE - Guidelines for Use of EUI, OUI, and CID
> https://standards.ieee.org/content/dam/ieee-standards/standards/web/documents/tutorials/eui.pdf
IEEE註冊機構(IEEE RA)分配以下標識符:
- 組織唯一標識符(Organizationally Unique Identifierc OUI)
- 公司標識符 (Company ID, CID)
- 擴展唯一標識符 (Extended Unique Identifier, EUI)
- 擴展本地標識符 (Extended Local Identifier, ELI)
## OUI and CID
**OUI**與**CID**皆為24位元(3個位元組)的標識符,它們來自相同的24位元空間但屬於不同的子空間,由一個稱為`X`位元的特定位元區分。每個被分配的OUI和CID對於所有分配的OUI和CID1是唯一的。
|X bit |identifier|
|:-:|:-:|
|0 |OUI|
|1 |CID|
**OUI**或**CID**可用於識別公司,組織,實體,製造商,供應商等。36位元OUI-36作為組織的全球唯一標識符。**OUI-36**的前24位元不會重複分配。
### OUI
**OUI**是24位元(3個位元組)序列:
- Octet 0是初始(最高有效)的位元組。其最小和第二最低有效位元分別指定為`M`位元和`X`位元。在**OUI**中,`M`和`X`位元都具有值0。
```graphviz
digraph structs_OUI {
node[shape=record]
Octets [
label="
{|Octet 0|Octet 1|Octet 2}|
{7|||}|
{6|||}|
{5|||}|
{4|||}|
{3|||}|
{2|||}|
{1|X bit `0`||}|
{0|M bit `0`||}
"
];
}
```
- **OUI**可以表示為6個16進制數字(base-16)
```graphviz
digraph OUI_hex {
graph [ranksep=0.2];
node[shape=record]
Octets [
label="
{Octet id|Hex|Binary}|
{0|AC|{<MSB> 1010|1100}}|
{1|DE|{1101|1110}}|
{2|48|{0100|{<LSB> 1000}}}
"
];
MSB [label="MSB" fontsize=8.0 height=0 width=0]
LSB [label="LSB" fontsize=8.0 height=0 width=0]
Octets:MSB -> MSB;
Octets:LSB -> LSB;
}
```
### OUI-36
**OUI-36**是一個36位元(4個位元組+半個位元組)序列:
- Octet 0是初始(最高有效)的位元組。其最小和第二最低有效位元分別指定為`M`位元和`X`位元。在**OUI-36**中,`M`和`X`位元都具有值0。
- **OUI**的受讓人可以通過在被分配的OUI的末尾添加12位來創建**OUI-36**。如果**OUI-36**的受讓人需要唯一的24位組織標識符,則建議使用**CID**分配。
- **OUI-36**可以表示為9個16進制數字(base-16)
```graphviz
digraph OUI_hex {
graph [ranksep=0.2];
node[shape=record]
Octets [
label="
{Octet id|Hex|Binary}|
{0|AC|{<MSB> 1010|1100}}|
{1|DE|{1101|1110}}|
{2|48|{0100|1000}}|
{3|23|{0010|0011}}|
{4|4|{<LSB> 0100|}}
"
];
MSB [label="MSB" fontsize=8.0 height=0 width=0]
LSB [label="LSB" fontsize=8.0 height=0 width=0]
Octets:MSB -> MSB;
Octets:LSB -> LSB;
}
```
- IEEE RA通過將12位元連接到24位元IEEE保留基底**OUI**(IEEE-reserved base OUI)來創建**OUI-36**,在Octet 2的最低有效位之後連接這12位元。
- 基底**OUI**不會分配給另一個組織或以其他方式用作**OUI**。
- **OUI-36**的受讓人不得截斷**OUI-36**以用作**OUI**,因為IEEE RA將使用 基底**OUI**將**OUI-36**值分配給多個組織。
### CID
**CID**是24位元(3個位元組)序列:
- Octet 0是初始(最高有效)的位元組。從最低有效位元開始,將Octet 0的四個最低有效位元分別指定為`M`位元,`X`位元,`Y`位元和`Z`位元。 在**CID**中,`M`,`X`,`Y`和`Z`位元分別具有值0,1,0和1。
```graphviz
digraph structs_OUI {
node[shape=record]
Octets [
label="
{|Octet 0|Octet 1|Octet 2}|
{7|||}|
{6|||}|
{5|||}|
{4|||}|
{3|Z bit `1`||}|
{2|Y bit `0`||}|
{1|X bit `1`||}|
{0|M bit `0`||}
"
];
}
```
- **CID**可以表示為6個16進制數字(base-16)
```graphviz
digraph OUI_hex {
graph [ranksep=0.2];
node[shape=record]
Octets [
label="
{Octet id|Hex|Binary}|
{0|AA|{<MSB> 1010|1010}}|
{1|DE|{1101|1110}}|
{2|48|{0100|{<LSB> 1000}}}
"
];
MSB [label="MSB" fontsize=8.0 height=0 width=0]
LSB [label="LSB" fontsize=8.0 height=0 width=0]
Octets:MSB -> MSB;
Octets:LSB -> LSB;
}
```
## 擴展標識符
除了用作全局唯一組織標識符之外,**OUI**,**OUI-36**或**CID**可以通過串聯附加的區分位元來作為擴展標識符的基礎,包括協議標識符和上下文相關標識符。這些擴展標識符可以是全局唯一的(例如,**EUI-48**和**EUI-64**),或者僅在它們被使用的上下文中是唯一的。
### EUI
- 擴展唯一標識符 (Extended Unique Identifier, EUI)是48位元(**EUI-48**)或64位元(**EUI-64**)。
- 除了一些例外,特別是在協議標識符方面,每個EUI旨在全局唯一併綁定到硬體設備實例或需要唯一標識的其他對象。
- **EUI-48**和**EUI-64**標識符最常用作全球唯一的網路位址(有時稱為MAC位址),如各種標準中所規定:
- **EUI-48**通常用作根據IEEE Std 802的硬體介面位址(MAC-48)。
- **EUI-64**可以用作IEEE Std 1588的時鐘標識符。
- IEEE Std 802還指定**EUI-64**用於64位元全局唯一網路位址
- 當**EUI**用作MAC位址,初始位元組(Octet 0)的兩個最低有效位元用於特殊目的。
- Octet 0的最低有效位元(`I/G`位元)表示獨立位址(`I/G=0`)或群組位址(`I/G=1`)
- Octet 0的第二個最低有效位元(`U/L`位元)表示位址的通用管理(`U/L=0`)或本地管理(`U/L=1`)。
- 被通用管理的位址旨在成為全球唯一的位址。
- 在通過擴展**OUI**創建的**EUI**中,**OUI**是初始(最高有效)的3個位元組。
- 在通過擴展**OUI-36**創建的**EUI**中,**OUI-36**初始(最高有效)的4個半位元組。
- 由於**OUI**和**OUI-36**的`X`位元等於0,因此創建的**EUI**具有`U/L=0`,並且當用作MAC位址時,是一個通用管理位址。
- 由於**OUI**和**OUI-36**的`M`位元等於0,因此創建的**EUI**具有`I/G=0`,並且當用作MAC位址時,是一個獨立位址。
- **OUI**或**OUI-36**的受讓人設置`M`位元為1來分配群組MAC位址(`I/G=1`)。
### ELI
- 擴展本地標識符 (Extended Local Identifier, ELI)是通過來自**CID**的串聯創建的,**CID**是初始(最高有效)的3個位元組**ELI-48**是48位元,**ELI-64**是64位元。
- **CID**的`X`位元等於1,**ELI**具有`U/L=1`,因此當用作MAC地址時,是本地位址。
- 本地位址不是全局唯一的,網絡管理員負責確保分配的任何本地位址在使用範圍內是唯一的。
- 從IEEE Std 802c-2017開始,規定了結構化本地位址規劃(Structured Local Address Plan, SLAP),它描述了**ELI**在一個象限中的使用。
- 本地MAC位址空間,基於**CID**的`Y`位元和`Z`位元的指定值。
- 在本地MAC位址空間的其他象限中,SLAP描述了不基於**CID**的標準分配標識符(Standard Assigned Identifier, SAI)和管理分配標識符(Administratively Assigned Identifiers,AAI)。
- **CID**的`M`位元等於0,**ELI**具有`U/L=0`,因此當用作MAC地址時,是獨立位址。
- **CID**的受讓人可以通過將`M`位元設置為1來分配本地群組MAC地址(`I/G=1`)。
## IEEE RA 標識符的分配
IEEE RA以三種不同的大小分配EUI區塊:
- **MA-L**分配區塊提供$2^{24}$個**EUI-48**標識符和$2^{40}$個**EUI-64**標識符。
- 用**OUI**為分配基礎
- **MA-M**分配區塊塊提供$2^{20}$個**EUI-48**標識符和$2^{36}$個**EUI-64**標識符。
- 用**OUI-36**或**CID**為分配基礎
- **MA-S**分配區塊塊提供$2^{12}$個**EUI48**標識符和$2^{28}$個**EUI-64**標識符。
- 用**OUI-36**為分配基礎
- **CID**是一個唯一的24位元標識符,可用於標識公司,組織等
- CID不得用於創建**EUI-48**或**EUI-64**。
- 對於尋求唯一24位元標識符的實體,**CID**可以與**MA-M**或**MA-S**分配互補,因為這些分配不包括**OUI**。
|IEE RA分配|分配位元數|**EUI-48**區塊大小|**EUI-64**區塊大小|包括**OUI**或**CID**|
|:-:|:-:|:-:|:-:|:-:|
|MA-L|24|$2^{24}$|$2^{40}$|OUI-24|
|MA-M|28|$2^{20}$|$2^{36}$|none|
|MA-S|26|$2^{12}$|$2^{28}$|OUI-36|
|CID|24|0|0|CID|
### EUI結構與表徵
EUI-48的結構及其與IEEE RA分配的關係。
```graphviz
digraph Struct_EUI_48 {
tbl [
shape=plaintext
label=<
<table cellborder='1' cellspacing='0' CellPadding="6">
<tr>
<td>Octet id</td>
<td colspan="2">0</td>
<td colspan="2">1</td>
<td colspan="2">2</td>
<td colspan="2">3</td>
<td colspan="2">4</td>
<td colspan="2">5</td>
</tr>
<tr>
<td>MA-L</td>
<td colspan="6">OUI-24</td>
<td colspan="6">24-bit extension</td>
</tr>
<tr>
<td>MA-M</td>
<td colspan="7">28-bit MA-M base</td>
<td colspan="5">20-bit extension</td>
</tr>
<tr>
<td>MA-S</td>
<td colspan="9">OUI-36</td>
<td colspan="3">12-bit extension</td>
</tr>
<tr>
<td>Hex</td>
<td colspan="2">AC</td>
<td colspan="2">DE</td>
<td colspan="2">48</td>
<td colspan="2">23</td>
<td colspan="2">45</td>
<td colspan="2">67</td>
</tr>
<tr>
<td>Binary</td>
<td>1010</td>
<td>1100</td>
<td>1101</td>
<td>1110</td>
<td>0100</td>
<td>1000</td>
<td>0010</td>
<td>0011</td>
<td>0100</td>
<td>0101</td>
<td>0110</td>
<td>0111</td>
</tr>
</table>
>];
}
```
EUI-64的結構及其與IEEE RA分配的關係。
```graphviz
digraph Struct_EUI_64 {
tbl [
shape=plaintext
label=<
<table cellborder='1' cellspacing='0' CellPadding="5">
<tr>
<td>Octet id</td>
<td colspan="2">0</td>
<td colspan="2">1</td>
<td colspan="2">2</td>
<td colspan="2">3</td>
<td colspan="2">4</td>
<td colspan="2">5</td>
<td colspan="2">6</td>
<td colspan="2">7</td>
</tr>
<tr>
<td>MA-L</td>
<td colspan="6">OUI-24</td>
<td colspan="10">40-bit extension</td>
</tr>
<tr>
<td>MA-M</td>
<td colspan="7">28-bit MA-M base</td>
<td colspan="9">36-bit extension</td>
</tr>
<tr>
<td>MA-S</td>
<td colspan="9">OUI-36</td>
<td colspan="7">28-bit extension</td>
</tr>
<tr>
<td>Hex</td>
<td colspan="2">AC</td>
<td colspan="2">DE</td>
<td colspan="2">48</td>
<td colspan="2">23</td>
<td colspan="2">45</td>
<td colspan="2">67</td>
<td colspan="2">01</td>
<td colspan="2">9F</td>
</tr>
<tr>
<td>Binary</td>
<td>1010</td>
<td>1100</td>
<td>1101</td>
<td>1110</td>
<td>0100</td>
<td>1000</td>
<td>0010</td>
<td>0011</td>
<td>0100</td>
<td>0101</td>
<td>0110</td>
<td>0111</td>
<td>0000</td>
<td>0001</td>
<td>1001</td>
<td>1111</td>
</tr>
</table>
>];
}
```
### EUI 位元順序
雖然EUI位元組的順序和位元組內的位元是特定的和固定的,但是它們的傳輸順序可以根據協議而變化。通常,基於位元組的傳輸以位元組標識符的升序發送,從位元組0開始。有關位元傳輸順序的更多信息可在相關標準中獲得,例如IEEE Std 802。
鑑於位元順序和位元組定位可能混淆,應用程序和協議必須明確指定標識符值(表示為十六進制數字)到適用的寄存器或位元組和位元序列的映射。為確保清晰,每個映射應該是獨立的。
### 未分配和NULL EUI值
許多應用程序發現定義不同的空標識符很有用,通常表明缺少有效的EUI-48或EUI-64值。 例如,空值可能是集成電路寄存器的上電狀態,直到硬件或固件使用有效的EUI初始化寄存器。 類似地,在將另一設備或對象的EUI放置在協議字段中的情況下,可以使用空值直到學習要放置在協議字段中的有效EUI值。 管理信息庫參數也可能面臨類似的初始值問題,其使用方便的空值。
- 全零EUI-48值(00-00-00-00-00-00)和EUI-64值(00-00-00-00-00-00-00-00),雖然分配給一個組織, 該受讓人未曾也不會將其用作EUI。(它們可被視為分配給IEEE註冊機構。)
- 全1位48位值(FF-FF-FF-FF-FFFF)和64位值(FF-FF-FF-FF-FF-FF-FF-FF)是指示網絡上所有站的IEEE 802多播(組)MAC地址。這些全值的值不是有效的EUI。
- 建議的空值為全1位值,分別為未知EUI-48和EUI-64值的默認值。
- 全零值不得用作標識符。