扩展唯一标识符(EUI)、组织唯一标识符(OUI)和公司ID(CID)的使用指南
本教程涵盖了由IEEE注册机构(IEEE RA)分配的组织标识符以及基于它们的扩展标识符。
它涵盖了与受让人和标准开发人员相关的标识符格式、分配、指导方针和政策。
本教程包括与组织标识符(如组织唯一标识符(OUI)和公司ID(CID))和扩展标识符(如扩展唯一标识符(EUI)和扩展本地标识符(ELI))相关的信息。
IEEE管理的组织标识符:OUI和CID
IEEE注册机构(IEEE Registration Authority, IEEE RA)为组织分配全球唯一标识符。分别是24位组织唯一标识符(Organizationally Unique Identifier, OUI)和24位公司ID(Company ID, CID),这两种标识符彼此相关,除了X位用来区分,其余位完全相同。每个分配的OUI和CID都是唯一的。
X 位 | 标识符 |
---|---|
0 | OUI |
1 | CID |
OUI或CID可用于识别公司、组织、实体、制造商、供应商等。
IEEE注册机构还识别并分配36位OUI-36作为组织的全球唯一标识符。分配的OUI-36的前24位不与任何已分配的OUI或CID重复。
组织唯一标识符 Organizationally Unique Identifier
OUI是一个24位(三个字节)序列。字节0是初始(最重要)字节。字节0的最低有效位和第二最低有效位分别被指定为M位和X位。在OUI中,M和X位都具有值0。
分配给早期以太网实施者的大约18个组织标识符(在IEEE Std 802.3-1985批准之前进行的一些BlockID分配)的X位等于1。BlockID与取代它的OUI相同,也是24位,用来作为 $2^{24}$ 个48位MAC地址块的基础。BlockID的分配记录在MA-L(OUI)注册表中。
OUI能够用6个十六进制数的格式来表示。或者以“-”连接的16进制的字节表示,IEEE RA将使用这种方法作为OUI的十六进制表示。
下表展示了基于十六进制数格式ACDE48
和16进制的字节表示AC-DE-48
:
OUI36
OUI-36是36位(4.5个字节)序列。与OUI相同的是,字节0仍然是最重要的,同时最低有效位和第二最低有效位分别被指定为M位和X位。同时在OUI-36中,M和X位均为0。
在需要36位组织标识符或36位协议标识符的情况下,可以使用OUI-36分配。例如,一些协议指定36位标识符来标识组织或该组织指定的对象。OUI的受让人可以通过在OUT尾部添加12位来创建OUI-36。如果OUI-36的受让人需要一个唯一的24位组织标识符,建议进行CID分配。
OUI-36可以表示为9个十六进制数字的16进制数。或者,它可以使用IEEE RA十六进制(十六进制)表示法表示为由“-”分隔的字节。下表显示了OUI-36的一个示例,其十六进制形式为“ACDE48234”,十六进制表示为“AC-DE-48-23-4”。
IEEE RA通过将12位拼接到24位IEEE保留的基本OUI来创建OUI-36,将这12位连接在字节2的最低有效位之后。基本OUI不会被分配给其他组织,也不会被用作OUI。OUI36的受让人不得截断OUI-36用作OUI,因为IEEE RA将使用基本OUI将OUI-36值分配给多个组织。
不应就基本OUI做出任何推定。例如,不应假定分配给单个组织的多个OUI-36任务将共享一个共同的基本OUI。
公司ID Company ID
CID是一个24位(三字节)序列。CID的结构如下图所示。字节0是初始(最重要)字节。字节0的四个最低有效位分别指定为M位、X位、Y位和Z位。在CID中,M、X、Y、Z位分别具有值0、1、0和1。
CID可以表示为6个16进制数。或者,它可以用IEEE RA十六进制(十六进制)表示法中由“-”分隔的字节表示。下表显示了一个CID示例,其形式为16进制“AADE48”,十六进制表示为“AA-DE-48”
扩展标识符 Extended Identifiers
除了用作全球唯一的组织标识符外,OUI、OUI36或CID还可以通过连接额外的区分位用作扩展标识符的基础,包括协议标识符和上下文相关标识符。这些扩展标识符可能是全局唯一的(例如EUI-48和EUI-64),也可能仅在使用它们的上下文中是唯一的。详情如下。
扩展唯一标识符 Extended Unique Identifiers
扩展唯一标识符(EUI)可以是48位(EUI-48)或64位(EUI-64)。
除了一些关于协议标识符的例外,每个EUI都应该是全局唯一的,并且绑定到需要唯一标识的硬件设备实例或其他对象。
根据各种标准的规定,EUI-48和EUI-64标识符最常用作全局唯一网络地址(有时称为MAC地址)。例如,根据IEEE标准802,EUI48通常用作硬件接口的地址,历史上使用的名称是“MAC-48”。根据IEEE标准1588, EUI64可以用作时钟的标识符。根据IEEE标准802规定64位的全局唯一网络地址使用EUI64。
当EUI被被用作MAC地址时(例如,IEEE802网络地址),字节0的两个最低有效位具有特殊作用。字节0的最低有效位(I/G位)表示单播地址(I/G=0)或组播地址(I/G=1)。字节0的第2最低有效位(U/L位)表示地址是全局(U/L=0)或本地(U/L=1)管理。全局管理的地址是全局唯一的。
通过扩展OUI创建的EUI,OUI是开始的3个字节。通过扩展OUI-36创建的EUI,OUI-36是开始的4.5个字节。
由于IEEE RA分配的OUI和OUI-36的X位为0,因此从该OUI和OUI-36扩展创建的EUI具有U/L位为0,当用作MAC地址时表示为一个全局地址。
同理,IEEE RA分配的OUI和OUI-36的M位为0,因此从该OUI和OUI-36进行扩展创建的EUI具有I/G位为0,当用作MAC地址时表示为单播地址。
OUI或OUI-36的受让人被独家授权,允许修改所分配的OUI或OUI-36的M位为1,并通过扩展经过修改的OUI或OUI-36来分配I/G位为1的组MAC地址。但是这些地址不是EUI并且不能全局标识硬件,即使U/L位为0(这是因为IEEE RA分配的OUI已经指定M位为0,修改之后不属于OUI,因此也不属于EUI)。
扩展本地标识符 Extended Local Identifier (ELI)
扩展本地标识符(ELI)是通过扩展CID创建的,CID作为开始的3个字节。ELI-48指的是48位的ELI,ELI-64则指的是64位ELI。
由于IEEE RA分配的CID的X位为1,因此通过扩展CID创建的ELI的U/L位为1因此当被用作MAC地址时为本地地址。本地地址不是全局唯一的,网络管理员仅需要确保本地地址在路由器之内的唯一性(ELI可以被用作本地MAC地址,也可以做其他用途)。
IEEE标准802规定了结构化本地地址计划(Structure Local Address Plan, SLAP),该计划描述了在基于CID的Y和Z位划分的本地MAC地址空间的一个象限中的ELI使用方法。在本地MAC地址空间的其他象限中,SLAP描述了不基于CID的标准分配标识符(Standard Assigned Identifiers, SAIs)和管理分配标识符(Administratively Assigned Identifiers AAIs)的使用(这段话的含义是基于CID扩展生成的本地MAC地址占据了本地MAC地址空间的一个象限,而本地MAC地址空间具有4个象限,其他本地MAC地址空间象限和CID无关,在这些象限中可以使用SAI和AAI等和CID无关的方式分配本地MAC地址)。
由于IEEE RA分配的所有CID的M位为0,因此从分配的CID扩展而来的ELI的I/G位为0,因此ELI被用作MAC地址时为单播地址。
CID的受让人可以通过修改CID的M位为1,然后进行扩展,来分配本地组MAC地址。扩展之后的标识符仍属于ELI(这是因为IEEE RA分配CID时并没有指定M位必须为0)。
IEEE RA的标识符分配
一个分配的EUI(扩展唯一标识符)块可以被视为从一个基础编号(例如OUI,组织唯一标识符)通过连接一个扩展标识符而形成的数字序列。它也可以被描述为一个连续的EUI-48或EUI-64范围。
2014年1月1日之后,IEEE RA以三种不同的大小分配EUI块。
- MA-L块提供 $2^{24}$ 个EUI-48标识符和 $2^{40}$ 个EUI-64标识符,等价于之前的OUI分配,会分配24位的OUI给申请者。
- MA-M块提供 $2^{20}$ 个EUI-48标识符和 $2^{36}$ 个EUI-64标识符,不在分配OUI给申请者。
- MA-S块提供 $2^{12}$ 个EUI-48标识符和 $2^{28}$ 个EUI-64标识符,等同于之前的OUI-36的分配。
这也就是说细化了分配度量。
MA-L分配包括OUI的分配,OUI是分配的EUI-48和EUI-64扩展标识符块的基础。MA-L相当于2014年1月1日之前进行的OUI分配,其中还包括OUI和相关EUI-48和EUI-64标识符块的分配。
MA-M不包括OUI的分配。MA-M的受让人可以创建OUI-36(需要自己补齐缺少的8位)作为MA-M分配块中地址的前36位。如果MA-M的受让人需要一个唯一的24位组织标识符,建议进行CID分配。分配的MA-M块的前24位是分配给IEEE的OUI,不会被重新分配。
MA-S包括OUI-36的分配,OUI-36是分配的EUI-48和EUI-64扩展标识符块的基础。MA-S不包括24位OUI的分配。MA-S块的前24位是分配给IEEE的OUI,不会被重新分配。
以上3中分配方式均于2024年1月1日生效。
CID分配了一个唯一的24位标识符,可用于标识公司、组织等。CID分配不包括任何EUI-48或EUI-64分配,CID不得用于创建EUI-48和EUI-64。对于寻求唯一24位标识符的实体,CID可以补充MA-M或MA-S分配,因为这些分配不包括OUI。
IEEE RA分配方式 | IEEE 分配的位数 | 全局唯一EUI-48标识符的块大小 | 全局唯一EUI-64标识符的块大小 | 是否包含OUI或CID |
---|---|---|---|---|
MA-L(Mac Address-Large) | 24 | $2^{24}$ | $2^{40}$ | OUI-24 |
MA-M(Mac Address-Medium) | 28 | $2^{20}$ | $2^{36}$ | 否 |
MA-S(Mac Address-Small) | 36 | $2^{12}$ | $2^{28}$ | OUI-36 |
CID(Company ID) | 24 | 0 | 0 | CID |
IEEE 标识符的受让人负责在其分配的块中管理扩展标识符。IEEE RA对扩展标识符的分配没有控制权,并且对使用IEEE分配的标识符(例如,重复的上下文相关标识符、EUI-48或EUI-64值)的组织分配重复的扩展标识符不承担任何责任。
上表中IEEE管理的标识符的分配通常是公开的,可以从IEEE RA获得,以便感兴趣的用户可以识别EUI-48、EUI-64、OUI、OUI-36或CID4的注册所有者。然而,对于选择使用私人列表选项的受让人,IEEE分配的信息是公开的,但受让人的身份信息不会公开。
EUI结构和表示
下表说明了EUI-48的结构及其与IEEE RA分配的关系。
EUI-48是一个由六个字节组成的字符串,在上表中从字节0(初始和最高有效)开始到字节5(最终和最低有效)标记。在最后两行中包括一个EUI-48示例,其十六进制形式为“ACDE48234567”,十六进制表示为“AC-DE-48-23-45-67”。
注意EUI-48可以以IEEE RA十六进制(十六进制)形式表示,其中字节由连字符分隔,或者作为没有连字符的纯16进制数字表示。它也可以表示为二进制数或序列,如上表所示。
上表说明了EUI-48的生成方式:
- 使用OUI AC-DE-48的MA-L分配,以及扩展标识符23-45-67的实体分配;
- 具有基础AC-DE48-2的MA-M分配和3-45-67的扩展标识符的实体分配;
- 使用OUI-36 AC-DE-48-23-4的MA-S分配和扩展标识符5-67的实体分配。
与之类似,EUI-64也表示为八个字节的字符串,从字节0(初始和最高有效)到字节7(最终和最低有效)。如下表所示,使用十六进制形式“ACDE48234567019F”和十六进制表示“AC-DE-48-23-45-67-01-9F”的EUI-64示例。
EUI位序
虽然EUI字节的顺序以及字节内的比特是特定和固定的,但它们的传输顺序可以根据协议而变化。
一些块码编码多个字节。
- 通常,基于字节的传输以字节标识符的升序传输,从字节0开始(这里指的是网络字节序,等同于大端字节序,地位地址存储高位字节)。
- 数据的位串行编码在字节内的位传输顺序上可能不同(指的是单个字节内的位传输不同,比如UART传输方式是低位先行,bit0到bit7,SPI通信是高位先行,从bit7到bit0)。
- 内存中地址存储的顺序也可能不同,比如大端(低地址存储高位字节,以上面的例子,存储方式为ACDE48234567019F),小端(低地址存储低位字节9F0167452348DEAC)。
有关比特传输顺序的更多信息,请参阅IEEE Std 802等相关标准。
鉴于位顺序和字节序可能存在混淆,应用程序和协议必须明确指定标识符值(表示为十六进制数字)到适用寄存器或字节和位序列的映射。为了确保清晰,每个映射应该是独立的。如果认为有必要交叉引用其他文件,应交叉引用具体文件和页码,以便不熟悉的读者能够很容易地找到来源。
为了避免现有标准的更改,工作组也可以提供有关其标准中标识符的任何使用的教程,并发布在IEEE RA网站上。
未分配和NULL EUI值
在某些应用中,定义一个明确的空标识符(NULL EUI)是非常有用的,通常用于表示缺少有效的EUI-48或EUI-64值。例如,在集成电路的寄存器中,电源开启状态可能会设置为全0或全1,直到硬件或固件初始化寄存器并赋予其一个有效的EUI值
全0和全1的EUI值
- 全0的EUI-48:
00:00:00:00:00:00
- 全0的EUI-64:
00:00:00:00:00:00:00:00
- 全1的EUI-48:
FF:FF:FF:FF:FF:FF
- 全1的EUI-64:
FF:FF:FF:FF:FF:FF:FF:FF
这些值通常用于表示未分配或无效的标识符,而不是用于实际设备的标识。例如,全1的MAC地址(EUI-48)通常用于广播地址,表示发送给网络中的所有设备。
使用场景:
- 初始化状态:在设备启动时,寄存器可能会被设置为全0或全1,直到被赋予有效的EUI值。
- 错误处理:在某些协议中,使用全0或全1的EUI值可以帮助检测和处理错误情况。
这些空标识符的定义和使用有助于确保系统在初始化和错误处理过程中能够正确识别和处理无效或未分配的EUI值。
推荐使用全1的EUI作为默认空值,这样可以避免识别时与全0的OUI产生混淆。全0的OUI是有效的,可以被分配给组织。
正确使用EUI
EUI用于需要固定大小的全局唯一标识符的应用程序。
除某些情况(如协议标识符)外,受让人将EUI-48或EUI-64与单个可识别对象(如网络接口)相关联。根据设备支持的功能,它可能会使用多个标识符。例如,智能手机可以使用EUI-48作为802.11/Wi-Fi®MAC地址,并为蓝牙®接口使用第二个标识符。以太网连接设备可以有一个 EUI-48 MAC 地址和一个唯一标识 802.1AS 时钟(即“clockIdentity”)的 EUI-64。
使用EUI-64代替EUI-48,以避免在高容量,特别是非网络应用程序中过度消耗OUI值。由于消耗完所有EUI-64标识符的可能性极小,因此IEEE注册管理机构对其在标准中的使用限制很少。除非受向后兼容性约束,否则优先使用EUI-64而不是EUI-48。
术语EUI-48和EUI-64由IEEE注册商标。允许组织出于商业目的有限地使用这些术语。如果此类使用是对标准中指定的特征或功能的标识,或用于声称符合IEEE标准,则可以在没有IEEE明确批准的情况下使用,但这些术语的其他使用必须经过IEEE RAC的审查和批准。
当在IEEE标准或标准草案的背景下使用EUI时,IEEE RAC应审查草案的正确性和清晰度。当非IEEE标准中引用EUI时,标准开发人员应联系IEEE RAC以审查正确使用。
非重叠分配
非重叠分配的主要目的是为了避免在不同应用中使用相同的标识符,从而减少管理上的复杂性和潜在的错误。
鼓励组织不要将相同的标识符分配给多个组织用于不同的终端应用。此建议的目的是减少由于在每个组织内管理多个上下文相关地址空间的复杂性而引入的可能错误。
例如,如果一个EUI-48值已经用于标识某个硬件型号,那么同样的值不应该再用于标识I/O驱动程序接口或语言代码。同样地,EUI-64值也应该在不同的应用中保持唯一。
IEEE RA减少未使用EUI-48数量的政策
IEEE注册管理机构(IEEE RA)实施了多项政策,以减少未使用的EUI-48标识符的数量。这些政策旨在确保标识符空间的高效使用并防止浪费。
- 分配较小的块:IEEE RA不再分配包含多达1600万个地址的大块EUI-48标识符,而是分配较小的块,如MA-L(大MAC地址块)、MA-M(中MAC地址块)和MA-S(小MAC地址块)。这种方法有助于更好地利用地址空间。
- 鼓励高效使用:鼓励组织高效使用分配的标识符,避免将相同的标识符分配给多个应用。这减少了未使用或浪费标识符的可能性。
- 非重叠分配:IEEE RA建议进行非重叠分配,即不应将相同的标识符用于不同的终端应用。这种策略有助于减少错误并更有效地管理地址空间。
这些政策旨在保持EUI-48标识符的长期使用和高效利用,确保地址空间得到最佳和可持续的使用。
EUI-48到EUI-64的映射
不推荐将EUI-48映射到EUI-64。但是由于历史原因还是介绍了映射关系。
将分配了MA-S/OUI-36或MA-M的EUI-48映射到EUI-64可能会创建与分配了不同MA-S/OUI-36或MA-M的EUI-64重复的标识符。IEEE 注册管理机构(IEEE RA)已采取适当措施来减轻基于此映射创建重复标识符的风险,但为了保护EUI-64标识符的完整性,此映射已被弃用。
一些标准描述了如何将一个EUI-48映射为EUI-64,如下所示:
- 将EUI-48标记为eui48[0]到eui48[5]。
- 将EUI-64标记为eui64[0]到eui64[7]。
- 映射关系如下:
EUI-64 | EUI-48 |
---|---|
eui64[0] | eui48[0] |
eui64[1] | eui48[1] |
eui64[2] | eui48[2] |
eui64[3] | FF |
eui64[4] | FE or FF |
eui64[5] | eui48[3] |
eui64[6] | eui48[4] |
eui64[7] | eui48[5] |
话句话说,EUI-64是在EUI-48的字节2和字节3之间插入FFFE或FFFF生成的。 |
基于EUI的其他全球标识符
某些格式的全球通用名称(World Wide Names, WWN)源自EUI-48或EUI-64。WWN在SCSI和相关协议中用作磁盘和端点地址。
IETF RFC 4291附录A中定义了从EUI-64派生的IPv6地址。另请参阅IETF RFC 2460、5952和6052。
从EUI-64地址和OUI导出的UUID寻址在ITU-T X.667的IETF RFC 4122中定义。
上下文相关标识符 Context Independent Identifier
正如OUI被扩展以创建EUI-48和EUI-64标识符,或者CID可以被扩展以生成本地管理的MAC地址一样,扩展标识符也可以从OUI或CID分配中创建。这种扩展标识符,称为上下文相关标识符,不一定是全局唯一的,而只在明确指定的上下文中是唯一的。
上下文相关标识符(CDI)是基于OUI、CID或OUI-36的扩展标识符,通常在标准中指定,并附加规范,以允许对标识符的明确解释和对其他数据的解析。下面是一些示例:
- 在标准中定义上下文相关标识符CID的所有字段。例如,使用OUI或CID来标识硬件制造商,并使用其他字段标识硬件的型号和版本。如果定义得当,这样的标识符在标准的上下文中是唯一的。
- 在标准中定义特定于供应商的管理信息扩展,但允许唯一标识符的受让人指定其他字段。这个扩展标识符在已定义的管理信息库的上下文中是唯一的。简单来说,就是在一个标准框架内,供应商可以添加自己特定的管理信息,并且这些信息的唯一标识符在特定的管理信息库中是独一无二的。
- 可以使用 OUI/CID 和标准中定义的固定字段识别供应商特定的协议,以便识别来自同一供应商的多个协议;或者使用 OUI/CID 指示在 OUI/CID 之后解析数据的规则集。
使用上下文相关标识符的限制
除非有合理的理由需要兼容旧的22位公司标识定义,否则在创建上下文相关的标识符时,组织唯一标识符(OUI)会作为一个24位的字段使用。在这种情况下,CID应作为OUI的有效替代方案。上下文相关标识符的规范应允许使用OUI或CID作为上下文相关标识符的基础。
引用文档
- 原文作者:生如夏花
- 原文链接:https://blduan.top/post/%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE/%E6%89%A9%E5%B1%95%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E7%AC%A6eui%E7%BB%84%E7%BB%87%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E7%AC%A6oui%E5%92%8C%E5%85%AC%E5%8F%B8idcid%E7%9A%84%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。