更新 GNU/Linux 内核以每个数据包发送 n 个 TCP 数据包

Posted

技术标签:

【中文标题】更新 GNU/Linux 内核以每个数据包发送 n 个 TCP 数据包【英文标题】:Updating the GNU/Linux Kernal to send n number of TCP packets per packet 【发布时间】:2019-02-14 04:05:46 【问题描述】:

我正在使用基于 Debian 的发行版(Linux Mint 18)。我想对操作系统进行更改,以便每个 TCP/IP 数据包发送 n 个传出数据包。如果该方法不涉及重新编译内核,那将是最好的。

没有太多相关信息可以回答我为什么要这样做。 我的问题是在某些网络条件下,数据包被丢弃。这是一种非常特殊的网络控制方法,其中一些(不是全部)传出数据包会被丢弃。在这种情况下,发送 n 个原始数据包的副本可以解决问题。我只陈述了一项申请。但我最初的问题可能还有许多其他受研究实验启发的应用。

【问题讨论】:

TCP/IP 保证,它将检测任何数据包丢失并重新发送丢失的数据包。为什么要重新发送所有数据包并降低网络速度? TCP/IP 将仅重新发送丢失的数据包。 @RomanZaitsev 用于研究目的。 【参考方案1】:

您最好的研究选择可能是用户级网络堆栈(https://www.openonload.org,netmap,...)。否则,只需使用 scapy 捕获数据包并重新发送它们。 iptables TEE 目标也可能有所帮助。

和 Roman 一样,我也很好奇你为什么会这样复制数据包。可能会有奇怪的后果,比如触发 TCP 快速重传。

【讨论】:

以上是关于更新 GNU/Linux 内核以每个数据包发送 n 个 TCP 数据包的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GNU/Linux 中记录正在使用磁盘的进程或内核活动?

linux和centos7区别

Linux网络 - 数据包在内核中接收和发送的过程(转)

Linux学习

GNU/Linux - Python3 - PySerial:如何通过 USB 连接发送数据?

简述gnu与linux的关系