Нужна формула для точного пропускания с 1-гигабитной сетевой карты - PullRequest
2 голосов
/ 05 декабря 2008

Мне нужна формула, чтобы точно рассчитать пропускную способность для 1 Gig Nic Card. Что я делаю, так это отправляю пакеты Layer 2 со скоростью 1 Гбит / с, но мое программное обеспечение показывает 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 ]

1 голос
/ 05 декабря 2008

То, что ваша карта - 1 гигабитная, не означает, что вы получите всю эту скорость В дополнение к тому, что сказал Мэт, вам нужно беспокоиться о затухании сигнала и помехах. Если маршрутизатор или коммутатор перегружены, это также замедлит скорость передачи. Никакая формула не может дать вам абсолютно точного числа для реальных скоростей передачи данных.

1 голос
/ 05 декабря 2008

Если вы действительно выполняете все эти вычисления с использованием целых чисел, вы получите странные результаты ...

Аппаратное обеспечение, которое взаимодействует с кабелем, на 99,999% наверняка будет способно использовать 125 Мбайт / с, и, возможно, и слегка загруженный коммутатор тоже будет работать. Если у вас не произойдет сбой, вы также не увидите значительного количества ошибок на проводе.

Скорее всего, ваша реальная производительность зависит от платформы, которую вы используете для передачи пакетов - вы мало об этом говорите.

1 голос
/ 05 декабря 2008

В Ethernet вы также должны принять во внимание межкадровый интервал , который составляет минимум 96 квантовых моментов, то есть квантовое время - это время отправки бита, равное 1 нс в GigaEthernet (1 секунда / 1 000 000 000).

Кроме того, если вы получите столкновение, будет время отката , квант которого выбирается случайным образом между 0 и 2 ^ - 1.

0 голосов
/ 31 декабря 2008

Во-первых, вам нужно «долго» как минимум, чтобы хранить нет. из кадров вы получили.

Для расчета используемой полосы пропускания

a = GetIntfCounters ()

Запуск таймера (тайм-аута) в секундах

b = GetIntfCounters ()

пкц / сек = (b - a) / тайм-аут

бит / сек = (пкц / сек * пкцзайз)

байт / с = (бит / с) / 8

GetIntfCounters () будет зависеть от используемой программной платформы. Вместо таймера вы можете использовать спящий режим для заданного интервала, а затем вычислять число pps за этот интервал. Однако единственное реалистичное вычисление пропускной способности, с которой ваше устройство получает кадры, будет, если вы будете учитывать счетчики интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...