2

私は次の必要があります:

  • IP アドレスに対して 1K (またはそれ以上) の Web クライアント (つまり、http 要求) をシミュレートします。
  • 各クライアントは、異なる Mac をソースとして使用する必要があります。
  • つまり、このクライアントからの最大同時リクエストを (基本的な制限の下で) 取得したいと考えています。
  • これらすべてを同じマシンで
  • Linux を使用しています。

私の質問: 1 秒あたりのユーザー数とリクエスト数を最大化するにはどうすればよいですか?

私は自分がやっていることをかなり確信しています (99% :))。これらのリクエストは、OpenFlow スイッチに基づく特別な使用例であるため、送信元として別の MAC アドレスを使用して送信する必要があります。しかし、このシナリオを問題に拡張することは無関係です。

PS私は現在、Eventlet Networking Libraryを使用してPythonで作業しています。Python/Eventlet は必須ではありませんが、特定の緊急性があり、コードの迅速な実装/変更が有益であるため、ここに含めます。仮想インターフェイスを別の MAC アドレスに関連付けることができるのではないかと考えていましたが、要求インターフェイスを指定する方法がありません。

4

1 に答える 1

2

仮想インターフェイスを別の MAC アドレスに関連付けることができるのではないかと考えていましたが、要求インターフェイスを指定する方法がありません。

1000 個の仮想インターフェイスをすべて 1 つの実際のインターフェイスにバインドし、それぞれが異なる偽の MAC アドレスを持つように作成する場合、はい、それを行うことができます。

私の知る限り、eventlet.connect深く掘り下げることなく、特定のインターフェイスを簡単に提供することはできませんlibevent。ただし、ローカル アドレス (IP、ポート) は非常に簡単に指定できますeventlet.connectパラメータを取りbind、ローカル アドレスを取り、それにバインドします。

したがって、各仮想インターフェースに異なる IP アドレスを与え、実際のインターフェースを介してそれらすべてをブリッジするだけで十分です。

これがうまくいくかどうかは完全にはわかりませんが、うまくいくはずです。試してみてください。

明らかな欠点が 1 つあります。1000 個のルーティング可能な IP アドレスが必要です。しかし、自分が制御する NAT の背後にいると仮定すると、それは簡単です (例: 10.0.xy.1zw)。

あなたが制御している NAT の背後にいない場合は、NAT を投げてください。同じマシンの実際のインターフェースで実行して、ブリッジの代わりに仮想インターフェースのルーターにすることもできます。

しかし、一度それを行うと… 1000 個の仮想インターフェイスは必要eventletないかもしれませんし、コード内で何もする必要がないかもしれません。MAC アドレスをランダム化するように NAT を構成するだけであれば、完了している可能性があります。私はこれについて肯定的ではありません。スマートにしようとして、同じ (ホスト、ポート) への短いスパン内の複数の接続をルーティング用の同じ接続として処理することがありますが、これはここで邪魔になります。しかし、もう一度試してみてください。

いずれにせよ、もちろん、サーバーはそれらを同じ NAT ルーターからの 1000 のクライアントとして認識します。これを回避する方法はありません (実際にインターネットのさまざまな場所に 1000 のアドレスがある場合を除きます) なりすまし以外にはありません。ただし、何らかの動作をシミュレートするだけでなく、実際にサーバーのロジックをだまそうとしない限り、違いはありません。

一方、実際には、Web サーバーのホストはインターネットに接続しているルーターの MAC アドレスのみを認識し、Web サーバー ソフトウェアは何も認識しないことに注意してください。何をテストしようとしている可能性があるかについていくつかの仮定を立てる必要がありましたが、間違った方向に進んでいる可能性があります. その場合は、ユース ケースをもう少し詳しく説明することをお勧めします。

于 2013-03-21T00:53:49.523 に答える