Articles of udp

在300Mbit(14%)的极端UDP数据包丢失,但TCP> 800Mbit w / o重新传输

我有一个我用作iperf3客户端的linux系统,testing了2个与Broadcom BCM5721,1Gb适配器(2个端口,但只有1个用于testing)相同的Windows 2012 R2服务器盒。 所有机器都通过一个1Gb交换机连接。 在例如300MbittestingUDP iperf3 -uZVc 192.168.30.161 -b300m -t5 –get-server-output -l8192 导致所有数据包丢失的14%(对于硬件完全相同的其他服务器机箱,但较旧的NIC驱动程序,损失大约为2%),但即使在50Mbit的时候也会出现丢失,尽pipe不太严重。 使用等效设置的TCP性能: iperf3 -ZVc 192.168.30.161 -t5 –get-server-output -l8192 产生800Mbit以北的传输速度,没有报告重传。 服务器始终使用以下选项启动: iperf3 -sB192.168.30.161 谁应该责怪? 在Linux客户端框(硬件?驱动程序?设置?)? 编辑:我刚刚从一个Windows服务器框到另一个testing,在300Mbit的UDP数据包丢失更高,在22% Windows服务器盒(硬件?驱动程序?设置?)? 连接所有testing机器的(单个)开关? 电缆? 编辑: 现在我尝试了另一个方向:Windows – > Linux。 结果:数据包丢失始终为0 ,吞吐量最大值为零 840Mbit为-l8192 ,即分段的IP数据包 250Mbit为-l1472 ,未分片的IP数据包 我想stream量控制上限吞吐量,并防止数据包丢失。 特别是后者,没有碎片的数字远远没有达到TCP吞吐量(不分片的TCP产生与碎片化的TCP类似的数字),但是在数据包丢失方面,它比Linux – > Windows有了无限的巨大改进。 以及如何找出? 我确实按照服务器上的驱动程序设置的通常build议来最大限度地提高性能,并尝试启用/禁用/最大化/最小化/更改 中断审核 stream量控制 接收缓冲区 RSS networking唤醒 所有卸载function都已启用。 […]

在数据中心内的通信中丢弃数据包有多常见?

比方说,我有两台机器在同一个数据中心,但不一定在同一个机架上。 在这两台机器之间使用UDP进行发送时,丢弃的数据包有多常见? 我是在这样的假设下问的,因为机器之间最多只有几个交换机,根本不会丢包。 无序数据包到达同一数据中心有多普遍? 我的假设是有99.9%的时间只有一条路线,所以这是不可能发生的。 但是,无论何时,我都会用绝对的眼光来思考,我知道我必须错过一些东西! 我需要什么样的背景信息来更好地理解何时应该丢弃数据包,以及它们可能被丢弃的频率,以及在同一个数据中心内的机器出现乱序的情况。 最终,我试图在位于同一数据中心的不同Linode VPS实例之间进行通信时使用多播UDP或PGM。 信息必须到达并按顺序。 当然,UDP听起来不那么好! 但是,如果在同一个数据中心里可以期待几乎完美或完美的交付,那就没问题了。 但是,我正在testing这个假设。 谢谢。

validation与UDP端口上的服务器的连接

我想知道HP-UX计算机是否可以使用UDP在特定端口上与远程计算机(我无法控制)进行通信。 我尝试了telnet,但它看起来不像它支持UDP。 我会使用netcat,但我无法find任何捆绑。 这台机器正在生产,所以我不想乱搞compliling或安装东西太多…(nmap,netcat从源…) 任何简单的方法来做到这一点?

说明TCP和UDP源端口的文档应该超过1024并且是随机的?

我很难find它被logging在哪里源端口应该是随机的,范围在1024-65535。 在哪个RFC中logging? 编辑: 有关特权端口的第一个参考是RFC2623 看来这更多的取决于TCP / IP的实现,这是一个事实上的标准。 IANA正在分配端口号(RFC1700)

用tcp和udp的半个iptables规则减less防火墙规则

我的防火墙上有许多iptables规则,如下所示: iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT 有两个规则的快捷方式 – 一个用于TCP和一个用于udp – 每个地址? 我的意思是我可以做这样的事情: iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT

负载平衡DNS服务器:UDP / TCP

我被要求重build数据中心的负载均衡基础设施。 最初的请求是负载平衡FTP服务器。 我试图用当前的负载平衡器( Piranha / LVS ),但没有得到它启动和运行。 不仅仅是因为这个软件几乎没有任何文档。 由于Piranha被视为不赞成使用,经过几天的尝试后,我去了HAProxy ,这在一小部分时间花在Piranha 。 所以我有FTP负载平衡(被动模式)。 现在,我被要求更换数据中心的整个食人鱼负载平衡器。 在目前的食人鱼configuration中,我们有几个Web服务器,IIS服务器…. aaa和DNS 。 没有这个东西: HAProxy似乎是一个常用的LB,但它不能处理UDP load balancing 。 这是一个无赖,因为我喜欢HAProxy工作原理。 所以我search了很多,并遇到了几件事情。 大多数人似乎使用LVS作为DNS(TCP / UDP)的LB。 有的使用dlbDNS ,有的使用lbnamed ,有的使用netfilter / iptables 。 因为我想坚持使用FTP,HTTP,IIS服务器的HAProxy ,所以我很困惑与LVS并肩使用它。 要求: 2个具有故障转移的LB实例 2个DNS服务器(已经存在)和故障转移 多个后端服务器(http,应用程序等) 问题: 这可能吗? DNS服务器上的UDP负载均衡是否必要? 有没有什么资源可以告诉我如何开始呢? 还是有一个LB解决scheme,不仅能够处理TCP / HTTP,而且还有UDP负载平衡? PS: LB解决scheme应该是非硬件和开源/ GPL许可证/免费的。 任何帮助或导致各自的资源非常感谢!

