Articles of tcp

通过一次运行多个实例来加速rsync?

我必须将一个大目录转移到另一台服务器上。 我的问题是,我不能使用可用的全部带宽,因为一个并发的tcpstream速不会那么快。 基本上任何下载pipe理器现在支持的function。 所以我想做并发数据stream。 但是我找不到一个支持这个的程序,所以我想到了一次只运行多个实例或rsync。 这是一个好主意,还是可以让我指出一个更合适的工具的方向?

如何在Linux中更改networking接口的接收队列长度?

我有一台运行Linux(内核2.6.18)的服务器,它将大量丢弃传入的networking数据包。 我认为这是因为这个接口的接收队列的长度太小(默认是1000)的痛苦。 我想通过修改/proc/sys/net/core/netdev_max_backlog (到3000)来扩大这个队列。 但似乎没有工作。 我GOOGLE了一下,发现有人说这个值只适用于非NAPI设备,我不认为我的设备是NAPI自内核2.4.20以来被引入。 我不知道这是否是真的,并转向安装在该服务器上的内核文档,但该文档自从内核2.2以来没有更新过。 所以我想知道这是否属实,如果是这样,我怎样才能改变一个NAPI设备的队列长度? 谢谢。 丰

由于套接字缓冲区低/超限,大量的数据包被修剪和数据包崩溃

我已经build立了一个testing机器(debian在linode 2048机器上挤压2.6.32),与一个返回大块json的api交互。 它asynchronous调用API 3000 /分钟,api返回〜450kb的有效载荷。 在框上还有一个http服务器来显示调用结果。 在执行netstat -s(正常运行时间为20天)时: 254329 packets pruned from receive queue because of socket buffer overrun 50678438 packets collapsed in receive queue due to low socket buffer 这听起来不太好,所以我按照这些教程来调整TCP参数: http://fasterdata.es.net/fasterdata/host-tuning/linux/test-measurement-host-tuning/ 和 http://www.acc.umu.se/~maswan/linux-netperf.txt 但似乎没有帮助。 任何关于套接字缓冲区的build议/教程/解释,可能有助于理解和解决问题? 谢谢

阻止所有传入的DNS请求,除了IP x,y,

我想阻止我的两台DNS服务器上的所有传入请求APART从某些IP地址,例如1.2.3.4的IP将被允许发出请求,但NOBODY否则会。 你如何使用iptables做到这一点? 非常感谢。

当tcp数据包无法完成三次握手时会发生什么?

虚拟专用服务器的防火墙。 我正在研究如何防止FIN扫描,并让我思考后果。 很多人都在使用这个规则: -p tcp –tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP 所以当有人给我发送一个FIN = 1的数据包时,我无法发回FIN / ACK。 这似乎不大可能,但这是否意味着我build立的联系不会被阻止? 这是如何运作的 ? 我的连接是否保持活跃?如果是这样,多久? 当有人closures浏览器时,这实际上是如何工作的? 它发送一个FIN到我的服务器,我的服务器回复FIN / ACK …但浏览器无法接收,对吧? 谁得到这个数据包,它到底在哪里? 而如果…一个远程机器发送我的服务器一个SYN,我的回复是SYN / ACK,假设我没有收到ACK,我的服务器等待多长时间呢? 有没有未完成的三方握手的名字? 谢谢。

ESX 5.0上Linux上的VMXNET3性能

在客户机之间定义的同一VMware ESX专用networking上运行两个Linux客户机时,VMXNET3适配器可以达到哪种性能? 我使用VMXNET3适配器在这些操作系统和E1000适配器之间进行通信,以便与外部世界交stream。 当我运行iperf TCP性能testing时,我在VMXNET3适配器上获得了3.7 Gbits / sec,在E1000适配器上获得了1.6 Gbits / sec。 我希望VMXNET3能够达到10+ Gbits / sec的范围。 OS客户端由Red Hat Enterprise Linux 6.5,64位内核2.6.32-431.el6.x86_64提供支持,由VMware vCenter Server Hypervisor 5.0.0 build 913577控制。用于基准testing的主机服务器是IBM x3950 M2服务器型号7233 -AC1,24核英特尔Zeon X7440 2.66 GHz,256 GB RAM和1GB以太网网卡。 安装在客户操作系统上的VMware工具是v8.6.10 build 913593(似乎是目前最新的)。

客户通常是否在多个Alogging上实现故障转移/负载平衡?

通常,负载平衡器(如Amazon的弹性负载平衡器)使用包含多个Alogging的DNSlogging集来提供多个负载平衡器实例,这些实例可以处理到请求端点的stream量: $ dig +short my-fancy-elb.us-east-1.elb.amazonaws.com 10.0.1.1 10.0.1.2 如果我试图在详细模式下curl这个URL,我注意到curl似乎将循环尝试到两个IP地址: $ curl -ivs http://my-fancy-elb.us-east-1.elb.amazonaws.com | grep -i 'connected' * Connected to my-fancy-elb.us-east-1.elb.amazonaws.com (10.0.1.1) $ curl -ivs http://my-fancy-elb.us-east-1.elb.amazonaws.com | grep -i 'connected' * Connected to my-fancy-elb.us-east-1.elb.amazonaws.com (10.0.1.2) curl是否对curl二进制文件logging集中描述的Alogging进行循环,或者是Linux内核为它做了什么? TCP存在于第4层,DNS存在于第7层,所以我可以想象,单独的二进制文件和库将不得不实现自己的负载平衡和故障转移:获取给定域名的DNSlogging集,并selectTCP地址连接到该设置。 我可以合理地期望像curl这样的编程语言,浏览器和类库会为Alogging进行负载平衡和故障转移吗?

过多的延迟会影响吞吐量吗

我不知道这个问题是否在这里主题,所以请不要redirect我。 试图了解TCP是如何工作的,我已经使用ns-3模拟器模拟了一个点到点链路。 在设置链路的带宽为5 Mbps,适当的错误率和延迟到5毫秒,我得到了一个原始的大约4.9 Mbps的。 但是,增加到50 Mbps的链路后,我只能得到16 Mbps。 而且,将延迟减less到1ms需要吞吐量约为40 Mbps。 有人可以解释这个巨大的差异? 编辑:我明白如何带宽和延迟是不同的。 我只是想知道,如果我的模拟器是越野车,或者这是从TCP预计。

如何使用TCP的任播?

有状态的TCP应该要求后续数据包到达同一台服务器。 (无状态)HTTP运行在TCP之上,而CDN可以使用任意播。 那么TCP如何与anycast协同工作呢? 如果syn和ack转到不同的服务器呢? 我想我已经听说Google有一些解决scheme,但我不确定。 请回答IPv4和IPv6,如果有任何区别。

是什么原因导致HTTP连接延迟100毫秒?

设置:这是一个四CPU的机器,足够强大,根本没有加载(既不是CPU也不是networking),客户端是Windows Server 2008 64位,服务器是一个Linux的盒子。 我有四个线程同时发出HTTP请求。 连接发起到IP X,X,Y,Z(两个连接到X,一个连接到Y和Z)。 所有的目标都在本地局域网上。 我看到与X,Y和Z的连接已经形成(SYN-SYN / ACK),到X的第二个连接延迟了100毫秒。 意思是,机器不会将第二个SYN发送到X整整100毫秒。 这可能与TCP卸载引擎有关吗? 还有什么可能造成这种延迟? 编辑 – 另一个嫌疑犯是客户端代码 – 它是用Java编写的,使用HttpURLConnection。