本文档提供有关交换机间链路 (ISL) 和 IEEE 802.1Q 封装的帧字段的基本信息和概要。
Cisco 建议您首先了解有关 VLAN 和中继的知识。
本文档不限于特定的软件和硬件版本。中继功能与所使用的硬件有关。有关在 Cisco Catalyst 系列交换机上实施中继的详细信息,请参阅实施中继的系统要求。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
中继用于承载属于多个 VLAN、在同一条链路的多台设备间传输的流量。设备可根据数据流的 VLAN 标识符确定数据流所属的 VLAN。VLAN 标识符是与数据封装在一起的标记。ISL 和 802.1Q 是两种封装类型,用于通过中继链路传输来自多个 VLAN 的数据。
ISL 是 Cisco 专有协议,用于互联多个交换机并在交换机之间传输数据流时维护 VLAN 信息。ISL 在全双工或半双工模式下维护以太网链路全线速性能的同时,提供 VLAN 中继功能。ISL 运行于点对点环境中,最多支持 1000 个 VLAN。在 ISL 中,原始帧将经过封装,另外添加一个报头,然后通过中继链接进行传输。接收端将删除报头并将帧转发到指定 VLAN。ISL 使用每 VLAN 生成树 (PVST),即每个 VLAN 运行一个生成树协议 (STP) 实例。PVST 允许为每个 VLAN 优化根交换机的位置,并支持多条中继链路上 VLAN 的负载平衡。
802.1Q 是 IEEE 标准,用于标记中继上的帧,最多支持 4096 个 VLAN。在 802.1Q 中,中继设备会在原始帧中插入一个 4 字节的标记,重新计算帧校验序列 (FCS),然后通过中继链路发送帧。接收端将删除标记并将帧转发到指定 VLAN。802.1Q 不标记本地 VLAN 上的帧。它将标记在中继上传输及接收的所有其他帧。配置 802.1Q 中继时,必须确认在中继两端配置了相同的本地 VLAN。IEEE 802.1Q 定义了一个在本地 VLAN 上运行的生成树实例,用于网络上的所有 VLAN。这称为单生成树 (MST)。 它缺乏灵活性以及 ISL 所提供的 PVST 负载平衡功能。但 PVST+ 能够通过 802.1Q 中继保留多生成树拓扑结构。
有关802.1Q封装的详细信息,请参阅Catalyst 4500/4000、5500/5000和6500/6000之间中继的“802.1Q中继的基本特征”部分系列交换机,使用802.1Q封装和Cisco CatOS系统软件。
有关 Cisco 交换机上 ISL/802.1Q 封装配置的详细信息,请参阅 VLAN 中继协议配置示例和 TechNotes。
ISL 帧由三个主要字段组成:封装帧(原始帧),头部和尾部分别由 ISL 报头和 FCS 封装。
ISL 报头 | 封装帧 | FCS |
以下示例是对 ISL 报头的进一步扩展说明。其中包括每个字段的字段缩写和位数:
位数 | 40 | 4 | 4 | 48 | 16 | 24 | 24 |
帧字段 | DA | 类型 | 用户 | SA | 长度 | AAAA03(SNAP) | HSA |
位数 | 15 | 1 | 16 | 16 | 8 到 196,600 位(1 到 24,575 字节) | 32 |
帧字段 | VLAN | BPDU | 索引 | RES | ENCAP FRAME | FCS |
此部分提供对 ISL 帧字段的详细说明。
ISL 数据包的 DA 字段是一个 40 位的目标地址。此地址为多播地址,设置为“0x01-00-0C-00-00”或“0x03-00-0c-00-00”。 DA 字段的前 40 位告诉接收方,此数据包采用 ISL 格式。
TYPE 字段由一个 4 位代码组成。TYPE 字段表示被封装的帧的类型,将来可用于表示其他封装帧类型。下表提供了不同 TYPE 代码的定义:
类型代码 | 含义 |
---|---|
0000 | 以太网 |
0001 | 令牌环 |
0010 | FDDI |
0011 | ATM |
USER 字段由一个 4 位代码组成。USER 位用于扩展 TYPE 字段的含义。USER 字段的默认值为“0000”。 对于以太网帧而言,USER 字段位“0”和“1”表示通过交换机时数据包的优先级。如果数据流的处理方式允许将其更快地转发,则设置为此位的数据包应该利用快速路径。此类路径不是必须要提供的。
USER 代码 | 含义 |
---|---|
XX00 | 一般优先级 |
XX01 | 第 1 优先级 |
XX10 | 优先级 2 |
XX11 | 最高优先级 |
SA 字段是 ISL 数据包的源地址字段。该字段应设置为传输帧的交换机端口的“802.3”MAC 地址。它是一个 48 位值。接收设备可能忽略帧的 SA 字段。
LEN 字段存储原始数据包的实际包大小,为 16 位值。LEN 字段以字节表示数据包的长度,不包括 DA、TYPE、USER、SA、LEN 和 FCS 字段。不包括的字段总长 18 个字节,因此 LEN 字段表示总长度减去 18 个字节。
AAAA03 SNAP 字段为一个 24 位的常量值“0xAAAA03”。
HSA 字段是一个 24 位值。此字段表示 SA 字段的前 3 个字节(制造商 ID 部分)。其中必须包含值“0x00-00-0C”。
VLAN 字段是数据包的 VLAN ID。它是一个15位值,用于区分不同VLAN上的帧。此字段通常称为帧的“颜色”。
可为 ISL 帧所封装的所有 BPDU 数据包设置 BPDU 字段中的位。生成树算法使用 BPDU 来确定关于网络拓扑结构的信息。还可为所封装的 CDP 和 VLAN 中继协议 (VTP) 帧设置此位。
INDX 字段显示数据包送出交换机时的源端口索引。该字段只用于诊断目的,可由其他设备设置为任何值。它是一个 16 位值,将在接收数据包中忽略。
RES 字段是一个 16 位值。该字段用于令牌环或 FDDI 数据包与 ISL 帧封装在一起的情况。如果是令牌环帧,则此处为访问控制 (AC) 和帧控制 (FC) 字段。如果是 FDDI,则 FC 字段置于此字段中最低有效字节 (LSB) 处。例如,FC“0x12”对应的 RES 字段为“0x0012”。 对于以太网数据包,RES 字段应全部设置为零。
ENCAP FRAME 字段是封装的数据包,包括其自身的循环冗余校验 (CRC) 值,且完全未经修改。内部帧必须包含一个 CRC 值,该值将在删除 ISL 封装字段之后生效。此字段的长度可以是 1 到 24,575 个字节,以满足以太网、令牌环和 FDDI 帧的需要。接收交换机可删除 ISL 封装字段,并在接收到帧时使用该 ENCAP FRAME 字段(按指示用于交换目的,将正确的 VLAN 及其他值与接收到的帧相关联)。
FCS 字段包含 4 个字节。此序列包含一个 32 位 CRC 值,该值由发送 MAC 创建,然后由接收 MAC 重新计算,以检查帧是否损坏。FCS 基于 DA、SA、Length/Type 以及 Data 字段生成。附加 ISL 报头后,会基于整个 ISL 数据包计算一个新的 FCS,然后将其添加到帧尾。
注意:新FCS的添加不会改变封装帧中包含的原始FCS。
ISL 帧封装为 30 个字节,最小的 FDDI 数据包为 17 个字节。因此,FDDI 的最小 ISL 封装数据包为 47 个字节。最大令牌环数据包为 18,000 个字节。因此,最大 ISL 数据包为 18,000 加上 ISL 报头的 30 个字节,共 18,030 个字节。如果只封装以太网数据包,则 ISL 帧的大小范围为 94 到 1548 个字节。
对于使用 ISL 封装的系统,最大封装长度为 30 个字节,并且不需要分段。因此,如果封装的数据包长度为 1518 个字节,则以太网 ISL 数据包长度为 1548 个字节。另外,如果封装的数据包不是以太网数据包,则最大长度可能会显著增加。评估拓扑是否支持 ISL 数据包大小时,必须考虑这种长度变化。
对于系统,另一种情况是,ISL 数据包包含两个 FCS。第一个 FCS 是为原始数据计算的。数据包封装在 ISL 中后,计算第二个 FCS。如果原始数据包含的 CRC 无效,则在删除 ISL 报头且终端设备检查原始数据 FCS 之前,无法检测到无效 CRC。通常,这对于交换硬件不是问题,但是对于路由器和网络接口卡 (NIC) 可能是个问题。
IEEE 802.1Q 使用内部标记机制,该机制在原始以太网帧自身的源地址和 Type/Length 字段之间插入一个 4 字节的标记字段。由于帧发生了改变,因此中继设备会对修改后的帧重新计算帧校验序列。
DA | SA | 标记 | TYPE/LEN | 数据 | FCS |
以下示例是对 Tag 字段的进一步扩展说明。其中包括每个字段的字段缩写和位数。
位数 | 16 | 3 | 1 | 12 |
帧字段 | TPID | 优先级 | CFI | VID |
此部分提供对 802.1Q 帧字段的详细说明。
标记协议标识符是一个 16 位字段。其值设置为 0x8100,用于将帧标示为 IEEE 802.1Q 标记的帧。
又称为用户优先级,此 3 位字段指的是 IEEE 802.1p 的优先级。该字段表示帧的优先级别,可用于数据流优先排序。该字段可表示(0 至 7)8 个级别。
规范格式指示符为 1 位字段。如果此字段的值为 1,则 MAC 地址为非规范格式。如果值为 0,则 MAC 地址为规范格式。
VLAN 标识符是一个 12 位字段。它可唯一标识帧所属的 VLAN。该字段的值介于 0 到 4095 之间。
802.1Q 标记为 4 个字节。所以,生成的以太网帧的大小可达 1522 个字节。带 802.1Q 标记的以太网帧最小为 68 个字节。
QinQ Support 功能可为进入网络的 802.1Q 标记数据包添加另一层 IEEE 802.1Q 标记(称为“metro 标记”或“PE-VLAN”)。目的是通过对已标记的数据包进行标记,生成“双标记”帧,从而扩展 VLAN 空间。扩展的 VLAN 空间允许服务提供商提供特定服务,例如允许特定客户在特定 VLAN 上访问 Internet,同时仍然允许服务提供商为其他 VLAN 上的其他用户提供其他服务类型。
接口的默认最大传输单元 (MTU) 为 1500 个字节。为以太网帧附加一个外层 VLAN 标记后,数据包大小将增加 4 个字节。因此,您可以适当增加服务提供商网络上每个接口的 MTU。建议的最小 MTU 为 1504 个字节。
QinQ 帧包含 VLAN 标记已经修改的标记协议标识符 (TPID) 值。默认情况下,VLAN 标记使用 TPID 字段来标识标记的协议类型。根据 IEEE 802.1Q 中的定义,该字段的值为 0x8100。
通过检查对应的 TPID 值,设备可确定收到的帧承载的是服务提供商 VLAN 标记还是客户 VLAN 标记。接收到帧之后,设备将配置的 TPID 值与帧中 TPID 字段的值进行比较。如果二者匹配,则该帧承载的是对应的 VLAN 标记。例如,如果帧分别承载 TPID 值为 0x9100 和 0x8100 的 VLAN 标记,同时服务提供商 VLAN 标记的 TPID 值配置为 0x9100,客户网络 VLAN 标记的 TPID 值配置为 0x8200,设备将认为该帧仅承载了服务提供商 VLAN 标记,但没有客户 VLAN 标记。
另外,不同供应商的系统可能将 QinQ 帧外层 VLAN 标记的 TPID 设置为不同值。为实现与这些系统的兼容性,您可以修改 TPID 值,使 QinQ 帧发送到公共网络时,承载与特定供应商相同的 TPID 值,从而实现与该供应商设备之间的互操作性。以太网帧的 TPID 与不带 VLAN 标记的帧的协议类型字段位置相同。为避免在网络中转发和处理数据包时出现问题,可将 TPID 值设置为下表中的任意值:
协议类型 | 价值 |
ARP | 0x0806 |
PUP | 0x0200 |
RARP | 0x8035 |
IP | 0x0800 |
IPv6 | 0x86DD |
PPPoE | 0x8863/0x8864 |
MPLS | 0x8847/0x8848 |
IS-IS | 0x8000 |
LACP | 0x8809 |
802.1x | 0x888E |
通常情况下,只要支持 Cisco IOS 功能或协议就支持 QinQ Support 功能。例如,如果可以在子接口上运行 PPPoE,就可以为 PPPoE 配置一个双标记帧。通过转发带双标记 802.1Q 报头的 IP 数据流,IPoQinQ 可支持为终结 QinQ VLAN 标记而添加双标记的 IP 数据包。