12

PF_RING私は自分のアプリケーションで送受信に使用することを検討していました。

TCP 接続を維持するために使用する場合は、生のパケットPF_RINGを送信するため、IP および TCP メッセージを自分で手動で「偽造」する必要があるようです。pfring_sendこれは、上に TCP を手動で再実装する必要があるということPF_RINGですか?

を使用して受信することには明らかな利点があることは理解していますが、 を使用しPF_RINGてデータを送信しようとした人はいPF_RINGますか? 通常の送信呼び出しよりも明確な利点はありますか?

注: 私は DNA (Direct NIC Access) を使用していません。NIC 対応ドライバーでカーネル部分バイパスを使用しているだけです。

4

1 に答える 1

12

最初の質問に答えるには、はい、TCP/IP メッセージを一から手動で作成する必要があります。MAC アドレスなどすべてです。例として、ntop.orgのpfsend.cを見てください。

ntop.org は、説明を含むPF_RINGユーザー ガイドも提供しています。

を使用してデータを送信するPF_RINGことは絶対に可能です。アイデアは、ネットワーク上の実際のデータのすべての概念をバイパスし、できるだけ速く送信することです。ntop.org のワイヤ スピード トラフィック生成を参照してください。TCP/IP 用のカーネルを使用した通常の送信呼び出しに対する唯一の利点は、データを 1. より高速に、2. 完全にフォーマットせずにネットワーク上に送信できることです。2 は、たとえば、以前にキャプチャしたパケットまたは複数のパケットをネットワーク上で再生する場合に便利です。


カーネルの介入なしに生の基になるデータにアクセスする必要がある特定のユースケースがない限りPF_RING、何らかの方法で使用する正当な理由はまったくありません。最善の策socket()は、利用可能な標準を使用することです。ほとんどの場合、それで達成できるパフォーマンスは十分以上です。

どのような具体的なユースケースを念頭に置いていましたか?

于 2012-10-31T06:11:31.133 に答える