网络

理解 Trunk:VLAN 封装的基础

Trunk 是在用户帧上写入 VLAN 标识的机制,使帧在多台设备之间传输时始终保留其所属 VLAN 的信息。本文介绍 802.1Q 与 ISL 两种封装协议,并给出在交换机上配置 trunk 端口以及在路由器上创建子接口的命令示例。

· 1 分钟阅读 · 难度 中级

1. Trunk 简介:802.1Q 与 ISL 封装

Trunk 是在用户帧上写入 VLAN 标识的机制。凡是在多台设备之间传输的帧,都会始终保留其所属 VLAN 的信息。目的设备由此知道该帧可以由哪些端口处理(即属于同一 VLAN 的端口)。

如果希望 VLAN 流量在多台交换机之间传输,就必须使用中继链路。Trunk 链路只是一条普通的链路,区别在于它能够传输不同 VLAN 的流量,并且具备区分各 VLAN 流量的方法。下面是一个示例:

可以看到,两侧都有计算机,而它们分属不同的 VLAN。使用 trunk,我们就能确保所有 VLAN 流量都可以在交换机之间传送。 由于传统的以太网帧中没有任何字段用来表明它属于哪个 VLAN,我们需要另一种协议。 ​ 目前有两种被广泛使用的 trunk 协议:

  • 802.1Q:这是最常见的中继协议。它是一项标准,受到众多厂商支持。
  • ISL:这是 Cisco 的中继协议。并非所有交换机都支持它。

2. 来看一看 802.1Q:

下面是一个 802.1Q 以太网帧的示例。 可以看到,它是一个普通的以太网帧,只是我们在中间加入了一个标签(即紫色字段)。在这个标签中可以找到一个「VLAN 标识」,也就是该以太网帧所属的 VLAN。交换机正是通过它得知我们的流量属于哪个 VLAN。 ​ 此外还有一个名为「Priority」的字段,用于为不同类型的流量赋予不同的优先级。当您有一个 VLAN 承载 IP 语音流量、另一个 VLAN 承载数据流量时,这一点很有用:您多半希望优先处理 VoIP 流量,否则通话质量可能会受到影响。 ​ 希望这些内容有助于理解 802.1Q。

3. 命令部分

要更改交换机上某个端口(接口)的模式,首先需要用 interface 加接口名 的命令选中该端口,在本例中为 GigabitEthernet0/1。

Switch(config-if)#interface gig0/1
Switch(config-if)#switchport mode trunk

要让一台路由器在与 802.1Q trunk 相同的链路上拥有多个网关(对应多个 VLAN),需要创建子接口,并为每个接口指明所分配的 VLAN。 例如:

Router(config)#interface gig0/0.10
Router(config-subif)#encapsulation dot1Q 10
Router(config-subif)#ip address 192.168.10.1 255.255.255.0
​
Router(config)#interface gig0/0.20
Router(config-subif)#encapsulation dot1Q 20
Router(config-subif)#ip address 192.168.20.1 255.255.255.0