web-dev-qa-db-ja.com

Winpcapは、ギガビットNIC)を通過するすべてのパケットを、パケットを見逃すことなくキャプチャできますか?

Winpcapを使用して、サーバーのギガビットNICを通過するすべてのネットワークパケットをキャプチャしたいと思います。

ネットワークリンクを100%まで利用できると仮定すると、最大ネットワーク速度は1000Mbpsです。 TCP/IPヘッダーを除外すると、最大TCPデータレートは約940Mbpsになります。

NIC宛先ポート6000を使用して940MbpsでTCPを介して1GBファイルを送信するとします。Winpcapを使用してNICを通過するすべてのネットワークパケットをキャプチャしてからそれをpcapファイルにダンプします。 Wiresharkを使用してpcapファイルを分析し、TCPポート6000に送信されたすべてのネットワークパケットのパケットサイズの合計を確認すると、pcapファイルから正確に1GBを取得できますか?

ありがとう。

3
userpal

ネットワークリンクを最大100%利用できると仮定すると、最大ネットワーク速度は1Gbpsではありません。フレーム間のギャップとチェックサムによるものは少なくなります。これは、パケットヘッダーを考慮し始める前です(元の質問で正しく述べたように)。

また、上記のコメントが示すように、一般的なマシンは、ワイヤースピードでパケットを生成するのに苦労します。もちろん、ワイヤースピードで同時にパケットを生成およびキャプチャします。 (Linuxマシンで)ワイヤースピードでパケットを生成するために使用する1つの方法は、1500バイトのパケットを作成してtcpreplayを使用することです。この方法を使用すると、ワイヤスピードに非常に近づくことができますが、非常に高速なマシンを使用していない限り、CPUを約100%使用します。

そうは言っても、wiresharkでキャプチャして表示することにより、TCPポート6000に送信されるデータの量を決定する計画に問題はありません。(必ずTCPインターフェイス上のすべてのパケットではなく、ポート6000。)パケットキャプチャがすべてのパケットを処理できないように、CPUが100%ロードされていないことを確認する必要があります。ただし、これは関係なく当てはまります。どの方法を使用するか。

1
wookie919