2

1 Gig Nic カードの帯域幅を正確に計算する式が必要です。私がやっていることは、レイヤー 2 パケット @ 1Gbps を送信することですが、私のソフトウェアは 6oo Mbps を示しています。

実験全体は背中合わせです。スイッチもルーターもありません。

これが私がしたことです。

// LinkSpeed = 1Gb

UINT nBandwidth =   LinkSpeed/100;//Mbps


nBandwidth = nBandwidth/8; //Bytes/sec

nBandwidth = nBandwidth/FrameLength;
//Frames/Sec. Frame Length = 1518

UINT FramesPerBurst = (nBandwidth*Sleeptime)/1000;
//Frames/Burst 

UINT nBufferSpaceNeededPerFrame = FrameLength-4 + sizeof(dump_bpf_hdr));


UINT nTxBufferSize = FramesPerBurst * nBufferSpaceNeededPerFrame;

unsigned char* pTxBuffer = new
unsigned char[m_nTxBufferSize];
4

4 に答える 4

1

イーサネットでは、フレーム間ギャップも考慮する必要があります。これは最小で 96 量子時間です。つまり、量子時間はビットを送信する時間であり、GigaEthernet では 1ns (1 秒 / 1,000,000,000) です。

また、衝突が発生すると、バックオフ時間が発生します。この量子は、0 から 2^<nb 衝突> - 1 の間でランダムに選択されます。

于 2008-12-05T07:35:59.430 に答える
1

カードが 1 ギガビットのカードであるからといって、全体の速度が得られるわけではありません。マットが言ったことに加えて、信号の減衰と干渉について心配する必要があります。ルーターまたはスイッチが混雑すると、転送速度も遅くなります。実際のデータ転送速度を完全に正確に表す式はありません。

于 2008-12-05T08:43:49.167 に答える
1

整数を使用してこれらすべての計算を実際に行っている場合、奇妙な結果が得られるでしょう...

ケーブルと通信するハードウェアは 99.999% 確実に 125MBytes/秒を完全に処理でき、負荷の軽いスイッチもおそらく追いつくでしょう。災害が発生しない限り、回線上で重大なエラー率が発生することもありません。

実際のパフォーマンスは、パケットの送信に使用しているプラ​​ットフォームの影響を受ける可能性が最も高いです-それについてはあまり言いません.

于 2008-12-05T09:09:44.420 に答える
0

まず、番号を保存するには、少なくとも「長い」が必要です。あなたが受け取ったフレームの。

使用されている帯域幅を計算するには、

a = GetIntfCounters()

秒単位でタイマー (タイムアウト) を開始します

b = GetIntfCounters()

パケット/秒 = (b - a)/タイムアウト

ビット/秒 = (パケット/秒 * パケットサイズ)

バイト/秒 = (ビット/秒)/8

GetIntfCounters() は、使用しているソフトウェア プラットフォームによって異なります。タイマーの代わりに、特定の間隔でスリープを使用し、その間隔で pps を計算できます。ただし、デバイスがフレームを受信する帯域幅の唯一の現実的な計算は、インターフェイス カウンターを考慮に入れる場合です。

于 2008-12-31T07:57:10.913 に答える