我的游戏服务器曾遭受过一些 UDP 洪水攻击,因此它们向攻击者生成输出,导致游戏服务器出现严重延迟。感谢 ServerFault 的朋友,经过不同类型的测试,我能够成功阻止攻击。我的问题实际上是别的,但重要的是要知道游戏服务器如何应对攻击以及机器是否保持稳定:
300kb/s 输入会导致 GameServer 产生 2mb/s 输出。因此,随着输入速率不断增加,输出速率将达到如此之高,以至于 GameServer 不再可能控制它,因此在攻击停止之前会产生巨大的延迟。通常,当游戏服务器发出大于 5mb/s 的内容时,它就会开始延迟,而低于这个速度是可控的。理论上,我能够在输入 10mb/s 时从我的 GameServer 接收 60mb/s 的输出。这就是 GameServer 在没有保护的情况下的工作方式。
现在,在我的某些机器上,只有受到攻击的游戏服务器出现滞后,尽管该服务器的输出速度为 60mb/s,但其他端口上的其余游戏服务器在同一台机器上都能正常运行,不会出现滞后。
但是还有另一台机器也在 100 MBPS 网络端口上运行,即使是 1 mbps 输入(并且由于攻击被阻止而为零输出),即使在未使用的端口上,也会向所有游戏服务器上的所有客户端提供一条恒定的黄线(在 Lag-o-Meter 上),表示延迟,因为该线在正常情况下实际上是蓝色的。即使在 50mbps 或 900mbps 输入下,它也会保持不变。我试图就此事联系主机,因为我相信这是他们的网络桥接方式,但他们无法帮助我。还有谁知道这类问题,因为如果 900mbps 输入没有使端口饱和,那么尽管端口没有饱和并且有足够的带宽,1mbps 输入怎么会延迟服务器呢?
答案1
好的,经过一些研究后,我会回答我自己的问题。
问题在于 UDP/TCP 缓冲区的值太低。因此,使用 sysctl 增加值或在每次重启时在 sysctl.conf 中设置它们。一切顺利。我看到在 VPS 机器上,在自定义操作系统安装中设置的值已经很高,但在库存操作系统上,默认值很低。