将 TCP 窗口大小缩小为 0

将 TCP 窗口大小缩小为 0

任何跨越我们的 Cisco ASA 单元的大型文件传输都会出现问题,最终导致暂停。

设置

测试1:服务器 A,FileZilla 客户端 <- 1GBPS -> Cisco ASA <- 1 GBPS -> 服务器 B,FileZilla 服务器

大型文件传输约 30 秒后,大型传输的 TCP 窗口大小将降至 0。然后,RDP 会话会在一两分钟内无响应,然后变得不稳定。一两分钟后,FTP 传输恢复,但速度为 1-2 MB/s。

当 FTP 传输结束时,RDP 会话的响应能力恢复正常。

测试2:服务器 C 与服务器 B 位于同一网络中,FileZilla 客户端 <- 本地网络 -> 服务器 B,FileZilla 服务器

文件将以 30+ MB/s 的速度传输。

细节

ASA:5520 运行 8.3(1) 和 ASDM 6.3(1)

Windows:Server 2003 R2 SP2(带最新补丁)

服务器:在 HP C3000 刀片机箱上运行的虚拟机

FileZilla:3.3.5.1,最新稳定版本

传输:20 GB SQL .BAK 文件

协议:通过 tcp/20、tcp/21 进行主动 FTP

交换机:Cisco Small Business 2048 Gigabit,运行最新 2.0.0.8

VMware:4.1

HP:Flex-10 3.15,最新版本

笔记

所有服务器都是虚拟机。

思考

很确定 ASA 有问题,因为同一网络上的虚拟机之间的传输不会显示窗口大小缩小。

我们的 ASA 非常普通。没有对任何设置进行重大更改。它有一堆 NAT 和 ACL。

Wireshark 示例

编号 时间 源 目标 协议信息
 234905 73.916986 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=131981791 Win=65535 Len=0
 234906 73.917220 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234907 73.917224 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234908 73.917231 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=131984551 Win=64155 Len=0
 234909 73.917463 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234910 73.917467 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234911 73.917469 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234912 73.917476 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=131988691 Win=60015 Len=0
 234913 73.917706 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234914 73.917710 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234915 73.917715 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=131991451 Win=57255 Len=0
 234916 73.917949 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234917 73.917953 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234918 73.917958 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=131994211 Win=54495 Len=0
 234919 73.918193 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234920 73.918197 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234921 73.918202 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=131996971 Win=51735 Len=0
 234922 73.918435 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234923 73.918440 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234924 73.918445 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=131999731 Win=48975 Len=0
 234925 73.918679 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234926 73.918684 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234927 73.918689 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132002491 Win=46215 Len=0
 234928 73.918922 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234929 73.918927 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234930 73.918932 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132005251 Win=43455 Len=0
 234931 73.919165 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234932 73.919169 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234933 73.919174 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132008011 Win=40695 Len=0
 234934 73.919408 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234935 73.919413 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234936 73.919418 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132010771 Win=37935 Len=0
 234937 73.919652 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234938 73.919656 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234939 73.919661 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132013531 Win=35175 Len=0
 234940 73.919895 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234941 73.919899 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234942 73.919904 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132016291 Win=32415 Len=0
 234943 73.920138 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234944 73.920142 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234945 73.920147 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132019051 Win=29655 Len=0
 234946 73.920381 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234947 73.920386 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234948 73.920391 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132021811 Win=26895 Len=0
 234949 73.920625 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234950 73.920629 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234951 73.920632 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234952 73.920638 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132025951 Win=22755 Len=0
 234953 73.920868 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234954 73.920871 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234955 73.920876 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132028711 Win=19995 Len=0
 234956 73.921111 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234957 73.921115 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234958 73.921120 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132031471 Win=17235 Len=0
 234959 73.921356 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234960 73.921362 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234961 73.921370 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132034231 Win=14475 Len=0
 234962 73.921598 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234963 73.921606 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234964 73.921613 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132036991 Win=11715 Len=0
 234965 73.921841 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234966 73.921848 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234967 73.921855 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132039751 Win=8955 Len=0
 234968 73.922085 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234969 73.922092 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234970 73.922099 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132042511 Win=6195 Len=0
 234971 73.922328 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234972 73.922335 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234973 73.922342 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132045271 Win=3435 Len=0
 234974 73.922571 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234975 73.922579 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:1380 字节
 234976 73.922586 1.1.1.1 2.2.2.2 TCP ftp 数据 > ivecon 端口 [ACK] Seq=1 Ack=132048031 Win=675 Len=0
 234981 75.866453 2.2.2.2 1.1.1.1 FTP-DATA FTP 数据:675 字节
 234985 76.020168 1.1.1.1 2.2.2.2 TCP [TCP ZeroWindow] ftp-data > ivecon-port [ACK] Seq=1 Ack=132048706 Win=0 Len=0
 234989 76.771633 2.2.2.2 1.1.1.1 TCP [TCP ZeroWindowProbe] ivecon 端口 > ftp 数据 [ACK] Seq=132048706 Ack=1 Win=65535 Len=1
 234990 76.771648 1.1.1.1 2.2.2.2 TCP [TCP ZeroWindowProbeAck] [TCP ZeroWindow] ftp-data > ivecon-port [ACK] Seq=1 Ack=132048706 Win=0 Len=0
 234997 78.279701 2.2.2.2 1.1.1.1 TCP [TCP ZeroWindowProbe] ivecon 端口 > ftp 数据 [ACK] Seq=132048706 Ack=1 Win=65535 Len=1
 234998 78.279714 1.1.1.1 2.2.2.2 TCP [TCP ZeroWindowProbeAck] [TCP ZeroWindow] ftp-data > ivecon-port [ACK] Seq=1 Ack=132048706 Win=0 Len=0

