短い話:私の DDS サブスクライバーは、私の DDS パブリッシャーからのデータを見ることができません。私は何が欠けていますか?
長い話:
QNX 6.4.1 VM A -- Broken Publisher. IP ends with .113
QNX 6.4.1 VM B -- Working Publisher. IP ends with .114
Windows 7 -- Subscriber/Main Dev box. IP ends with .203
RTI DDS 5.0 -- Middleware version
QNX VM (自分のマシンではなく、ネットワーク上でホストされている) があり、RTI DDS 経由でデータを公開しています。Windows 7 サブスクライバー アプリケーションにデータが表示されません。
興味深いことに、同じコードを VM B に置くと、サブスクライバーがデータを取得できます。これは Windows 7 のファイアウォールの問題に違いないと考えて、VM A の IP アドレスを VM B と交換しましたが、これは役に立ちませんでした。
Wireshark を使用すると、VM A からのハートビート トラフィックを確認できますが、データはありません。VM B からは、ハートビート トラフィックとデータが表示されます。以下は、無害化された Wireshark のスニペットです。
NDDS_DISCOVERY_PEERS
マルチキャストと、各会話の反対側の明示的な IP アドレスの両方を含めるように設定されています。QOS プロファイルは同じで、RTI アナライザーは一致分析が成功したことを示します (すべて緑色)。
仮想マシン A:
NDDS_DISCOVERY_PEERS=udpv4://239.255.0.1,udpv4://127.0.0.1,udpv4://BLAH.203
仮想マシン B:
NDDS_DISCOVERY_PEERS=udpv4://239.255.0.1,udpv4://127.0.0.1,udpv4://BLAH.203
Windows 7 ボックス:
NDDS_DISCOVERY_PEERS=udpv4://239.255.0.1,udpv4://127.0.0.1,udpv4://BLAH.113,udpv4://BLAH.114
それらをNDDS_DISCOVERY_PEERS
行に含めると、ネットワーク上の他の人々は、Windows 7 ボックスで DDS SPY を使用して VM A からの DDS トラフィックを見ることができます。私の Windows 7 ボックスではできません。
Windows 7 のイベント ログには、データ パケットを停止しているファイアウォールまたは WFP が表示されていないようです。
Windows 7 マシンから RTI DDS Spy を実行すると、VM A (0A061071) ライターがネットワーク上に表示されますが、データは受信されません。また、Windows 7 マシンのサブスクライバーのリーダーが表示されていることも示されていますが、奇妙な IP アドレスで表示されています。
おまけの質問(主な質問ではなく、単なる好奇心から): ローカル マシンのトラフィック192.168.11.1
が、マシンの IP または の代わりにDDS SPY に表示されるのはなぜ127.0.0.1
ですか?
主な質問:何が欠けていますか?
更新:
route print
私の Windows 7 ボックスでは、VM A でマルチキャスト グループに参加したことが示されている
netsh interface ip show joins
ように見えます。
調査の更新:
VM を再起動しても効果はありませんでした。
Windowsボックスを再起動しても効果がありませんでした。
NDDS_DISCOVERY_PEERS
両側の環境変数からマルチキャストを削除しましたが、効果はありませんでした。Windows 7 ボックスには、3 つのネットワーク インターフェイス (およびループバック) があります。1 つの LAN 接続と 2 つの (関連のない) VM アダプターです。LAN接続で作業しています。QNX VM には 1 つのネットワーク インターフェイス (およびループバック) があります。動作中の VM と故障した VM は、QNX 6.4.1 のフレーバーがわずかに異なるため、互いに異なるイーサネット ドライバーを使用していることに注意してください。壊れたものは
wm0
インターフェースとして、機能しているものはインターフェースとして持っen0
ています。これが問題だとは思いませんが、違いです。「壊れた」QNX VM の再生中に DDS SPY を実行し、DDS データを取得しました。VM がホストされている場所と Windows 7 マシンとの間のネットワークをスニッフィングして、インターフェイスから抜け出すかどうかを確認する良い方法はありませんが、QNX VM のイーサネット インターフェイスから送信されたパケット数を調べます。は確実に何かを送信していることを示しており、Windows 7 マシン自体での Wireshark キャプチャは、少なくとも一部のトラフィックが通過していることを示しています。
ここのLAN上の他の人々は、「壊れた」VMからのDDSトラフィックを見ることができます. ファイアウォールを再確認しましたが、役に立ちませんでした。ファイアウォールの問題であれば、VM A と VM B の間で IP アドレスを交換すれば問題は解決したと思います。いずれにせよ、Windows 7 のファイアウォールは現在オフになっているため、役に立ちません。
以下は、Wireshark 出力のいくつかの画面です。4回目以降は最後までトラフィックが4回目の最下位のように見える傾向があったため、3回目と4回目の間をスキップしました。
(ここではたくさんスキップしました)
(上記の最後の 11 行のようにほとんど続きます)
他に何を試す必要がありますか?
更新:
以下の Rose の質問に答えるrtiddsping -publisher
には、悪い VM で使用し、rtiddsping -subscriber
適切に動作します。
この問題は、変な IP アドレスが原因なのだろうか。たまたま公開され、何らかの形でラッチされる IP アドレスは、ローカル VM イーサネット アダプター (VM A とは別) です。以下のスクリーンショットを参照してください。
添付したいアドレスは 10.6.6.203 です。それを特定する方法はありますか?