标签: udp

为什么 Ubuntu 服务器上的 UDP 比 TCP 慢?

我通过 1Gb LAN 上的 iperf 在两个 Ubuntu 服务器 (12.04) 之间传输数据。

iperf -s    <->     iperf -c <addr> -n2G
TCP speed = 925 Mbits/sec

iperf -su   <->     iperf -uc<addr> -b1G -n2G
UDP speed = 810 Mbits/sec
Jitter = 0.016 ms
Lost = 0 .. 0.01%
Run Code Online (Sandbox Code Playgroud)

我预计 UDP 比 TCP 快得多。谁能解释为什么 UDP 在 Ubuntu Server 上比 TCP 慢?

ubuntu performance iperf tcp udp

4
推荐指数
3
解决办法
2万
查看次数

UDP 的每包循环负载平衡

我需要在多个“真实服务器”之间对 UDP 流量进行负载平衡,并以真正的循环方式进行。我已经开始使用 keepalived,但意外地发现,LVS 将 UDP 流量视为“连接”(无论 UDP 是什么......)。实际上,这意味着来自特定客户端的所有流量始终都流向同一个“真实服务器”(这是一个大问题,因为某些客户端可能会产生如此大的流量,以至于单个后端将不堪重负) .

显然,这是预期的行为,但是最近的 LVS 版本有一个“--ops”标志,这使 LVS 绕过其上述行为,以便独立处理每个 UDP 数据报(这就是我想要的!)。但是(总是有一个但是……)这个功能没有从 keepalived.conf 中暴露出来。

有什么解决方案可以让我

  • 在 UDP 的后端之间进行循环分配
  • 检测“死”后端并将它们从循环中删除(当它们“活着”时将它们添加回来也很有用)

显然应该是基于 Linux 的。任何形式的 DNS 轮询在这里都不起作用,因为客户端不知道 DNS。

PS我将尝试脉冲/食人鱼,但从阅读我收集的文档来看,它也没有公开“--ops”标志。我还将尝试mon(通过直接调用 ipvsadm使mon检查后端并添加/删除真实服务器)。

high-availability load-balancing udp lvs keepalived

4
推荐指数
1
解决办法
6587
查看次数

php-fpm php_network_getaddresses 调用随机开始失败并出现错误的 udp cksum

我们在 AWS 上的 ubuntu 实例上运行了许多 Web 服务器(nginx、php5.6-fpm)。它们已经运行了好几个月,但在过去的几天里,我们开始遇到一些问题,在实例启动后一切正常,但在 12 小时左右后,网络调用开始失败(特别是在这个实例套接字 tcp 调用 redis)。

使用 tcpdump 进行了一些挖掘后,看起来 dns 查找由于 udp 校验和失败而被丢弃:

17:13:38.013346 IP (tos 0x0, ttl 64, id 46236, offset 0, flags [DF], proto UDP (17), length 103) 10.0.0.121.34071 > 10.0.0.2.2.50 -> 0x3ae1!] 25855+ Type20736?xxxxxxxx.us-east-1.rds.amazonaws.com。(75)

如果我使用 telnet 从同一个实例连接到 Redis 服务器,那就没问题了,它似乎只影响 fpm。同样奇怪的是,它只发生在实例启动后的一小段时间 - 最初所有请求都通过正常。同样,重新启动 php5.6-fpm 服务似乎可以暂时解决问题。

在这一点上,我几乎处于知识的尽头,所以希望有人能指出我正确的方向!

udp php-fpm amazon-web-services

4
推荐指数
1
解决办法
1046
查看次数

如何确定哪个进程每小时发送一次UDP数据包?

作为开发项目的一部分,我正在执行数据包捕获,并在捕获文件中看到来自我的机器的一些奇怪的流量。

大约每 3600 秒,一个 NAT-PMP 请求被发送到 IP“1.1.168.192”。(有点有趣,看起来字节序出错了。)

我担心这台机器可能有恶意软件,但恶意软件扫描没有报告任何内容。

我开始了一个数据包捕获,只过滤出有问题的 NAT-PMP 数据包,数据包几乎每小时都发出,但不是每小时都可靠。

Wireshark 本身无法告诉我哪个进程正在发送数据包。TCPView 可以工作,但我必须确保我几乎在数据包发出时我在机器上,因为列表不会长时间保留关闭或不活动的连接。由于数据包不是每小时都可靠地发出,这是一个令人沮丧的提议。

关于如何确定哪个进程在很宽的时间间隔内发送这些数据包的建议?

networking windows udp packet-capture

4
推荐指数
2
解决办法
4622
查看次数

除了 DNS 查找之外,如何拒绝所有传入的 UDP 数据包?

我将服务器设置为拒绝所有传入的 UDP 数据包,以防止 UDP 泛洪。但是,有人告诉我,因为我将自己的域和服务器用于名称服务器,所以这可能会导致一些问题。我怎样才能解决这个问题?

