首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linux内核中设置nagle超时?

如何在linux内核中设置nagle超时?
EN

Server Fault用户
提问于 2017-03-06 23:26:34
回答 2查看 6.7K关注 0票数 2

我们知道纳格尔算法。不知道如何更改默认的200 to超时。Linux中是否存在设置此设置的方法?

EN

回答 2

Server Fault用户

发布于 2019-02-06 17:11:22

那些200的不是来自Nagle的算法,而是延迟ACK

您可以按照Mark的建议使用setsocketopt或使用ip路由来禁用延迟ACK,例如:

ip route change ROUTE quickack 1

我不知道有什么方法可以在“正常”(主要是非实时)内核中为延迟的ACK设置绝对超时。

票数 4
EN

Server Fault用户

发布于 2017-03-07 21:03:10

Nagle的算法可以防止小的、非完全大小的数据包被发送,如果传输中的数据还没有被确认。一旦接收到所有未完成数据的确认,或者缓冲区中有足够的新数据来生成一个完整的数据包,新数据包将被发送。Nagle的算法不涉及超时。

您所描述的行为可能是延迟确认,它允许每收到第二个数据包就发送ACKS。如果在超时内没有接收到第二个数据包,则发送ACK。或者,与Nagle类似的可能是TCP Corking,但是在发送新的小数据包之前不要无限期地等待未处理数据的ACK,TCP Corking将阻止在缓冲区填充或超时过期(200 is )之前发送新数据包。

根据您正在运行的Linux发行版的不同,您可以使用sysctl修改延迟确认超时值。例如,为了减少拉赫尔中的超时:

echo 1 > /proc/sys/net/ipv4/tcp_delack_min

然而,这个选项可能无法在Linux的其他口味中使用。

或者,如果您有编程访问权限,您可以修改应用程序以使用TCP_QUICKACK tcp城域网,这将有效地关闭延迟的ACK功能,并迫使应用程序为收到的每个数据包发送ACK。

要关闭TCP,您需要修改套接字调用来设置TCP_CORK参数--我不知道任何全局启用该参数的方法。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/836675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档