0

新しいRedhat Enterprise Linux 6 サーバーでマルチキャスト データを受信するアプリケーションを作成しています。サポート チームは、サーバーがマルチキャスト データ フローを取得できるかどうかをテストするためのアプリケーションを提供してくれました。

テスト アプリケーションを起動し、tcpdump を実行すると、マルチキャスト データが入ってくるのがわかります。

12:58:21.645968 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 729
12:58:21.648369 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 969
12:58:21.649406 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 893
12:58:21.651823 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 604
12:58:21.654079 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 913
12:58:21.656724 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 1320
12:58:21.658194 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 124
12:58:21.658226 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 217
12:58:21.658348 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 182
12:58:21.658625 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 1014
12:58:21.659592 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 135
12:58:21.659842 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 242
12:58:21.660674 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 242
12:58:21.660743 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 84
12:58:21.662327 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 84
12:58:21.669154 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 161
12:58:21.669365 IP 10.26.12.22.50002 > 238.6.6.36.50002: UDP, length 166
12:58:21.670792 IP 10.26.12.22.60002 > 238.230.230.100.60002: UDP, length 49
12:58:21.670796 IP 10.26.12.22.60002 > 238.230.230.100.60002: UDP, length 49
12:58:21.670798 IP 10.26.12.22.60002 > 238.230.230.100.60002: UDP, length 49
12:58:21.670799 IP 10.26.12.22.60002 > 238.230.230.100.60002: UDP, length 49

しかし、アプリケーションはデータ フローを取得できません。つまり、アプリケーションは、マルチキャスト データ サブスクリプションが失敗したかのように実行されます。

サポート チームは、他のサーバーで問題なく動作しているため、テスト アプリケーションに問題がないことを保証します。新しいサーバーを使用しているため、サーバーの設定が正しくない可能性があります。

tcpdump がデータを表示できる場合でも、マルチキャスト データの受信をアプリケーションが停止する可能性がある Linux の設定を探す必要があるかどうか疑問に思っています。ライブラリやパッケージがありませんか?

ありがとう。

4

3 に答える 3

3

まず、RHEL6でカーネルレベルでマルチキャストサポートが有効になっていることを確認する価値があります。(おそらくそうですが、チェックできるRHEL 6がありません)/ proc / net/igmpファイルが存在することを確認してください。

また、マルチキャストアドレス範囲が予期しているインターフェイスにルーティングされていることを確認してください。これが正しくない場合、tcpdumpが(無差別に)パケットをスニッフィングしているときにのみマルチキャストを受信するという興味深い症状が発生する可能性があります。これは、NICがマルチキャストを適切にサポートしていない場合にも当てはまります。一部の古いNICは、ifconfigに示されているマルチキャスト設定に関係なく、マルチキャストを受信するために無差別モードに設定する必要がある場合もあります。

もう1つの方法は、テストアプリケーションの実行中に/ proc / net/igmpファイルの内容を確認することです。/ proc / net / igmpファイルには、サーバーがアクティブに受信しているすべてのマルチキャストグループアドレスのリストが含まれます。テストアプリケーションが受信する予定のマルチキャストグループアドレス(この場合は238.6.6.36および238.230.230.100)に対応するエントリが[グループ]列にある場合、IP_ADD_MEMBERSHIP(またはIP_ADD_SOURCE_MEMBERSHIP)ソケットオプションにはおそらく正しく、そして正しいNICで呼び出されました。[グループ]列には、マルチキャストグループアドレスが16進数以降で表示されることに注意してください。したがって、238.6.6.36は240606EEとして表示されます。

テストアプリケーションを実行しているのと同じマシンでマルチキャストルーター(Xorp、igmpproxyなど)を実行している場合は、状況がさらに複雑になる可能性があります。この場合は、/ proc / net/ip_mr_vifファイルと/proc/ net / ip_mr_cacheファイルも調べて、適切なエントリがあることを確認する必要があります。

于 2012-03-29T00:00:25.027 に答える
2

pls はスイッチ レベルでチェックします。私の場合、クラスタリングで立ち往生していました。私のクラスターはマルチキャストでのみ動作します。しかし、マルチキャストでのパケット損失に直面していました。私にはあまりにも奇妙でした。しかし、最終的には私の親友(グーグル)の一人から解決策を得ました。スイッチ レベルでIGMPを無効にしたところ、問題なく動作しています。

于 2012-12-11T12:49:37.350 に答える
1

RHEL 6 マシンでも同様の問題が発生しました。ファイアウォールを介して、必要なUDPポートを許可されたポートに追加することで解決しました。udp ポート 50002 を追加してみてください。

于 2012-03-28T21:59:20.180 に答える