Как использовать полную пропускную способность? - PullRequest
0 голосов
/ 24 марта 2009

Используя WinPcap, я создал серию пользовательских пакетов UDP и внедрил их в уровень Ethernet.

Я отправил 1000 пакетов по 1440 байт каждый. Для пропускной способности 100 Мбит / с требуется 2,1 с.

Как использовать полную пропускную способность?

Ответы [ 4 ]

1 голос
/ 25 марта 2009

Изначально я неправильно понял вопрос и подумал, что это дубликат этого . Но 100 Мбит / с делает его совершенно другим.

Даже очень скромное оборудование должно без проблем насыщать соединение со скоростью 100 Мбит / с - особенно если вы используете пакеты udp 1440 байт.

Как предполагает krosenvold, цифры выглядят подозрительно, как соединение 10 Мбит / с, а не 100 Мбит / с. Я бы проверил все ссылки от начала и до конца, чтобы убедиться, что они на скорости 100 Мбит / с, как вы считаете, что они есть. Любая ссылка 10 Мбит / с в этой цепочке будет проблемой.

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

И поскольку у вас есть файл pcap, который вы используете, я бы посоветовал попробовать tcpreplay , чтобы провести некоторое тестирование скорости. Существует несколько опций, которые tcpreplay предоставляет для воспроизведения файлов с максимально возможной скоростью. (в частности, посмотрите эту запись в вики)

Если это даст вам другие результаты, чем вы видите в данный момент, это может указывать на проблему с файлом pcap. Например, файлы pcap содержат информацию о времени, которую можно использовать при воспроизведении файла. Если время в вашем файле pcap было взято из сети 10 Мбит / с (например), то его воспроизведение в реальном времени даст вам результат, который вы видите.

1 голос
/ 24 марта 2009

Ваша пропускная способность, по-видимому, точно равна максимальной, которую вы получите для соединения 10 Мбит Конечно, нигде не задействовано 10 Мбит?

0 голосов
/ 26 марта 2009

А как насчет загрузки процессора во время передачи?

Нам нужно найти узкое место. Это может быть NIC / сеть или процессор. Убедитесь, что вы не «открываете» сетевой адаптер для каждого пакета.

Неправильно:

loop{
   OpenDevice
   SendPacket
}

Хорошо:

OpenDevice
loop{
 SendPacket
}
0 голосов
/ 25 марта 2009

Убедитесь, что все устройства и носители на маршруте обмена данными работают на скорости 100 Мбит / с. Соединение выполняется так же быстро, как и самое слабое соединение. Также убедитесь, что все устройства (включая вашу сетевую карту) работают в режиме Full-Duplex .

...