Разница между net.core.rmem_max и net.ipv4.tcp_rmem

14

В чем разница между net.core.rmem_max и третьим значением net.ipv4.tcp_rmem? Который имеет более высокий приоритет для TCP-соединений?

Для следующих двух примеров, каков максимальный буфер для TCP-соединений?

Case 1:
sysctl -w net.core.rmem_max=7388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608'

Case 2:
sysctl -w net.core.rmem_max=8388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 7388608'
bydsky
источник
Приоритет, связанный с TCP?
Нильс
@Nils Да, для TCP-соединений.
Быдский

Ответы:

5

Ядро - это общий максимальный буфер приема, тогда как tcp относится только к этому протоколу.

Что касается вопроса приоритета: кажется, что настройка tcp будет иметь приоритет над общей настройкой max, что немного сбивает с толку. Настройка max не влияет на текущую настройку tcp (только что протестирована на CentOS 5).

Более правильное описание было бы: default_max - но это было, вероятно, слишком долго.

Nils
источник
1
Ваше объяснение имеет смысл, но это противоречит тому, что man tcpговорит о tcp_rmemмаксимальном значении: the maximum size of the receive buffer used by each TCP socket. This value does not override the global net.core.rmem_max- см. Также stackoverflow.com/questions/31546835/… . Является ли man tcpтак?
nh2
@ nh2 Это не первый раз, когда страница руководства не так.
Нильс
1
Как именно вы это проверили?
Wildcard
1
@Wildcard Я установил значение и прочитал другое значение после Настройки первый
Nils
3
@Nils, простое чтение значений не скажет вам, если одно переопределяет другое - вам нужно попытаться получить буфер TCP, который превышает буфер net.core. [Wmem / rmem] _max, чтобы проверить такое переопределение.
Джордан Пилат