我们最近在网络方面遇到了一个小问题,其中多台服务器会以相当痛苦的方式间歇性地失去网络连接(需要硬重启)。这已经持续了大约两周,似乎是随机的,在不同的服务器上。没有我们可以辨别的特定模式。
在深入研究之后,我们看到交换机报告了问题端口的 100 Mbps:
这听起来非常像 Joel Spolsky 文章五个为什么中发生的事情
Michael 花了一些时间做了事后分析,发现问题是交换机上的一个简单配置问题。交换机可以使用几种可能的速度进行通信(10、100 或 1000 兆比特/秒)。您可以手动设置速度,也可以让交换机自动协商双方可以使用的最高速度。失败的交换机已设置为自动协商。这通常有效,但并非总是如此,并且在 1 月 10 日早上,它没有。
我们现在已禁用网络硬件上的自动协商,并将其设置为 1000 Mbps(千兆位)的固定速率。
我对那些拥有更多服务器硬件网络专业知识的人的问题:
- 现代网络硬件的自动协商问题有多普遍?
- 在设置网络时禁用自动协商并设置固定速度是否被认为是良好的标准网络实践?
我还没有看到网络速度的自动协商问题不是由(a)链接一端的手动与另一端的自动不匹配或(b)链接的失败组件引起的(电缆、端口等)。
这取决于管理员,但我的经验告诉我,如果您手动指定链接速度和双工设置,那么您一定会遇到速度不匹配的问题。为什么?因为几乎不可能记录交换机和服务器之间的各种连接,然后在进行更改时遵循该文档。我见过的大多数故障都是由于 1(a) 造成的,只有在您开始手动设置速度/双工设置时才会遇到这种情况。
正如Cisco 文档中提到的:
除非您准备为需要验证速度/双工(并且不要忘记流量控制)的网络更改设置更改管理系统,或者愿意处理因在所有网络设备上手动指定这些设置而导致的偶尔不匹配,然后坚持使用自动/自动的默认配置。
将来,请考虑使用MRTG监控交换机端口上的错误,以便在出现问题之前发现这些问题。
编辑:我确实看到很多人提到旧设备的谈判失败。是的,这是很久以前创建标准时的一个问题,并非所有设备都遵循这些标准。您的 NIC 和交换机是否使用不到 10 年?如果是这样,那么这将不是问题。
很常见,多年来我在各种类型的硬件上遇到了很多问题。
在我看来,如果设置是静态的(即服务器机架)并且您认为不会有变化,那么手动设置速度和双工是个好主意。只要它有据可查,以便可以避免未来的问题。
编辑:
澄清一下,我并不是提倡在整个网络上使用手动速度,我会说 95% 的时间自动/自动是要走的路。我只是说我遇到了双工/速度问题,并且我的网络的一小部分(即我们的服务器机架之一)主要是手动设置。我们运行一个非常严格控制的 LAN,未使用的端口被关闭,并且大多数端口上都有 MAC 过滤器,因此跟踪速度并不是很困难。
因此,故障排除步骤(假设您在每次之后停止并等待问题再次出现):
此时,您已经消除了配置、插入的物理端口以及它们之间的电缆。如果它仍然发生,其他一些原因可能是:
背景/为什么我的答案最棒:我在金融行业担任网络/系统工程师,这是我对我们小型全球网络(15 个分支机构,8 个数据中心)的经验:
我们所有的 LAN 端口都是 autoneg,因为我们控制两端的设备,并且对双方都有某种访问权限——这可能就像打电话给某人并让他们检查设置一样简单。三年来,我只有一个内部端口由于 autoneg 故障而发生故障,那是因为电缆坏了——更换电缆后它就消失了。
我们遇到了更多问题,前辈在他们的 NIC 上硬编码 100/full,并且没有记录这一事实。在下一个维护窗口将所有内容重置为自动/自动,此后没有任何问题。
在我们从运营商处为我们的 WAN 获得铜线切换的几个地方?您几乎应该期望铜线 WAN/Internet 连接一直很糟糕——部分原因是您不知道另一边是什么。一些古老的 Extreme 交换机恰好有用于 autoneg 的错误固件,但 MPLS 标记?一些 5 美元的媒体转换器,因为您的 ISP 的 20 万美元 Ciena 边缘设备太棒了,无法通过双绞线提供以太网?提前决定如何处理并坚持下去,然后期待运营商内部的一些 twit 在周六晚上 10 点更改它,因为商定的配置从未记录在案,而且他们有一些政策要遵循。
不过,说真的,请从您的 ISP 处获得光纤切换。
我相信如果自动协商每天或一个月工作一个小时,然后由于某种原因“发生了一些事情”,将链接设置为固定速度“修复了它”,那么这个问题并没有得到解决,而是被规避了。我想我认为将链接设置为固定作为临时解决方案,直到真正的问题得到纠正。
我负责的网络(以及其他几个人)由约 40 台服务器、1000 多个工作站(分布在一个相当大的校园内)和约 1000 个 WAP 组成,也分布在具有不同类型和年龄的大区域的网络设备。
正如 dimitri.p 所说,当某些事情突然无法停止自动协商时,通常表明存在另一个问题。手动设置端口类似于将创可贴贴在被刺伤肠道的人身上——它可能会止血,但肯定会在下面造成损坏。
我通常的清单:
作为一项规则,我们永远不会禁用服务器(或数据中心中的任何其他东西)上的自动调整功能,除非这是在所有其他可能的原因都已消除的情况下,我们移动了交换机端口,更换了电缆,测试了 NIC 等,但没有其他选择。在这种情况下,它会被记录在案。这种情况很少发生,通常在我们无法访问以检查 BIOS 和操作系统设置的设备上发生。
另一方面,工作站和接入点是另一回事。失败的 autoneg 是电缆运行不良的典型标志,很多时候我们必须手动设置速度和双工,直到夏季运行新电缆入墙季节到来。
你应该自动协商。如果您的交换机不能可靠地自动协商,请购买更好的交换机。
千兆应该是自动协商的,其中包括自动交叉 (MDI-X) 检测。
如果一端设置为自动而另一端设置为手动,则保证100baseT 会失败,这符合规范。如果您将一端强制为 100/full,那么另一端将自动协商为 100/half,从而为您提供双工不匹配。
这是网络神话。我们的网络人员发誓这种胡说八道,因为早在 1998 年,Bay 交换机不会与 Cisco 或其他什么谈判。因此,我们没有为地球上 99.999% 的设备使用默认值,而是进行了这种荒谬的配置管理练习,并在 NIC 驱动程序更新将设置重置为自动协商并发生任何事情的时候成为了一个很好的替罪羊。
它变得更加有趣,因为我们的许多服务器都使用了 NIC 组合等可疑功能,这些功能可以防止您在不太可能发生的交换机故障事件中失去网络访问权限,同时让您面临更可能发生的软件故障。(司机总是很烂)
为了保护网络人员,很多服务器都在运行 Windows 默认的 NIC 驱动程序,这通常很糟糕。如果您在自动协商方面遇到问题,并且您的设备不属于克林顿政府,请更新这些 NIC 驱动程序。
通常我将服务器设置为固定,因为我看到网络设备协商为 10/半而不是 1000/全。
还有一些 CoLos 将他们的开关设置为不协商,而仅以 1000/full 建立链接。
在未经测试的初始配置中禁用自动协商类似于巫术编程——您在没有充分理由的情况下更改某些内容。如果在测试后发现双工或速度不匹配,或者端口上存在过多错误,请进行其他故障排除,最后在必要时修复配置。
当您升级驱动程序或更换硬件时,无法保证您的设置会保留在服务器端。
设置链接的两侧进行协商,或修复两侧。当您修复某些设备上的速度和双工设置时,它们不再向其对等设备宣布其功能。我不知道以太网标准说明了当一方宣布功能而另一方没有时该怎么做,这可能意味着很多实施者也不知道。有些人会选择最低的公分母,即 10-half,而另一些人会假设一切正常并选择尽可能快的速度。
有一些现代硬件不支持千兆铜线以太网上的自动协商,例如(至少一些)带有铜线 SFP 的 Cisco 交换机。
许多年前,我花了一些时间为 3com 工作,为他们几乎所有的网络设备提供技术支持。令人惊讶的是,这个问题出现的频率很高,手动设置所有内容几乎是标准程序。