Articles of tcp

networking速度故障排除 – 旧时查询

我正在寻求帮助,我敢肯定,这是一个古老的问题。 我发现自己处于一种渴望更清楚地了解networking吞吐量的状况,但似乎无法find使其“点击”的信息, 我们有几个地理分布的服务器,运行各种版本的Windows。 假设我们总是使用一台主机(桌面)作为数据源,当将数据从主机复制到全国其他服务器时,我们发现速度变化很大。 在某些情况下,我们可以一直以12MB / s的速度复制数据,而在另一些情况下,我们可以看到0.8 MB / s。 应该注意的是,在testing8个目的地之后,我们似乎总是在0.6-0.8MB / s或11-12MB / s。 在我们主要关心的build筑中,我们有一个OC-3连接到我们的ISP。 我知道有很多变数在起作用,但我想我希望这里的专家可以帮助回答一些基本的问题来帮助我加深理解。 1.)对于使用100Mbps以太网卡和72 ms典型延迟的运行Windows XP,Server 2003等的旧式机器,是否合理地提供0.8 MB / s的声音? 或者你觉得这个速度足够慢,以表明一个问题? 2.)“吞吐量= TCP窗口/延迟”的经典“math最快速度”在本例中计算为0.8 MB / s(64Kb / 72 ms)。 我的理解是,这是一个上限; 你永远不会期望达到(由于开销),更不用说超过这个速度。 但在某些情况下,我们看到的速度是12.3 MB / s。 networking中散布着Steelhead加速器,那么这些加速器可以占据如此高的传输速率吗? 3.)有人build议使用SMB与SMB2可以解释速度的差异。 事实上,正如我们所料,数据包捕获显示正在使用,取决于操作系统版本。 我明白什么决定了SMB2的使用与否,但是我很想知道SMB2能带来什么样的性能提升。 我的问题似乎只是一个缺乏经验,更重要的是,在什么是和不是合理的networking速度的angular度来看。 任何人都可以帮助传播来临的背景/观点

了解端口:多个浏览器标签如何同时通信?

我今天才意识到,我从根本上不了解港口通讯是如何工作的。 如果我启动侦听端口80的Web服务器实例,它可以响应来自许多不同浏览器选项卡的许多请求,所有浏览器选项卡都通过端口80进行通信。 但是,我无法启动服务器的两个实例,都在端口80上进行侦听,因为这会导致端口冲突。 我一直把它当作给定的(只有一个进程可以绑定到特定的端口在任何给定的时间),没有真正考虑通过 – 是不是有多个进程在80端口通信? (即每个在浏览器中运行的选项卡?)

在LAN中查找TCP重传的原因

你好服务器故障denizens 我有一个100台计算机,2个Windows域名服务器和12个VoIP电话的局域网的恼人的问题。 自从大约一年前安装以来,每隔一周左右,我们都会注意到VoIP电话会自动重置 – 偶尔会在通话中。 同时,计算机上经常出现连接暂时中断的迹象:访问networking共享时资源pipe理器冻结,pipe理软件中由于与数据库服务器连接中断而导致错误。 我一直在对VoIP PBX和其他networking之间的连接进行一些Wireshark监控。 在我们logging手机重启的时候,Wireshark会收到一串重发的TCP数据包。 Wireshark日志每天显示大约2个重传集群,从5个数据包到数百个。 每个集群中的主要是PBX和一些VoIP电话之间,但并不总是相同的集合。 同时经常重传的是连接到相同交换机的电话,但是有时重传一起发生在networking的相对端的电话。 通过TCPstream量通常会有一些重合的重传,例如在客户端机器和文件服务器之间。 重传和电话重置的高峰与networking重负载时不相关。 他们在白天似乎稍微多出一点,但是大部分在晚上,交通量应该减less。 当大多数计算机被closures并且stream量应该是最低的时候,它们经常发生在深夜。 你有什么想法可以帮助诊断这样的问题的原因? 有一件事我还没有尝试,但应该有,正在更新所有交换机的固件。

缓慢转移距离

