3.2.2 次世代I/Oアーキテクチャ(InfiniBand)の概要
岸本光弘講師
InfiniBandは新しいI/Oアーキテクチャとして、1999年夏から検討が始まり、2000年10月に第1版が公開になっている。米国のメーカが中心となって仕様策定しているが、日本からも何人かが標準化作業に参加している。ここでは、次世代のI/OアーキテクチャであるInfiniBandの概要と狙いを説明する。
1.InfiniBandの概要
1.1 性能概要
サーバコンピュータに要求されるI/O性能は、年々着実に上昇している(図1参照)。そして、I/Oをコンピュータにつなぎ込むところは、I/Oバスが受け持っている。これまでISA、PCI等がサーバで使われているが、I/Oに要求されるバンド幅は年代と共に急速に増大しており、66MHz x 64bitのPCIをもってしても不足し始めている。それを越える仕様として、InfiniBandが提案されている。
InfiniBandは1本の線の周波数が2.5GHzで、その線が1本のものの他に、4本、12本束ねたもの(バンド幅にして500MB、2GB、6GB)が今回の仕様に入っている。
図1 サーバに要求されるI/O性能の上昇
1.2 技術の特徴
InfiniBandは次のような主要な特徴を備えている。
● ムーアの法則以上のバンド幅向上
● 応答時間の短縮と割り込み回数の削減
● コモディティ化による低価格化
● 各種ネットワークの一本化
● 数千ノードを接続できるスケーラビリティ
● 高機能(メッセージベース)通信機能
● 高信頼/高可用性の実現
1.3 アーキテクチャ概要
従来はCPUとメモリがメモリコントローラにつながり、そこからブリッジを介してPCIにつながっていた。このようなバス型のアーキテクチャだと、接続のケーブル長さやバンド幅、あるいは故障時のアイソレーションなど、色々な制約がある。そこで、InfiniBandはバスをやめてメインフレーム式のチャネルにしようと考えた(図2参照)。
図2 InfiniBandハードウェア構成
メモリコントローラにはホスト側チャネルアダプタ(HCA)を、一方のI/Oコントローラにはターゲットチャネルアダプタ(TCA)をつけ、両者をリンクでつなぐ。途中にスイッチを入れることによって、1本の線で多数のI/Oコントローラ接続を可能にする。かつ、リンクであるから、I/Oだけでなくホスト間のインターコネクトとしても使用可能となる(図3参照)。
図3 InfiniBandブロック図
InfiniBandのネットワークはリンクとスイッチから構成される。インターネットと同様に、最小単位であるサブネットを多数つないでスケーラビリティをかせぐ。
1.4 電気的インタフェース
最小のサブネットはスイッチを中心に接続された構成である。HCAは高機能を想定しているが、TCAは安価な物から高価な物まで幅があり、サブセット機能も認める。将来はルータ接続によりサブネットを越えた構成も可能とする。
銅線にはx1/x4/x12のものがある。各通信路は送信/受信用に別々のケーブルを使う。ディファレンシャルシグナルで8B/10Bコーディングして送るので、バイト単位でいうと2.5MHzで250MBの転送速度となり、それが登り下り2本で500MBと称している。x4/x12ではそれぞれの線がバイト毎にシリアルに送るので、スキュー(電圧遷移タイミングの変動)等に強くなっている。
x16でなくx12となった理由は、光コネクタにx12で良いものがあるから、それに合わせたということである。
1.5 フォームファクタ
実装ではバックパネルにInfiniBandをはわせ、そこにコントローラを差し込む形が多い。アダプタのフォームファクタには、 {Single/Double-wide} x {Single/Double-height}
の組み合わせで、計4種が定義されている(図4参照)。
冗長性を考えたI/Oコネクタの場合は、Double-height のものが使われるだろう。コネクタは標準のものが銅線/光ファイバー、x1/x4/x12 用に各々決まっている。
図4 4種類のフォームファクタ
2. InfiniBandの狙い
2.2 メリット、アドバンテージ
2.1 コンピュータルームのインターコネクト用途
InfiniBandは、I/Oバスの後継として、まずコンピュータルームのインターコネクトを狙う。
● ケーブルの種類と数を減らす。
● サーバ内部、およびサーバ間のインターコネクトとして使う。
● LANは狙わず、300m以下に収まるネットワークを対象とする。
● 銅線では6m-10m/1本、光では250m/1本が規格になっている。
それをルータでつないで300mまで。
● スイッチは単純化し、安価に作れるようになっている。
● 色々なデータが流れるため、大量のディスクデータやネットワークの
少量データまで、サービスレベル変更をハードウェアで実現する規格になっている。
● I/Oだけでなく、アプリ同士のプロセス間通信にも使える。
● 24時間、週7日使えるRAS機能
InfiniBandには以下のメリット、アドバンテージがある。
<Easy clustering>
ホスト間のネットワーク、アプリケーション間のIPC、ストレージI/O、ネットワークI/Oなどをすべて一本のInfiniBandでつなげるようにする。また、アップグレードや拡張を単純にする。
<Scalability>
サブネットの中で数千、そのサブネットをさらにつないで大きなInfiniBandネットワークを組めるようにする。
サブネット内のスイッチは単純・安価なものにし、コスト効果比を高めて普及を図る。x1/x4/x12のバリエーションは、将来のスケーラビリティも狙う。既に幾つかの会社はプロトタイプ開発をしており、来年後半にはx1(500MB)の製品サンプルが、2002年にはx4(2GB)が出てくると思われる。
<Performance>
通信路が太くなるだけでなく、サーバCPUを通信から開放することによってアプリケーションに集中させられる。
<RAS>
パス(ノード間経路)の冗長化:複数の経路を張れる。さらにサブネット自身も2重化することによって、single point of failureの無い経路をサーバ、I/O間に張ることができる。
イン・バンドの管理が可能であり、イーサ、シリアル等の別ルートが不要である。エラーの管理は、物理レイヤからソフトウェアレイヤまで、きれいに層構造となっている。
<Flexibility>
アーキテクチャ的に任意のトポロジーが可能である。データ転送のサイズは、ユーザアプリレベルでは2GBまで可能となっているが、ハードウェアレベルでは、安価なスイッチやHCAを使う場合の256Bから最高4KBまで、5段階の転送パケットサイズが使い分けられる。
色々な機器を組み合わせると、リンクの幅や転送単位などがばらばらになってしまうが、これを最初に自動的にネゴシエーションする仕様が物理的レベルで定められている。4種類のフォームファクタ、規格化されたコネクタも、様々な構成の実現に役立つ。
現在の典型的な大規模データセンタのシステムでは、何台かのサーバの後ろにPCIカードスロットをたくさん用意して、ファイバーチャネルやクラスタリング用のインターコネクトのカード、ギガビットイーサなどを挿す。その結果、非常に煩雑な構造となり、接続の種別毎の管理も必要となる。InfiniBandではCPU以外をI/Oとして分離し、すっきりした構造となる。
現在のサーバではCPUとI/Oコントローラが同じボードに載っているが、これはユーザ、メーカ、双方にとって好ましくない。なぜならユーザにとっては、CPU、I/Oいずれを増設したい場合も余分なものを購入せねばならず、メーカにとっては、CPUを置くための特性の高いボードにPCIの安価な口を並べる形となっている。分離によってこれが解決できる。
InfiniBandからファイバーやギガビットにつなぐためのコントローラはもちろん必要だが、ファイバーチャネルストレージやギガビットスイッチも、従来通りつなげる。RAS、スケーラビリティも、従来よりも格段に改善される。
3.スケジュール
3.1 仕様
昨年2000年の10月に Spec1.3 が出た。次の2冊がある。
Vol1:(ソフトウェアから見た)ハードウェア仕様
Vol2:コネクタの形状、電気特性など
2001年末から2002年初めに1.0のアネックス版仕様(補遺)ができ、2.0は2年後くらいになるというのが、アーキテクチャチームのラフな合意事項となっている(図5参照)。
図5 今後の予定スケジュール
3.2 製品開発
40社以上が製品開発開始している。さらにI/Oベンダーを巻き込むために、デベロッパーズカンファレンスを半年に一度開催することにしている(図5参照)。
インターオペラビリティ確保のために、Plugfestsも定期的に実施する。2001年の後半に最初の製品ができ、2002年には大量に登場するものと期待している(図5参照)。
4.機構
4.1 アーキテクチャレイヤ
OSIの7階層で言えば、トランスポートレイヤまでをハードウェアでサポートする。実際のソフトウェアはトランスポートレイヤを直にたたくことになる。
「トランザクション」は、ディスクとのデータI/Oを行なう。このとき「トランスポートレイヤ」では、データの要求コマンドに対して、実際のデータメッセージと、完了コードが送られるという手順になる(図6参照)。
「ネットワークレイヤ」では、サブネットをまたぐパケットハンドリングを行なう。特に新しいものを作るのではなく、IPv6のルーティングをそのまま使う。このパケットを利用するのが「ルータ」であり、その仕様が定義されているが、記述が曖昧なので本当に1、2年中に出てくるのか心配もある。
サブネット内でパケットを送るのは「リンクレイヤ」のスイッチの仕事になる。その下にMACレイヤがある。
![]()
図6 アーキテクチャ階層
4.2 パケット転送
ディスクI/O(トランザクション)のデータは複数のメッセージに分割され、メッセージはさらにパケットに分割される(図7参照)。メッセージは最大で2GBまで可能である。これをハードウェアが自動的に適当な転送単位のパケットに分割し、パケットの順序と、欠落時の再送を保証しながら転送する。
転送のメカニズムは(昔、Intelが言ったvirtual interface architectureを拡張した)、メッセージ交換による。
Queue-Pair(QP)が最小の転送実行の単位であり、HCAは複数のQPをハードウェアで実装している。そのオーダーは最小では256、最大で32Kくらいである。QPは、send/receive-queueのペアである。ソフトウェアはQPにsend/receiveを指示し、これを受けてハードウェアが実際のデータ転送を行なう。複数のQPそれぞれにサービスレベルを設定できるので、たとえばディスクI/Oの優先度を落とし、ネットワークI/Oの優先度を上げるなどが可能である。
![]()
図7 リンクプロトコル
ホストとI/O、あるいはホスト間の接続を規定した「パーティション」をハードウェアレベルで定義し、パケットを色分けすることによって、パケット交換を物理的にパーティショニングできる。
4.3 通信サービスの種類
トランスポートサービスとして5種類(最後のものは特殊なので4種類と言ってもよいが)用意されている。
・Reliable Connection
queue同士の接続に基づく。
TCPと同様。パケットの順序と送達を保証する。
・Reliable Datagram
「信頼性のあるUDP」。InfiniBandに非常に特徴的であり、自分のQPと
リモートのQPとの間で、N対Nのデータ転送ができる。
・Unreliable Connection
queue同士の接続に基づく。パケット欠落が有り得る。
・Unreliable Datagram
UDPと同じ。
・Raw Datagram
InfiniBandのサービス提供は無く、IPv6やイーサのパケットをそのまま送る。
また、これとは別に転送機能が定義されている。
・Send
自分のデータバッファは指定するが、相手側のバッファは指定しない。
・RDMA Read&Write
リモートDMA。発行側が相手側のバッファも指定する。
・Atomic
fetch&add、compare&swapがオペレーションとして定義されている。
・Bind Window
メモリ保護オペレーション(後述)をハードウェアが直接サポートする。
・Multi-Cast
Datagramのマルチキャスト通信。
ただし、これらの機能と、先の5種類のサービスのすべての組み合わせが可能なわけではない(表1参照)。
Reliable Datagramの実現のために、各ノードにはEE(End-to-End)-Contextsがあり、これが送受信両QP間を仲介して順序保証や送達保証をする。
表1 トランスポートサービスタイプと利用可能な転送機能
4.4 メモリマネジメント
データ転送用のアドレスとして、ソフトウェアからは、送信相手先の仮想アドレスを指定する。仮想アドレスから物理アドレスへの変換は、HCAの役割である。IOMMUをHCAが持っていると考えればよい。その際、Read/Writeの可否、リモートアクセス/ローカルアクセスの可否などのアクセス権を細かく制御できる。
4.5 verbアーキテクチャ
InfiniBandでは、ハードウェアとソフトウェアのインタフェースとして、APIを定義する代わりに「verb(動詞)」によって機能だけを定義している。これには、具体的なAPIの定義はOSベンダの担当範囲としつつ、何ができるかだけを強く規定する意図がある。
verbの機能には、たとえばQP・CQ(Completion Queues:データ転送の完了通知用)の操作や、送受信要求、メモリリージョンやウィンドウの操作に関するものなどがある。verbは、HCAとHCAドライバの間に置かれる。
verbの使用手順は、例えばディスクの読み出し要求なら、次のようになる。・オープン
4.6 マネジメント
・CQ、QP生成
・コネクション生成
・メモリ登録
・要求発行
・要求送信完了
・I/O
・I/O完了
・コネクション切断
・Takedown
InfiniBandでは、インバンドで Unreliable Datagram を使ってマネジメントを行なう。マネジメント用のパケットをMAD(MAnagement Datagram)と呼んでいる。 HCA、TCA、およびスイッチは、すべてMADを処理するエージェントSMA(Subnet Management Agent)を載せていなければならない。各装置で実際の処理を行なうSMAの上にサブネットマネージャがいる。サブネットマネージャは各サブネットにつき1つだが、マスターの他にバックアップがいくつかいても良い。パブリックなルーティング制御などは、このマネージャが行なう。またコネクションを張るときには、コネクションマネージャがサブネットマネージャから必要情報を引き出す(図8参照)。
図8 マネージメントモデル
サブネットマネージャ以外にもいくつかのマネージャがいる(図9参照)。これらをGeneral Serviceと呼ぶ。
・General Services
Subnet Administration
Connection Management
Performance manegement
SNMP Tunneling
Baseboard Manegemnet
Device Manegement
Vendor Specific
図9 マネージメント機能一覧
5. 略語一覧
CA: Channel Adapter
CI: Channel Interface
CQ: Completion Queue
EEC: End to End Context
HCA: Host Channel Adapter
IB: InfiniBand
L_Key: Local Key
MAD: Management Datagram
QP: Queue Pair
R_Key:Remote Key
RC: Reliable Connection
RD: Reliable Datagram
RDD: Reliable Dagagram Domain
RDMA:Remote DMA
SA: Subnet Administrator
SL: Service Level
SMA: Subnet Management Agent
SMgr: Subnet Manager
TCA: Target Channel Adapter
UC: Unreliable Connection
UD: Unreliable Datagram
VI: Virtual Interface
VL: Virtual Lane
WC: Work Completion
WQE: Work Queue Entry
WR: Work Request