我的防火墙是 iptables,我的发行版是 CentOS5.5。

iptables udp

3
推荐指数
2
解决办法
1万
查看次数

组播 IP 地址

我在StackOverflow上发布了这个,并被告知它可能更适合在这里。

我无法理解多播地址的工作原理。

首先,如果我有 N 个在不同网络上工作的客户端或对等点,它们是否都订阅同一个多播组,并且该组允许任何源发送消息,这些对等点/主机都可以通过这个相互通信吗?团体?(听起来像黑魔法!)

其次,我听说 IANA 控制/规范多播地址的暗示。那么您是否必须向 IANA 请求/询问您的项目/公司的特定多播地址?这是如何运作的?我错了吗?你能为我澄清多播网络吗?

非常感谢!

networking p2p multicast udp

3
推荐指数
1
解决办法
836
查看次数

tcpdump 在捕获过程中将 UDP 数据包中的有用数据截断为 1472 字节

我正在编写一个与网络一起使用的应用程序。为了执行一些测试,我需要重现前一天的流程。但同时不允许停止当前工作的监听器。我也无法重写现有程序以保存传入流。为了解决我的任务,我决定使用 tcpdump。

我使用以下命令在目标机器上运行 tcpdump:

tcpdump -w capture.cap -n "dst host host.domain.com and port 5555"
Run Code Online (Sandbox Code Playgroud)

当我用 tcpick 或 scapy 阅读 capture.cap 时。我可以看到所有超过 1472 字节的有用数据都被截断为长度为 1472。但在标头中它仍然写入数据包的原始长度。我可以判断,UDP 数据包拆分为多个,然后再次连接。但是 tcpdump 可能会过滤掉所有没有标头的包(应该只出现在第一个包中)

有没有办法转储完整的 UDP 包?

networking linux udp tcpdump

3
推荐指数
1
解决办法
9048
查看次数

阻止 UDP 的 IP

我受到 UDP 洪水攻击。我使用以下保护措施来解决它:

iptable IP禁令:

iptables -I INPUT -s 37.187.231.xxx -j DROP
Run Code Online (Sandbox Code Playgroud)

尝试了另一种 iptable 语法

/sbin/iptables -I INPUT -i eth0 -s 37.187.231.xxx -j DROP
Run Code Online (Sandbox Code Playgroud)

尝试限制UDP数据包:

iptables -A INPUT -p udp -m udp --dport 0:65535 -m state --state NEW -m recent --update --seconds 1 --hitcount 10 --name UDP --rsource -j DROP 
Run Code Online (Sandbox Code Playgroud)

完全禁用UDP数据包:

iptables -A INPUT -p udp -j DROP
Run Code Online (Sandbox Code Playgroud)

所有端口都关闭了。以下是 - netstat -an | 的输出 grep "udp"

udp        0      0 127.0.0.1:53            0.0.0.0:*
udp6       0      0 ::1:53                  :::*
Run Code Online (Sandbox Code Playgroud)

我安装了以下软件:

Ubuntu 14.04
UFW …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu iptables udp

3
推荐指数
1
解决办法
6901
查看次数

即使没有 NAT,IPv6 中仍然需要 UDP 打孔吗?

背景(跳过问题)

IPv4 需要 NAT 来保护地址。NAT 的防火墙特性也有利于安全。IPv4 NAT 防火墙规则是“阻止传入数据包remote-address:port -> local-address:port,除非local-address:port -> remote-address:port在最后 X 秒内发送传出数据包”。

对于点对点 UDP 应用程序,这需要介绍服务器来进行 NAT 打孔。对于Client连接到Server(包括有防火墙的NAT后面,FW),我们需要进行如下操作的情况发生:

                           periodic
                          keep-alive
                Introducer <------>
Client    FW                  FW    Server
------------------------------------------
       request
     introduction
       -------> Introducer
Client    FW                  FW    Server
       --------------------->X
         request connection
------------------------------------------
                            notify
                         introduction
                    [Client address:port]
                Introducer ------->
Client    FW                  FW    Server
------------------------------------------
Client    FW                  FW    Server
       <---------------------------
                  hello
------------------------------------------
Client    FW                  FW    Server
       --------------------------->
            request connection
------------------------------------------
Client    FW                  FW    Server …
Run Code Online (Sandbox Code Playgroud)

firewall nat ipv6 udp

3
推荐指数
1
解决办法
2511
查看次数

DNS 查询是否加密?

我想知道 DNS 查询是否加密。如果是这样,您能否简要解释一下我认为要进行加密的过程,两方之间至少应该有一个最小的共同点(例如共享密钥),但是由于 DNS 使用 UDP 并且它是无连接的,我无法想象在这种情况下如何加密您的有效负载。

谢谢

security domain-name-system udp

3
推荐指数
2
解决办法
3034
查看次数