有没有什么程序可以帮助我检查以太网通道是否可以支持全长 VLAN 数据包?

有没有什么程序可以帮助我检查以太网通道是否可以支持全长 VLAN 数据包?

有时,我不得不面对这样的情况,我需要快速而明确地知道全长 VLAN 数据包是否可以在两个 RJ45 端口之间穿越。

是的,我的意思是 802.1Q 以太网帧的 Etype=81 00(下图)。

VLAN 数据包格式

我现在能做的是:准备两台 Windows PC,每台 PC 安装英特尔千兆网卡和英特尔特定驱动程序来创建虚拟网卡,并分配 VLAN ID=3。

在此处输入图片描述

然后将两台 PC 分别连接到两个 RJ45 端口。

最后执行ping生成一个全长的以太网数据包。

ping -f -l 1472 <dest-IP>

这样,我可以确保发送的数据包具有 1500 字节的最大“IP 数据有效负载”(8 字节的 ICMP 头和 1472 字节的 ICMP 数据)。

以太网有效载荷

如果 ping 得到回复,我就知道以太网通道支持全长 VLAN 数据包。

从我的实验来看,一些家用交换机或宽带路由器(例如 Linksys WRT54G)不支持全长 VLAN 数据包交换,因此只能ping -f -l 1468成功。

你看,我必须使用昂贵的 Intel NIC 来进行那个测试,非常不方便。你知道,对于当今的大多数笔记本电脑,它们都没有配备 Intel NIC,而且,即使是 Intel NIC,Intel VLAN 驱动程序,Intel 对可以安装 VLAN 驱动程序的型号也有限制。

所以,我的问题是:有没有一个小程序可以让我在不安装专用的 VLAN 驱动程序的情况下发送全长的 VLAN 数据包?或者更好的是,该程序有一个库存功能,可以满足我的情况。

首选 Windows 程序,欢迎 Linux 解决方案。程序越简单越好。谢谢。

[额外的]

2006 年左右购买的 Linksys 路由器使用官方固件 v7.00.6。 (linksys 网络管理员图像)

[2012-11-09] 这项技术非常有用。要检查的以太网通道可以是更有趣的东西,例如 802.11 WDS 桥接器。

答案1

如果 NIC/驱动程序是限制,那么您就无法采取任何措施,即使程序允许您发送更大的数据包,它也会碎片化。

在 Linux 中启用 VLAN 标记很容易。您需要安装 vconfig(ubuntu 中的 vlan 包),然后可以使用相同的 ping 测试或 iperf。

答案2

我想另一个选择是使用数据包嗅探软件包,例如来自的 wiresharkhttp://www.wireshark.org/监控两端的流量,这样可以确保您看到通过的数据,尽管它不允许您为测试创建全尺寸的数据包。

如果你将它与类似 nemesis 的东西结合起来http://nemesis.sourceforge.net/;此工具可用于制作要注入的数据包,也可用于重新发送捕获的数据包,因此,理论上,您可以使用您的方法生成测试数据包,捕获它,然后将其与 nemesis 一起重新使用并在远端监控它以查看它是否通过,从而省去了安装和配置能够进行 VLAN 标记的卡的麻烦。如果这有效,您可以非常轻松地围绕预先捕获的数据包和 nemesis 构建脚本,然后使用 wire shark 在远端监听它,或者在近端监听 icmp 响应(如果远端配置了 VLAN)。

由于我从未使用过 nemesis,因此此方法完全未经测试,但它在 wireshark 网站上被列为一种有用且得到很好支持的数据包注入工具。

答案3

在 Andres 的 Linux 提示vconfig和一些空闲时间尝试之后,我终于成功了。

我的实验箱里有以下东西:

  1. 运行 Windows XP 的笔记本电脑,且至少有两个可用的 USB 端口。
  2. 在 Windows 上安装 VMware Workstation 7.1,创建两个运行 openSUSE 12.2 的虚拟机。
  3. 两个支持全长 VLAN 数据包的 USB 以太网适配器。我的选择是中特 ZK011,其采用的是 Realtek RTL8150 芯片。

RTL8150 非常好,以至于 openSUSE Linux(至少从 SuSE 9.0 开始)内置了它的驱动程序,并且 vconfig 也是一个预安装的包。一旦插入 Linux,Linux 就会eth1为其创建一个设备。

然后,在 eth1 上创建 vlan=30 接口,

vconfig add eth1 30

现在ifconfig将显示一个名为 的新 nic 设备eth1.30

为 eth1.30 分配一个 IP,

ifconfig eth1.30 10.1.1.5 up

对另一个 Linux VM 执行上述操作,但分配不同的 IP。

最后,通过任何集线器/交换机将两个加密狗与以太网电缆连接起来进行检查。

现在,我可以尝试使用最大 MTU 进行 ping 操作。

ping -s 1472 -M do 10.1.1.6

干杯!

这里最不确定的因素是,USB 以太网适配器本身是否支持全长 VLAN 数据包。为了验证这一点,我曾经使用交叉线将两个适配器连接起来并互相 ping。

顺便说一句:Z-TEK ZE543(Moschip MCS7830)似乎不支持全长 VLAN 数据包,至少在默认的 Linux 驱动程序中不支持。

相关内容