2

アプリケーションでマルチキャストを利用して、中間層に接続されたクライアントに更新を効率的にブロードキャストします。ネットワーク エンジニアから、「当社のマルチキャストはどのように機能するか」と、サポートされるマルチキャスト プロトコルについて、よく尋ねられます。私に関する限り、私たちのクライアント プロセスは、次のコマンドを発行することによって、マルチキャスト グループに参加するだけです。

m_sSocket = socket(PF_INET, SOCK_DGRAM, 0);

if (m_sSocket == INVALID_SOCKET)
{
    SocketError();
    return false;
}

sockaddr_in saServer;
ZeroMemory(&saServer, sizeof(sockaddr_in));

saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = htonl(INADDR_ANY);
saServer.sin_port = htons(nMulticastPort);

if (bind(m_sSocket, (sockaddr *)&saServer, sizeof(sockaddr_in)) == SOCKET_ERROR)
{
    SocketError();
    return false;
}

m_ipMulticast.imr_multiaddr.s_addr = inet_addr(tostring(strMulticast).c_str());
m_ipMulticast.imr_interface.s_addr = htons(INADDR_ANY);

// join the multicast group
if (setsockopt(m_sSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, 
               (LPCSTR)&m_ipMulticast, sizeof(ip_mreq)) == SOCKET_ERROR)
{
    SocketError();
    return false;
}

そこには、どのマルチキャスト プロトコルを使用する必要があるかについての区別はありません。 この種の質問に私がどのように答えるかについて、何か有益な提案はありますか? 現時点では、マルチキャストに使用するアドレス/ポートを提供し、ネットワーク ルーターでこのアドレス/ポートを開くよう依頼するだけです。しかし、これでは十分ではないようで、より多くの情報が必要です (?)

4

3 に答える 3

3

ほとんどの場合、ネットワーク エンジニアは次のようなことを理解しようとしています。

1) サブスクリプションはネットワーク内で密集していますか? シスコのスイッチ (および他のスイッチもあると思います) は、各セグメントで予想されるサブスクライバーの数に応じて、異なる構成にすることができます。設定は、スイッチのパフォーマンスに影響します。

2) 複数の LAN または VLAN をクロスする予定はありますか? TTL は 1 以外になりますか? スイッチでパケットをルーティングするために使用するアルゴリズムを制御する設定もあります。設定が間違っていると、すべてのパケットがスイッチの CPU に到達する可能性があります。良いことではありません。

これらの質問に対する答えは、ネットワークの設計、つまりルーターとスイッチで構成する設定に影響します。あなたのネットエンジニアは、プロトコルやコンテンツなどに興味があるかもしれませんが、それらのより高いレベルの問題は彼らの仕事に影響を与えるものです. 私の推測では、彼らはそれらの問題を理解したいと思っていますが、彼らに尋ねる方法を知りません.

于 2009-08-18T12:45:33.477 に答える
2

いくつかのマルチキャスト対応アプリケーションのサポートと構築において、私たち自身のネットワーク エンジニアと密接に協力できたことを嬉しく思います。

彼らが求めているのは次のようなものです (ネットワーク レベルから「マルチキャスト」とは何か、またその仕組みを理解していると仮定します)。

  1. あなたのアプリケーションは頻繁にグループに参加/脱退しますか? (トラブルシューティングに重要)
  2. あなたのアプリケーションは、営業時間外にグループを離れますか? (ネットワークの Windows がマルチキャスト ツリーを再構築できるようにします)
  3. マルチキャスト ソケットを介した通信の性質はどのようなもので、データ損失に対してどの程度敏感ですか (udp は TCP/IP のように到着を保証しません)。
  4. 関与しているサーバーの数と、それらのサーバーの種類と場所は? (A から B へのマルチキャストを取得するために、どのようなネットワーク変更を行う必要があるかを理解するのに役立ちます)
  5. マルチキャストのプロデューサー/コンシューマーは誰ですか? (#4と一緒です)
于 2010-02-19T15:13:52.713 に答える
0

TAO (The ACE Orb) でのマルチキャストの実装を含む無料のクロスプラットフォーム ライブラリ ACE ( http://www.cse.wustl.edu/~schmidt/ACE.html ) があります。相互参照して申し訳ありませんが、問題はそこで解決されたと確信しています。

于 2009-08-18T11:37:24.393 に答える