任何跨越我们的 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 没问题?