莫霍样的端口转发

这是在Linux上,连接到Linux服务器: 我喜欢mosh,但是它不支持端口转发,可能一段时间以后,因为已经差不多一年了,现在还没有发生。 通过ssh进行端口转发是很好的,但是因为我的笔记本电脑每天都会在networking之间移动几次,所以我的ssh会话就会消失,端口转发也是如此。 我可以编写脚本/黑客来检测挂起的ssh并重新连接,让我的端口转发回去,但是在我这样做之前,还有另一种方法可以在源IP每天改变几次时做长久的端口转发(因为你在不同的networking上)? 我想在UDP的ssh会做的伎俩,但当然ssh是通过TCP。

如何连接到udp端口命令行?

这是我试过,但似乎不工作: [root@ ~]# netstat -a|grep 48772 udp 0 0 *:48772 *:* [root@ ~]# telnet localhost 48772 Trying 127.0.0.1… telnet: connect to address 127.0.0.1: Connection refused telnet: Unable to connect to remote host: Connection refused

tcpdump增加udp性能

我正在运行一组负载testing来确定以下设置的性能: Node.js test suite (client) –> StatsD (server) –> Graphite (server) 简而言之,node.jstesting套件每隔x秒向一个位于另一个服务器上的StatsD实例发送一组量度的指标。 然后,StatsD每秒钟将指标刷新到位于同一台服务器上的Graphite实例。 然后我看看testing套件实际发送了多less指标,以及Graphite收到了多less指标,以确定testing套件与Graphite之间的数据包丢失情况。 但是我注意到,我有时会得到非常大的数据包丢失率(请注意,它是使用UDP协议发送的),从20%到50%不等。 那么当我开始研究这些数据包被丢弃的位置时,就会发现StatsD可能会带来一些性能问题。 于是我开始在系统的每个部分logging指标来追踪这个下降发生的地方。 这是事情变得怪异的地方。 我正在使用tcpdump来创build一个捕获文件,我testing完成后运行。 但是每当我运行tcpdump运行testing,数据包丢失几乎是不存在的! 它看起来像tcpdump以某种方式增加我的testing的性能,我不明白为什么以及如何做到这一点。 我正在运行以下命令在服务器和客户端上loggingtcpdump消息: tcpdump -i any -n port 8125 -w test.cap 在一个特定的testing案例中,我发送了40000个指标/秒。 运行tcpdump时的testing数据包丢失率约为4%,而没有数据包丢失率约为20% 两个系统都以Xen VM的forms运行,具有以下设置: Intel Xeon E5-2630 v2 @ 2.60GHz 2GB内存 Ubuntu 14.04 x86_64 我已经检查过的潜在原因: 增加UDP缓冲区的接收/发送大小。 影响testing的CPU负载。 (最大负载40-50%,客户端和服务器端) 在特定的接口上运行tcpdump而不是“任何”。 使用'-p'运行tcpdump来禁用混杂模式。 仅在服务器上运行tcpdump。 这导致20%的数据包丢失,似乎不影响testing。 仅在客户机上运行tcpdump。 这导致了性能的提高。 将netdev_max_backlog和netdev_budget增加到2 […]

iptables:“-p udp –state ESTABLISHED”

让我们看看这两个常用于允许传出DNS的iptables规则: iptables -A OUTPUT -p udp –sport 1024:65535 –dport 53 -m state –state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p udp –sport 53 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT 我的问题是:我应该如何理解UDP中的ESTABLISHED状态? UDP是无状态的。 这是我的直觉 – 我想知道,如果或在哪里这是不正确的: 手册页告诉我: 州 这个模块,当与连接跟踪相结合,允许访问 这个数据包的连接跟踪状态。 – 状态… 因此,iptables基本上记住了用于外发数据包的端口号(还有什么可以记住的是UDP数据包?) ,然后允许在短时间内发回的第一个传入数据包? 攻击者将不得不猜测端口号(这真的太难了吗?) 关于避免冲突: 内核会跟踪哪些端口被阻塞(通过其他服务或先前传出的UDP数据包),以便这些端口不会在时间范围内用于新的传出DNS数据包? (如果我在一定的时间内意外尝试在该端口上启动服务,会发生什么情况 – 这种尝试会被拒绝/阻止吗?) 请在上面的文本中find所有错误:-)谢谢, 克里斯