2016-05-11 14 views
0

raw Ethernetフレームで作業しています。私はLinuxマシン上にイーサネットインターフェイスeth0と仮想VLANインターフェイスeth0.100を持っています。私のRAWソケットは仮想インターフェイスeth0.100にバインドされています。問題は、VLANタグ付き(VLAN ID = 100)フレームがこのインターフェイスに外部から送信されると、アプリケーションが同じイーサネットフレームの2つのコピーを取得することです。アプリケーションからは、これらのフレームの違いを見ることはできません。ペイロードの内容はまったく同じです。私のインターフェイスはプロミスキャスモードでは動作していません。RAWソケットを介した仮想VLANインターフェイス上のイーサネットフレームの複製

Iは、フレームをキャプチャするためのtcpdumpを使用し、以下の結果

  • はeth0である:これは、VLANはタグ付けされて一つのフレームを取得 - 100
  • eth0.100を:これは、VLANはありません一つのフレームを取得しますタグ付き。

eth0にバインドすると、まだフレームのコピーが2つ取得されます。しかし、eth0.100を削除してeth0にバインドすると、ただ1つのコピーが得られます。私のアプリケーションはフレームの2つのコピーを取得していますか?eth0から1つ、eth0.100から1つだけですが、eth0.100にバインドされていますか?

BPFを使用しようとしましたが、eth0.100で使用するフィルタがわかりません。

+0

コードについてはどうですか? – someuser

+0

通常のrawソケットプログラミング。私は仮想インターフェイスeth0.100にバインドしましたが、それは唯一の違いです。 – Neo

+0

私たちはあなたにとって何が正常であるか分かりません。私はtcpdump(またはwireshark)のソースコードを見ることができます。 – someuser

答えて

0

BPFを使用しようとしましたが、tcpdumpを使用してフィルタリングルールを生成したとき、生成されたバイトコードがeth0とeth0.100の両方のインターフェイスで同じであることがわかりました。だから私はその考えを落とした。ソリューションの下で私のために働いた。

仮想インターフェイスeth0.100を削除し、rawソケットをベースインターフェイスeth0にバインドしました。フレームを送信するとき、私は手動でフレームにタグを付けました。ベースインターフェイスがすべてのフレームを取得するので、私はレセプションで特別なことはしません。今は私が以前見ていた重複フレームは見えません。

これは、重複するフレームが表示された理由を説明していません。私が答えを得ると、さらに調査して投稿します。

関連する問題