【问题标题】:Are fragmented IP used nowadays?现在使用碎片化IP吗?
【发布时间】:2016-02-15 17:24:12
【问题描述】:

具有默认设置的 Linux 通过立即发送 RST 来拒绝 ip 分段 SYN,我还尝试了具有 ddos​​ 保护的 antiddos 云服务和托管服务提供商,看起来他们完全忽略了此类数据包。

我正在编写将使用 netmap 处理 10gbit 的 antiddos 过滤器,我想知道静默忽略分段的 ip 数据包是否安全,或者它们可能来自合法用户?因为我不知道如何在 10gbit 速度下有效地重组和过滤此类数据包

【问题讨论】:

  • 我可以看到 IP 层分段用于大 udp 数据包,但它用于 tcp 吗?

标签: tcp network-programming ip tcp-ip


【解决方案1】:

任何节点或路由器都可以对 IPv4 PDU 进行分段。奇怪的是,TCP SYN 消息可能会被分段,因为如果没有选项,它的长度将是 40 个八位字节。不过,您可能想看看 RFC 7413: TCP Fast Open,它允许 SYN 和 SYN/ACK 消息传送数据。

在 IPv6 中,只有源节点可以对 PDU 进行分段。

【讨论】:

  • 任何路由器都可以,但在实践中这是常见的事情吗?但是你给了我一个好主意,SYN 无论如何都不会被分段,其他数据包将被转发到知道如何重新组装它们的内核网络堆栈。 TCP 具有控制数据包大小的 MSS 选项,因此不应分段。当您尝试在 x86 服务器上处理 10gbit 时,支持 fastopen 是不可能的,目前我使用预分配的哈希表存储小状态,因为 SYN fopen 数据需要动态大小的缓冲区,mem 复制,管理在这样的速度下太昂贵了。 windows不支持,所以对http站点没用
  • @user1940679,我不明白 10gbitE 和 fastopen 之间的关系。你这么说是因为你可以拥有一个带有巨型帧的巨大 MTU 吗?否则,这只是第 1 层的事情,不应影响上层。我不明白您的最后评论,您是在创建自己的 TCP 实现,还是在实现稍后将控制权传递给操作系统的 TCP 的 TCP 连接管理器?
  • 我正在实现类似 synproxy 的过滤器,它位于操作系统网络堆栈之前并将有效的数据包转发到内核。接受 syn 中的任何额外数据太 cpu/内存太昂贵,如果系统会受到随机大小数据的 syn 的影响,您需要将此数据存储在某个地方一段时间,这会增加很多复杂性和实验性 tcp 扩展,甚至 99 都不支持% 的用户不值得。如果您被大量随机 ip 数据包淹没,重新组装碎片数据包也是一项昂贵的任务,所以我问是否可以安全地忽略它们,因为看起来 99.9% 的 tcp 数据包没有碎片。
猜你喜欢
  • 1970-01-01
  • 2015-04-13
  • 2018-10-17
  • 2011-04-26
  • 2017-03-22
  • 1970-01-01
  • 2018-11-06
  • 2017-05-03
  • 1970-01-01
相关资源
最近更新 更多