サーヴァンツブログ

技術
Mellanox

InfiniBandとは。「転の章」

InfiniBandとは。「転の章」

さて、これまでInfiniBand(IB)の起源となるお話仕様についてのお話と記載してきましたが、今回の「転」の章では、「インターコネクト」、「HCA カード」、「スイッチ」で、より現実的な話について記載させていただきます。

インターコネクト

スイッチとHCA間、あるいは、HCA 間を接続するために、ケーブルなどのインターコネクトが必要になります。現在、インターコネクトには大きく分けて:

と3種類の接続方法があります。通常、3mまでの短い距離を接続するには、他に比べコスト・メリットのあるパッシブ型のカッパーケーブルを活用します。(ただ、距離が短くとも、環境ノイズがひどい場合などには、光ケーブルを選択する場合もございます。)3mを超える距離では、費用面よりケーブル一体型の光ケーブルを選択しますが、その場合3/5/10/15/20/30/50/100m 長に接続距離が限定される形となります。それ以外の距離を接続する場合にはトランシーバーと、MPO あるいはLCコネクタを持つ純然たる光ケーブルの組み合わせを活用する形になります。純然たる光ケーブルを除き、カッパー及び光ケーブルいずれにも、QDR、FDR、EDR など転送レート毎に個別の型番の製品が用意されています。QSFP ケーブルコネクターには、ベンダーや製品情報が記録されており、接続するスイッチ側がその情報を読み出すことでそのケーブルに最適なパラメーターをセットすることが出来るようになっています。各ケーブルには、IBTA(InfiniBand Trade Association)のInfiniBand(IB)の仕様上、10のマイナス12乗のビット・エラー・レート(BER)が求められていますが、メラノックスでは、社内基準として10のマイナス15乗と1,000倍高い品質で検査を行っています。

HCA(Host Channel Adapter)カード

IBでは、RDMA(Remote Direct Memory Access)技術が活用されています。これはデータ転送のお膳立て(準備)には、CPUを活用しますが、データ転送自体にCPUを介在させずカードのハードウェア間で行い、従来のネットワーク転送で発生したアプリケーションメモリ、ネットワークのプロトコル・スタック、OSのカーネルメモリなどでのデータの受け渡し(データのメモリ間コピー)を排除することで、遅延性能を向上させCPU負荷をオフロードします。

 

これにより、EDR などデータ転送の帯域幅が太くなり実質的にデータ転送量が増えても、CPU負荷に影響を与えないデータ転送を実現しています。メラノックスでは、CPUを積極的に活用しデータ転送を行おうとするオンロードアーキテクチャに対し、データ転送自体にCPUを介在させないこの方式を、オフロード・アーキテクチャと呼んでおり、IB によるRDMA転送だけでなく、カード上にCPUの介在を排除する様々なオフロード・エンジンを搭載することで、このオフロード・アーキテクチャを推し進めています。

さて、カード製品の選択には、カードに搭載するシリコンの世代に加え、費用、ポート数、FDRなどの転送レート、PCI Express のレーン数、ドライバーといった要素がございます。メラノックスの場合、InfiniBand 専用のConnect-IBと、例えば、ConnectX-3 VPI のように、最後にVPIと付く、InfiniBand とEthernetの両方で活用可能なConnectXシリーズを展開しています。(最後にVPIの代わりにENと付くEthernet専用のカードも存在していますのでご注意ください。)また、ConnectX シリーズの場合、X-の後の数字が大きくなればなるほど、新しい世代の製品となっており、基本的には前世代の機能を包容しながら新たな機能の追加、転送能力、場合によっては転送レートの強化が図られています。

2018年2月時点の最新のカード製品は、ConnnecX-5シリーズとなります。また各シリーズにおいて、ポート数、転送レート、PCI Expressのレーン数といった部分で、バリエーションがございますのでカードの選択時に合わせてご確認ください。なお、InfiniBand の仕様として トランキング 機能で冗長構成を組むこと自体は可能ですが、Ethernetのようにポートの帯域幅を束ねることはできませんのでご注意ください。