从我们的纽约数据中心,转移到更远的地方performance不佳。 使用速度testing来testing不同的位置,我们可以轻松地将我们的100兆上行链路饱和到波士顿和费城。 当我在美国或欧洲西海岸的位置使用速度testing时,我经常只能看到约9兆位/秒。 我的第一反应是,这是一个窗口缩放问题(带宽延迟产品)。 不过,我已经在西海岸的一台testing机器上调整了Linux内核参数,并使用iperf来调整窗口大小,足以支持每秒100兆字节,而且速度仍然很慢(Capture in)。 我也试过禁用Naglealgorithm。 我们从Linux和Windows都得到了糟糕的性能,但是使用Windows的速度却要差一倍(1/3)。 转让(没有Nagle)的形状是: 十几岁的浸有〜100重复的副本。 随着时间的推移,接收机的最小窗口大小的形状是: 任何想到下一步要把我们的瓶颈? 一些速度testing结果(使用speedtest.net上传): 费城:44 mbit(使用我们网站的人正在使用其余;-)) 迈阿密:15 mbit 达拉斯:14兆位 圣何塞:9 mbit 柏林:5 mbit 悉尼:2.9 mbit 更多数据: 迈阿密:69.241.6.18 2 stackoverflow-nyc-gw.peer1.net (64.34.41.57) 0.579 ms 0.588 ms 0.594 ms 3 gig4-0.nyc-gsr-d.peer1.net (216.187.123.6) 0.562 ms 0.569 ms 0.565 ms 4 xe-7-2-0.edge1.newyork1.level3.net (4.78.132.65) 0.634 ms 0.640 ms 0.637 ms 5 vlan79.csw2.newyork1.level3.net […]

什么导致重复的ACKlogging?

我们正在审查Wireshark从几个显示多个重复ACKlogging的客户端机器捕获,然后触发重传和乱序数据包。 这些显示在下面的屏幕截图中。 .26是客户端,.252是服务器。 什么导致重复的ACKlogging? 更多的背景,如果有帮助: 我们正在调查一个特定客户端的networking吞吐量问题。 从用户界面的angular度来看,问题是数据传输缓慢,尽pipe1Gbps广域网连接利用率不足。 几乎所有的客户机都有相同的问题,在20多台机器上进行testing。 我们确实find了两台没有问题的机器。 我们正在识别configuration中的不同之处。 我们注意到,在没有问题的两台机器中,我们只看到了最多一个重复的ACKlogging。 有问题的机器通常有三个重复的ACKlogging。 一个显着的区别是,工作正常的机器都属于networking运营团队的成员,其他所有的机器都是“正规”的员工。 机器应该是标准的,但是networkingpipe理员可以在本地系统上做出改变,这是我们正在研究的另一个方面。 我们尝试更改服务器上的TcpMaxDupAcks设置,但是我们真正需要的值是5,有效范围仅为1-3。 服务器是Windows Server 2003.客户端都是企业pipe理的Windows XP。 所有客户端(包括两个正在运行的客户端)都安装了Symantec防病毒软件。 这是展示此问题的数百个客户端中的唯一一个。 path显示56ms RTT和一致的0/100数据包丢失,即使是有问题的机器。 谢谢, 山姆

Windows中默认的TCP连接超时是什么?

Windows中默认的TCP连接超时是什么? 有一个registry项来configuration它或它的dynamic设置?

通过高速,高延迟的WAN链接传输单个大文件的最佳方式是什么?

这看起来与这个有关,但有些不同。 两个公司站点之间有这个WAN链路,我们需要传输一个非常大的文件(Oracle dump,〜160 GB)。 我们有100 Mbps的带宽(已testing),但看起来像单个TCP连接,由于TCP工作方式(ACK等)的原因,无法将其最大化。 我们testing了与iperf的链接,当增加TCP窗口大小时,结果发生了显着的变化:在基本设置下,我们得到〜5 Mbps的吞吐量,而更大的WS我们可以达到〜45 Mbps,但不会超过此值。 networking延迟约为10毫秒。 出于好奇,我们使用多于一个连接来运行iperf,并且我们发现当运行其中的四个连接时,它们确实会达到〜25 Mbps的速度,填充所有可用的带宽; 所以键看起来在运行多个同时传输。 使用FTP,情况会变得更糟:即使使用优化的TCP设置(高窗口大小,最大MTU等),单次传输的速率也不能超过20 Mbps。 我们尝试同时FTP一些大文件,事实上比传输单个文件好得多。 但罪魁祸首成为磁​​盘I / O,因为很快就会从同一个磁盘瓶颈中读取和写入四个大文件; 同样,我们似乎也不能把这个单一的大文件分割成小的文件,然后把它合并回去,至less在可以接受的时候是不行的(显然我们不能把文件拼接/合并的时间相当于转移它)。 这里的理想解决scheme是一个multithreading工具,可以同时传输文件的各个块; 像eMule或者BitTorrent这样的点对点程序已经做到了,但是从单一来源到单个目的地。 理想情况下,该工具将允许我们select使用多less个并行连接,当然也可以优化磁盘I / O,避免在文件的各个部分之间跳跃(太)。 有谁知道这样的工具? 或者,任何人都可以提出一个更好的解决scheme和/或我们已经没有尝试的东西? PS我们已经考虑过支持磁带/磁盘并将其发送到目的地; 如果广域网并没有削减,这将是我们的极端措施,但正如塔南鲍姆(AS Tanenbaum)所说的那样,“永远不要低估满载录像带的旅行车的带宽。”

