Articles of tcp

TCP代理与多个客户?

我正在寻找一个TCP代理 – 一个连接到一个端口的实用程序,读取一个TCPstream,并将其写入到连接到它的客户端。 这里的关键是可能有多个客户端,每个客户端都应该收到一个stream的副本。 最好是Windows解决scheme,但是Linux也是有用的。

iptablesredirectIP地址

我有一个服务器(10.2.2.200)上的应用程序(欢乐),在端口6661正在从10.0.1.234端口56789从一个egate服务器接收HL7饲料。它收到/进程的每个消息,它生成一个HL7 ACK消息到10.0.1.234端口56789.该egate服务器(我不控制)没有得到ACK消息,因为它期望在10.1.1.111端口6661接收它们。 是否有可能build立iptables(在我的服装 – 这是10.0.2.200)编辑由快乐产生的原本应该去10.0.1.234端口56789的ACK数据包,而是发送到10.1.1.111端口6661 ? 我正在阅读NAT / iptables( http://www.karlrupp.net/en/computer/nat_tutorial ),但我不确定是否可能在这一点上,任何帮助将不胜感激。 假IP摘要: 欢乐:10.2.2.200(听6661港) Egate发件人:10.0.1.234(监听端口56789) Egate希望收听ACK:10.1.1.111端口6661

IPtables速率限制,模块之间有什么区别? 最近,限制

我正在做一些IPtables的速度限制,我不知道如果我应该使用“最近”或“极限” 两者有什么区别? 如果他们都达到相同的结果,哪一个有更好的performance? 我想知道,无论有什么区别都是可以察觉的。 如果超出限制,我期待接受,如果超过,则拒绝。 我对带宽限制不感兴趣,我不想要一个队列。 我不需要任何语法示例,都有大量的在线使用示例。 我以前也用过Limit。 我很欣赏任何回应。

用于Windows的iperf的不同版本给出完全不同的结果

测量从Windows客户端到Solaris服务器的TCP输出: 带有iperf 1.7.0的WXP SP3 – >平均返回90Mbit左右 相同的客户端,相同的服务器,但Windows iperf 2.0.5 – >返回平均8.5 Mbit 已经观察到类似的差异连接到其他服务器(W2008,W2003) 当同一个工具的不同版本提供了大不相同的结果时,很难得出一些结论。 示例如下: C:\ temp> iperf -v(来自iperf.fr) iperf版本2.0.5(2010年7月8日)pthreads C:\ temp> iperf -c solaris10 客户端连接到solaris10,TCP端口5001 TCP窗口大小:64.0 KByte(默认) [3]本地10.172.181.159端口2124与10.172.180.209端口5001连接 [ID]间隔传输带宽 [3] 0.0-10.2秒10.6兆字节8.74兆比特/秒 糟糕的性能,但现在我testing从同一个主机(Windows XP SP3 32位和100Mbit)到同一个服务器(Solaris 10 / sparc 64bit和1Gbit运行iperf 2.0.5,默认窗口48k)与旧的 iperf C:\ temp> 1iperf -v iperf版本1.7.0(2003年3月13日)win32线程 C:\ temp> 1iperf.exe -c solaris10 -w64k 客户端连接到solaris10,TCP端口5001 TCP窗口大小:64.0 […]

模拟TCP SYN泛滥的问题

我试图模拟一个TCP SYN洪水来调整一个Web服务器(计划在AWS上部署)。 我设置了一个'目标'虚拟机,禁用iptables,并从本地“源”计算机(在OUTPUT链中过滤RST)运行hping(hping -p 80 -i u1000 -c 1000 -S destaddr)。 我期望在目标服务器的netstat输出中看到1000个SYN_RECVlogging,但是我只能看到最多256个(每个“源”计算机256个)。 我似乎在“目标”机器上遇到了一些限制,无法find它在哪里。 tcp_max_syn_backlog增加到8096。 任何想法设置这个限制?

在持续高负荷下服务的常见背压策略

我想知道什么是人们使用他们的networking服务常见的背压战略? 想象一下,你的服务在重负载下运行,并且在某个时候负载达到你容量的120%。 你怎么处理这个? 我能想到的最好的策略是开始拒绝连接。 所以,如果一个主机达到了最高容量(例如,所有Apache员工都很忙),我会开始拒绝TCP连接,直到其中一个工作人员释放。 通过这种方式,所有被接受的连接都将被立即处理而不需要排队(所以延迟很小),过多的20%被拒绝,允许负载均衡器重新分配给其他主机或执行任何其他的负载减less策略(例如,redirect到静态/caching内容)。 我认为这种快速的方法比任何排队方式都要优越得多。 小的队列可以吸收短暂的stream量爆炸,但是由于过多的排队,您的系统在重负载下可能会失败。 例如,在没有任何AQM的FIFO队列处理的情况下,当所有处理的请求在客户端已经超时时,它可以进入状态,因此系统不进行前进。 我感到惊讶的是,这个策略听起来并不容易实现。 我的方法是在Web服务器上设置一个小的收听积压,期待所有不适合的连接被拒绝。 但是由于Linux内核2.2的变化,这种策略分崩离析(参见http://veithen.github.io/2014/01/01/how-tcp-backlog-works-in-linux.html )。 较新的Linux内核无条件地接受你的连接。 SYN-ACK响应被发送到客户端,根本不考虑监听积压大小。 启用tcp_abort_on_overflow选项也没有多大帮助。 这个选项使内核在连接不适合接受队列时发送RST,但此时客户端已经考虑了连接ESTABLISHED并可能已经开始发送数据。 这对HAProxy尤其有问题。 如果连接成功build立,它不会将请求重新发送到其他服务器,因为这个请求可能在服务器上有一些副作用。 所以我想我的问题是: 我试图执行这样的事情是我奇怪的吗? 有什么其他的策略来处理持续高负荷,你可以推荐? 是Linux内核的tcp_abort_on_overflow中断,应该应用于半开放队列吗? 提前致谢!

Windows服务器上的10k-20k TCP连接

基于Windows的服务器需要什么样的configuration才能同时支持10K-20K TCP连接。 这些连接的99%只会在60秒的时间间隔内发送保持活动(但将保持活动状态)的信号,其余1%将在任何给定时间发送/接收XML数据。 任何人都可以build议我需要设置以上要求的基础设施的种类?

高窗口消息实例

在我的networking服务器上,我发现在峰值stream量期间,从我的networking服务器发送到我的数据库服务器的速率很高(106秒钟以上,约13秒钟或30万个数据包)。 固件更新: 我已经将固件和驱动程序更新到了戴尔为BCM5709C卡提供的最新版本。 TCP卸载已启用: 在Broadcom高级控制组件接口(BAC)中,我看到一个活动的“总卸载TCP连接”TCP事件被启用。 我也没有看到服务器上的CPU挂钩。 窗口缩放已启用: 窗口缩放已启用,但用处不大。 我看到20个包含Window Scaling的数据包,其中包含30万个数据包。 统计: 平均往返时间为〜2MS,最大值为〜3 MS。 Web服务器上的CPU使用率根本没有达到峰值。 问题: 我不认为缓冲区应该填充这些在Web服务器上。 CPU旁边的其他指标我应该看看为什么缓冲区填满? 鉴于一切都是最新的,我应该调整我的Windows 2008 Server R2 Web服务器上的TCP参数? 如果是这种情况,我应该做些什么调整?

我如何像TCPView一样使用命令行“closures连接”?

我想从命令行执行TCPView的操作,例如,closures特定进程使用的连接(不结束进程)。 有没有办法做到这一点?

我应该限制最终用户的千兆端口,以避免饱和的上行链路/中继连接?

我们有一个16幢build筑物和build筑物之间的旧的850nm 1Gbps光纤链路的校园,这些都是来自我们的服务器的核心交换机,也使用1Gbps端口。 我们终于开始replace老化的10/100terminal用户交换机,我们正在看的大部分是1 Gbps单元。 我的问题是,由于中继线/上行链路线路仍然是1Gbps,如果我要为最终用户安装1Gbps交换机,我应该限制端口为100Mbps,直到我也可以升级中继线以避免不良主机饱和一条干线(因为我们是一所大学,我们有很多错误的主机),从而为build筑物造成DoS情况,或者TCP拥塞控制通常会为我处理这个问题? 如果我们有很多的UDPstream量(游戏,video聊天,甚至less量的BitTorrent)呢?