---
# System prepended metadata

title: 'IEEE EUI, OUI, and CID'
tags: [IEEE]

---

---
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值的默認值。
- 全零值不得用作標識符。
