networking硬件应该设置为“自动协商”速度还是固定速度?

最近我们遇到了一个networking问题 ,那就是多个服务器会以相当痛苦的方式间歇性地失去networking连接(需要重新启动)。 这已经持续了大约两个星期,似乎随机地在不同的服务器上。 没有特别的模式,我们可以看出来。

在深入了解之后,我们看到交换机报告了100 Mbps的问题端口:

http://blog.stackoverflow.com/wp-content/uploads/switch-autodetect-fail.png

这听起来很像在Joel Spolsky的文章Five Whys中发生的事情

迈克尔花了一些时间进行验尸,发现问题是交换机上的一个简单的configuration问题。 交换机可以使用几种速度进行通信(10,100或1000兆比特/秒)。 您可以手动设置速度,也可以让交换机自动协商双方可以使用的最高速度。 失败的交换机已被设置为自动协商。 这通常是有效的,但并不总是如此,而在1月10日上午,事实并非如此。

我们现在禁用了我们networking硬件的自动协商 ,并将其设置为1000 Mbps(千兆位)的固定速率。

我的问题,以更多的服务器硬件networking专长:

  1. 现代networking硬件的自动协商问题有多普遍?
  2. 这是否被认为是好的,标准的networking实践禁用自动协商和设置networking时设置固定的速度?

    1. 我还没有看到自动协商networking速度的问题,这不是由于(a)链路一端的手动不匹配和另一端的自动链路不匹配或者(b)链路的故障组件(电缆,端口等)。

    2. 这取决于pipe理员,但我的经验告诉我,如果您手动指定链接速度和双工设置,比你肯定会遇到速度不匹配。 为什么? 因为logging交换机和服务器之间的各种连接几乎是不可能的,并且在进行更改时要遵循该文档。 我所看到的大多数故障都是因为1(a),当您开始手动设置速度/双工设置时,您只会遇到这种情况。

    正如在Cisco文档中提到的那样:

    如果您禁用自动协商,则会隐藏链接丢失和其他物理层问题。 只对不支持自动协商的terminal设备(如不支持千兆自动协商的旧千兆网卡)进行自动协商。 除非绝对需要,否则不要禁用交换机之间的自动协商,因为物理层问题可能无法检测到并导致生成树环路。

    除非您准备为需要validation速度/双工(并且不要忘记stream量控制)的networking更改设置更改pipe理系统,或者愿意处理在所有networking设备上手动指定这些设置的偶然不匹配,然后坚持使用auto / auto的默认configuration。

    将来,考虑使用MRTG监视交换机端口上的错误,以便在出现问题之前就能够发现这些问题。

    编辑:我看到很多人参考旧设备谈判失败。 是的,很久以前这个标准是在制定标准的时候出现的,并不是所有的设备都遵循这个标准。 你的网卡和交换机不到10岁? 如果是这样,那么这不会是一个问题。

    1. 很常见,多年来我遇到过各种各样的硬件问题。

    2. 在我看来,如果设置是静态的(即服务器机架),你不认为会有变化,那么手动设置速度和双工是一个好主意。 只要它有充分的文件logging,以避免将来的问题。

    编辑:

    只是为了澄清,我不是主张在整个networking上使用手动速度,我认为95%的时间是自动/自动的。 我只是说我有双面打印/速度的问题,并且我的networking(即我们的服务器机架之一)的一小部分大部分都是手动设置。 我们运行一个非常严格控制的局域网,未使用的端口被closures,大多数端口上都有MACfilter,所以跟踪速度并不是很困难。

    我相信,如果自动协商是一天或一个月工作一个小时,然后由于某种原因“发生了什么事情”,将链路设置为固定速度“修复它”,则存在一个问题,这个问题没有解决,而是被绕过。 我想我会将链接设置为临时解决scheme,直到真正的问题得到纠正。

    我负责的networking(以及其他一些人)由大约40台服务器,1000多台工作站(分布在一个相当大的校园里)和大约1000台无线局域网(WAP)的networking设备。

    正如dimitri.p所说,当突然不能停止自动协商时,通常是另一个问题的performance。 手动设置端口类似于把一个绷带放在被刺伤的人身上 – 可能会阻止stream血,但是下面肯定会有损伤。

    我平常的清单:

    • 在机器上做了什么改变? 驱动程序? 操作系统或BIOS级别的设置? 也许autoneg在操作系统中被禁用了?
    • 你是否换出了跳线,并validation了线缆的运行情况(如果它是一个机架运行的话)?
    • 你有没有testing过,看看交换机端口是坏的或失败?
    • NIC可能会坏?

    我们通常不会在服务器(或数据中心内的任何其他设备)上禁用自动注销,除非所有其他可能的原因都已被消除,我们移动了交换机端口,更换了电缆,testing了NIC等等。其他select。 在这种情况下,它被logging为死亡。 这种情况很less发生,通常我们无法访问检查BIOS和操作系统设置的设备。

    另一方面,工作站和移动设备则是另外一回事。 失败的autoneg是一个糟糕的电缆运行的经典标志,许多时候,我们必须手动设置速度和双工,直到夏季运行 – 新的电缆在墙上的季节来临。

    因此,故障排除步骤(假设你停止后,等待问题再次出现):

    1. 检查交换机上的日志,看它是否告诉你为什么使用100M。
    2. 如果你仍然在运行它,关掉Joel一直推动的极其邪恶的“Windows负载平衡”废话 – 它的工作方式是打破交换机的caching,迫使它软件处理每个数据包。 您的交换机被devise为以硬件方式转发数据包,并且只需要CPU来确定未知stream量stream应采用什么物理path(在 – > asic – > out),并编程硬件来完成它(读取:a计算器比你的交换机有更好的CPU,不要做愚蠢的事情,使交换机的CPU工作更难)。 Windows负载平衡通过让交换机做出决定并重新安装每个数据包的硬件caching来实现。 这可能不能解决这个问题,但它使我从播客中错过…对不起。
    3. 确保configuration匹配在两边 – 听起来就像你做的那样
    4. Google在你的交换机上自动执行错误 – 除非你自己构build它,否则你不是唯一一个试图在你正在使用的系统上运行autoneg的人
    5. 更换电缆,额定Cat5e或更好 – 理想情况下,你知道的电缆工作,就像你的工作站插入。 不要试图使用Cat5,或者制造一些废话,使用一个实际上模塑出来的包装。
    6. 移动端口 – 将服务器放在同一台交换机的不同端口上
    7. 更换网卡 – 在不同的时间使用不同的批次

    此时,您已经取消了configuration,插入的物理端口以及它们之间的布线。 如果还在发生,其他原因可能是:

    1. 电缆布线 – 小心交stream电源电缆的电磁干扰,将其从机架的不同侧面放下。
    2. 冷却 – 确保你的环境温度不是90度的东西,你的网卡不会陷入某种“亲爱的上帝让我只要转发这一个包”的模式。 我听说过,但没有看到,例如,Cisco路由器在过热时会停止快速切换并通过CPU转发数据包。
    3. 将交换机换成不吸引的东西 – 检查主机每秒汇聚多less带宽,然后查看交换机的额定背板电容。 例如,7台主机出于潜在的48个传输1.0G就足以阻止Cisco 3750。 对于廉价的同时运行的networking供应商:D-Link,Linksys,戴尔,英特尔和惠普也要非常小心。 没有人认真对待networking使用这些家伙,而不是因为“从来没有人因为使用思科而被开除”,而是因为“人们记得具有20/48端口的英特尔交换机故障超过2年”或“我以前只使用ProCurve,铁路有关思科是多么邪恶,直到我实际上使用思科,在这一点上,我停止购买任何东西“。 思科被认为是一个中等规模的networking供应商,那么对于思科下面的那些人来说,这是什么意思? 🙂

    背景/为什么我的答案是最棒的:我在金融行业担任networking/系统工程师,以下是我在全球小型networking(15个分支机构,8个数据中心)的经验:

    我们所有的局域网端口都是自动的,因为我们控制着两端的设备,并且对双方都有一定的访问权限 – 这可能就像打电话给某人并让他们检查设置一样简单。 在三年之内,我只有一个内部端口因为自动登陆失败而失败,那是因为电缆坏了 – 更换电缆后,它就消失了。

    前辈在他们的网卡上硬编码为100 /全网的时候,我们遇到了更多的问题,而且没有logging这个事实。 重置所有内容到auto / auto在下一个maint窗口,并没有任何问题,因为。

    在我们的广域网的一个运营商的铜交接处的几个地方? 你应该非常期待一个铜缆广域网/互联网连接的吸引力,一部分是因为你不知道另一端是什么。 一些古老的极端交换机碰巧有自动固定的车载固件,但没有MPLS标签? 一些5美元的媒体转换器,因为你的ISP的$ 200K Ciena边缘设备是太棒了,以提供以太网双绞线? 事先决定如何处理和坚持下去,然后期待在星期六的晚上10点之后在运营商内部进行一些改动,因为一致的configuration从来没有logging下来,他们有一些政策要遵循。

    但是,严重的是,从ISP处获得光纤切换。

    这是networking神话。 我们的networking人士都以这个废话为借口,因为早在1998年,Bay交换机就不会和思科等进行谈判。 因此,我们没有使用地球上99.999%的设备的默认设置,而是使用这种荒谬的configurationpipe理方式,并且在NIC驱动程序更新重置设置以自动协商以及发生任何事情时,这是一个很好的替罪羊。

    它变得更有趣,因为我们的许多服务器使用可疑的function,如网卡绑定,这可以防止在交换机出现故障的情况下丢失networking访问,同时使您更容易发生软件故障。 (司机总是吸)

    为了防御networking人员,大量服务器正在运行Windows默认的网卡驱动程序,这通常是非常糟糕的。 如果您在自动协商时遇到问题,并且您的设备未与克林顿pipe理部门约会,请更新这些NIC驱动程序。

    你应该自动协商。 如果您的交换机不能可靠地自动协商,请购买更好的交换机。

    千兆位应该自动协商,包括自动交叉(MDI-X)检测。

    100baseT 保证失败,如果一端设置为自动,另一个设置为手动,这是按照规范。 如果强制一端达到100 /满,则另一端自动协商为100 /半,从而导致双工不匹配。

    通常我把服务器设置为固定的,因为我已经看到networking设备协商为10 /半而不是1000 /满。

    另外一些CoLos设置它们的交换机不进行协商,但是只以1000 /满连接。

    在一个未经testing的初始configuration中禁用自动协商类似于巫术编程 – 你正在改变的东西没有很好的理由。 如果在testing之后发现双工或速度不匹配,或者端口上出现过多错误,请参加其他故障排除,并根据需要最终修复configuration。

    升级驱动程序或更换硬件时,不能保证您的设置将保留在服务器端。

    设置链接的双方协商,或修复双方。 当您在某些设备上修复速度和双工设置时,他们不再向对等设备公布其function。 我不知道什么是以太网标准所说的,当一方宣布能力而另一方不能,而这可能意味着很多实施者都不知道。 有些人会select最低的共同点,这是十分之一,其他人会认为一切都很好,并select最快的速度。

    有一些当代硬件不支持在千兆铜缆以太网上进行自动协商,比如(至less有一些)带铜线SFP的Cisco交换机。

    很多年前,我花了一些时间为3com工作,为他们几乎所有的networking设备提供技术支持。 这个问题出现的频率非常惊人,而且手动设置所有内容都是非常标准的程序。

    粗糙的一个。 我已经看到100Mb的3com网卡,如果您强制使用速度或双工,那么它们将无法连接超过10Mb的任何networking。 即使驱动程序有100Mb Full和100Mb Half设置,您也只能通过让它们自动协商来获得全速。

    许多网卡驱动程序不会让你指定1000Mb。 唯一的select是10,100,自动。 如果你想全速,再强迫你做Auto。 例如Broadcom netXtreme 57xx千兆位驱动器就是这样运行的。

    您可以轻松地在交换机上强制使用千兆位,但我认为您将被迫让大多数网卡自动进行协商。

    1. 根据我的经验(主要是3Com和惠普设备,思科不多),自动协商不会导致很多问题。

    2. 与mrdenny类似,我通常将服务器设置为最快速度(我们仍然有一些为100),全双工, 然后将开关置于自动状态。 由于我们在服务器和工作站上都​​有不同的速度,所以我非常希望将交换机设置为自动并让它们适应端点。

    我在自动谈判方面遇到了很多问题。 当然,许多人每隔几个月就有一次,但这是我书中太多的问题之一。

    自动协商问题很难find,特别是处理networking,服务器,应用程序和数据库的人员是四个不同的团队时。 通常情况下,最后两个人会花很多时间来回踱步,互相指责对方的performance不好,而且说谎的时候,有时会把它踢到服务器端,这些服务器端的人会看到“top”的输出,罚款与服务器。

    这个问题一直持续下去,直到问题升级到一个“专家”(实际上是一个普通主义者,因此了解networking,硬件,操作系统,数据库,框架和应用程序)的问题,并发现问题在五到十分钟内。

    所以,每当我有能力做一些事情时,我自己的经验就是总是在生产服务器,交换机和路由器上设置固定的速度。 非生产性的服务器,如果它们隔离足够的人谁使用它没有根访问。

    处理桌面/笔记本访问的交换机可以保持自动协商,并且规则也有例外。 只要提一个,如果networking中发生了很多变化,最好放在汽车上,并留意事情。

    还有一点可能是有用的, 无论你在自动谈判方面做出什么select ,都是为了监控这个事情。 只需configurationNagios或者你需要关注任何重要端口的状态。 你已经在监视那个networking设备了,不是吗?

    在家庭设置中,我遇到了一些自动协商的问题,问题在于接线问题,特别是networking电缆卷绕成直径太小的环路,或者使电缆太靠近电源电缆。

    但是我觉得这些build议对于你的设置来说有点太小了。 ;)

    最近我刚刚在加里·多纳休(Gary Donahue)的“networking战士”(Network Warrior)中读到过这个。 根据本书的介绍,自动协商正常工作,交换机和网卡必须设置为自动协商。 将NIC设置为特定的速度和双工模式并使服务器自动协商将无法正常工作 – 自动协商是一种协议,双方都需要发言以使设置正常工作。

    如果你想明确地设置速度和双工模式,你需要在连接的两端进行。

    思科在讨论一些使用PIX / ASA安全设备时可能需要手动configuration端口速度和双工的情况,而不是使用自动协商: http : //www.cisco.com/en/US/products/hw/vpndevc/ps2030/ products_tech_note09186a008009491c.shtml#故障排除

    我的经验法则是使用自动协商的除了路由器的链接,除非你有明确的问题(如最近的Broadcom卡… BAH!)

    例如,如果您有两台路由器通过以太网连接,请手动设置两端的速度。