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'

与TCP相关的优先级?
Nils

@Nils是的,用于tcp连接。
bydsky

Answers:


5

核心是总的最大接收缓冲区,而tcp仅与该协议有关。

至于优先级问题:tcp-setting似乎将优先于common max设置,这有点令人困惑。设置最大值对当前的tcp设置没有影响(仅在CentOS 5上进行了测试)。

一个更正确的描述是:default_max-但这可能太长了。


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
您如何测试呢?
通配符

1
@Wildcard我设置了值并在设置第一个值之后读取了另一个值
Nils

3
@Nils,简单地读取值并不能告诉您一个值是否覆盖另一个值-您必须实际尝试获取一个超出net.core。[wmem / rmem] _max缓冲区的TCP缓冲区,以测试这种覆盖。
乔丹·皮拉特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.