Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

虚拟桥接 LAN(VLAN,IEEE 802.1Q)

虚拟桥接局域网用于将共享同一物理网络的网络设备在逻辑上分组到一起。

通过这种方式,一个 VLAN 组的网络流量仅对该组成员网络设备可见。

特定的 VLAN(组)通过唯一的 12 bit VLAN ID 来区分。

网络管理员必须将网络设备在逻辑上分组,并为每个组提供唯一的 VLAN ID。然后,他会将每个参与的(Ethernet)交换机上的每个端口与一个或多个此类 ID 关联。之后,交换机会仅将传入的 VLAN tagged packets(见下文)转发给位于特定 VLAN 中的网络设备。

VLAN 由 IEEE 在 IEEE 802.1Q 标准中规定。

VLAN 会与多种 IEEE 802 技术(Ethernet、WLAN、Token Ring,……)“协同工作”。

有关如何捕获 VLAN 流量的各种细节,请参见 CaptureSetup/VLAN

(Ethernet)Packet Format

定义了几种不同的数据包格式;详情请参见标准。

不过,Ethernet 上的 VLAN 数据包通常如下所示:

| Destination MAC address | Source MAC address | Type (VLAN: 0x8100) | VLAN Tag | User Data | 6 | 6 | 2 | 4 | 46 - 1500

绿色字段与普通 Ethernet 数据包中的含义相同,VLAN Ethernet Type 为 0x8100。

请注意,最大用户数据长度仍为 1500,因此 VLAN 数据包最大为 1518 字节(比普通 Ethernet 数据包长 4 字节)。

VLAN Tag

VLAN tag 本身如下所示(长度以 bit 为单位):

| Priority | CFI | ID | Ethernet Type/Length | 3 | 1 | 12 | 16

  • Priority:此数据包的用户优先级(范围为 0 到 7)
  • Canonical Format Identifier(CFI):
  • 通常为 0(canonical format,字节为 Big Endian,bit 为 Little Endian)。
  • 如果设置为 1,这通常表示帧中的 MAC 地址采用 Ethernet 的 non-canonical format(bit 为 Big Endian),即 Token Ring 和 FDDI MAC 地址顺序。
  • 更准确地说,在 Ethernet 上,以及在没有源路由的 FDDI 上,即当帧的源 MAC Address 字段中的 RII bit 为 0 时,这表示 VLAN tag 之后跟随一个两个或更多 octets 的 Embedded Routing Information Field(E-RIF),该 E-RIF 本身具有一个 Non-canonical Format Indicator,会明确说明 MAC 地址是否按 canonical order 排列。在带源路由的 Token Ring 和 FDDI 上,这始终表示 non-canonical / 原生 TR 和 FDDI MAC 地址格式。
  • CFI 被设置表示该帧源自 Token Ring(IEEE 802.5)或 FDDI 网段。
  • 在 IEEE 802.1ad 和 ah 中,它被 Drop Eligible Indicator(DEI)bit 取代,较新的 802.1Q 版本(2011 及以后)也采纳了这一点,并将 802.1ad 和 ah 合并在内;由于 Token Ring 和 FDDI 现在相当少见,对它们进行 bridging 的支持已被移除。
  • ID:此数据包所属 VLAN(组)的 ID

History

Wikipedia VLAN history section

Protocol dependencies

  • XXX - 描述 VLAN 与 Ethernet(以及使用它的其他 802.x LAN,例如 Token Ring)之间的关系

Example traffic

 Frame 53 (70 bytes on wire, 70 bytes captured) Ethernet II, Src: 00:40:05:40:ef:24, Dst: 00:60:08:9f:b1:f3 802.1q Virtual LAN 000. .... .... .... = Priority: 0 ...0 .... .... .... = CFI: 0 .... 0000 0010 0000 = ID: 32 Type: IP (0x0800) Internet Protocol, Src Addr: 131.151.32.129 (131.151.32.129), Dst Addr: 131.151.32.21 (131.151.32.21) Transmission Control Protocol, Src Port: 1173 (1173), Dst Port: 6000 (6000), Seq: 0, Ack: 128, Len: 0

Wireshark

VLAN dissector 功能完整。

Preference Settings

VLAN dissector 有两个首选项:

  • Show VLAN summary in protocol tree
  • 802.1QinQ Ethertype

Example capture file

SampleCaptures 页面包含 vlan.cap.gz,其中展示了 VLAN tags。

Display Filter

VLAN display filter 字段的完整列表可在 display filter reference 中找到

仅显示基于 VLAN 的流量:

 vlan

Capture Filter

仅捕获 VLAN 流量:

 vlan

仅捕获 VLAN 17 的 VLAN 流量:

 vlan 17

(将 17 替换为你想捕获其流量的 VLAN 的 VLAN ID)

引用 Mac OS X 10.4.9 tcpdump man page(这并非 WinPcap 特有,而是所有 libpcap/WinPcap 实现共有的):

vlan [vlan_id]

  • 如果数据包是 IEEE 802.1Q VLAN 数据包,则为 True。如果指定了 [vlan_id],则仅当数据包具有指定的 vlan_id 时为 true。请注意,在表达式中遇到的第一个 vlan 关键字会基于该数据包是 VLAN 数据包这一假设,改变表达式其余部分的解码偏移量。

正如第二句话所说:“请注意,在表达式中遇到的第一个 vlan 关键字会基于该数据包是 VLAN 数据包这一假设,改变表达式其余部分的解码偏移量。”“vlan and host x.x.x.x” 中的 “vlan” 会使 “host x.x.x.x” 检查具有 IPv4 地址 x.x.x.x 的 VLAN 封装数据包。

若要同时检查具有该 IPv4 地址的 VLAN 封装和非 VLAN 封装数据包,请尝试

host x.x.x.x or (vlan and host x.x.x.x)

  • IEEE 802.1Q:IEEE Standards for Local and metropolitan area networks—Virtual Bridged Local Area Networks.

Discussion

Imported from https://wiki.wireshark.org/VLAN on 2020-08-11 23:27:11 UTC

相关 Wireshark Wiki 页面

网络分析技术档案