setsockopt с SO_SENDBUF / SO_RECVBUF не работает - PullRequest
0 голосов
/ 12 августа 2011

Я использовал setsockopt с SO_SENDBUF / SO_RECVBUF для установки буфера отправки / получения TCP с 256 * 1024 байтами. Но когда я вижу в wireshark, я вижу, что «Размер окна» TCP отображается как только 1525. Также wmem_max и rmem_max устанавливаются со значениями 131071 (126 кб). Так что в идеале я ожидал, что он будет по крайней мере 128 кбит / с. Может кто-нибудь, пожалуйста, помогите с этим? Это также может быть проблемой Wireshark, где он показывает неправильный «Размер окна».

1 Ответ

1 голос
/ 12 августа 2011

Вам необходимо установить этот размер для сокета listen на сервере, прежде чем принимать accept (), а на клиенте вам необходимо установить его на сокете перед его подключением. Таким образом, вы позволяете опции «масштабирования окна» в TCP вступать в силу, что может произойти только во время установления соединения. После того, как соединение установлено, уже слишком поздно. Таким образом, окно приема TCP может быть таким же большим, как и буфер приема, при условии соблюдения различных других условий.

Однако если у вас нет сети с чрезвычайно высокой задержкой и необычайной пропускной способностью, 256 КБ может быть слишком большим. Нет никакого смысла устанавливать его выше bandwidth-delay product, который можно рассчитать как пропускную способность в байтах / секунду, умноженную на задержку в секундах, что дает результат в байтах.

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