ドライバーについては、IBTA で定められたInfiniBandの仕様に基づき、各社がOFA(OpenFabrics Alliance)の元で開発し、オープンソース版として公開されるものに加え、それらを一旦引き取り、バグ修正や自社機能の追加、他社ドライバーの削除などを行い、自社リリース版のOFEDドライバーとして公開しているものがあります。前者は、Linuxのディストリビューション等に含まれ、後者は、例えば、MLNX OFED としてメラノックスのWebサイトから提供されているものになります。メラノックス のHCAドライバーでは、ConnectX-3 Pro 以前の世代と、ConnectX-4/Connect-IB 以降の世代では、ドライバー内部のコアモジュールが異なり、OSバージョンのサポートに一部違いがございますのでご注意ください。(特にWindows OSの場合、ドライバー自体がWinOFとWinOF2と異なるものになります。)

スイッチ

各HCAを接続するには、スイッチを活用します。スイッチには、ManagedタイプとExternally Managed (Unmanaged)タイプの2種類があり、Managedタイプのスイッチには、内部にCPUボードが搭載されており、各ノードに対し固有のアドレスを割り振るサブネットマネージャ(Subnet Manager)機能をはじめとするファブリック管理の機能と周囲温度を読取りファンの回転数に反映させるなどに代表される筐体の管理機能を提供し、CLI 及びGUIで管理を行えるようになっています。現在メラノックスから、FDR IBでは、12、18、36ポートの構成、EDR IBでは、36ポートの構成で、それぞれManaged 及びExternally Managed 両方のスイッチが提供されています。

36を超えるポート数を接続するには、複数台のスイッチを組み合わせることで対応します。前章で記載の通りIBには様々な接続方法がありますが、HPC の世界で最も一般的に活用されているのはノン・ブロッキングのFAT TREEと呼ばれる接続方法で、スイッチを2段構成にし下段のスイッチでコンピューターと接続するポート数と同じ数を上段のスイッチ間の接続に活用することで転送のボトルネックを回避する方法となります。

普段Ethernetスイッチを扱われている方にとっては、108台のコンピューターを接続するのに9台ものスイッチが必要ということ自体に驚かれるかもしれませんが、Ethernetでは、オーバーサブスクリプションなど考え方としてブロッキングが前提となっており状況が異なりますことご留意ください。ディレクタースイッチなど大規模なスイッチでも内部のスイッチシリコン間の接続には、この接続方法が採用されています。複数台のスイッチでFAT TREEトポロジーを構築する場合、サブネットマネージャを冗長構成とするため、Managedタイプのスイッチ(上記図では、SB7800)を2台、残りのスイッチの台数をExternally Managed タイプのスイッチ(上記図では、SB7890)で構成します。もちろんすべてのスイッチをManagedスイッチで構成してもよいのですが、一般的には費用面との兼ね合いで上記のような構成となることが多い模様です。サブネットマネージャは複数起動しておいてもEthernetの世界でのMACアドレスに相当するGUIDによる優先順位付けが自動的に行われ、1つのみしか有効になりませんので動作自体に問題はございません。なおメラノックスのManagedスイッチの場合、Managedスイッチの管理ポート間を接続し設定を行うことで、プライマリのサブネットマネージャが使用していた経路情報をフェイルオーバー時にセカンダリのサブネットマネージャに引き継ぐ機能が用意されていますのでこれも合わせてお使いいただくとよいかと思います。

メラノックスでは、スイッチ名とコンピューターの接続台数の情報よりFAT TREE構成に必要となるスイッチの台数を算出する「Mellanox InfiniBand Cluster Configurator」を提供しています。

次世代のInfiniBandでは、4レーンを活用し200Gb/sを実現するEDRの正常進化版のHDRに加え、2レーンのみを活用し、100Gb/sの転送レートを実現するHDR100と呼ばれる仕様も提供される予定です。これにより、40ポートのHDR IBスイッチは、80ポートのHDR100 IB スイッチとしても活用できるようになる予定です。