客户端直接连接到 Cisco 交换机的 SMB 传输速率慢,连接到下游 Netgear 交换机时正常

网络工程 tcp 吞吐量
2022-02-05 16:34:18

我遇到了一个相当不寻常的问题,我很难深入了解......这是配置:

SMB 服务器->(2x10Gb SFP+ LAG) Cisco SG500X-24 交换机->(1x10Gb SFP+) Netgear XS716T

问题

当 SMB 客户端(Mac OS 10.13.6,1Gbase-T 接口,短电缆(<10m Cat-6A)连接到 Cisco 交换机时,写入传输速率良好 ~100MB/s,读取是可变的,下降到 5 -6MB/s up to 50-60MB/s - 这是不稳定的。但是转移电缆使客户端在下游的Netgear交换机上,不改变任何其他参数,我现在在同一条路上都有一个稳定的100MB/s系统 - 这是我期望的性能。Netgear 上的 10GBase-T 客户端的性能也低于预期的性能(250MB/s 读写,一个 10G 客户端处于活动状态)。

这是完全可重现的,并且发生在多个客户端上。Mac OS 10.14.6(也是 1Gbase-T)上的客户端在 Cisco 上具有更好的传输速率(100GB/s 写入,70GB/s 速率),但仍比可用带宽低 30%。

我试过的

  • 更换从 SG500X 交换机到客户端的电缆。不用找了
  • 激活和停用流量控制。似乎也有一些不同,但不是很大
  • 从 Cisco 交换机中删除所有其他客户端以进行测试。问题仍然存在,只有服务器、Cisco 交换机和客户端作为存在的唯一设备。
  • 将 SG500X 交换机的固件更新到最新版本
  • SG500X 交换机的出厂重置和重新配置
  • 将 SG500X 交换机更换为相同型号以排除硬件故障

其他配置细节

SG500X 配置有出厂默认值、无 QOS 配置、默认 4 个队列、L2/L3(路由已激活但当前未使用)、默认 VLAN、独立模式。出厂默认设置的唯一更改是:子网配置、禁用 EEE、交换机进入独立模式(无堆叠)以及配置到上游 SMB 服务器的 LAG。MTU 始终为 1500。正如预期的那样,在交换机上激活巨型帧功能没有任何区别。


我不明白为什么将客户端连接置于下游会显着提高性能,这导致我质疑 SG500X 上的一些配置问题。我还没有机会进入 Wireshark 看看我是否能看到任何东西。

有没有人对正在发生的事情或探索路径的建议有任何线索?欢迎任何想法!


思科 SG500X-24 配置文件

config-file-header
switchd1395b
v1.4.7.6 / R800_NIK_1_4_194_194
CLI v1.0
set system queues-mode 4 

file SSD indicator excluded
@
port jumbo-frame
voice vlan oui-table add 0001e3 Siemens_AG_phone________
voice vlan oui-table add 00036b Cisco_phone_____________
voice vlan oui-table add 00096e Avaya___________________
voice vlan oui-table add 000fe2 H3C_Aolynk______________
voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
voice vlan oui-table add 00d01e Pingtel_phone___________
voice vlan oui-table add 00e075 Polycom/Veritel_phone___
voice vlan oui-table add 00e0bb 3Com_phone______________
no eee enable 
bonjour interface range vlan 1
no qos 
hostname switch
passwords aging 0 
username cisco password encrypted XXX privilege 15 
!
interface vlan 1
 ip address 192.168.99.200 255.255.255.0 
 no ip address dhcp 
!
interface gigabitethernet1/1
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/2
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/3
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
 no macro auto smartport 
!
interface gigabitethernet1/4
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/5
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/6
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/7
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/8
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/9
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/10
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/11
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/12
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/13
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/14
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/15
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/16
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/17
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/18
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/19
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/20
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/21
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/22
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/23
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface gigabitethernet1/24
 no eee enable 
 flowcontrol on 
 no eee lldp enable 
!
interface tengigabitethernet1/1
 flowcontrol on 
 lacp timeout short 
 channel-group 1 mode auto 
 no macro auto smartport 
!
interface tengigabitethernet1/2
 flowcontrol on 
 lacp timeout short 
 no macro auto smartport 
!
interface tengigabitethernet1/3
 flowcontrol on 
 lacp timeout short 
 channel-group 1 mode auto 
!
interface tengigabitethernet1/4
 lacp timeout short 
!
interface Port-channel1
 flowcontrol auto 
 description XXX
 no snmp trap link-status 
 no macro auto smartport 
!
interface Port-channel2
 flowcontrol auto 
!
exit
LAG 1 stats

Bytes Received: 1288915754
Drop Events:    5960612
Packets Received:   2504690512
Broadcast Packets Received: 11768
Multicast Packets Received: 176663
CRC & Align Errors: 0
Undersize Packets:  0
Oversize Packets:   0
Fragments:  0
Jabbers:    0
Collisions: 0
Frames of 64 Bytes: 9823411
Frames of 65 to 127 Bytes:  1072963532
Frames of 128 to 255 Bytes: 118984791
Frames of 256 to 511 Bytes: 18631305
Frames of 512 to 1023 Bytes:    15774615
Frames of 1024 Bytes or More:   1268512858

GE15 stats
Bytes Received: 1609303336
Drop Events:    0
Packets Received:   49604716
Broadcast Packets Received: 2408
Multicast Packets Received: 877
CRC & Align Errors: 0
Undersize Packets:  0
Oversize Packets:   0
Fragments:  0
Jabbers:    0
Collisions: 0
Frames of 64 Bytes: 15092
Frames of 65 to 127 Bytes:  24547933
Frames of 128 to 255 Bytes: 1910884
Frames of 256 to 511 Bytes: 410342
Frames of 512 to 1023 Bytes:    784807
Frames of 1024 Bytes or More:   21935658

接口统计信息(所有端口都处于活动状态(交换机正在使用,但在最小配置中也有同样的问题))

界面 RX 总字节数(八位字节) 单播数据包 组播数据包 广播包 有错误的数据包 TX 总字节数(八位字节) 单播数据包 组播数据包 广播包
GE1 1914771463 8881813 967 33616 0 5003196556 4388558 373018 283384
GE2 2924295671 2158000 146 2131 0 1376014518 1188455 4636 6253
GE3 18314582 19259 1507 35 0 3317050 23741 1328 3413
GE4 1610193506 24779700 831 291 0 91587132392 66022893 216809 134416
GE5 1785931115 18347068 270 257 0 96968345968 66588299 181578 109479
GE6 3366871042 2673219 1247 585 0 1758705961 2053922 183192 113628
GE7 776696078 573832217 598 513 0 410038276096 435640528 192392 125422
GE8 3281916167 20044634 1114 683 0 49840870438 33899587 68320 52629
GE9 3147242197 93149866 449 782 0 2316161273 25946416 226173 140373
GE10 0 0 0 0 0 0 0 0 0
GE11 11668814 34093 90 127 0 24586872 30558 8734 10890
GE12 1433807334 16248509 158149 62811 0 47201704133 31642035 237196 258701
GE13 0 0 0 0 0 0 0 0 0
GE14 2560485641 13071733 510 1737 0 9018751222 7543145 205019 124718
GE15 1609927785 49605076 883 2511 0 109001196462 79900959 240081 156721
GE16 0 0 0 0 0 0 0 0 0
GE17 3641387874 16345400 745 513 0 54112776988 38374193 194917 120167
GE18 410520499 2672004316 9140 4513 0 106570486881 869744932 371227 318656
GE19 4096587109 49615757 486 479 0 193265149894 136865784 264575 183179
GE20 0 0 0 0 0 0 0 0 0
GE21 1837729908 2173122 5243 725 0 501919494 1268902 225662 147760
GE22 254816121 629899 302 1104 0 1623851943 1236679 379628 320703
GE23 2018388782 6819040 834 708 0 16700032706 11892710 50744 26999
GE24 850703938 141402143 182473 152039 0 314779880945 239441934 247770 170694
XG1 1963305513 1762211013 91082 12192 0 1252066021017 1340462183 354024 25595
XG2 823218861 650990080 50191 5129 0 918646564630 787696151 333303 318809
XG3 3625591452 742303743 90499 0 0 3701977843871 2749796466 211438 287424
XG4 3157857128 93010284 26478 44712 0 17513685286 19412242 353458 278958

更新(2021 年 6 月 4 日):

进一步的调查,包括使用 Wireshark 的数据包跟踪,揭示了传输速率下降时的数据包丢失(和 TCP 重传)。发生吞吐量问题时,XG1/1、XG1/3 和 Po1(LACP LAG)上的入口丢帧计数器会增加。尽管服务器的 LACP 散列策略配置错误(L4 而不是 L2),但更改此设置并不能解决问题,这是预期的,因为我认为散列策略不需要与 LACP 同质。我将在其中一个有问题的入口端口上使用端口镜像和数据包捕获进行进一步捕获以查看,但由于所有其他错误计数器均为零,我怀疑交换机的缓冲区在目标端口时没有处理突发速率是一个 1Gbit 的本地端口,这很奇怪,因为系统没有受到特别的压力(问题仍然存在于 1 个服务器和 1 个客户端) - 但最近的服务器升级可能会随着突发率而改变。尽管在 XG1/1 和 XG1/3 两个端口上激活了流控制,但它无效(可能是因为它依赖于它在 LAG 上被激活)。

#show interfaces status xg1/1
                                            Flow Link          Back   Mdix
Port     Type         Duplex  Speed Neg      ctrl State       Pressure Mode
-------- ------------ ------  ----- -------- ---- ----------- -------- -------
te1/1    10G-Fiber    Full    10000 Disabled Off  Up          Disabled Off   

#show interfaces configuration xg1/1
                                               Flow    Admin     Back   Mdix
Port     Type         Duplex  Speed  Neg      control  State   Pressure Mode
-------- ------------ ------  -----  -------- -------  -----   -------- ----
te1/1    10G-Fiber    Full    10000  Disabled On       Up      Disabled Off 

在 LAG 上激活流控制会导致负责服务器的工程师在最后一次尝试时完全失去连接。我不太清楚为什么。

至于连接到下游交换机时的改进 - 我认为可能发生的是,当传入帧的目标端口是 10Gb SFP+ 端口(通向下游交换机)时,帧被更快地卸载到下游交换机,因此 Cisco 的缓冲区填充更少,吞吐量问题也减少了。这看起来可能吗?

2个回答

问题已解决并找到原因。

LAG 工作正常,我对突发数据包速率的预测接近标准。问题也发生在只有一个链接 - 没有 LAG 上。该问题在另一台具有类似缓冲区特性的交换机上重现(Netgear S3300 - 具有 12MB 缓冲区,如 Cisco SG500X)。服务器和交换机之间的流控制(特别是 IEEE 802.3x 暂停帧)避免了这个问题,但代价是吞吐量降低了 15-20% 和潜在的线头阻塞,这是不希望的。

事实证明,最近的服务器升级(记录为 OmniOS r151036)在默认情况下激活了 Intel NIC 上的出站流量的大型分段卸载 (LSO)。英特尔特别建议在使用 LSO 时激活流量控制,我怀疑是因为潜在的高突发数据包速率。 停用出站 LSO 和流控制恢复了正常操作和吞吐量。 客户端系统之间的差异似乎是由于处理丢弃的数据包和随后的重传效率的差异,并且是问题根源的次要问题,即由于出站 LSO 的高突发数据包速率导致交换机上的入口缓冲区溢出活性。

连线,因为我遇到了完全相同的问题:客户端读取速度慢(12 Mbps),但写入速度正常(+750 Mbps) 结果是从 SG350X 思科交换机 SFP+ 10 Gb 端口中继到 SG350 1Gb 局域网的连接问题港口。我尝试了所有可能的配置,但没有成功(流量控制,手动将端口速度设置为 1Gb...)唯一的解决方法是使用常规 RJ45 10 Gb 端口或 1 Gb 端口将 SG350X 中继到 SG350

我也报告了将 SMB 服务器套接字更改为无延迟的报告,但在我的情况下不是这样。

当我在思科交换机上遇到同样的问题时,我发现了这个帖子!