1 月 18 日新增

我发现我可以在同一子网上的两台服务器之间复制该问题。

https://i.stack.imgur.com/SVIdu.jpg

上图来自运行 FTP 服务器的虚拟机。1. FTP 传输已启动,磁盘队列已建立。2. 我停止了 FTP 传输,但磁盘队列仍然非常非常长 3. 停止记录。高磁盘队列持续约 1-2 分钟,然后虚拟机开始响应。

1 月 19 日新增

看起来磁盘排队让我走上了 RAID I/O 路径。

据我所知,FTP 传输的是少量数据,而不是可以完成大量工作的现代协议。

我在 FileZilla 中尝试了一下缓冲区。

FileZilla 内部缓冲区平均磁盘队列 MB/s
65,535 200.0 10.0(VM RDP 无响应)
131,072 92.0 8.0(VM RDP 无响应)
262,144 9.8 4.1
524,288 5.6 4.3
786,432 7.2 5.2

磁盘队列和缓冲区大小之间似乎存在某种关系。我似乎无法使吞吐量高于 ~4.2 MB/s

答案1

这看起来像是 ASA 配置问题,我以前遇到过类似的问题

确保该tcp-options window-scale clear选项未在配置中配置,如果已配置,请将其删除。

这是一个旧的 ASA 错误,因此尝试升级您的 ASA 版本虽然会造成破坏但这并不是一个坏主意。

答案2

您测试的不是同一件事。在测试 1 中,serverA 是客户端,而在测试 2 中,serverC 是客户端。Windows 扩展是接收主机的功能。我并不是说 ASA 没有问题,但是如果您没有通过 ASA 和在与测试 serverC 相同的 LAN 上进行测试,您怎么知道 serverA 没有问题呢?如果您将 serverA 移至 LAN,将 serverC 移至 WAN,两次测试的结果是否相同,或者结果是否会“交换”,即 WAN 上的 serverC 现在有问题,而 LAN 上的 serverA 没问题?

相关内容