web-dev-qa-db-ja.com

UDPマルチキャスト送信/受信:ルーティングまたはsocatの問題?

Linux Centos7で「socat」を使用していくつかの問題を診断しています。サーバーとクライアントはすべてLinuxcentos7であり、すべて複数のインターフェースを備えています。サーバー10.1.1.1はスイッチ1にあり、10.1.1.2はスイッチ2にあります。スイッチ1とスイッチ2は、Cisco NX-OSを実行する、直接接続されたレイヤ3スイッチです。これは私が説明できない状況です:

sTDINを介してデータを送信するサーバー10.1.1.1(スイッチ1、UDPパケット送信者に接続):

socat STDIO UDP4-DATAGRAM:239.2.2.1:12345

クライアント10.1.1.2(スイッチ2、UDPパケットレシーバーに接続):

socat UDP4-RECVFROM:12345,ip-add-membership=239.2.2.1:10.1.1.2,fork,reuseaddr -

サーバー10.1.1.1と同じマシンで別のレシーバーを起動するまで、クライアントはサーバーのUDPパケットを受信します。

socat UDP4-RECVFROM:12345,ip-add-membership=239.2.2.1:10.1.1.1,fork,reuseaddr - 

この2番目のレシーバーを起動すると、10.1.1.2のクライアントはサーバーからのデータの受信を停止します。また、tcpdumpを使用すると、10.1.1.2のそのポートでパケットが受信されていないことがわかります。さらに、それ以降、サーバーとクライアントを再起動しても、10.1.1.2はそのマルチキャストプレフィックス(239.2.2.x)の10.1.1.1からのマルチキャストパケットを受信しなくなります。

これはスイッチルーティングの問題ですか?または、「socat」コマンドラインでいくつかのパラメーターを見逃しましたか?そのインターフェイス(10.1.1.x)でrp_filter = 0であることを確認しました。

編集:より多くのネットワーク設定を含めるために質問を更新します。ルーティングの問題と同じくらい、これに対する疑いがあります。

更新:Layer3スイッチの10.1.1.x VLANでPIMが有効になっていないことがわかりました。これは、マルチキャストルーティングが有効になっていないことを意味します。とはいえ、別のスイッチで初めて10.1.1.2がデータを受信するのはなぜかわかりません。

2
surfcode

スイッチのルーティングの問題であることが判明しました。 10.1.1.xのVLANのマルチキャストルーティングはオンになっていません。Ciscoルーターに「pimsparse-mode」を追加すると、すべてが期待どおりに機能します。

2
surfcode