总结

总结

总结

在最近的更新和安全“强化”之后,120Mbps 电缆调制解调器连接后面的 CentOS6 NAT 路由器/防火墙似乎将吞吐量限制在 30Mbps。

在更新和强化之前,我的速度是 90Mbps。

我已经检查了 CPU 和网络使用情况,但它们似乎都不是限制因素。 tc没有显示正在进行任何流量整形,而且我不知道如何进一步排除故障。

细节

我有一个 CentOS 6 系统,作为 Comcast 有线调制解调器后面的 NAT 路由器/防火墙运行,而 Comcast 有线调制解调器也作为 NAT 路由器运行

                              1000     100
                              eth1     eth0
Internet-------Modem-------------CentOS6-----------------LAN
                     10.0.0.0/24         192.168.10.0/24

双 NAT 是 CentOS 系统的遗留功能,它以前用作桥接模式下运行的时代华纳有线调制解调器后面的路由器/防火墙。当我搬到康卡斯特地区时,我打算将调制解调器切换到桥接模式,但一直没能做到,双 NAT 从未造成任何问题。我获得了 90Mbps 的吞吐量,没有任何问题。

在准备将 Comcast 调制解调器转换为桥接模式时,我决定通过禁用一些不需要的服务并执行“yum update”来“强化” CentOS 系统,我已经有一段时间没这样做了。强化后,我进行了速度测试,惊讶地发现吞吐量下降到 30Mbps。

我尝试将我的主桌面系统直接连接到调制解调器,如下所示

                          eth1     eth0
Internet---Modem-------------CentOS6-----------------LAN
              |  10.0.0.0/24         192.168.10.0/24
              |
              +--------------Desktop(Win7)

运行 speedtest.net 验证了我的 Comcast 连接能够达到 120Mbps,因此我在 CentOS 系统上所做的一些更改导致吞吐量上限为 30Mbps。每次我从 LAN(CentOS 系统后面)进行速度测试时,我都会得到一个在 30Mbps 的 1-2% 范围内的值,因此几乎感觉像是有什么东西在人为地限制吞吐量。

我以为可能是以某种方式启用了流量整形,但tc似乎表明它没有激活

[jhg@perseus ~]$ sudo tc -s qdisc
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 64159459406 bytes 44745482 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 2871293442 bytes 26151570 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0

“强化”包括

  1. 删除一些不需要的包
  2. 关闭不需要的服务
  3. 设置 iptables 来过滤除 ssh 的一个非标准端口之外的所有传入流量
  4. 安装和配置tripwire

删除的软件包:

redis                    dovecot
redhat-lsb-compat        ipa-client
redhat-lsb               nfs-utils-lib
redhat-lsb-printing      nfs-utils
foomatic                 subversion
foomatic-db              spamassassin
foomatic-db-ppds         certmonger
cups                     yp-tools
mysql-server             ypbind
mysql                    rpcbind

目前已启用的服务:

abrt-ccpp            cpuspeed               kdump            nmb       
abrt-oops            crond                  lvm2-monitor     ntpd      
abrtd                dhcpd                  mcelogd          postfix   
acpid                dkms_autoinstaller     mdmonitor        rsyslog   
atd                  haldaemon              messagebus       smb       
auditd               ip6tables              named            sshd      
autofs               iptables               netfs            sysstat   
blk-availability     irqbalance             network          udev-post 

我的问题是:我接下来应该怎么做才能弄清楚为什么我的 CentOS 6 路由器似乎人为地将吞吐量限制在 30Mbps?

答案1

所以,问题出在硬件上。一个月前一切都运行良好,人们并不指望故障的硬件还能以降级模式“工作”,但事实就是如此。

发现问题的故障排除步骤是实际查看电缆调制解调器背面的以太网端口指示灯。绿色的“1Gbps”指示灯变成了橙色,代表“100Mbps”。在该模式下,调制解调器似乎仅支持高达 30Mbps 左右的吞吐量。

我知道调制解调器 (Arris TG-852G) 有 GBEthernet 端口,因此某些东西阻止 Centos 以 1Gbps 的速度与调制解调器通信。使用时ethtool我看到了以下内容:

Settings for eth1:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
        Link detected: yes

本质上说(从 Centos 适配器的角度来看)“我可以支持 GBEthernet,并且正在宣传 GBEthernet,但对等端不支持 GBEthernet - 因此我以 100Mbps 的速度连接”

我尝试了几个在线论坛(包括这里)建议的各种修复方法,例如使用不同的电缆、关闭自动协商、仅通告 1GB 速度或手动将速度设置为 1GB。关闭自动协商并尝试几根不同的 Cat6 电缆均无效,另外两种方法完全阻止了连接建立。

我断定一定是适配器本身的问题,于是订购了一个新的适配器。安装后,它立即以 1Gbps 的速度连接。问题解决了。

当然,这个故事的寓意是,尽管如今没有活动部件的设备出现硬件故障的情况很少见,但故障仍然可能发生,在归咎于软件之前,应该先排除故障。

答案2

我在这里要做的是分别恢复更改,并在每次更改后运行速度测试或恢复所有更改。对未修改的 CentOS 版本 (基线) 进行基准测试,然后分别应用每个更改,并在每次更改后运行速度测试。

相关内容