Articles of tcp

Netstat -s显示(和增长)“从接收队列中删除的数据包”和“数据包在接收队列中崩溃”

我们看到以下内容: [root@primary data]# netstat -s | grep buffer ; sleep 10 ; netstat -s | grep buffer 20560 packets pruned from receive queue because of socket buffer overrun 997586 packets collapsed in receive queue due to low socket buffer 20587 packets pruned from receive queue because of socket buffer overrun 998646 packets collapsed in receive […]

TCP套接字连接上的TLS / SSL的开销?

在TCP连接上使用SSL有没有带宽开销? 我理解,当然,encryption和解密数据包时的处理/内存使用开销,但就带宽而言,有什么区别? 例如,给定一个64KB的XML文件,通过HTTP与HTTPS的文件传输大小是否有任何实际的差异? (当然,忽略mod_deflate和mod_gzip )

如何诊断Internetpath上的networking损坏?

我在networkingA上运行了几台主机,这些主机在networkingB上的某个地方向互联网上的服务器发出请求(我不拥有它们)。 不幸的是,这些请求中的许多被损坏。 如果我通过未encryption的HTTP进行请求,则会出现奇怪的错误,提示错误的请求。 如果我通过HTTPS发出请求,则会出现SSL级错误。 我可以通过运行重现该问题: sh -e -c 'while true; do curl $SERVER > /dev/null; sleep 1; done' 通常在20个请求中,curl失败,出现“未知的SSL协议错误”或“tlsv1警报解密错误”等错误。 我可以在networkingA中的多个主机上重现这一点,访问networkingB上的多个服务器。但是我无法从networkingA重现到其他服务器,或者从其他主机重现到networkingB.在这些情况下,循环将永远运行,没有错误。 所以很明显,我的TCPstream在A和B之间被破坏了。顺便说一下,这已经持续了3天以上。 第一个问题:这怎么可能发生? TCP具有数据包级校验和,并且通过校验和的损坏数据包应该比我所看到的less得多。 此外,如果我运行networking捕获,我不会看到许多重新传输(根据wireshark的tcp.analysis.retransmitfilter),如果数据包被损坏和TCP校验和失败,你会期望。 我猜一些路由器必须做更高级别的数据修改(NAT透明代理?)和破坏数据,但修复校验和? 第二个问题:有什么工具可以用来隔离问题吗? 我找不到任何东西。 如果我知道networking拓扑结构,并且可以在A和B之间的每跳之后findHTTPS服务器,则可以对它们运行我的testing。 但我不知道 什么其他的testing会显示networking腐败? 我已经联系了networkingA和networkingB的所有者,但迄今为止他们还没有帮助。 更新:对于任何人提出什么样的越野车设备可能会在path中,有没有什么办法检测到除了联系业主之外?

使用10GB内存和50%连接的100%CPU的Haproxy

