TCP服务器停止发送SYN/ACK,而只是在几个正常TCP会话之后发送ACK
我有几千台NAT背后的设备与两台服务器通信。每个设备都位于一个本地路由器(比如调制解调器/路由器)的后面,在这个路由器上,它们可以连接到一个拥有数千个设备的专用网络,在这个专用网络的网关上,来自数千个设备的TCP会话可以动态地将NAT过载/PAT连接到单个全局IP地址上的端口。这意味着,假设设备1将与服务器通信,连接将来自路由器的全局ip:端口号1。一旦设备1通话完毕,NAT关联被删除,当设备2想要与同一服务器通话时,远程路由器可以为设备2分配相同的全局端口,即服务器可以看到新的TCP连接来自路由器的全局ip端口:端口号\u 1 设备本身启动TCP连接,对一个小文件执行HTTP post,断开TCP连接,为下一个文件建立新连接,等等。这对大约20个文件都可以正常工作,之后在SYN上,设备只从服务器返回ACK,没有SYN。ACK的ACK编号与SYN上的序列号完全不同。设备在1秒后立即发送RST、后退并尝试从同一源端口发送SYN,但仍为ACK,因此在放弃之前,它会一直后退到3、6、12、24、48秒。在设备的RST上,它似乎在使用ACK中的SEQ,试图关闭旧连接(从服务器角度看) 远程主机是AWS ELB。以下是我们的假设和我们的尝试:TCP服务器停止发送SYN/ACK,而只是在几个正常TCP会话之后发送ACK,tcp,server,router,nat,amazon-elb,Tcp,Server,Router,Nat,Amazon Elb,我有几千台NAT背后的设备与两台服务器通信。每个设备都位于一个本地路由器(比如调制解调器/路由器)的后面,在这个路由器上,它们可以连接到一个拥有数千个设备的专用网络,在这个专用网络的网关上,来自数千个设备的TCP会话可以动态地将NAT过载/PAT连接到单个全局IP地址上的端口。这意味着,假设设备1将与服务器通信,连接将来自路由器的全局ip:端口号1。一旦设备1通话完毕,NAT关联被删除,当设备2想要与同一服务器通话时,远程路由器可以为设备2分配相同的全局端口,即服务器可以看到新的TCP连接来自路
查看跟踪中的最后一个实例,这就是我们缩短路由器上NAT post FIN/RST超时的地方。您可以看到,前四次ACK的AKC编号为2899295595。但是在5号上,ACK是3102149417。6号电话是4158039292。这是因为在这里,路由器被设置为更快地超时NAT,因此这些尝试来自路由器上不同的全局端口。如果问题与全局端口和使用全局端口的前一个连接有关,则应已停止该问题。但问题依然存在,这让我们相信这与源端口无关,而是由TCP SYN本身的某些东西造成的。您的路由器是cisco ASR1001吗 我遇到了几乎相同的问题,并将ip nat转换超时(动态nat)值设置为默认值(86400秒)。我以前的超时设置是600秒
一些客户端在我的NAT网络中进行了一些长TCP会话。正如您所说,如果我删除NAT会话的速度比两个端点都快,它将中断现有会话。请注意,跟踪中“TCP确认未看到的段”的激增是因为我过滤掉了所有具有有效负载的TCP数据包以确保机密性(它们与问题无关)。我包括了连接历史记录,以表明设备在遇到此问题之前,在多个会话上发送数据时没有任何问题。服务器故障比这里更能说明这个问题。请把它贴在那里。不过最好不要交叉贴。