Articles of tcp

如何可以redirect到一个新的主机所有stream量发往旧主机?

我们正在移动一堆服务,从1.2.3.4到5.6.7.8 。 为了testing新服务的configuration是否正确,我们希望redirect(到新主机)发往我们testing工作站的原始主机的所有stream量。 当然,这样的redirect可以在networking中的路由器上实现 – 但是出于稳定性原因,我们决定直接在每个工作站上实现它们(所有OS X 10.10 Yosemite,所以使用v4.7之前的OpenBSD pf)。 我已经添加到/etc/pf.anchors/com.apple : rdr-anchor "910.TestServiceMove/*" anchor "910.TestServiceMove/*" load anchor "910.TestServiceMove" from "/etc/pf.anchors/910.TestServiceMove" 并创build/etc/pf.anchors/910.TestServiceMove : rdr pass log on lo0 from any to 1.2.3.4 -> 5.6.7.8 pass out log route-to lo0 from any to 1.2.3.4 keep state 加载规则时,两者似乎都能正常工作: $ sudo tcpdump -v -n -e -ttt -i pflog0 […]

优化通过长时间有损通道连接的两台Linux主机之间的TCP连接

我有两个遥远的主人。 丢包总是19%,直到速率超过210kB / s。 RTT大约是220毫秒。 TCP拥塞控制algorithm是“立方体”。 “f_rto”已启用。 TCP连接的实际速度只能达到14 kB / s。 这真的很慢。 有没有关于如何优化两个主机之间的TCP连接的想法?

在Windows 2008R2中有一个TCP端口卡住LISTENING,但打开的进程已终止?

我有一个程序,NC_net,它允许Nagios监视Windows机器的各种指标,似乎已经造成了一个零星的问题,当服务停止时,TCP端口保持打开状态。 该服务已停止超过两个小时,港口将不会被释放。 任何想法如何让这个端口closures而无需重新启动? TCPview将允许您单击该端口并closures它,但在这种情况下不起作用。 本机上没有本地防火墙。 套装软件: <non-existent> 1552 TCP EXPUBDR01-XXX 17 EXPUBDR01-XXX 0 LISTENING 用netstat: c:\> netstat -ano|findstr 17 TCP 0.0.0.0:17 0.0.0.0:0 LISTENING 1552 TCP 192.168.100.12:17 192.168.99.30:35028 CLOSE_WAIT 1552 TCP 192.168.100.12:17 192.168.99.30:35029 CLOSE_WAIT 1552 TCP 192.168.100.12:17 192.168.99.30:35030 CLOSE_WAIT 1552 TCP 192.168.100.12:17 192.168.99.30:40994 ESTABLISHED 1552 … TCP 192.168.100.12:17 192.168.99.30:55207 CLOSE_WAIT 1552 TCP 192.168.100.12:17 192.168.99.30:55208 CLOSE_WAIT 1552 […]

ksoftirqd进程通过高带宽和多个networking连接来过载CPU

我已经安装了proxmox 2.1的10GBit服务器。 有一个运行Ubuntu 10.04 64位的OpenVZ容器。 我可以通过数据中心内部服务器(-O / dev / null)的wget获得200-300MB /秒的速度。 但是,如果有多个连接,总共不可能达到800MBit / sec以上。 我有一个运行的apache2 webserver作为代理,并从其他几个(不仅是数据中心内部的服务器)访问数据。 它的唯一代理通过,所以硬盘不访问(当然在日志文件旁边)。 由于这台服务器有两个固态硬盘,这是不太可能的原因。 一旦达到800MBit,即使在主机系统本身,而不是在OpenVZ容器内,我也只能从具有“wget -O / dev / null”的数据中心内部服务器获得300kb / sec。 我注意到进程ksoftirqd / 0需要大量的CPU负载(高达100%): 4 root 20 0 0 0 0 R 78 0.0 67:38.99 ksoftirqd/0 # (78% in this case) 有时候,进程事件/ 0需要很多的CPU能力,而且它似乎与CPU的能力相比ksoftirqd / 0: 35 root 20 0 0 […]

TCP调整为ssh端口转发

我正在使用一个Ubuntu的openssh服务器,以允许用户连接,并做dynamic端口转发。 性能是好的,直到大约100个用户连接。 除此之外,性能下降太多。 实际上build立新的TCP连接需要太多的时间,但是当它们build立时速度是好的。 我的configuration如下所示: sysctl.conf的: fs.file-max = 60000 net.core.somaxconn = 8000 net.core.netdev_max_backlog = 8000 net.ipv4.tcp_max_syn_backlog = 8000 net.ipv4.ip_local_port_range = 10000 65000 limits.conf中: *软nofile 60000 *努力nofile 60000 根软nofile 60000 根努力nofile 60000 当大约150个用户连接时: CPU使用率是10% 内存使用率是50% 带宽使用量是30mbs netstat -n | wc -l显示7500 lsof | wc -l显示36000 我认为这是相关的内核或软件的限制,导致此性能下降,任何想法? 请不要build议使用代理或vpn。

如何debuggingWAN TCP / IP吞吐量低于预期的原因?

