我需要公式来准确计算1 Gig Nic卡的带宽。我正在做的是以1Gbps的速度发送第2层数据包,但是我的软件显示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];
最佳答案
在以太网中,还必须考虑interframe gap,该时间至少为96个量子时间,即,量子时间是发送比特的时间,即GigaEthernet中的1ns(1秒/ 1,000,000,000)。
另外,如果发生碰撞,将有backoff time,该量子是在0到2 ^ -1之间随机选择的。
关于c++ - 需要1千兆网卡的精确带宽的公式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/343025/