【前へ】

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のネットワークはリンクとスイッチから構成される。インターネットと同様に、最小単位であるサブネットを多数つないでスケーラビリティをかせぐ。
 最小のサブネットはスイッチを中心に接続された構成である。HCAは高機能を想定しているが、TCAは安価な物から高価な物まで幅があり、サブセット機能も認める。将来はルータ接続によりサブネットを越えた構成も可能とする。

1.4 電気的インタフェース
 銅線には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.1 コンピュータルームのインターコネクト用途

 InfiniBandは、I/Oバスの後継として、まずコンピュータルームのインターコネクトを狙う。
●         ケーブルの種類と数を減らす。
●         サーバ内部、およびサーバ間のインターコネクトとして使う。
●         LANは狙わず、300m以下に収まるネットワークを対象とする。
●         銅線では6m-10m/1本、光では250m/1本が規格になっている。
 それをルータでつないで300mまで。
●         スイッチは単純化し、安価に作れるようになっている。
●         色々なデータが流れるため、大量のディスクデータやネットワークの
 少量データまで、サービスレベル変更をハードウェアで実現する規格になっている。
●         I/Oだけでなく、アプリ同士のプロセス間通信にも使える。
●         24時間、週7日使えるRAS機能

2.2 メリット、アドバンテージ
 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の使用手順は、例えばディスクの読み出し要求なら、次のようになる。

・オープン
・CQ、QP生成
・コネクション生成
・メモリ登録
・要求発行
・要求送信完了
・I/O
・I/O完了
・コネクション切断
・Takedown

4.6 マネジメント
 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

 

 

【次へ】