我想弄清楚为什么我控制的两台主机之间的TCP / IP吞吐量远低于预期。 主机A:波士顿地铁Comcast(Residential)提供的互联网连接 – 可以持续实现从各种知名网站下载100Mbps(例如下载Google Chrome) 主持人B:Cogent提供的互联网连接; 可以始终如一地在各个站点达到近100Mbps。 testing连接:主机A通过非标准端口(22442)上的rsync / ssh从B下载大文件(即rsync –progress -e 'ssh -p 22442' … – 吞吐量仅为2.5Mbps (292564 Bps) 当尝试从B下载相同的数据时,其他客户端(例如临时EC2实例)的吞吐量可能会达到近30倍 我已经设法捕获与Tcptrace之间的连接(下面附加)的统计数据,但我不知道是否有什么似乎错了。 我想我的目的是需要调整一下,但是我也对Comcast塑造stream量有所怀疑 – 所以在我开始讨论之前,我想我会寻求build议。 我有什么好的下一步尝试? 提前致谢。 tcptrace -r -l -o1 dump.out 1 arg remaining, starting with 'dump.out' Ostermann's tcptrace — version 6.6.7 — Thu Nov 4, 2004 5763 packets seen, 5763 TCP […]

针对混合tcp,udp和http服务的反向代理

我正在构build一个架构,将托pipe各种服务,可以单独监听不同数量的可能是混合协议的端口。 我想将这些服务映射到唯一的子域,并将外部端口的代理入站请求反向到相应的内部端口。 目前我正在使用安装了TCP模块的Nginx。 这给了我http和tcp的支持。 不过我刚刚发现Nginx不支持UDP。 这似乎也许与我可以支持UDP的自定义模块,但这是一个单独的问题。 我也有使用Nginx模块将多个TCP服务映射到子域的问题。 我希望有另一个代理解决scheme,可能更适合这个。 或者是工具的组合。 编辑:我发现唯一可能适合这个angular色是: http : //freecode.com/projects/proxymini http://aluigi.altervista.org/mytoolz.htm#proxymini 但我不能告诉它的unix友好或仅窗口,可能不是一个反向代理

Debian + nginx / apache的低吞吐量

在相同的局域网/广域网上,我有一台运行IIS 7.5的Windows Server 2012服务器和一台运行Nginx 1.4.5的Debian(wheezy)服务器。 两台服务器都连接到相同的LAN / WAN。 当我从debian服务器上下载一个10MB的文件时, curl报告的平均下载速度为1157k 。 使用相同的文件,在相同的networking上,但在Windows服务器上,Curl报告3588k的平均下载速度。 多次运行脚本显示,debian服务器的平均下载速度有很大的变化,有时我只有40万 ,而Windows服务器是相当稳定的。 在局域网而不是广域网上testing给了我更好的性能,但Windows服务器在那里也performance得更好。 Windows服务器正在生产,并有一定的负载,而debian服务器没有负载比我的testing。 客户端,如果我使用wireshark捕获TCPstream量,我不太熟悉tcp捕获,但是我发现debian的TCP窗口大小比windows服务器小。 Debian: Window size value: 913 Calculated window size: 14608 Window size scaling factor: 16 Windows: Window size value: 256 Calculated window size: 65536 Window size scaling factor: 256 我试过Apache而不是Nginx,它没有改变任何东西。 我已经通过互联网尝试了不同的“Linux tcp tuning”指南,没有任何明显的影响。 两台服务器的Ping时间相同。 没有涉及SSL / TLS。 我不知道该从哪里出发。 任何人有一些build议来调查或解决这个问题?

始终保持socat活着

我有一个很好的社会运行,执行我的命令时提供的参数连接进来。 但是,我遇到的问题是套接字在EOF,并且下次连接进来时,该过程需要3秒钟才能恢复。 这个过程将会永远保持下去,所以我认为这是一个EOF,至less这是我的理解。 我的命令是: socat -v -s -d -d tcp-listen:2600,reuseaddr,fork exec:"/usr/bin/cec-client $CEC_CLIENT_ARGS" 相关的日志行: 2014/12/31 22:41:04 socat[4746] N socket 1 (fd 4) is at EOF 2014/12/31 22:41:05 socat[4746] N exiting with status 0 我试图两头都不ignoreeof ,没有任何效果。 我也尝试设置超时,包括-t和-T

Linux – 进程重新启动后,进程超时的传出连接

用这一个把我的头撞在墙上 我有一个Ubuntu Linux服务器,在这个服务器上我们自己的进程持有40K持续连接到外部服务。 当进程启动时,它会尝试重新连接到40K外部端点。 当我长时间活动后重新启动进程并尝试重新连接时, 大多数重新连接都会因超时而失败 。 初次重启大约一个小时后,连接尝试再次突然成功。 以下是我所知道的: 由于进程在尝试之间重新启动,因此不能是进程的内部状态 无论我的重新启动,外部服务都可用。 这使我们与服务器本身 我的理论是,Linuxnetworking堆栈中的某些东西在我们的进程的稳定状态操作期间正在被最大化,并且只在显着的超时之后才被释放。 哪些资源可能会被刷新,以及如何validation这种情况? 有其他解释吗? 谢谢!