2016-04-21 3 views
-1

Я работаю над средой виртуализации (Linux over HyperV). Драйвер Linux для виртуального сетевого адаптера поддерживает TSO и GSO (сегментация tcp включена, а общая сегментация включена).Linux TCP: сегментация пакетов?

Теперь я создаю TCP-сокет и буфер отправки, настроенный на 128K. Но на основании данных ifconfig (TX-байтов и TX-пакетов) средний размер пакета составляет около 11 K.

Итак, мой вопрос в том, где мой сегмент сегментирован (от 128K до 11K)? Как я могу контролировать/настраивать это в параметрах сокета или опциях TCP?

спасибо!

=========== EDIT ==================

У меня есть приложение, которое может достигать 8 Гбит пропускную способность в 10 Гбит сеть с 32 TCP-соединениями - в этом случае средний размер пакета составляет около 20 Кбайт, что довольно хорошо; но когда я увеличил TCP-соединения до 256, тогда пропускная способность составляет примерно 1 Гбит/с, поскольку размер пакета на NIC составляет примерно 3 Кбайта.

Я знаю, что размер пакета имеет решающее значение для производительности, так как стоимость обработки трафика зависит от каждого пакета, а не от байтов, поэтому пакет на NIC лучше, если он больше.

SO, МОЙ ВОПРОС: как увеличить размер пакета TCP? Существуют ли настройки TCP для этого?

+2

Короче говоря, совсем нет. Размер сегментов - это размер MTU NIC минус несколько байтов. Сегментация - это обычная вещь и подпадает под «не ваш бизнес». TCP (концептуально) является _stream_. Он не знает ни сообщений, ни дейтаграмм, ни чего-либо подобного. Вы пишете и читаете из потока, независимо от того, что происходит на «проводе», агностик таких вещей. Кроме того, те 11kB, которые рекламируются вашим виртуальным сетевым адаптером, являются мощным большим MTU, который больше, чем максимальный размер jumbogram в ethernet. – Damon

+0

Спасибо. Мое приложение может достигать 8 Гбит/с в сети 10G с 32 TCP-соединениями - в этом случае средний размер пакета составляет около 20 Кбайт, что довольно хорошо; но когда я увеличил TCP-соединения до 256, тогда пропускная способность составляет примерно 1 Гбит/с, так как размер пакета на NIC составляет около 3 Кбайт. Я знаю, что размер пакета имеет решающее значение для производительности, так как стоимость обработки трафика зависит от пакета, а не от байтов, поэтому пакет на сетевом адаптере лучше, если он больше. SO, MY QUESTION IS: как увеличить размер пакета TCP? Существуют ли настройки TCP для этого? –

ответ

0

Ваш вопрос кажется немного запутанным, но есть ряд настроек, с которыми вам нужно играть, чтобы заставить 10GigE работать прямо на Linux.

Смотрите здесь: http://dak1n1.com/blog/7-performance-tuning-intel-10gbe/

0
  • Установка опции сокета SO_SNDBUF, SO_RCVBUF может помочь, но TCP IP не гарантирует размер порций при полученных/отправленных.
Смежные вопросы