IBV_ATTACH_MCAST(3), IBV_DETACH_MCAST(3)

作成日:2014.05.10

NAME

ibv_attach_mcast, ibv_detach_mcast - マルチキャストグループ(multicast group)に/から queue pair(QP) を参加させる/脱退させる。

SYNOPSIS

#include <infiniband/verbs.h>

int ibv_attach_mcast(struct ibv_qp *qp, const union ibv_gid *gid,
                     uint16_t lid);

int ibv_detach_mcast(struct ibv_qp *qp, const union ibv_gid *gid,
                     uint16_t lid);

DESCRIPTION

ibv_attach_mcast() は MGID gid と MLID mlid で指定されるマルチキャストグループに QP qp を参加させる。

ibv_detach_mcast() は MGID gid と MLID mlid で指定されるマルチキャストグループから QP qp を脱退させる。

マルチキャスト(Multicast)に関しては「InfiniBand プログラムに必要な基本的な概念」の 10. マルチキャストも参照のこと。 ibv_attach_mcast() はサブネットのマルチキャストフォワーディングテーブルを変更する機能は持たない。 既に構成されたマルチキャストがポートまで届く設定になっている時にのみ有効である。

送信側は MLID(Multicast LID) とマルチキャスト用の論理的な QP 番号である 0xFFFFFF を指定してマルチキャストメッセージを送信する。 このマルチキャストメッセージを qp で受信したい場合に、ibv_attach_mcast() を使って登録する。 同一の MLID に対して複数の QP を登録してもよい。 その場合、マルチキャストグループに登録済みの QP が同じマルチキャストメッセージのコピーをそれぞれ受け取ることになる。

ibv_attach_mcast() には MGID(Multicast GID) と MLID のペアで登録しているが、これを登録するのは Subnet Administrator(SA) の仕事であり一般に Subnet Manager 内に搭載される。 マルチキャストの利用は InfiniBand Verbs だけでは利用できず、ibv_attach_mcast() を使う前に、マルチキャストグループ自身の登録を Subnet Manager に依頼する必要がある。

RETURN VALUE

ibv_attach_mcast()ibv_detach_mcast() は成功した場合は 0 を返す。 失敗した場合は、エラーの原因を示す値(errno と同じ)を返す。

NOTES

qp に指定できるのは UD QP (IBV_QPT_UD) のみである。

1 つのマルチキャストグループに対して、異なる複数の QP を参加させることができるが、QP の個数は ibv_query_device で取得できる max_mcast_qp_attaqch を越えることはできない。

QP が同一のマルチキャストグループに対して 2 度以上 ibv_attach_mcast で登録されても、二重にカウントされることはなく、マルチキャストメッセージは 1 コピーしか受信しない。

1 つの QP が複数のマルチキャストグループに登録することも可能である。 こちらの上限は特に定義されていない。

SEE ALSO

InfiniBand Verbs API Referenceibv_create_qp(3)

AUTHORS

コメント

コメントを書き込む

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp