- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开展一个项目,该项目使用 Twisted 提供高性能 UDP 服务器,能够处理每秒 5k 数据包的突发流量,数据包大小从 50 到 100 字节不等。我正在测试服务器的 PC 具有四核 CPU 和 4GB RAM,并且正在运行 Ubuntu 10.1。
在我的性能测试中,我使用 tcpreplay尽快将先前捕获的包含 500 个 UDP 数据包的流量发送到 Twisted UDP 服务器。测试在同一个千兆 LAN 上的两台物理(非 VM)机器之间进行。根据 tcpreplay,我以每秒约 1250 个数据包的速度发送数据包,但在我发送的 500 个数据包中,Twisted UDP 服务器仅收到约 350-400 个数据包。
我可以在 Twisted 中或在系统级别进行什么样的性能调优来提高性能并防止丢弃过多的 UDP 数据包?
服务器代码
#!/usr/bin/env python
from twisted.internet import reactor
from twisted.internet.protocol import DatagramProtocol
packetCount = 0
class DeviceProtocol(DatagramProtocol):
"Show me how many packets the server has received"
def datagramReceived(self, datagram, address):
global packetCount
packetCount += 1
print "Received packet %s" % packetCount
def main():
reactor.listenUDP(7000, DeviceProtocol())
reactor.run()
if __name__ == '__main__':
main()
自定义 Sysctl.conf 设置
net.core.netdev_max_backlog=2500
net.core.rmem_max=16777216
net.core.wmem_max=16777216
最佳答案
我已经使用 iperf 测试了我的网络,这是一个优秀的工具,我将把它添加到我的工具箱中,我的网络可以毫无问题地处理所有流量。
原来我的问题是由于:
在我的测试中,如果 tcpreplay 在一个小的捕获文件上循环得太快,它就会丢弃数据包。我的捕获文件由 100 个数据包组成,循环四五次会导致 10-20% 的数据包没有发送到接收端。
关于linux - 使用 Tcpreplay 进行 UDP 调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293212/
我正在尝试使用 tcpreplay 发送 pcap 文件的内容。它拒绝发送一些数据包,因为它们太长了。但是,它没有继续处理下一个数据包,而是停止了: $ tcpreplay -i p4p1 mult
当我使用“tcpreplay”向我的交换机发送数据包时,我发现数据包乱序。例如,使用 tcpreplay -i eth1 test.pcap ,我得到: 我发送像 **[1,2,3,4,5,……]**
在服务器 # nc -lp 2424 hi server hi client 1 2 3 在客户端 ➜ ~ nc 139.224.xxx.xx 2424 hi server hi client 1
在tcpreplay 中有一个非常有用的功能,根据official FAQ's , 使用参数 -T 调用: The packet length (in this case 8892 bytes) is
以下代码段只会等待用户第一次点击 Enter;之后,它会循环遍历所有剩余的 .pcap 文件,而无需等待用户输入。 $| = 1; while () { print "$_"; ;
我正在执行一些实验,其中我想重播之前从 Android 捕获的数据包跟踪。到目前为止,我已经编写了自己的应用程序来重播跟踪,然后从服务器获得回复。只要在合理范围内(例如,几毫秒),计时精度就不是大问题
我有一个要重放的 pcap 文件。我想重写数据包有效负载以包含时间戳。我怎样才能用 tcpreplay 做到这一点?或 tcprewrite ?有默认选项还是我应该自己实现(修改tcpreplay)?
我的服务器会在工作日的某个时间段接收到 UDP 组播数据包。我编写了一个 c 套接字应用程序来接收这些 UDP 多播数据包。由于我的服务器只能在某个时间段接收数据包,为了测试,我用tcpdump抓包。
我已经安装了 tcpreplay,在此之前安装了 libdnet libevent 和 fragroute,但 fragroute 引擎已禁用,我无法在 tcprewrite 中使用 --fragro
我有两个程序: 服务器...它在选定的多播上生成 UDP 流量 listener ...它打印所选多播上的 UDP 流量 (它订阅多播并打印 无论它收到什么)。 当我在一台计算机上运行服务器并在某些(
我正在尝试在 C 中添加 tcpreplay 库,以便我可以重写数据包中的数据。我一直在寻找 C 编程中的库。结果是添加了 TCPreplay 并开始使用它的方法。不幸的是,它不适用于 C 语言。如果
我正在开展一个项目,该项目使用 Twisted 提供高性能 UDP 服务器,能够处理每秒 5k 数据包的突发流量,数据包大小从 50 到 100 字节不等。我正在测试服务器的 PC 具有四核 CPU
我有一个非常简单的脚本要运行。它调用 tcpreplay 然后要求用户输入一些东西。然后读取将失败并读取:读取错误:0:资源暂时不可用。 这是代码 #!/bin/bash tcpreplay -iet
Scapy 有一个 sendpfast 函数,它使用 tcpreplay 发送数据包。但是,此函数首先创建一个临时 pcap 文件,然后对其调用 tcpreplay。这增加了太多的延迟。反正有没有绕过
我是一名优秀的程序员,十分优秀!