在Ubuntu 14.04 x64服​​务器上,Haproxy使用3.3 GB内存和6.8 GB交换,同时处理52k连接。 在大多数stream量被redirect到另一个haproxy框之前,CPU使用率也保持在100%。 stream量主要是连接的TCP连接。 pid = 3185 (process #1, nbproc = 1) uptime = 0d 6h14m21s system limits: memmax = unlimited; ulimit-n = 524341 maxsock = 524341; maxconn = 262144; maxpipes = 0 current conns = 54303; current pipes = 0/0 Running tasks: 1/54336 有人注意到,在大约50k的连接上,内存使用量猛增。 ulimit -n设置为1048576 。 问题:内存使用量是否exception高? 我们如何减less内存消耗? 我还从另一个问题读了下面的内容,是否相关? 我应该如何检查TCP设置是否足够(对于持续的TCP连接),以免导致内存使用量的巨大增加? […]

通过主机名代理TCP

我的单个主机上有多个游戏服务器TCP端口。 目标是让用户能够连接到server1.domain.net,并根据该子域名进行定向。 我的第一本能写了下面的内容,但后来我意识到,TCPstream量不会有任何头来读取。 使用HAProxy 1.5.8。 我尝试使用多个后端,use_backend和完整的ACL线做同样的事情,但得到了相同的结果(可以理解)。 listen game-listener bind xxxx:22222 mode tcp use-server server1 if { hdr(host) -i server1.domain.net } use-server server2 if { hdr(host) -i server2.domain.net } server server1 localhost:22201 check server server2 localhost:22202 check 是否有像我可以用于TCP连接的hdr(主机)检查? 还是我做对了,游戏只是不好玩? 谢谢!

Squid可以作为“TLS终止代理”来使用客户端证书来encryptionTCP连接吗?

抽象 我需要从多个客户端到Internet上的单个端口的encryption的TCP连接。 这可以用Squid来实现吗? 具体情况 我们在我们公司使用监控和客户端pipe理解决scheme,可通过局域网和VPN访问。 现在应该可以从不使用公司VPN的外部笔记本电脑访问。 通信必须encryption(TLS)。 客户端authentication必须使用客户端证书。 通信由客户端启动,并使用单个TCP端口。 我的调查结果 NGINX Plus似乎提供了这个function,但我们的pipe理员喜欢鱿鱼或阿帕奇。 在鱿鱼维基上,我发现: function:提到TCPencryption的HTTPS(HTTP安全或HTTP over SSL / TLS) 。 但是我也发现这个警告: 注意通过CONNECT传递的协议并不局限于Squid通常处理的协议。 毫不夸张地说,任何使用双向TCP连接的东西都可以通过CONNECT隧道传递。 这就是为什么Squid默认的ACL以拒绝CONNECT!SSL_Ports开始,为什么你必须有一个很好的理由把任何types的允许规则放在它们上面。 类似的问题 此问题使用SSLencryption与squid转发代理的客户端连接是simlar,但不处理反向代理/ TLS终止代理。 我需要知道的 我只有关于这些技术的基本知识,我们的pipe理员要求我提供一般的可行性。 Squid可以用来保存TCP连接的encryption吗? 这可以使用客户端证书进行身份validation来实现吗 还是应该只用于HTTPS连接?

tcp零窗口消息的tcpdumpfilter

是否有一个pcapfilter的TCPDump,将允许过滤零窗口消息? 我知道如何在tcp.analysis.zero_window显示filter( tcp.analysis.zero_window )中过滤这些数据,但是我需要处理的数据量很容易导致wireshark(至less是32位版本)崩溃,并且分解文件并通过这些捕获乏味。 有无论如何有一个捕获filter的TCP零窗口消息?

Linux内核中的TCP SYN泛洪检测方法

当Linux内核检测到SYN Flooding时,它会logging如下消息: possible SYN flooding on port 80. Sending cookies 有没有人知道内核用来检测这个的确切方法?

在Debian Squeeze上重复传入的TCPstream量

我必须testing一个自制的服务器,在一个端口上接受大量的传入TCPstream量。 协议也是自制软件。 为了testing的目的,我想发送这个stream量: – 到生产服务器(比如说,监听端口12345) – 到testing服务器(比如说,监听端口23456) 我的客户端应用程序是“愚蠢的”:他们从不读取数据,服务器永远不会回复,我的服务器只接受连接,并进行统计计算并存储/转发/处理原始数据和计算数据。 事实上,客户端应用程序和硬件是如此简单,我不能告诉客户端在两台服务器上发送它们的stream…而使用“假”客户端还不够好。 什么可能是最简单的解决scheme? 我当然可以写一个中间的应用程序,只是复制传入的数据,并将其发送回testing服务器,假装成客户端。 我有一台运行Squeeze的服务器,可以完全控制它。 提前感谢您的回复。

什么tcp_orphan_retries设置为0是什么意思?

是否将tcp_orphan_retries设置为0意味着重试没有限制,还是意味着它不会重试?