绪论
随着微处理器的推广和硅芯片价格的下降,基于微处理器的计算机迅速得到普及。很快,人们将计算机与多处理器系统相连接,通过并行计算以便更快地解决问题。接着是建立一个本地网,以实现资源共享以及有效利用多处理器并行处理的优势。
应用最广泛的本地局域网络(LAN)技术是二十世纪七十年代初期Xerox发明的以太网。1983年,电气和电子工程师协会(IEEE)发布了以太网技术的第一个IEEE标准。该标准规定数据按照帧格式传输,每帧都含有一个目标文件和源文件的中介存取控制(MAC)地址。很显然,要使网络发挥作用,这些地址就必须是唯一的。这就要求有一个全球公认的中心组织为感兴趣的成员分配可利用的数字。
1986年,在P802 (LAN/MAN)标准组的基础上成立了IEEE注册管理局,负责注册有组织的唯一标识符(OUI)。OUI或“company_id”是根据不同标准分配的、全球唯一的24位码。该数字用来生成能够唯一识别LAN位置的48位通用LAN MAC地址、以及用来生成识别公用网或专用网协议的协议标识符。它还能用来识别硬件供应商和I/O软件接口的结构。相关的标准包括CSMA/CD、Token Bus、Token Ring、FDDI和Fibre Channel。
OUI只决定了地址或标识符的一部分。在IEEE已经注册了一个OUI的公司负责正确地分配标识符的其余字节。表面上看这是一件容易的事情,但其中也有一些棘手问题:
- 保持标识符的唯一性(任何数字不能重复)
- 经济地使用可利用的数字范围
- 获取唯一的、装载到网络接口控制器中的数字
为保证唯一性需要有一个中央记录系统跟踪迄今为止用过的所有数字。因为IEEE只有在所有数字的90%以上用于产品后,才会给制造商分配另一个OUI或company_id,所以,一种明智的选择是把可利用的数字划分为几个区域,以便识别同一制造商生产的不同类型的网络产品。但这样做也会带来区域之间出现数字重迭的风险,与保持标识符唯一性的需求相悖。
一旦唯一性的问题解决了,就必须把数字装载到网络控制器。这就要求每个单元有一个不同的数字编码被写入非易失(NV)存储器内,它可以是专用芯片、也可以是微控制器或PLD中一些未用过的寄存器。对于传统的程序设计而言,这意味着要为每个芯片装载一个新的数据模式。这对于原型设计之后的规模生产来说是不可接受的。
随着二十世纪九十年代初期1-Wire芯片的引入,尤其是用户定制产品的出现,Dallas Semiconductor (现在是Maxim Integrated Products的子公司)定义并建立了一个内部序列号跟踪系统,完善地解决所有上述问题。本应用笔记解释了如何利用通用或专用1-Wire器件的优势创建并管理唯一的标识符。
后续部分中的范例基于IEEE网站上的信息,特别是下列文件:
- Guidelines for Use Of 24-Bit OUI/company_id Identifiers Within 48-Bit Global Identifier (EUI-48) and 64-Bit Global Identifier (EUI-64) When Defined By New Applications (2001年5月31日版)
- Guidelines for Use Of A 48-Bit Global Identifier (EUI-48) (2001年5月31日版)
- Guidelines For 64-Bit Global Identifier (EUI-64) Registration Authority (2001年5月31日版)
- New identifier formats based on IEEE registration (2001年1月16日版)
- Tutorial: Use of the IEEE Registration Authority assigned “company_id” with the ANSI X3.230 FC-PH Fibre Channel specification and its extensions (1997年2月24日版)
这些文件中的术语并不统一,因此我们编译了一个术语表(表1)来解释文章中出现的各种技术术语。下面重新画出了所参考的IEEE文件中的原文描述、并用不同颜色表示以区分不同目的字段、突出其共性。字节的计数与IEEE文件中采样的方式相同。尽管本应用笔记中的范例基于IEEE标准,但其方法对那些需要一个唯一字段(“序列号”)与一些固定数据字节相组合、或只是一个唯一字段的应用都有效。
表1. 术语表
文档中用到的术语 | 文档 | 说明 |
有组织的唯一标识符OUI | MAC-48 | 24位标识符,由IEEE注册管理委员会分配给公司。与company_id相同。 |
company_id | EUI-48, EUI-64, PC-PH | 24位标识符,由IEEE注册管理委员会分配给公司。与OUI相同。 |
24位扩展标识符 | MAC-48 | 由注册了OUI的公司分配和管理的唯一24位数字。 |
24位扩展标识符 | EUI-48 | 由注册了company_id的公司分配和管理的唯一24位数字。 |
40位扩展标识符 | EUI-64 | 由注册了company_id的公司分配和管理的唯一40位数字。 |
MAC-48标识符(图1) | MAC-48 | LAN 的48位的MAC (网络地址) 。该值中高24位是OUI,低24位是扩展标识符。 |
EUI-48全球标识符(图1) | EUI-48 | 用于识别特定设计的48位标识符,与特定硬件标识相对照。该值中高24位是company_id,低24位是扩展标识符。 |
EUI-64全球标识符(图2) | EUI-64 | 用于识别产品的每个特定硬件的64位标识符,与应用无关。其中高24位是company_id,低40位是扩展标识符。 |
压缩后的MAC-48值 | EUI-64 | 将MAC-48标识符“伪装”为EUI-64标识符,作为EUI-64全球标识符进行传输。40位扩展标识符的高16位置为FFFFh。 |
压缩后的EUI-48值 | EUI-64 | 将EUI-48标识符“伪装”为EUI-64标识符,作为EUI-64全球标识符进行传输。40位扩展标识符的高16位置为FFFEh。 |
全球范围命名 | FC-PH | 基于IEEE company_id的64位或者128位的标识符。 |
NAA值 | FC-PH | 全球范围命名的高4位,表示FC-PH格式的名称,它由后续的60位、也可能存在第二个64位部分组成。 |
ULA字节 | FC-PH | 通用LAN MAC地址,等效于MAC-48地址。ULA的第0到第2字节对应于company_id/OUI;而ULA第3到第5字节与扩展标识符相对应。 |
12位供应商指定字段 | FC-PH | ULA字节的扩展,用于区分节点的不同端口。 |
36位供应商指定标识符 | FC-PH | 唯一表示节点、N_Port、F_Port、Fabric或其它对象的标识符。 |
64位供应商指定标识符扩展 | FC-PH | 节点产生的子标识符,用于识别与对象有关的所有Fibre Channel。 |
IEEE 48位标识符格式(图3) | FC-PH | 将EUI-48全球标识符“伪装”为64位FC-PH全球范围命名。 NAA值1h后接000h, 置于EUI-48标识符之前。 |
IEEE扩展标识符格式(图4) | FC-PH | 基于六个ULA字节和12位供应商指定字段的64位FC-PH全球范围命名。NAA值2h后接供应商指定字段,置于ULA第0到第5字节之前。 |
IEEE注册名格式(图5) | FC-PH | 64位FC-PH全球范围命名。NAA值5h后接company_id和36位供应商指定字段。 |
IEEE注册扩展名格式(图6) | FC-PH | 128位FC-PH全球范围命名。NAA值6h后接company_id、36位供应商指定字段和64位供应商指定扩展标识符。 |
MAC-48 (图1)是IEEE标准最早期的标识符。它由3个字节的OUI和3个字节的扩展标识符组成,对任意给定的OUI ,该标识符都必须是唯一的。EUI-48标识符与MAC-48在技术上是相同的。只是EUI-48中识别公司的3个字节称为“company_id”。OUI 的实际值与company_id相同,顺序与定义存储器映射标识符的ISO/IEC存储器寻址顺序相同。该标识符的最高有效字节存储在低位地址单元。
图1. MAC-48标识符/EUI-48全球标识符格式
虽然EUI-48标识符的数量很多,但仍是有限的。正是由于这个原因,建立了EUI-64。如图2所示,扩展标识符扩展到了40位,可利用数字扩展到了1677.7万(相当于24位)乘以65536。对字节可寻址的媒介而言,其顺序与各字节相对应的地址相同。该标识符的最高有效字节存储在低位地址单元。
图2. EUI-64全球标识符格式
为了能够将48位标识符移植到基于全球唯一的64位标识符OUI/company_id的单一模式,IEEE规定制造商扩展标识符的前四个数字不能是FFFFh或FFFEh 。这些保留的代码用于把MAC-48和EUI-48标识符当作EUI-64标识符压缩和传输。代码FFFFh表明MAC-48标识符;FFFEh表明压缩后的EUI-48标识符。
介绍Fibre Channel时,在ANSI X3.230-1994和ANSI X3T11文件中定义了四个附加的64位标识符。对FC-PH标识符格式来说,“顺序”没有明确的定义。格式也没有指定有效位或字节;而是指定了位数。在下面的Fibre Channel格式描述中,第0位是最低有效位;而第63位是最高有效位。
在MAC-48标识符前加入1000h可以导出FC-PH IEEE 48位标识符的格式,如图3所示。只要以1000h打头的company_id用的不是EUI-64格式,它就是安全的。否则,无法从EUI-64标识符区别出FC-PH IEEE 48位标识符。用ULA可取代company_id和扩展标识符,它们在技术上并没有太大差别。
图3. FC-PH IEEE 48位标识符格式
FC-PH IEEE扩展标识符格式(图4)与FC-PH IEEE 48位标识符非常相似。这些标识符不是以代码1000h开始,而是以‘2’打头,后面跟随3个数字的VSID字段和一个供应商指定标识符。因为以‘2’打头的company_id不分配,因此不会造成混乱。从技术上讲,VSID可看作是对扩展标识符的扩展,使用户可以控制36位数据,比EUI-64标识符格式少四位。
图4. FC-PH IEEE扩展标识符格式
按照FC-PH IEEE注册名格式(图5),12位VSID是连续的36位供应商指定标识符的一部分。因此,company_id前移了12位。这类标识符以‘5’打头,因为以‘5’打头的company_id不被分配,所以这样可以避免与EUI-64标识符相冲突。与上述所有标识符相比,这种格式中固定数据与变化的供应商指定字段或扩展标识符之间的分界线恰好位于字节的中间。
图5. FC-PH IEEE注册名格式
FC-PH IEEE注册扩展名格式总长为128位。除了起始数字‘6’之外,前64位(图6)与FC-PH IEEE注册名称的格式相同。因为以‘6’打头的company_id不被分配,所以FC-PH IEEE注册名与EUI-64标识符不会出现混淆。第二个64位数据块(图中没有画出)称为供应商指定标识符的扩展。对第二个数据块没有格式限制。
图6. FC-PH IEEE注册扩展名格式(第一块)