我们刚刚调试了一个非常有趣的带宽问题,在由阿鲁巴交换机聚合的洲际广域网链路上。根据tcpdump捕获,在ProCurve 3500交换机的端口上使用任何速度的速率限制器将导致交换机随机重新排序通过它发送的TCP数据包!
开关是在最新的固件版本,没有错误,我可以找到关于这个特点。重新排序数据包会导致TCP快速重传每隔几十个段启动一次,因此即使该链路的速率限制器设置为100 able,洲际TCP连接也只能在良好的一天内达到100 kick左右。
使用UDP流进行的测试表明,交换机的功能与原始数据流的实际带宽限制一致。交换机只开始重新排序超过某个最小阈值带宽的数据包,在我们的测试中,这个值大约在4 4Mbps左右。清除速率限制而不改变任何其他内容,允许在高延迟链路上进行全速TCP传输,并且TCP快速重传的数量要低得多(更典型)。
使用iperf3进行测试,并广泛使用-b标志,以使测试数据流远低于配置的速率限制。这样做是为了避免在有限端口的实际拥塞中拖曳速率限制器行为的额外异常。
还有其他人看过这个吗?这类交换机的这种行为正常吗?出于各种原因,我们更喜欢端口速率受限的体系结构;这些交换机用于与具有分层数据速率和IP过滤器/ACL的用户系统进行接口,但显然,如果它们正在重新排序数据包,则需要替换。
任何帮助都要感谢!
编辑:
当交换机导致带宽问题时,两个单独的主机直接连接到交换机上的两个端口,并在两个主机上使用iperf3和tcpdump来检查整个交换机的数据流。一直以来,人们看到的是几个数据包被延迟/移动的“块”,但还不足以实现快速重传。基本上如下:
HOST A (receiver) HOST B (sender)
SEQ 1 < < SEQ 1
SEQ 2 < < SEQ 2
SEQ 3 < < SEQ 3
ACK 1 > > ACK 1
ACK 2 > > ACK 2
SEQ 4 < < SEQ 4
ACK 3 > > ACK 3
ACK 4 > > ACK 4
... now the interesting part ...
SEQ 7 < < SEQ 5
ACK 5 > < SEQ 6
SEQ 8 < < SEQ 7
ACK 5 > < SEQ 8
SEQ 5 < < SEQ 9
SEQ 6 < > ACK 5请注意,从接收方的角度看,在传输序列的前面是如何移动几个数据包的;还请注意接收到的序列号是如何在快速重传开始之前向后跳的。为了清晰起见,我省略了序列的其余部分,因为一旦发送方开始处理多个ACK数据包,无论如何都会快速重新传输,而且恢复路径中的事情看起来很正常。
配置是bog标准。将重置设置为工厂默认值,对其中一个测试端口应用速率限制,如下所示
config
int 28 rate-limit all out kbps 100000
int 28 rate-limit all in kbps 100000
write mem这就足以造成水滴了。这两台主机都是短电缆上的GbE,并取消速率限制配置(no 28 .)立即恢复性能并停止重传。
EDIT2:
捕获新转储时,即使NTP处于活动状态,主机之间也可能有少量的时间偏差,但我不知道如何将其考虑进去。
问题从序列号10515814开始--注意,在10515814的三个ACK甚至离开接收主机之前,收到了10515814数据包。除非我误解了什么,这意味着快速重传甚至没有机会启动,显示重新排序相对于直接下降?
接收主机端口上的交换机配置被限制在100 hosts以内,发送主机的端口是无限的。iperf3的传输限制为40 10Mbps (根据经验选择,因为在这些条件下比较容易在转储中找到重新排序,10 10Mbps和4 4Mpbs也会发生同样的情况)。
接受者:
21:24:07.302170 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10494094:10501334, ack 1, win 229, options [nop,nop,TS val 1242980393 ecr 1549151364], length 7240
21:24:07.302182 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10501334:10502782, ack 1, win 229, options [nop,nop,TS val 1242980393 ecr 1549151364], length 1448
21:24:07.302188 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10501334, win 13522, options [nop,nop,TS val 1549151365 ecr 1242980393], length 0
21:24:07.302343 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10502782:10507126, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 4344
21:24:07.302358 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10507126, win 13522, options [nop,nop,TS val 1549151365 ecr 1242980393], length 0
21:24:07.302375 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10507126:10510022, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 2896
21:24:07.302388 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10510022, win 13522, options [nop,nop,TS val 1549151365 ecr 1242980394], length 0
21:24:07.302553 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10510022:10515814, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 5792
21:24:07.302568 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10517262:10518710, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.302575 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10515814, win 13478, options [nop,nop,TS val 1549151365 ecr 1242980394,nop,nop,sack 1 {10517262:10518710}], length 0
21:24:07.302727 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10518710:10520158, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.302734 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10515814, win 13504, options [nop,nop,TS val 1549151365 ecr 1242980394,nop,nop,sack 1 {10517262:10520158}], length 0
21:24:07.302876 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10515814:10517262, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.302883 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10520158, win 13496, options [nop,nop,TS val 1549151365 ecr 1242980394], length 0
21:24:07.303094 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10520158:10523054, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 2896
21:24:07.303101 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10523054, win 13504, options [nop,nop,TS val 1549151366 ecr 1242980394], length 0
21:24:07.303256 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10523054:10524502, ack 1, win 229, options [nop,nop,TS val 1242980395 ecr 1549151366], length 1448
21:24:07.344514 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10524502, win 13522, options [nop,nop,TS val 1549151407 ecr 1242980395], length 0
21:24:07.344674 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10527398:10530294, ack 1, win 229, options [nop,nop,TS val 1242980436 ecr 1549151407], length 2896
21:24:07.344679 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10524502, win 13522, options [nop,nop,TS val 1549151407 ecr 1242980395,nop,nop,sack 1 {10527398:10530294}], length 0
21:24:07.344870 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10524502:10527398, ack 1, win 229, options [nop,nop,TS val 1242980436 ecr 1549151407], length 2896发射机:
21:24:07.313522 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10510022:10511470, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313525 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10511470:10512918, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313527 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10512918:10514366, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313533 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10514366:10515814, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313537 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10510022, win 13522, options [nop,nop,TS val 1549151365 ecr 1242980394], length 0
21:24:07.313545 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10515814:10517262, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313548 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10517262:10518710, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313728 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10515814, win 13478, options [nop,nop,TS val 1549151365 ecr 1242980394,nop,nop,sack 1 {10517262:10518710}], length 0
21:24:07.313741 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10518710:10520158, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313744 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10520158:10521606, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313747 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10521606:10523054, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313753 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10523054:10524502, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313756 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10524502:10525950, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.313885 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10515814, win 13504, options [nop,nop,TS val 1549151365 ecr 1242980394,nop,nop,sack 1 {10517262:10520158}], length 0
21:24:07.313896 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10515814:10517262, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.314085 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10520158, win 13496, options [nop,nop,TS val 1549151365 ecr 1242980394], length 0
21:24:07.314096 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10520158:10521606, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.314099 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10521606:10523054, ack 1, win 229, options [nop,nop,TS val 1242980394 ecr 1549151365], length 1448
21:24:07.314263 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10523054, win 13504, options [nop,nop,TS val 1549151366 ecr 1242980394], length 0
21:24:07.314273 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10523054:10524502, ack 1, win 229, options [nop,nop,TS val 1242980395 ecr 1549151366], length 1448
21:24:07.314276 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10524502:10525950, ack 1, win 229, options [nop,nop,TS val 1242980395 ecr 1549151366], length 1448
21:24:07.314281 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10525950:10527398, ack 1, win 229, options [nop,nop,TS val 1242980395 ecr 1549151366], length 1448
21:24:07.355648 IP 192.168.1.2.5201 > 192.168.1.1.59538: Flags [.], ack 10524502, win 13522, options [nop,nop,TS val 1549151407 ecr 1242980395], length 0
21:24:07.355661 IP 192.168.1.1.59538 > 192.168.1.2.5201: Flags [.], seq 10527398:10528846, ack 1, win 229, options [nop,nop,TS val 1242980436 ecr 1549151407], length 1448EDIT3:
开关配置正如所述,相当基本的:
Running configuration:
; J8693A Configuration Editor; Created on release #K.15.16.0019m
; Ver #0f:01.80.00.00.34.00.00.00.00.74.fc.7f.ff.3f.ef:62
hostname "TEST"
module 1 type j86yya
module 2 type j86xxa
no timesync
no telnet-server
no web-management
interface 28
rate-limit all in kbps 100000
rate-limit all out kbps 100000
exit
snmp-server community "public" unrestricted
vlan 1
name "DEFAULT_VLAN"
untagged 1-48
ip address dhcp-bootp
exit
no tftp client
no tftp server
no autorun
no dhcp config-file-update
no dhcp image-file-update发布于 2019-08-03 09:26:17
你是否注意到限速(至少在HPE/阿鲁巴)是以突发的方式进行的,而不是顺利的?这可能会干扰TCP拥塞控制,而TCP拥塞控制可能无法适应带宽限制。这反过来可能会导致明显的“重新排序”,因为交换机的下降和TCP的重传结合在一起。
你是否证实重排现象真的是由开关引起的?为此,您可能需要在交换机前后捕获数据包,或者检查TCP时间戳。
通常,限制/塑造流量的一个更好的方法是在路由器上。如果您必须在交换机上这样做,尝试向下链接接口(auto-100),而不是速率限制,这将导致一个更“自然”的限制。
编辑,如果你绝对需要限制交换机,你应该检查QoS的特性-这些通常提供更细粒度的带宽控制(虽然不确定的3500 )。
https://networkengineering.stackexchange.com/questions/60788
复制相似问题