我想开始将我的 SOHO 网络升级到千兆位(从 10/100)并且听说过一些有关巨型帧的事情。
在网络上实现巨型帧的最佳方法是什么?据我所知,为了使其正常工作,网络上的所有网络设备都必须支持巨型帧。这是真的吗?
如果我有特定的设备(例如网络打印机)无法更新到 GB 以太网,这会阻止我启用巨型帧吗?
启用巨型帧有哪些陷阱?
答案1
首先,最好解释一下什么是巨型帧以太网。以太网是一种第 2 层网络技术,其协议数据单元 (PDU) 是一个帧。作为参考,L3PDU(IP 层)是一个数据包,L4PDU(tcp/udp)是一个段。
以太网帧(以太网有几种类型,但我们可以在此概括一下)由一个帧头(其中包含源 MAC、目标 MAC、802.1q VLAN 标签等)、帧的数据或有效载荷以及用于验证帧是否成功传输的 CRC 校验和组成。
最初的以太网将帧大小(整个帧中的数据值,包括报头和校验和)指定为 1500 字节(也可能是 1518,需要查找)。这个数字在一次发送的数据量和传输失败或发生冲突而必须重新传输的可能性之间取得了平衡。随着快速全双工 LAN 的出现,人们意识到可以通过增加以太网帧大小来提高性能。巨型帧的传统大小为每帧 9000 字节,但这主要是惯例。
在坚固的全双工 LAN(或 VLAN)上,所有元素都期望接收巨型帧以太网,这实际上确实可以提高性能。这种情况的问题是,如果您引入了不期望它的网络元素或终端设备。在最好的情况下,这将导致性能下降,因为接收设备只期望帧中有 1518 个字节,因此会丢失数据包。
现在回答你的具体问题:
在网络上实现巨型帧的最佳方法是什么?
这是一个主观问题。在我的办公场所,我们选择只在我们知道所有变量都在控制范围内并且我们知道它会有所帮助的地方实施它。为此,我们在一个特殊的“私有”VLAN 中实施它,只有特定设备可以通过其第二个 NIC 访问它。具体来说,我们将文件服务器和应用程序服务器的第二个 NIC 放入这个新 VLAN,然后将所有引用更改为此 VLAN 中使用的 IP 方案。这使我们能够将目标缩小到(没有人会将台式机插入此 VLAN)我们知道最受益的特定区域(我们基础设施中利用率最高的数据链路)。这可以最大限度地提高收益,同时最大限度地降低风险。
更具体地说,在网络方面(使用 IOS),我们构建了专用于巨型帧设备的 VLAN,然后在其 VLAN 定义中添加了“mtu 9000”。交换机上将使用此网络的每个接口都使用类似“switchport access vlan 11”之类的东西放入此 VLAN 中。在 Linux 机器上(eth0 连接到标准网络,eth1 连接到巨型帧网络),我们在 /etc/sysconfig/network-scripts/ifcfg-eth1 中添加了“MTU=9000”。因为我们从不路由这些数据包(任何未直接连接到巨型帧 VLAN 的东西都不可能与巨型帧 VLAN 上的 NIC 通信),所以我们从不必担心路由器配置。
据我所知,为了使其正常工作,网络上的所有网络设备都必须支持巨型帧。这是真的吗?
是的,基本如此。所有网络“客户端”(我指的是服务器/台式机/IPKVM/IP 环境监视器等)也必须能理解它,否则,如上所述,您将拥有大量半可达机器(它们将执行 ping 操作,并且任何小于 1500 字节的 L3 或 L4PDU 都将成功,这意味着,例如,您的邮件服务器将执行 ping 操作,您将能够手动发送可能是一条小测试消息。但是,当您尝试发送真正的邮件(带有 excel 附件且帧大小大于 1500 字节的邮件)时,它将神秘地失败)。
如果我有特定的设备(例如网络打印机)无法更新到 GB 以太网,这会阻止我启用巨型帧吗?
如果是这种情况,我会这样做(假设网络设备可以处理这个问题):
- 建立两个 VLAN,一个带有巨型帧,一个不带有
- 将所有网络设备分配给一个 VLAN 或另一个 VLAN
- 在您的路由器和交换机中,实现巨型帧 VLAN 并更改任何网络客户端上的帧大小。
这意味着您的网络上将不再有平面 L2 拓扑。例如,如果您想从启用巨型帧的服务器打印到非巨型帧打印机,则必须路由数据包(通过路由器,将帧重写为更常规的大小,然后发送到另一个 VLAN 上的打印机)。这意味着您的巨型帧和非巨型帧机器之间的通信将比以前略差,但巨型帧 VLAN 上所有设备之间的数据传输速率将更好。这实际上只是一个判断。
启用巨型帧有哪些陷阱?
希望以上内容能帮到您。祝您好运!
答案2
答案3
您可以使用 ping.exe 检查数据包的最大大小并将其与您的巨型帧设置进行比较。
ping -l 4096 -f server
调整 -l 使用的数据包大小,并使用 -f 设置 DO_ NOT_FRAGMENT 标志。当达到最大数据包大小时,您将收到“数据包需要分段但已设置 DF”的信息。
这将指示巨型帧是否有效。
答案4
在 Linux 上,我发现以下方法有效:如果您使用带标记的 vlan,请将基础设备(例如 eth1)的 mtu 设置为巨型帧大小。所有支持巨型帧的 vlan 都具有相同的 mtu,不支持的 vlan 则保留原始 mtu,通常为 1500。
实际上,启用了巨型对话器和交换的 VLAN 将能够发送到本地 VLAN 接口,即使该 VLAN 上的 mtu 小于基本接口的 mtu。
同样在 Linux 上测试的命令是:ping -s 4096 -M do
-s 是大小,-M 表示“不分段”。如果超出本地 mtu,则会出错。如果超出远程 mtu,则不会收到任何回复。