在什么情况下,TCP-over-TCP执行情况明显比单独TCP(2014)要差?

许多pipe理员在ServerFault和其他地方继续保持TCP-over-TCP的想法,例如在VPN中。 即使是最轻微的数据包丢失,如果不是TCP崩溃,至less会造成吞吐量严重下降,因此严格要避免使用TCP-over-TCP。 而这可能曾经是真实的,例如2001年,当这篇文章写出来,仍然提到。 但从那以后,我们看到了技术和协议方面的重大进展。 现在我们几乎在所有地方都实现了“select性确认”,摩尔定律给了我们更多的内存,而且还有大量针对Gbit上行链路优化的TCP缓冲区。 此外,在非无线电链路上,丢包现象也less得多。 所有这些都应该显着缓解TCP-over-TCP问题,不是吗? 请注意,现实世界中,基于TCP的VPN比基于UDP / ESP的VPN更容易实现和运行(请参阅下面的内容)。 所以我的问题是: 在什么情况下(链接数据包丢失和延迟)是TCP-over-TCP单独执行显着更坏的TCP,假定SACK支持和两端的大小合适的TCP缓冲区? 这将是非常好的,所以看到一些测量结果显示TCP-over-TCP和TCP本身的(外部连接)数据包丢失/延迟和(内部连接)吞吐量/抖动之间的相关性。 我发现这篇有趣的文章 ,但它似乎只关心延迟,而不是解决(外部)数据包丢失。 另外:是否有build议的设置(例如,TCP选项,缓冲区设置,减lessMTU / MSS等)来缩小TCP和TCP-over-TCP之间的性能差距? 更新:我们的理由。 这个问题在现实世界中仍然非常重要。 例如,我们将embedded式设备部署在收集传感器数据的大型build筑物中,并通过VPN将其馈入我们的平台。 我们面临的问题是防火墙和不正确configuration的上行链路,我们不在我们的控制之下,加上不情愿的IT部门。 请参阅此处讨论的详细示例。 在很多这样的情况下,从非TCP切换到基于TCP的VPN(如果您像我们一样使用OpenVPN,非常简单)是一个快速修复,可以让我们避开艰难的指向战争。 例如通常TCP端口443通常是允许的(至less通过代理),或者我们可以通过简单地减lessTCP的MSS选项来克服Path-MTU问题。 很高兴知道在什么情况下基于TCP的VPN可以被认为是一个可行的select,所以我们可以做出明智的决定,超过这两种select的利弊。 例如,我们知道在非无线链路上TCP-VPN对我们来说是好的,但是我们在3G上行链路上确实拥有相当数量的远程客户端,并且丢包和高延迟 – TCP-VPN如何在那里执行? 我试图改善标题和中心问题。 我希望这是有道理的。

什么是以太网帧的“在线”大小? 1518年还是1542年?

根据这里的表格 ,它说MTU = 1500字节,有效载荷部分是1500 – 42字节或1458字节(< – 这实际上是错误的!)。 现在最重要的是,你必须添加IPv4和UDP头,这是28字节(20 IP + 8 UDP)。 这使我的最大可能的应用程序消息为1430字节! 但通过在互联网上查找这个数字,我看到了1472。 我在这里做这个计算错了吗? 我想知道的是我可以通过电线发送的最大应用消息,而不会造成碎片。 这绝对不是1500,因为它包含帧头。 有人可以帮忙吗? 令人困惑的是PAYLOAD实际上可能高达1500字节,这就是MTU。 那么现在1500的有效载荷的线内尺寸是多less呢? 从那张表中可以看到1542个字节。 因此,我可以发送的最大应用信息是1472(1500 – 20(ip) – 8(udp)),在1542线的最大值。令我惊讶的是,事情实际上很简单,事情变得如此复杂。 而且我不知道如果有人说1542,那么有人提出了1518。

traceroute TCP相当于Windows

我正在尝试确定使用特定TCP端口连接到外部主机的位置是否被阻止。 Traceroute for Windows只使用ICMP,而telnet只会告诉我端口被阻塞,而不是在哪里。 有谁知道类似于traceroute的Windows实用程序,将实现这一目标?