网速慢的常见原因
Tags: 网络
上网方式及理论网速
如图1-1,宽带网络是一个极其复杂的端到端系统,包括LAN侧和WAN侧。LAN侧指用户到AR这一段,包括FIT AP、S、用户终端等设备。WAN侧指AR到Internet之间,包括光猫、接入网、核心网设备,不过这些都是运营商提供的,与用户无关,不在本文讨论范围内。
图1-1 用户上网组网图
下行速率是指Internet向用户发送信息时的数据传输速率,单位是Mbit/s,比如打开浏览器,下载文件等。上行速率是指用户向Internet上传文件时可以达到的速率。对于大部分用户来说,主要上网业务是从Internet下载文件,而非上传文件,所以下行速率一般都高于上行速率。用户从宽带运营商那里办理的带宽值就是下行速率。例如,用户办理了200M宽带套餐,这里的200M就是下行速率,对应的上行速率可能只有几十M。
用户终端可以通过有线方式上网,也可以通过无线方式上网,不同的上网方式,用户能达到的最大网速也不同。本文讨论的是有线用户访问Internet时遇到的下行网速慢问题,因此下行速率才是有线用户网速可以达到的理论值。此外,有线用户的网速还与网络硬件设施(光猫、AR、S、网线)有关。在解决网速慢问题之前,请先检查网络的硬件设施符合网速的要。
如何测网速
当发现上网慢问题时,建议先测量一下实际的网速后再处理故障。常用的网速测量方法有网站测速、测速工具测速等。不同的测速方法测量结果略有不同,建议使用不同的测速方法多测几次:
- 使用网站测速。各大运营商网站都提供了测速功能,例如中国电信宽带测速网,不同区域网址不一样,例如上海;也可以用一些专门的测速网站来测,例如测速网。
- 使用测速工具测速。在应用商店下载并安装测量网速的工具进行测速,例如网速测试、网络测速大师、测网速大师等。
有些测速软件的测量结果是下载速度MB/s,但会同步换算成对应的带宽值Mbit/s。如果没有,也可以根据1MB/s = 8Mbit/s的关系,自己换算一下。
了解网速慢故障场景
AR作为企业网络的路由网关设备,在企业网络里扮演了非常重要的角色,为用户提供上网服务。为了帮助用户解决在通过AR上网时遇到的上网慢问题,本文从多个现网真实案例中,总结出两大常见上网慢故障场景:单上行出口上网慢和双上行/多上行出口上网慢。
单上行出口上网慢
单上行出口上网是指AR路由器和公网之间只有一条上行链路相连。如图1-2所示,AR和Internet之间的连线只有一条,GE3/0/0是连接Internet的接口,也叫作公网口,Eth2/0/0是连接私网的接口,也叫作私网口。该场景常见的上网慢原因包括:TCP最大报文段长度MSS(Max Segment Size)值配置不合理、网络攻击导致设备Session资源耗尽、接口模式协商错误等,具体定位方法请参见单上行出口上网慢故障处理章节。
双上行/多上行出口上网慢
双上行/多上行出口上网是指AR路由器和公网之间有两条或者大于两条上行链路相连。如图1-3所示,AR和Internet之间的连线有多条,GE0/0/1和GE0/0/2都是公网口,GE0/0/3是私网口。该场景常见的上网慢原因除了单出口场景中列出的,还包括一些特有的原因,例如:Dialer口路由问题、报文来回路径不一致、等价路由问题等,具体定位方法请参见双上行出口/多上行出口上网慢故障处理章节。
图1-3 双上行/多上行出口上网场景组网示例(PPPoE拨号)
为什么网速慢,原因在这里
图1-4是用户通过AR上网慢故障树,列出了单上行出口和双上行出口两种场景上网慢的常见原因。
图1-4 为什么网速这么慢故障树
单上行出口上网慢故障处理
报文分片导致部分网页打开慢
背景信息
如果仅是部分网页访问慢,其他网页访问正常,则大概率是由于TCP最大报文段长度MSS(Max Segment Size)值配置不合理,导致报文被分片传输,影响用户的上网速度。此时,可以参考本节内容,修改报文分片的参数值。
最大传输单元MTU(Maximum Transmission Unit)是用来标识IP报文是否分片的选项。如果对端发送的IP报文长度超过MTU值,则IP报文会进行分片处理。为了保证TCP报文不分片,配置过程中需要注意MSS与MTU的关系。一般情况下,为了不影响报文传输,MSS值加上报文开销(TCP首部、IP首部等)不超过MTU值。例如,以太网接口的缺省MTU值为1500字节,为了保证报文不分片,MSS值最大配置为1460(1500 − 20(TCP首部最小长度) − 20(IP首部最小长度))字节。推荐用户配置MSS值为1200字节。
定位步骤
【1】执行命令display ip interface brief,查看公网接口是物理接口还是Dialer接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <Huawei> display ip interface brief *down: administratively down ^down: standby (l): loopback (s): spoofing (E): E-Trunk down The number of interface that is UP in Physical is 2 The number of interface that is DOWN in Physical is 3 The number of interface that is UP in Protocol is 2 The number of interface that is DOWN in Protocol is 3 Interface IP Address/Mask Physical Protocol Atm0/0/0 unassigned down down Bridge-if10 unassigned down down MFR0/0/1 unassigned down down NULL0 unassigned up up(s) GE0/0/1 x.x.x.x/24 up up GE0/0/2 x.x.x.x/24 up up |
【2】如果是物理接口,则在物理接口视图下执行命令tcp adjust-mss配置接口的TCP最大报文段长度,推荐数值为1200。
1 2 3 | <Huawei> system-view [Huawei] interface GigabitEthernet 0/0/1 [Huawei-GigabitEthernet0/0/1] tcp adjust-mss 1200 |
【3】如果是Dialer接口,则在Dialer接口视图下执行命令tcp adjust-mss配置接口的TCP最大报文段长度,推荐数值为1200,并执行命令mtu配置接口的最大传输单元值为1492。对于Dialer接口,adjust-mss值和mtu值不能配置一样。
1 2 3 4 | [Huawei] interface Dialer 0 [Huawei-Dialer0] tcp adjust-mss 1200 [Huawei-Dialer0] mtu 1492 [Huawei-Dialer0] restart |
【4】建议同步将私网接口的TCP最大报文段长度值也配置成推荐值1200。假设私网接口为GE0/0/2,则在私网接口上配置tcp adjust-mss 1200命令。
1 2 3 | <Huawei> system-view [Huawei] interface GigabitEthernet 0/0/2 [Huawei-GigabitEthernet0/0/2] tcp adjust-mss 1200 |
私网流量大导致设备的Session资源耗尽
背景信息
当网络中存在一些攻击行为或者业务较多时,路由器会收到大量流量,路由器的Session和Block内存资源很快会被耗尽,超过阈值。其他正常用户可能会因为分配不到Session和Block资源而出现上网慢情况。此时,可以参考本节内容,检查下设备的Session和Block资源是否正常。如果发现资源被耗尽,则通过traffic-policy或者traffic-filter命令禁止端口上的异常流量通过,同时找出攻击源进行杀毒。如果正常流量本身就很多,超过了设备的性能,则需要更换更高性能的设备。
定位步骤
【1】执行命令display logbuffer,查看Log缓冲区记录的信息中是否有大量Session和Block内存资源过载的日志。
1 2 3 4 5 6 7 8 9 10 11 12 | <Huawei> display logbuffer Logging buffer configuration and contents: enabled Allowed max buffer size: 1024 Actual buffer size: 512 Channel number: 4, Channel name: logbuffer Dropped messages: 0 Overwritten messages: 167 Current messages: 512 Mar 5 2021 15:47:25+08:00 Huawei %%01FORWARD/4/SESSION-RES-LACK(l)[135]:The device session resources were overloaded.(Usage = 94%) Mar 5 2021 16:29:25+08:00 Huawei %%01FORWARD/4/CAP-BLOCK-RES-LACK(l)[259]:The block memory resources were overloaded.(Usage = 97%) Mar 5 2021 16:34:25+08:00 Huawei %%01FORWARD/4/SESSION-RES-LACK(l)[261]:The device session resources were overloaded.(Usage = 92%) Mar 5 2021 16:43:25+08:00 Huawei %%01FORWARD/4/CAP-BLOCK-RES-LACK(l)[273]:The block memory resources were overloaded.(Usage = 96%) |
【2】进入诊断视图,执行命令display session statistics top 10 order-by source-ip根据源IP地址统计Top 10用户的Session信息,检查Total Sessions字段的值是否接近设备的Session规格。设备的Session规格可以在规格查询工具中查到,以AR1220C为例,选择“接入路由器”->“AR1220C”->“软件性能”->“IP应用”->“NAT”->“最大并发连接数”。
1 2 3 4 5 6 7 8 9 | [Huawei] diagnose [Huawei-diagnose] display session statistics top 10 order-by source-ip Session statistic top 10 (Condition: Source IP, Service: SESSION, Items: 10, Total Sessions: 25768) ------------------------------------------------------------------------------------------------- TOP-N IP/Port Counts Percentage(%) ------------------------------------------------------------------------------------------------- 1 192.168.1.99 19714 76.505744 2 192.168.1.88 5988 23.238125 3 192.168.1.165 9 0.034927 |
【3】如果设备的Session数已达到设备的规格,且发现Top 10会话里有大量私网终端建立的会话(源IP地址为私网终端的IP地址,例如步骤1中的192.168.1.99和192.168.1.88),说明私网中可能存在攻击行为。此时,执行命令display session statistics top 10 order-by destination-port进一步查看私网终端建立的会话的端口信息。本例中,私网用户建立了大量目的端口为445和1433的会话,建议在私网接口上配置ACL规则拒绝目的端口为445和1433的流量通过。
1 2 3 4 5 6 7 8 9 10 11 12 13 | [Huawei-diagnose] display session statistics top 10 order-by destination-port Session statistic top 10 (Condition: Destination Port, Service: SESSION, Items: 10, Total Sessions: 25768) ------------------------------------------------------------------------------------------------- TOP-N IP/Port Counts Percentage(%) ------------------------------------------------------------------------------------------------- 1 445 15486 60.097796 2 1433 9565 37.119683 3 3389 648 2.514747 [Huawei-diagnose] quit [Huawei] interface GigabitEthernet 0/0/0 [Huawei-GigabitEthernet0/0/0] display this # ip address 192.168.1.255 255.255.255.0 |
在流策略里绑定ACL并将流策略应用到私网接口GE0/0/0,不允许目的端口为445和1433的流量通过私网接口,从而解决故障。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [Huawei] acl 3000 [Huawei-acl-adv-3000] rule 20 permit tcp destination-port eq 445 [Huawei-acl-adv-3000] rule 25 permit tcp destination-port eq 1433 [Huawei-acl-adv-3000] quit [Huawei] traffic classifier virus operator or [Huawei-classifier-virus] if-match acl 3000 [Huawei-classifier-virus] quit [Huawei] traffic behavior virus [Huawei-behavior-virus] deny [Huawei-behavior-virus] quit [Huawei] traffic policy virus [Huawei-trafficpolicy-virus] classifier virus behavior virus [Huawei-trafficpolicy-virus] quit [Huawei] interface GigabitEthernet 0/0/0 [Huawei-GigabitEthernet0/0/0] traffic-policy virus outbound [Huawei-GigabitEthernet0/0/0] traffic-policy virus inbound |
【4】如果检查之后,没有发现私网有攻击行为,则说明私网的业务较多,流量大属于正常现象,当前的设备性能已无法满足私网的业务,需要更换性能更高的设备。
私网存在ARP攻击导致用户上网时断时续
背景信息
如果用户发现上网时断时续,且网速特别慢,则很有可能是因为私网存在ARP攻击。此时,可以参考本节内容,检查设备上是否存在ARP攻击。
定位步骤
【1】执行命令display logbuffer检查设备运行日志,看是否有ARP协议报文因CPU阀值的限制被丢弃。
1 2 3 4 | <Huawei> display logbuffer Sep 9 2021 16:01:55+00:00 Huawei %%01SECE/4/PORT_ATTACK(l)[0]:Port attack occurred.(Slot=MPU, SourceAttackInterface=GigabitEthernet0/0/0, OuterVlan/InnerVlan=0/0, AttackPackets=64 packets per second) Sep 9 2021 16:01:54+00:00 Huawei %%01DEFD/4/CPCAR_DROP_MPU(l)[1]:Some packets are dropped by cpcar on the MPU. (Packet-type=arp-miss, Drop-Count=770) Sep 9 2021 16:01:54+00:00 Huawei %%01DEFD/4/CPCAR_DROP_MPU(l)[2]:Some packets are dropped by cpcar on the MPU. (Packet-type=arp-request, Drop-Count=3458) |
【2】如果日志中有ARP报文被丢弃,则怀疑设备连接的私网中存在ARP攻击。此时,可以在设备上配置攻击溯源功能,进一步排查。
1 2 3 4 5 6 7 8 9 10 11 | <Huawei> system-view [Huawei] cpu-defend policy 1 [Huawei-cpu-defend-policy-1] auto-defend enable [Huawei-cpu-defend-policy-1] auto-defend threshold 40 //可适当调整建议不要太小 [Huawei-cpu-defend-policy-1] auto-defend attack-packet sample 5 [Huawei-cpu-defend-policy-1] auto-defend protocol all [Huawei-cpu-defend-policy-1] auto-defend trace-type source-ip source-mac source-portvlan [Huawei-cpu-defend-policy-1] auto-defend alarm enable [Huawei-cpu-defend-policy-1] quit [Huawei] cpu-defend-policy 1 [Huawei] cpu-defend-policy 1 global |
【3】配置完攻击溯源后,当网络出现异常时,在设备上执行命令display auto-defend attack-source进一步确认是否存在ARP攻击。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [Huawei] display auto-defend attack-source Attack Source User Table: ------------------------------------------------------------------------- MacAddress InterfaceName Vlan:Outer/Inner TOTAL ------------------------------------------------------------------------- xxxx-xxxx-xxxx GigabitEthernet0/0/1 0 368 yyyy-yyyy-yyyy GigabitEthernet0/0/0 0 7152 ------------------------------------------------------------------------- Total: 2 Attack Source Port Table: ----------------------------------------------------- InterfaceName Vlan:Outer/Inner TOTAL ----------------------------------------------------- GigabitEthernet0/0/1 0 368 GigabitEthernet0/0/0 0 23472 ----------------------------------------------------- Total: 2 Attack Source IP Table: ------------------------------------- IPAddress TOTAL Packets ------------------------------------- x.x.x.x 368 y.y.y.y 7152 ------------------------------------- Total: 2 |
如上所示,私网中源IP地址为y.y.y.y,源MAC为yyyy-yyyy-yyyy的用户发送了大量的攻击报文(本例中GE0/0/1为公网接口,报文数量增长不大,可以忽略)。此时,根据被攻击端口GE0/0/0,逐层往下找到攻击源用户,使用杀毒软件杀毒,解决故障。
【4】如果无法查到攻击源用户,可以在设备的私网接口GE0/0/0上配置ACL规则过滤掉二层ARP流量功能,拒绝源MAC地址为yyyy-yyyy-yyyy的报文通过私网接口,解决故障。
1 2 3 4 5 6 | [Huawei] acl number 4444 [Huawei-acl-L2-4444] rule 5 deny l2-protocol arp source-mac yyyy-yyyy-yyyy [Huawei] interface gigabitethernet 0/0/0 [Huawei-GigabitEthernet0/0/0] traffic-filter inbound acl 4444 [Huawei-GigabitEthernet0/0/0] quit [Huawei] quit |
公网接口状态异常导致网速慢
背景信息
如果公网接口状态异常,也会导致用户上网慢,例如,接口的状态异常、接口的双工模式不对。此时,可以参考本节内容,检查下AR设备连接公网的接口状态是否正常。
定位步骤
【1】假设AR设备连接公网的接口为GE0/0/1,执行命令display interface查看公网接口的信息,关注Duplex、Total Error、CRC、Giants等加粗部分的参数值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <Huawei> display interface GigabitEthernet 0/0/1 GigabitEthernet0/0/1 current state : UP Line protocol current state : UP Last line protocol up time : 2021-10-08 09:00:00 Description:HUAWEI, AR Series, GigabitEthernet0/0/1 Interface Route Port,The Maximum Transmit Unit is 1500 Internet Address is 120.44.5.15/24 IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 60d7-55f0-42c1 Last physical up time : 2021-10-08 09:00:00 Last physical down time : 2021-10-08 08:58:09 Current system time: 2021-10-22 06:14:56 Port Mode: COMMON COPPER Speed : 100, Loopback: NONE Duplex: FULL, Negotiation: ENABLE Mdi : AUTO, Clock : - Last 300 seconds input rate 99992 bits/sec, 50 packets/sec Last 300 seconds output rate 192 bits/sec, 0 packets/sec Input peak rate 223880 bits/sec,Record time: 2021-10-13 14:13:56 Output peak rate 18464 bits/sec,Record time: 2021-10-20 07:27:05 Input: 55586497 packets, 13516267464 bytes Unicast: 10526, Multicast: 195548 Broadcast: 55380423, Jumbo: - Discard: 0, Total Error: 0 CRC: 0, Giants: 0 Jabbers: 0, Throttles: 0 Runts: 0, Symbols: 0 Ignoreds: 0, Frames: 0 Output: 9237 packets, 590811 bytes Unicast: 9227, Multicast: 0 Broadcast: 10, Jumbo: - Discard: 0, Total Error: 0 Collisions: 0, ExcessiveCollisions: 0 Late Collisions: 0, Deferreds: 0 Input bandwidth utilization threshold : 100.00% Output bandwidth utilization threshold: 100.00% Input bandwidth utilization : 0.11% Output bandwidth utilization : 0.01% |
【2】如果在全双工模式下,公网接口的双工模式被协商成了半双工,则公网接口在发送报文时会丢包,从而影响用户的上网速度。此时,可以检查公网接口协商的双工状态是否正确,即Duplex是否为FULL。
如果发现接口双工模式协商的不对,则可能是设备本身协商错了,也可能是对端接口的速率与本端接口的速率不一致导致。先在公网接口上执行命令speed,修改本端接口的速率和对端相同。
1 2 3 4 | <Huawei> system-view [Huawei] interface GigabitEthernet 0/0/1 [Huawei-GigabitEthernet0/0/1] undo negotiation auto [Huawei-GigabitEthernet0/0/1] speed 100 |
速率修改成一致后,如果接口的双工模式仍然协商错误,则可以执行命令duplex full手动配置接口的双工模式为全双工。
1 2 3 4 5 | <Huawei> system-view [Huawei] interface GigabitEthernet 0/0/1 [Huawei-GigabitEthernet0/0/1] duplex full [Huawei-GigabitEthernet0/0/1] quit [Huawei] quit |
如果上述步骤无法解决双工问题,建议直接更换一根确认为好的网线,重新对接端口。
【3】如果接口上存在一些错包计数,即Total Error、CRC等参数不为0,则说明设备收到了错误报文。设备收到错误报文的原因比较多,可能是使用的线缆类型错误,也可能是对端设备的问题。
【4】如果以上操作都无法解决接口异常问题,则有可能是硬件故障,可以尝试更换一台新的设备解决故障。