1-Wire®デバイスによるグローバル識別番号の作成
要約
イーサネット技術の発明で、メディアアクセス制御(MAC)ソースおよび宛先アドレスが重要になりました。これらは、データ伝送において開始点と終了点を特定するのに必要なユニークな識別子です。このアプリケーションノートでは、イーサネット技術に使用されるようなユニークな識別子を作成し管理するために一般およびカスタム化された1-Wireデバイスを最大限に生かすための方法が記載されています。グローバルにユニークな識別子として、IEEE®規格を含めた様々な規格が説明されています。ここで挙げられている特定の識別子は:MAC-48 IDENTIFIER/EUI-48 GLOBAL identifier format、EUI-64 GLOBAL identifier format、FC-PH IEEE 48-bit identifier format、FC-PH IEEE extended identifier format、FC-PH IEEE registered name format、およびFC-PH IEEE registered extended name formatです。
はじめに
マイクロプロセッサの登場とシリコンチップの価格下落により、マイクロプロセッサベースのコンピュータの人気が急上昇しました。そのうち、コンピュータは並列計算により問題解決を迅速化するために、マルチプロセッサシステムと接続されました。次に、リソースを共有し、マルチプロセッシングの並列処理を活用するために、ローカルネットワークが創出されました。
最も普及しているローカルエリアネットワーク(LAN)テクノロジはイーサネットで、1970年代初頭にXeroxにより開発されました。1983年には米国電気電子学会(IEEE)がイーサネットテクノロジに関する最初のIEEE標準を発表しました。当標準では、各フレームの転送先および転送元メディアアクセス制御(MAC)アドレスなどフレーム単位のデータ転送を定義しています。ネットワークが機能するにはこうしたアドレスは固有である必要があるのは明らかです。したがって、利用可能な番号プールの一部を関係者に割り当てる、世界的に認知された中央機関が必要となります。
そこで、1986年にOrganizationally Unique Identifier (組織的に一意な識別番号) (OUI)を登録するためのIEEE Registration Authority (登録委員会)が、P802 (LAN/MAN)標準グループの主導で設立されました。OUIすなわち「company_id」とは、各種標準により参照される、グローバルに一意の24ビット割り当て番号です。この番号を使って、パブリックおよびプライベートプロトコルを識別するプロトコル識別番号だけでなく、LANステーションを一意的に識別する48ビットUniversal LAN MACアドレスを作成することができます。また、この番号により、ハードウェアベンダとI/Oソフトウェアインタフェースアーキテクチャを識別することができます。関連標準には、CSMA/CD、Token Bus、Token Ring、FDDI、およびFibre Channelなどがあります。
OUIは、アドレスまたは識別番号の一部のみを決定します。識別番号の残ったバイトを適切に割り当てる責務は、OUIをIEEEに登録した企業にあります。この責務は一見したところ容易に見えますが、以下の難しい問題があります。
- 識別番号を一意にする(同一番号を作成しない)
- 利用可能な番号範囲を節約して使用
- ネットワークインタフェースコントローラに読み込まれた一意の番号を取得
こうした一意性を管理する場合は、ネットワークコントローラに読み込まれた番号を取得する必要があります。このため、マイクロコントローラやPLDにある特殊チップまたは未使用レジスタのいずれかの不揮発性(NV)メモリにプログラミングされた固有の番号が、すべてのユニットには必要です。つまり、一般的なプログラマの場合、チップ1個ごとに新たなデータパターンを読み込む必要があるということです。プロトタイプ以降の本稼動には妥当ではありません。
1990年代初頭の1-Wireチップの登場と、特にカスタマイズバージョンの1-Wireチップにより、現在マキシム・インテグレーテッド・プロダクツの一部であるダラスセミコンダクタは社内シリアル番号追跡システムの設定と実装を行い、これにより以上の問題がすべて鮮やかに解決されました。このアプリケーションノートでは、一意の識別番号の作成と管理を行うためのUniqueWare、一般およびカスタマイズ1-Wireデバイスの利用方法について説明します。
IEEE 識別番号形式
次ページの例は、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」 (新規アプリケーション定義時の48ビットグローバル識別番号(EUI-48)および64ビットグローバル識別番号(EUI-64)内の24ビットOUI/company_id識別番号使用のガイドライン) (2001年5月31日バージョン)
- 「Guidelines for Use Of A 48-Bit Global Identifier」 (EUI-48) (48ビットグローバル識別番号(EUI-48)使用のガイドライン) (2001年5月31日バージョン)
- 「Guidelines For 64-Bit Global Identifier (EUI-64) Registration Authority」 (64ビットグローバル識別番号(EUI-64) Registration Authorityのガイドライン) (2001年5月31日バージョン)
- 「New identifier formats based on IEEE registration」 (IEEE登録に基づく新規識別番号形式) (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」 (チュートリアル:ANSI X3.230 FC-PHファイバチャネル仕様およびその拡張によるIEEE Registration Authority割り当て「company_id」の使用) (1997年2月24日バージョン)
表1. 用語集
コンテキスト内で使われる用語 | コンテキスト | 解説 |
Organizationally Unique Identifier (組織的に一意な識別番号) (OUI) | MAC-48 | IEEE Registration Authority Committee (登録委員会が企業に割り当てた24ビットの識別番号company_idと同義。 |
company_id | EUI-48, EUI-64, PC-PH | IEEE Registration Authority Committee (登録委員会)が企業に割り当てた24ビットの識別番号。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 | EUI-64グローバル識別番号として転送するためにEUI-64識別番号として「偽装」したMAC-48識別番号。40ビット拡張識別番号の上位16ビットをFFFFhに設定。 |
カプセル化されたEUI-48値 | EUI-64 | EUI-64グローバル識別番号として転送するためにEUI-64識別番号として「偽装」したEUI-48グローバル識別番号。40ビット拡張識別番号の上位16ビットをFFFEhに設定。 |
グローバル名 | FC-PH | IEEE company_idに基づく64ビットまたは128ビットの識別番号。 |
NAA値 | FC-PH | グローバル名の上位4ビット。これらのビットはFC-PH形式名、すなわち以降の60ビットの構成と次の64ビットフィールドの存在の可能性を示す。 |
ULAバイト | FC-PH | MAC-48アドレスと等しいユニバーサルLAN MACアドレス。ULAの0~2バイトはcompany_id/OUIに相当。ULAの3~5バイトは拡張識別番号に相当。 |
12ビットのベンダ指定フィールド | FC-PH | ノードへの各ポートを識別するULAバイトの拡張。 |
36ビットのベンダ指定識別番号 | FC-PH | ノード、N_Port、F_Port、ファブリック、その他のオブジェクトを一意に示す識別番号。 |
64ビットのベンダ指定識別番号拡張 | FC-PH | ファイバチャネル関連オブジェクトを識別する、ノード生成のサブ識別番号。 |
IEEE48ビット識別番号形式(図3) | FC-PH | 64ビットFC-PHグローバ名として「偽装」したEUI-48グローバル識別番号。000hが後続するNAA値1hはEUI-48識別番号に先行。 |
IEEE拡張識別番号形式(図4) | FC-PH | ULA 6バイトおよび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と、任意のOUIに対して一意である必要がある3バイトの拡張識別番号から構成されています。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ビットに拡張され、範囲を65536倍の16777000 (24ビットに相当)から拡張しています。バイトのアドレス可能なメディアでは、そのシーケンスは各バイトの相対アドレスと同じです。識別番号の最上位バイトは、下位アドレスに格納されます。
図2. EUI-64グローバル識別番号形式
48ビット識別番号から単一形式のOUI/company_idベースのグローバルに一意の64ビット識別番号への移行を可能にするために、製造メーカーの拡張識別番号の最初の4桁はFFFFhまたはFFFEhであってはいけないと、IEEEは規定しています。こうした予約コードを使って、MAC-48とEUI-48の識別番号をEUI-64の識別番号としてカプセル化して、転送することができます。コードFFFFhはMAC-48識別番号を表し、カプセル化されたEUI-48識別番号はFFFEhにより識別されます。
ファイバチャネルの登場とともに、4つの追加64ビット識別番号形式がANSI X3.230-1994およびANSI X3T11ドキュメントで定義されました。FC-PH識別番号形式では、「シーケンス」が明確に定義されていません。また、この形式ではビットやバイトの有意性も指定せず、代わりにビット番号を指定しています。以下のファイバチャネル形式図で、ビット0は最下位ビットと同じで、ビット63は最上位ビットと同じです。
FC-PH IEEE 48ビット識別番号形式は、図3で示すようにMAC-48識別番号の前にコード1000hを置いて、導き出すことができます。1000hから始まるcompany_idがEUI-64形式で使用されない限り、これは可能です。そうでない場合は、FC-PH IEEE 48ビット識別番号とEUI-64識別番号を識別することができません。company_idおよび拡張識別番号の代わりに、用語ULAバイトを使用します。これは実際面ではあまり変わりがありません。
図3. FC-PH IEEE 48ビット識別番号形式
FC-PH IEEE拡張識別番号形式(図4)は、FC-PH IEEE 48ビット識別番号と酷似しています。コード1000hではなく、こうした識別番号は「2」から始まり、3桁のVSID (ベンダ指定識別番号)フィールドが後に続きます。「2」から始まる企業IDが割り当てられていないので、混乱は生じません。実際面では、EUI-64識別番号形式より4ビット少ない36ビット全体をユーザ制御するVSIDを拡張識別番号の拡張と見なすことができます。
図4. FC-PH IEEE 拡張識別番号形式
FC-PH IEEE登録名形式(図5)の場合、VSID12ビットは隣接する36ビットのベンダ指定識別番号の一部です。その結果、企業IDは12ビット上に移動します。こうした識別番号は「5」から始まります。「5」から始まる企業IDが割り当てられていないので、これによりEUI-64識別番号との混同が回避されます。これまで説明した全識別番号とは対照的に、この形式の場合、定数セクションと常時変化するベンダ指定フィールドや拡張識別番号との境界は、バイトの真ん中にあります。
図5. FC-PH IEEE登録名形式
FC-PH IEEE登録拡張名形式の全長は、128ビットです。先頭の数字「6」以外は、最初の64ビット(図6)は、FCPHIEEE登録名と同じ形式に準拠します。「6」から始まる企業IDは割り当てられていないので、FC-PH IEEE登録名をEUI-64識別番号と混同するおそれはありません。64ビット(図示なし)の第2ブロックは、ベンダ指定識別番号拡張と呼ばれています。第2ブロック内のデータのフォーマッティングに関する規定はありません。
図6. FC-PH IEEE登録拡張名形式(第一ブロック)
半導体内におけるIEEE 識別番号の作成
図1~6 で示すように、すべての識別番号は、以下の最大3つのセクションから構成されています。
- IEEEが割り当てた24ビットcompany_id
- IEEEが登録し、企業によって維持される24、36、40、または100可変(一意)ビットのスペース
- 識別番号タイプに応じた、4または16不変ビットの追加フィールド
1-Wireデバイスにより識別番号を実装する方法が以下のように基本的に2つあります。
- 一般1-WireデバイスのROM登録番号のシリアル番号フィールドの最下位24ビットを取得し、ファームウェアを使ってIEEE company_idを付加し、形式に応じて識別番号を全部満たすために残りのビットを付加する。1つだけのデバイスタイプ(すなわち、同一ファミリコード)を使用することに注意する。そうでない場合は、各デバイスタイプのシリアル番号がゼロから始まり、増加するので、IEEE識別番号を複製するおそれがある。したがって、例えば、ファミリコードが考慮されないと、DS2401とDS2502がともに同じシリアル番号を持つ場合もある。
- カスタマー固有の1-WireデバイスのROM登録番号からMAC-48/EUI-48識別番号全体を取り出す。
表2. 実装方法の比較
方式 | 長所 | 短所 |
一般部品 | •64ビットROM登録番号付きの1-Wireチップと連携
•カスタマイズ部品より低コスト •短いリードタイム •最低発注サイズ:1部品または1リール |
•シリアル番号フィールドの制御不可
•識別番号全体を生成するのにファームウェアで特殊な作業が必要 •ROMシリアル番号フィールドの下位24ビットが一意でないので、識別番号を複製するおそれあり |
カスタムROM部品 | •MAC-48/EUI-48識別番号を直接実装
•セットアップが容易—用紙に記入するだけ |
•リードタイムが長い(12週)
•MAC-48/EUI-48以外の形式を生成するファームウェアが必要 •セットアップ料金の償却に大量生産が必要 •大きい最低発注サイズ:量はデバイスタイプによる |
ネットワーク機能付きの1-Wireデバイスはすべて、一意の64ビットROM登録番号を備えています。その登録番号は8ビットファミリコードから始まり、48ビットバイナリシリアル番号フィールドが後に続きます。残りの8ビットは、先頭の56ビットの巡回冗長検査(CRC)です。登録番号の読み取り時に、以下のシーケンスでバイトが取得されます。ファミリコード、先頭(最下位)のシリアル番号のバイト、2番目のシリアル番号のバイト、…、6番目(最上位)のシリアル番号のバイト、CRCのバイト。各バイトの最下位のビットは、最初に送信されます。
バイナリ計算で、24ビットで表される最大の数は10進法の16777215です。任意のファミリコードに16777215以下の数が使われている限り、シリアル番号フィールドの下位24ビットは一意です。この条件でこうした部品を確実に使って、図7で示すようにIEEE識別番号の可変セクションのコンテンツを提供することができます。
図7. 一般部品の識別番号の作成
登録拡張名形式(図示なし)の第2 ブロックの64ビットは、ソフトウェアの制御のもとで生成されます。
これはシリアル番号フィールドの最下位24ビットを取得し、ファームウェアにより欠落しているものを付加するように機能します。一見すると非常にシンプルですが、EUI-64識別番号やVSIDフィールドの拡張識別番号の別途16ビット、またはFC-PH識別番号形式のベンダ指定識別番号の別途12ビットを活用する際に、コストと関連経費が発生することもあります。場合によってはPLDやマイクロコントローラが別個にプログラミングされ、任意のコードバリエーションで別途ビットを埋める必要があります。テクノロジによっては、これは論理的なタスクであり、ROMコードマスクのコストを伴う場合があります。
容易に識別番号を作成することができるチップは、DS2401シリコンシリアル番号です。ただし、このチップの登場以来、1600万個以上の部品が製作されています。したがって、48ビットシリアル番号フィールドの下位24ビットはもはや一意ではないので、IEEE識別番号を複製するおそれが生じます。他の選択肢として、もっと製造スピードが遅い一般デバイスを選択し、取り組むことを検討することもできます。ただし、現在製造スピードが遅いデバイスがいつか生産量1600万個を突破し、24ビット値を複製する能力も持つ可能性もあります。
図8. カスタムROMおよび一般部品
カスタムROM部品では、48ビットのシリアル番号フィールドは、カスタムID、ユーザ定義サブフィールド、およびシリアル番号フィールドという3つのセクションに分けられます(図8)。カスタムIDの長さは、必ず12ビットです。登録時にマキシムが割り当てたこのフィールドは、当部品のカスタマーを一意的に識別します。ユーザ定義サブフィールドの長さは、8ビット(オプションA)、12ビット(オプションB)、または16ビット(オプションC)のいずれかです。一般部品とカスタムROM部品を識別するために、カスタムROM部品のファミリコードの最上位ビットが「1」に設定されます。
カスタムIDとサブフィールドが結合し、IEEE company_idを形成している場合は、オプションBの配置はMAC-48/EUI-48識別番号の形式に似ています。オプションCでは、シリアル番号フィールドからユーザ定義サブフィールドまで4ビットを移動させます。これにより、1670万のMAC-48/EUI-48識別番号の範囲を約100万ずつの16ブロックに分割することができます。
カスタムROMチップから直接読み取られるMAC-48/EUI-48識別番号から始まり、図9で示すようにIEEE識別番号をさらに生成することができます。一般部品アプローチとの大きな違いは、チップが(ほぼ適切な) company_idを事前に提供していることです。追加的な12または16ビットの形式を利用する作業は、一般部品と同じです。一般部品と比較したカスタムROM部品の主な長所とは、シリアル番号フィールドを制御できることにあります。このフィールドはカスタムID、サブフィールド、およびファミリコードの任意の組み合わせに対して一意であると保証されています。
図9. カスタムROM 部品の識別番号の作成
登録拡張名形式(図示なし)の第2ブロックの64ビットは、ソフトウェアの制御のもとで生成されます。
カスタムROMセットアップおよび発注用ガイドライン
カスタム部品をセットアップするには、Custom ROM Registration Form (カスタムROM登録用紙)に記入する必要があります。この用紙をマキシムカスタマーサービス(米国) (Tel:1-972-371-6824 Fax:1-800-992-1884) に発注することができます(英語によるサービスのみ)。用紙のアドレス欄に記入し、デバイスとパッケージタイプを選択し、テープとリールが必要かどうかを指定します。ROMオプションBのユーザ定義サブフィールドにあるIEEE company_idの最下位3桁を記入します。特定のマキシムカスタムIDを請求していることを示すために、「Maxim Use Only (マキシムの使用のみ)」ブロックのCIDフィールドにある自分のcompany_idの最上位3桁を記入します。次に、用紙に示されたファックス番号か電子メールアドレスを用いてこのドキュメントをマキシムに送付します。
マキシムカスタムIDは、000から始まり、16進法で増加する番号順で通常割り当てられています。IEEE登録データベースによると、全company_idのうち95%以上が、DS2401により取得済みの一連のカスタムIDである000~040から始まっています。この問題を解決するには、登録用紙の記入時に1xx~Fxxから始まるマキシムカスタムIDを指定して、company_idと一致しないビットをファームウェアを通じて変更します。ほとんどの場合、カスタムIDのその他の2桁はIEEE company_idのそれぞれの桁に一致し、サブフィールド内のデータは常に一致します。
マキシムカスタムIDに関して合意に達すると、少なくとも最低発注量の発注書とセットアップ料金の支払額をマキシムカスタマーサービスに送付します。これにより、カスタム部品が迅速に登録されます。登録が完了すると、今後の発注用の固有の部品番号が提供されます。カスタムROM部品については、解約と返品ができません。
IEEEのcompany_id保護方針のため、各事業部門との番号プールの共有や、各製品変更を通知するなど、1670万 の番号範囲をサブセクションに分割する必要がある場合もあります。こうした分割を実現するために、ROMオプションCを請求することをお奨めします。ユーザ定義サブフィールド内のIEEE company_idの最下位3桁の位置は、オプションBと同じです。サブフィールドの下位(右端) 4ビットで範囲を指定します。これにより、それぞれ約100万個の最大16の部品範囲が可能です。当初のセットアップ料金には1つの範囲が含まれています。範囲が追加されると、追加料金がかかる場合があります。すべての範囲は、自らの部品番号を確保しています。範囲が異なる部品は別個にレッテルを貼る必要があり、それにより電子的な読み取りがなくても部品の範囲を識別することができます。
1-Wire デバイスとのインタフェース
1-Wireデバイスは基本リファレンスのほかに単一のデータラインのみを要求するので、インタフェースするのが極めて容易です。ほとんどの1-WireデバイスはVCCピンも装備せず、データラインから動作エネルギを入手します。図10では、8051準拠マイクロコントローラのオープンドレーンポート0などの双方向ポートに適合するシンプルな1-Wireインタフェースを紹介しています。1-Wireデバイスを読み取るためのプロトコルは、ソフトウェア制御のもとで生成されます。ソフトウェア例を含む1-Wireインタフェースの詳細な説明は、アプリケーションノート74 「Reading and Writing 1-Wire® Devices Through Serial Interfaces」にあります。アプリケーション回路のパワーダウン時にも外部リーダにより1-Wireデバイスを読み取り可能なデュアル読み取りモードインタフェースについては、アプリケーションノート178 「1-Wire製品によるプリント回路基板の識別」を参照してください。
図10. 最小限の1-Wireインタフェース
アプリケーション例
アプリケーションノート178 「1-Wire製品によるプリント回路基板の識別」で電子ネームプレートに取り上げられたMxTNI™基板は、DS2502-E48チップ内に保存されたイーサネットアドレスを実際備えています。図11は特定MxTNI基板から読み取られたデータを示します。このデータパターンは、識別番号00001129で登録されています。拡張識別子は0093B8です。ダラスセミコンダクタのIEEE company_idは006035でIEEE登録データベースで検証することができます。イーサネットアドレスは1メモリページしか消費しないので、残りの3メモリページは回路基板識別に追加コストなしで利用することができました。
図11. DS2502-E48 Ethernet Address
リファレンス
- http://www.cisco.com/en/US/docs/internetworking/technology/handbook/ito_doc.html
このリンクは、各種ネットワークとプロトコルに関する極めて専門的なドキュメントにつながっています。ドキュメントの大部分は、ネットワーキング専門家向けの総合的なリファレンスである「Internetworking Technologies Handbook (インターネットテクノロジハンドブック)」 (ISBN 1-58705-001-3)の抄録です。多数の図が欠落しているので、ウェブ上のファイルは当書籍の代替品ではありません。
参考資料
- http://www.cisco.com/en/US/docs/internetworking/technology/handbook/ito_doc.html This link leads to very professional documents on various types of networks and protocols. Most of the documents are excerpts of the Internetworking Technologies Handbook, ISBN 1-58705-001-3, a comprehensive reference for networking professionals. The files on the web are not a substitute for the book, since many graphics are missing.