web-dev-qa-db-ja.com

IPoIBとTCP Infinibandの違い)

誰かがIPoIBの概念とTCP infinibandを介して説明できますか?ネイティブのinfinibandによって提供される全体的な概念とデータレートは理解していますが、TCPとIPoIBは適合します。なぜそれらが必要で何をするのですか?誰かが自分のネットワークがIPoIBまたはTCP infinibandを使用していると言いますか?どちらが良いですか?私は強力なネットワーキングのバックグラウンドなので、詳しく説明できるといいですね。

ご協力ありがとうございました。

40
jitihsk

InfiniBandアダプター(「HCA」)は、ネイティブの「動詞」プログラミングインターフェイスを介して使用できるいくつかの高度な機能を提供します。

  1. データ転送は、カーネルをバイパスし、システムコールのオーバーヘッドを回避して、ユーザー空間からハードウェアに直接開始できます。
  2. アダプターは、送信側または受信側のいずれのCPUも使用せずに、大きなメッセージ(数メガバイトでも)をパケットに分解し、ACKを生成/処理し、失われたパケットを再送信するなど、すべてのネットワークプロトコルを処理できます。

IPoIB(IP-over-InfiniBand)は、IBを介してIPパケットを送信する方法を定義するプロトコルです。たとえば、Linuxには、このプロトコルを実装する「ib_ipoib」ドライバーがあります。このドライバーは、システム上の各InfiniBandポートに対してネットワークインターフェイスを作成し、HCAを通常のNICのように機能させます。

IPoIBはHCA機能を十分に活用していません。ネットワークトラフィックは通常のIPスタックを通過します。つまり、すべてのメッセージにシステムコールが必要であり、ホストCPUはデータをパケットに分割するなどの処理を行う必要があります。ただし、通常のIPソケットを使用するアプリケーションは、 IBリンクのフルスピード(ただし、CPUは、おそらく32 Gb /秒のQDR IBリンクを使用するのに十分な速度でIPスタックを実行できません)。

IPoIBは通常のIP NICインターフェースを提供するため、その上でTCP(またはUDP)ソケットを実行できます。TCP =最近のシステムを使用すると、10 Gb /秒をはるかに超えるスループットが可能ですが、これはかなりの量のCPUを消費します。質問に対して、IPoIBとTCP InfiniBandとの間に実際の違いはありません- -どちらも、IBハードウェア上で標準のIPスタックを使用することを指します。

実際の違いは、通常のソケットアプリケーションでのIPoIBの使用と、ネイティブIB動詞インターフェイスに直接コーディングされているアプリケーションでのネイティブInfiniBandの使用との違いです。ネイティブアプリケーションは、ほとんどの場合、ネットワークのCPU使用量を抑えながら、はるかに高いスループットと低い待機時間を実現します。

70
Roland