为什么以及如何标记以太网 Vlan?

网络工程 VLAN 以太网
2021-07-07 13:09:47

我听说过 VLAN 标记,但我不太了解这个概念。我知道如果不配置本地 VLAN,中继无法接受未标记的数据包,并且访问端口仅接受未标记的数据包。但我不明白为什么需要标记或未标记数据包。它的目的是什么?

4个回答

如果您在一个端口(“中继端口”)上有多个 VLAN,您需要某种方式来判断另一端的哪个数据包属于哪个 VLAN。为此,您要使用 VLAN 标记(或 VLAN 标头,如果您愿意)来“标记”数据包。实际上,在以太网帧中插入了一个 VLAN 标记,如下所示:

VLAN 头

802.1Q (dot1q, VLAN) 标签包含 VLAN-ID 和802.1Q 标准中解释的其他内容前 16 位包含“标签协议标识符”(TPID),即 8100。对于不了解 VLAN 的设备,这也兼作 EtherType 0x8100。

因此,“标记”数据包在以太网帧中包含 VLAN 信息,而“未标记”数据包则不包含。一个典型的用例是,如果您有一个从路由器到多个客户连接到的交换机的端口:

VLAN中继

在这个例子中,客户“绿色”有 VLAN 10,客户“蓝色”有 VLAN 20。交换机和客户之间的端口是“未标记的”,这意味着到达的数据包只是一个普通的以太网数据包。

路由器和交换机之间的端口配置为中继端口,以便路由器和交换机都知道哪个数据包属于哪个客户 VLAN。在该端口上,以太网帧标有 802.1Q 标签。

上面的回答很有技术含量。可以这样想:

事实上,VLAN 和标记只不过是网络与物理网络的逻辑分离。这是什么意思?

如果没有 VLAN,则每个广播域都需要一台交换机想象一下所涉及的布线以及主机所需的潜在 NIC 数量。首先,VLAN 允许您在同一交换机内拥有多个独立的第 2 层结构。

由于现在您可以在每个链接/端口上拥有多个网络,因此您必须能够以某种方式区分哪个数据包属于哪个网络。这就是它们被标记的原因。如果一个端口承载多个 VLAN,则它通常也称为中继(对于n>1个VLAN,至少要对n-1个VLAN进行标记,可以有一个未标记的VLAN,即native VLAN)

通常,您必须区分端口入口(从“电缆”传入)和出口(从“电缆”传出)的数据包:

入口

  • ingress untagged:这是端口的本地vlan进来的地方。如果交换机配置了多个VLAN,则必须告诉交换机传入的untagged数据包属于哪个VLAN;

  • ingress tagged: 好吧,如果它是被标记的,那么它就被标记了,你对此无能为力。如果交换机不知道标记或那个精确的 VLAN,它会拒绝它,但有时您必须激活某种入口过滤器。您还可以强制端口仅接受未标记或标记的数据包。

出口

  • 出口未标记:对于每个端口,您可以选择一个 VLAN,其在该端口上的传出数据包没有标记(例如,因为主机不支持它,或者例如 PC、打印机等只需要一个 VLAN);

  • 出口标记:您必须告诉交换机哪些 VLAN 在端口上可用,如果有多个 VLAN,则无论如何都必须标记除一个之外的所有 VLAN。

交换机内部发生了什么

一个开关具有一个FDB(˚F orwarding d ATA酶),其

  • 在不支持 VLAN 的交换机中(有时称为“非托管”或“哑”,...):将主机(MAC 地址)与端口相关联:FDB 是一个由两个元素的元组组成的表:(MAC、港口)

  • 在支持 VLAN(有时称为“管理”或“智能”,...)的交换机中:将 (VLAN, MAC) 元组关联到端口:FDB 是一个由三个元素的元组组成的表:(MAC, port , VLAN)。

    这里唯一的限制是一个 MAC 地址不能在同一个 VLAN 中出现两次,即使在不同的端口上也是如此(本质上,支持 VLAN 的交换机中的 VLAN 取代了不支持 VLAN 的交换机中的端口概念)。换句话说:

  • 每个端口可以有多个 VLAN(这就是为什么在某些时候需要标记的原因)。
  • 每个端口和每个 MAC 可以有多个 VLAN:相同的 MAC 地址可以出现在不同的 VLAN 和同一端口上(尽管出于理智的目的,我不建议这样做)。
  • 相同的 MAC 地址仍然不能出现在同一个 VLAN 上,而是出现在不同的端口上(同一二层网络中具有相同 MAC 地址的不同主机)。

希望这能稍微消除混乱;-)

事实上的 VLAN 封装协议是802.1Q (dot1.q)它最基本的功能是跨交换机保留VLAN。由于 VLAN 对交换机来说是本地重要的,因此您必须标记去往附近交换机的帧,让他们知道该帧属于哪个逻辑分组。

默认情况下,Native VLAN 是默认 VLAN,一个中继端口可以承载多个 VLAN,将流量路由到路由器或交换机。VLAN是第2层协议,它将第2层网络分段,它们只能在第3层设备(例如路由器或第3层交换机)中进行通信。

使用本地 VLAN,因此未标记的帧可以在不需要路由器的情况下进行通信。使用以下命令将默认/本地 VLAN 更改为另一个 VLAN 是最佳安全实践: switchport trunk native vlan 。

Cisco 交换机支持 IEEE 802.1Q 封装和 ISL。