宛先MACがすべて0のフレーム受信

宛先MACがすべて0のフレーム受信

GOOSEメッセージ(マルチキャストメッセージ、汎用オブジェクト指向変電所イベント、IEC61850プロトコル規格の一部)サブスクリプションモジュールを実装しようとしています。ほとんどすべての場合、GOOSEメッセージを遅延なく読み取ることができました。ただし、断続的にGOOSEメッセージが3秒遅れてアプリケーションに到着します。エラー状況でキャプチャされたPCAPファイルを分析した結果、GOOSEメッセージが遅延なくデバイスネットワーク層に到達したことが確認されました。

recvfrom下位層からメッセージを取得するために呼び出しを使用します。

Linuxバージョン:linux-3.8.13

次のように電話に応答します。

unsigned char etherFrameRx[1518];

recvLen = recvfrom (hPktSock, etherFrameRx, sizeof(etherFrameRx),
          MSG_TRUNC, NULL, NULL);

ソケットは次のように初期化されます。

hPktSock = socket (PF_PACKET, SOCK_RAW, htons(ETH_P_ALL);
arg |= O_NONBLOCK;
ret = fcntl (hPktSock, F_SETFL, arg);

遅延(デバイスMACレイヤからメッセージを受信した後にアプリケーションがメッセージを受信するのにかかる時間)が記録されますが、アプリケーションはターゲットMACが「すべて0」(0:0:0)のフレームを受信し続けます。 :0:0:0) 。また、Wiresharkログ(eth0インターフェイス)ではこれらのメッセージを確認できません。カーネルのこれらの連続した例外メッセージは、GOOSE の受信を遅らせます。

デバイス時間が同期された後、この問題が発生する可能性が高くなります。 SNTPは時間同期のためのメカニズムです。

Wireshark(GOOSEに参加しているデバイスにインストールされている)を使用してエラー状態でキャプチャされた.pcapファイルは、次のパスで共有されます。

【使用不可】

ログには12:36:11.636989でGOOSEメッセージが受信されました。ちなみに、アプリの更新時間は12:36:14.8012です。

LinuxカーネルがターゲットMACがすべてゼロのフレームを返すのはなぜですか?

ベストアンサー1

おすすめ記事