问题标签 [packet-loss]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
networking - 在后台运行“mtr”网络诊断工具,如“nohup”进程
mtr
是调试网络丢包的好工具。这里我采样 mtr 输出。
My traceroute [v0.85]
myserver.com (0.0.0.0) Thu Jan 19 04:10:04 2017
Resolver: Received error response 2. (server failure)er of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.104.23 0.0% 11 0.6 0.6 0.5 0.8 0.0
2. machine1.com 0.0% 11 8.5 12.4 2.0 20.5 5.5
3. mchine2.org.com 0.0% 11 1.2 1.0 0.8 1.8 0.0
4. machine3.orgcom 0.0% 11 0.8 0.9 0.7 1.1 0.0
但是,mtr
在服务器上运行时,您无法注销服务器。
我需要mtr
和output to a textfile
命令run in background
类似nohup
。
我还应该能够查看报告,例如tail -f
在输出文件上使用。
python - 用python接收UDP包,丢包
我在 python 中使用 UDP 丢失了很多数据包。我知道如果我不想丢包,我应该使用 TCP,但我没有(完全)控制发件人。
这是一个使用 UDP 多播每秒发送 15 张图像的相机。
下面你会看到我现在写的代码。它使用多处理来允许生产者和消费者功能并行工作。生产者函数捕获数据包,消费者函数处理它们并将图像写入 .bmp 文件。
我编写了一个类 PacketStream,它将包中的字节写入 .bmp 文件。
当相机发送新图像时,它首先发送一个数据包,第一个字节 = 0x01。这包含有关图像的信息。然后发送 612 个数据包,第一个字节 = 0x02。这些包含图像中的字节(508 字节/数据包)。
由于每秒发送 15 张图像,因此每秒发送约 9000 个数据包。尽管这以更快的速度发生在每个图像的突发中,大约为 22 个数据包/毫秒。
我可以使用 tcpdump 或 wireshark 完美地接收所有数据包。但是使用下面的代码,数据包会丢失。当然,我的 Windows 7 电脑应该能够处理这个问题吗?我也在树莓派 3 上使用它,并且丢失了或多或少相同数量的数据包。因此,我认为这是代码的问题。
我尝试了很多不同的东西,比如用线程代替多处理,用管道代替队列。
我还尝试增加套接字缓冲区
无济于事。
这在python中是否有可能?
提前致谢,
编辑
感谢所有的建议。
1)我已经尝试过线程+队列,还有''.join(),似乎没有太大区别。我现在很确定问题是生产者线程没有获得足够的优先级。我找不到如何使用 Python 来增加它?这甚至可能吗?
2) 使用下面的代码,我设法只损失了大约 10%。处理器在〜25%(在树莓派上)关键是在数据包流暂停时消耗数据,即当最后一个数据包到达时
c# - 获得随机恒定丢包率
下面的代码是我用来 ping 8.8.8.8 的代码,但有时当我按下开始时,它只是丢包,这很重要,这很奇怪,因为我确定我没有那么多丢包,然后我暂停它并重新开始,它工作得很好,这对我来说没有意义,我很茫然。
我添加了 Thread.Sleep(); 因为我猜我启动它时程序可能没有加载,但这也很奇怪!这是一个如此小而简单的程序,它不应该有这样的问题
我还有一个问题,我应该为此设置什么超时时间,现在应用程序每秒发送一个数据包,每 900 毫秒丢弃一次,我应该把它设置为高于 900 还是会降低性能?
在此先感谢,只是让您知道我的丢包率不超过 2%,这不应该显示 40 个丢包和 0 个收到!而且它在 80% 的时间里都能正常工作!
当我暂停并再次快速启动它或第一次启动它时会再次发生这种情况。
multithreading - UDP中的多线程和丢包
如果服务器和客户端都在同一台机器上,是否需要多线程客户端才能导致数据包丢失?如果有远程服务器会怎样?假设我按顺序(在 for 循环中)从客户端向服务器发送数据包,这里可能会丢失数据包吗?
amazon-ec2 - aws EC2中的UDP数据包丢失
我有一个应用程序侦听托管它的 AWS 中的特定端口。我将从多个 AWS 服务器接收到此端口的 UDP 数据包。我面临的问题是我只能随机接收来自所有 AWS 服务器的数据包。即,考虑 AWS1 AWS2 AWS3 是 3 个 AWS 服务器,它们会将 UDP 数据包发送到托管我的应用程序的 AWS 服务器,那么场景是这样的,如果我首先从 AWS2 获取数据包,我将单独从 AWS2 接收数据包到我的应用程序正在侦听的特定端口,我不会收到来自其他两个 AWS 服务器的任何数据包。如果首先从 AWS3 获取数据包,那么我将仅从该服务器获取数据包,而不是从我已将入站配置为 0.0.0.0/0 的其余 2 台服务器获取数据包,即所有协议的所有流量,但这个问题仍然存在。
有人可以帮我吗..
python - 在python中模拟UDP中的数据包丢失
我应该在Stop-and-wait
协议中模拟 10^-2 的丢包率,即 0.01,这意味着传输的 100 个数据包中有 1 个丢失。假设我要发送 1000 个数据包,如何在整个传输过程中发送的 100 个数据包中准确丢弃 1 个随机数据包?
java - 应用程序突然终止时临时存储数据的最佳方法是什么
在我的套接字应用程序中没有数据库,我试图将数据包从套接字客户端发送到套接字服务器。但是,套接字服务器已关闭,并且数据包发送失败。因此客户端套接字应用程序被终止。一旦服务器启动,我将重新启动我的套接字客户端,并且套接字客户端需要发送失败的数据。
有没有最好的方法将失败的数据存储在客户端套接字机器中?
我的解决方案:这里我已经计划将失败的数据序列化并存储在一个文件中。启动客户端后,会读取文件并反序列化数据;尝试将其发送到服务器套接字。我的解决方案有任何缺陷吗?
wireshark - 如何最好地从例如 CAN 向 Wireshark 提供数据包
我们有一个记录器,它通过 C 程序和管道将 CAN 总线消息从例如 CAR 流式传输到 Wireshark。这很好用,尽管我们遇到了一些丢包,在某些情况下很严重。
现在 C 代码一次处理一个字节,包括。测试它是什么类型的字节,然后相应地处理它。这很可能是丢失的原因,因为我们错过了靠近的数据包。
是否有关于如何处理这种“数据包馈送”到 Wireshark 的最佳实践?例如,创建传入字节的“缓冲区数组”会更好,然后通过另一个函数处理这些字节以避免丢失 - 还是有另一个普遍应用的最佳实践?
谢谢你。最好的,马丁
编辑1:
我们似乎在高流量时遇到了这个问题(例如,每 10 毫秒或更频繁的帧)。现在我正在逐字节读取,检查字节以识别帧开始和结束,然后返回帧。当我必须对帧进行这种连续操作并输出它们时,你们中是否有人知道是否有更好的方法来读取数据?
在下面的代码示例中,我删除了所有错误处理和任务取消。
networking - 使用 ping 检测有故障的物理链路
我会在与 ping 的链接中对物理问题检测有疑问。
如果我们的光纤或电缆出现问题并在帧上生成一些 CRC 错误(通过交换机或路由器接口统计信息可见),则所有 ping 都可能通过,因为默认的小 icmp 数据包大小和统计上较少的错误可能性。首先,你能确认一下吗?
另外,我的第二个问题,如果我用 65000 字节这样的大尺寸 ping,一次 ping 将生成大约 65000 / 1500(mtu) = 43 帧,作为 ip framgents,然后统计数据会丢失数据包(因为通常如果一个 ip 片段丢失了整个 ip 数据包丢失)大 ping 显然更高?这个假设是真的吗?
全球性的问题是,通过大 ping,我们能否更容易地检测到链路上的物理问题?
udp - 降低ns2丢包率
我做了一个有 7 个节点的临时模拟。我在发送器和接收器的 2 个节点中使用 udp 代理,因为我正在模拟视频会议。其他 4 个节点介于两者之间并略微移动。
我的问题是,无论我使用的协议(dsdv、aodv、dsr)、模拟时间还是数据包大小,我的两个节点的数据包丢失都很大,通常超过 87%。
我应该尝试什么?