CentOS 6路由器/防火墙似乎正在限制吞吐量

TL; DR

在120Mbps电缆调制解调器连接之后的CentOS6 NAT路由器/防火墙,似乎在最近的更新和安全“硬化”之后,以30Mbps的速度上限。

更新和强化之前,我得到了90Mbps。

我已经检查了CPU和networking的使用情况,这两者似乎都不是一个限制因素。 tc不显示任何stream量整形正在进行,我不知道如何进一步排除故障。

细节

我有一个CentOS 6系统作为一个Comcast电缆调制解调器后面的NAT路由器/防火墙运行,它也作为一个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更新”来“硬化”CentOS系统,而我之前从来没有这样做过。 硬化后,我做了一个速度testing,惊讶地发现吞吐量降到了30Mbps。

我尝试将我的主要桌面系统直接连接到调制解调器

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

运行speedtest.netvalidation我的Comcast连接能力为120Mbps,所以我在CentOS系统上做了一些改变,导致吞吐量达到30Mbps。 每次我从局域网(CentOS系统后面)进行速度testing时,我都会得到一个值在30Mbps的1-2%之内的值,所以它几乎感觉是某种东西被人为地限制了吞吐量。

我想也许stream量整形启用了某种程度,但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. closures不需要的服务
  3. 设置iptables来过滤除了一个非标准的ssh端口之外的所有传入stream量
  4. 安装和configurationtripwire

删除的软件包:

 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的吞吐量?

所以,这里的问题变成了一个硬件问题。 事情在一个月前工作得很好,一个人不希望失败的硬件仍然在降级模式下“工作”,但这就是发生了什么事情。

发现问题的故障排除步骤是实际查看电缆调制解调器背面的以太网端口指示灯。 绿色“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适配器的angular度来说) “我可以支持GBEthernet,并且是通过GBEthernet,但是对方不支持GBEthernet – 所以我以100Mbps的速度连接”

我尝试了几个在线论坛(包括这里)提出的各种修复,例如使用不同的电缆,closures自动协商,只广告1GB的速度,或手动设置速度为1GB。 closuresauto-neg并尝试使用几根不同的Cat6电缆没有任何影响,另外两个则完全阻止了连接的build立。

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

当然,这个故事的寓意是,尽pipe现在没有移动部件的设备的硬件故障很less见,但在归咎软件之前,它们仍然是可能的,应该被淘汰。

我将在这里做的是单独恢复更改,并在每次更改之后运行速度testing或恢复所有更改。 对未经修改的CentOS版本(基准)进行基准testing,然后分别应用每项更改,并在每次更改后运行速度testing。