目前,我们刚刚进入一个新的数据中心,networking性能出现非常大的问题,老实说,我无所适从, 所以我正在寻找一些灵感。
DataCenter有一个我无法访问的托pipenetworking,但是我们负责pipe理其中的主机。
一般信息
问题
在出站传输中,传输以大窗口大小快速开始,但在远程服务器上,数据包乱序接收,这又会导致重复的ACK被发送出去。 在很短的时间内,窗口大小已经大量缩减(稳定在4万到6万个字节之间),传输速度从每秒兆字节降低到〜200-300KB /秒。
在入站传输中,一切都是“好的”(其中“良好”被定义为2MB /秒的持续传输速率)。
所以,从数据中心传输一个20MB文件的SCP将以〜2.2MB /秒的速度启动,但是会下降到〜275KB /秒,总共需要01m14s,而同一个20MB文件传输到数据中心的SCP将启动以每秒2.2MB的速度在2.0-2.2MB / sec之间保持稳定,并在00分09秒完成。
我所尝试的
以下是入站/出站stream量的stream量分析(从DC中的主机angular度)。 正如你所看到的那样,(非常)正常的重复ACK使传输速度远远低于应有的速度。 另请注意,在入站传输中,不会出现同样的问题。
tshark -r outbound-bond0.pcap -q -z io,stat,1,\ "COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission",\ "COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack",\ "COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment",\ "COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission" =================================================================== IO Statistics Interval: 1.000 secs Column #0: COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission Column #1: COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack Column #2: COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment Column #3: COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission | Column #0 | Column #1 | Column #2 | Column #3 Time | COUNT | COUNT | COUNT | COUNT 000.000-001.000 8 22 0 2 001.000-002.000 4 28 0 3 002.000-003.000 4 33 0 4 003.000-004.000 4 25 0 3 004.000-005.000 3 28 0 3 005.000-006.000 4 38 0 4 006.000-007.000 6 22 0 4 007.000-008.000 4 14 0 2 008.000-009.000 5 33 0 4 009.000-010.000 1 10 0 1 010.000-011.000 4 25 0 2 011.000-012.000 2 25 0 2 012.000-013.000 3 35 0 3 013.000-014.000 2 23 0 2 014.000-015.000 4 50 0 4 015.000-016.000 3 22 0 2 016.000-017.000 5 28 0 3 017.000-018.000 3 29 0 3 018.000-019.000 3 31 0 3 019.000-020.000 5 17 0 2 020.000-021.000 4 40 0 4 021.000-022.000 7 27 0 3 022.000-023.000 5 37 0 4 023.000-024.000 10 17 0 1 024.000-025.000 3 10 0 1 025.000-026.000 4 9 0 2 026.000-027.000 3 10 0 1 027.000-028.000 4 47 0 4 028.000-029.000 5 35 0 4 029.000-030.000 3 14 0 2 030.000-031.000 9 24 0 3 031.000-032.000 4 20 0 3 032.000-033.000 6 37 0 5 033.000-034.000 3 19 0 3 034.000-035.000 3 17 0 1 035.000-036.000 3 42 0 3 036.000-037.000 6 49 0 5 037.000-038.000 1 7 0 1 038.000-039.000 9 59 0 6 039.000-040.000 3 23 0 3 040.000-041.000 1 12 0 1 041.000-042.000 4 39 0 2 042.000-043.000 6 15 0 0 043.000-044.000 2 25 0 2 044.000-045.000 3 41 0 3 045.000-046.000 1 8 0 1 =================================================================== tshark -r inbound-bond0.pcap -q -z io,stat,1,\ "COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission",\ "COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack",\ "COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment",\ "COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission" =================================================================== IO Statistics Interval: 1.000 secs Column #0: COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission Column #1: COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack Column #2: COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment Column #3: COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission | Column #0 | Column #1 | Column #2 | Column #3 Time | COUNT | COUNT | COUNT | COUNT 000.000-001.000 0 0 0 0 001.000-002.000 0 0 0 0 002.000-003.000 0 0 0 0 003.000-004.000 0 0 0 0 004.000-005.000 0 0 0 0 005.000-006.000 0 0 0 0 006.000-007.000 0 0 0 0 007.000-008.000 1 26 1 0 008.000-009.000 1 70 0 1 009.000-010.000 21 184 5 4 010.000-011.000 4 42 4 2 011.000-012.000 9 48 3 2 012.000-013.000 0 0 0 0 013.000-014.000 0 0 0 0 014.000-015.000 1 29 1 1 ===================================================================
坦率地说,我彻底失败了。 下一步尝试的build议非常受欢迎。
如果你确定这个问题是由乱序包造成的,那么我可以很容易地想到一件事会导致你的数据包失序:在你和边缘之间的多链路以太通道DCconfiguration为每个数据包循环负载平衡。 要求你的提供者专门寻找。