什么是 VLAN?他们解决什么问题?
我正在帮助一个朋友学习基本的网络,因为他刚刚成为一家小公司的唯一系统管理员。我一直在向他指出与各种网络主题相关的 Serverfault 上的各种问题/答案,并注意到一个差距 - 似乎没有一个答案可以从第一原则解释什么是 VLAN。本着如何子网划分工作的精神,我认为在这里提出一个带有规范答案的问题会很有用。
答案中要涵盖的一些潜在主题:
编辑:明确地说,我已经知道 VLAN 是如何工作的 - 我只是认为 Serverfault 应该有一个涵盖这些问题的答案。如果时间允许,我也会提交我自己的答案。
我们最近在网络方面遇到了一个小问题,其中多个服务器会以一种相当痛苦的方式(需要硬重启)间歇性地失去网络连接。这已经持续了大约两周,似乎是随机的,在不同的服务器上。没有我们可以辨别的特定模式。
在深入研究之后,我们看到交换机报告了问题端口的 100 Mbps:
这听起来非常像乔尔·斯波尔斯基 (Joel Spolsky) 的文章“五个为什么”中发生的事情
Michael 花了一些时间做事后分析,发现问题是交换机上的一个简单的配置问题。交换机可以使用多种可能的速度进行通信(10、100 或 1000 兆位/秒)。您可以手动设置速度,也可以让交换机自动协商双方可以使用的最高速度。发生故障的交换机已设置为自动协商。这通常有效,但并非总是如此,并且在 1 月 10 日早上,它没有。
我们现在已经在我们的网络硬件上禁用了自动协商,并将其设置为 1000 Mbps(千兆位)的固定速率。
我对那些拥有更多服务器硬件网络专业知识的人的问题:
我想检查指定的 ethX 是否物理上启动或关闭。我如何使用命令行执行此操作?
这似乎是一个愚蠢的问题,但为什么以太网电缆有 8 根线?Cat5 电缆仅使用了 8 根电线中的 4 根,因此实际上“需要”的只有 4 根。为什么不是 12 或 16 线?
我有一台戴尔 1U 服务器,带有 Intel(R) Xeon(R) CPU L5420 @ 2.50GHz,8 核,在 x86_64 上运行 Ubuntu 服务器内核版本 3.13.0-32-generic。它具有双 1000baseT 网卡。我已将其设置为将数据包从 eth0 转发到 eth1。
我注意到在我的 kern.log 文件中它一直挂着然后休息。这经常发生。这种情况每隔几秒钟发生一次,然后可能几分钟就可以了,然后每隔几秒钟就会恢复。
这是日志文件转储:
[118943.768245] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
[118943.768245] TDH <45>
[118943.768245] TDT <50>
[118943.768245] next_to_use <50>
[118943.768245] next_to_clean <43>
[118943.768245] buffer_info[next_to_clean]:
[118943.768245] time_stamp <101c48d04>
[118943.768245] next_to_watch <45>
[118943.768245] jiffies <101c4970f>
[118943.768245] next_to_watch.status <0>
[118943.768245] MAC Status <80283>
[118943.768245] PHY Status <792d>
[118943.768245] PHY 1000BASE-T Status <7800>
[118943.768245] PHY Extended Status <3000>
[118943.768245] PCI Status <10> …
Run Code Online (Sandbox Code Playgroud) 根据这里的表格,它说 MTU = 1500 字节,有效载荷部分是 1500 - 42 字节或 1458 字节(<- 这实际上是错误的!)。现在最重要的是您必须添加 IPv4 和 UDP 标头,它们是 28 个字节(20 个 IP + 8 个 UDP)。这使我的最大可能应用程序消息为 1430 字节!但是通过在互联网上查找这个数字,我看到的是 1472。我在这里计算错误吗?
我想知道的是我可以通过网络发送的最大应用程序消息,而不会产生碎片风险。它绝对不是 1500,因为它包括帧头。有人可以帮忙吗?
令人困惑的是 PAYLOAD 实际上可以大到 1500 字节,这就是 MTU。那么现在有效载荷为 1500 的线内尺寸是多少?从该表中,它可以大到 1542 字节。
所以我可以发送的最大应用程序消息是 1472 (1500 - 20 (ip) - 8 (udp)) 最大线径为 1542。当事情实际上很简单时,事情会变得如此复杂,这让我感到惊讶。而且我不知道如果表上写的是 1542,那么有人是如何想出数字 1518 的。
在我的办公室大楼里有一个石器时代的 LAN 机架,上面有一些我以前从未见过的以太网端口。我需要找到这些端口的名称(如果有的话),然后购买一些电缆或适配器。
不幸的是,我不允许卸下整个设备并将电缆连接到普通的 RJ45 机架。
连接到机架前部的所有电缆的另一端都有一个 RJ45 公头。在机架上,我可以阅读 AT&T 110DW2-100。我检查了电缆,没有任何提示。
在这里您可以看到连接到交换机的端口和一些电缆的图片:
有谁知道这些端口的名称?
有没有更有效的方法来检索 Linux 中网卡的 MAC 地址?
这有效:
ip link show dev eth0 | awk ' /link\/ether/ { print $2 }'
Run Code Online (Sandbox Code Playgroud)
但可以通过以下方式找到:
cat /sys/net/something
Run Code Online (Sandbox Code Playgroud) 希望这里的人可能对我们面临的问题有所了解。目前,我们让思科 TAC 正在调查此案,但他们正在努力寻找根本原因。
虽然标题提到了 ARP 广播和高 CPU 使用率,但现阶段我们不确定它们是否相关。
原问题已发布在INE在线社区
我们已将网络精简为没有冗余设置的单个链路,将其视为星形拓扑。
事实:
我即将使用Wireshark在我的Windows计算机上进行一些流量监控。在研究它时,我想知道Wireshark如何在Windows之前设法捕获低级别网络数据包。
首先,我的 NIC 上的网络接口接收到一个数据包。然后 NIC 进行一些初始检查(CRC、正确的 MAC 地址等)。假设验证成功,网卡转发数据包。但是如何以及在哪里?
我知道驱动程序是 NIC 和操作系统或任何其他应用程序之间的粘合剂。我进一步猜测Windows和Wireshark有一个单独的驱动程序(WinPcap?)。否则,Wireshark将无法接收以太网帧。是否有两个或多个 NIC 驱动程序同时共存?网卡如何知道使用哪一个?