数据(Data)字段为帧承载的数据内容,由一个上层协议的协议数据单元PDU构成。数据长度在46~1500之间,若上层协议数据单元长度少于46 字节,则必须填充该字段的其余部分,以保证MAC帧长度不小于64字节。

可见,一个以太网帧长范围为64~1518字节。

注意:发包工具如Testcenter设置发包长度时会将CRC考虑在内,即帧长包含CRC的4字节;而抓包工具如Wireshark显示的帧长不包括CRC字段。

* 带VLAN的以太网帧格式

IEEE 802.1Q(俗称Dot One Q)标准在以太网数据帧中“发送源MAC地址”与“类别域(Type Field)”之间附加4字节的Vlan识别信息(标签),如图7所示:

插入Vlan后的以太网帧格式

TPID(Tag Protocol Identifier,标签协议标识)值规定为0x8100。设备缺省采用协议规定的TPID值,交换机通过TPID来确定数据帧是否附加基于IEEE802.1Q的VLAN信息。

TCI(Tag Control Information,标签控制信息)字段分为Pri、CFI和VLAN三部分。Pri表示报文优先级(也称1p优先级、COS或1q优先级),CFI(Canonical Format Indicator)标识MAC地址在不同传输介质中是否以标准格式进行封装,通常为0(标准格式)。Vlan ID标识该报文所属的VLAN编号,取值范围为 0~4095,一般0和4095保留(中兴设备Vid=0表示priority-tagged帧)。

在交换网络环境中,以太网帧有两种格式:有些帧未附加四字节标签,称为未标记帧(ungtagged frame),有些帧附加四字节标签,称为带标记帧(tagged frame)。

在基于端口划分的Vlan中,每个802.1Q端口都会分配一个默认的Vlan ID,称为PVID(Port Vlan ID)或端口默认Vlan ID(default Vid),CISCO称之为native Vlan。端口接收到的所有untagged帧都认为属于端口默认Vlan ID,并在端口默认Vlan ID内转发。

注意,插入或剥除Vlan标签时均会对数据帧重新计算CRC。

VLAN链路与端口

* VLAN链路类型

Vlan内的链路可分为:

接入链路(Access Link,或称访问链路):将没有也无法识别Vlan标签的设备(如用户主机)连接到配置Vlan的交换机端口。它只能传送不带标签(untagged)的以太网帧,且只与一个Vlan关联。

汇聚链路(Trunk Link,或称干道链路、中继链路) :连接两个能够识别Vlan标签的设备(如交换机),可传输发往多个Vlan的带标签(tagged)帧,可与多个Vlan相关联。

混合链路(Hybrid Link):既可传送不带标签的帧,也可传送带标签的帧。但对于一个特定Vlan,传送的所有帧必须类型相同,即对于一个Vlan,传送的帧要么不带标签,要么携带相同标签。

显示三种链路的区别:

Vlan链路类型

规划企业级网络时,很有可能会遇到隶属同一部门的用户分散在同一座建筑中不同楼层的情况,此时可能需要考虑如何跨越多台交换机设置Vlan。如在下图所示网络中,通过汇聚链路将不同楼层的四台主机设置为同一Vlan。

汇聚链路

如图所示,PC1发送的数据帧从SW1经过汇聚链路到达SW2时,帧内附加了表示属于红色Vlan的标签。SW2收到数据帧后,检查Vlan标签发现该帧属于红色Vlan,故剥除标签后根据需要(单播、广播或组播)将复原的数据帧转发给其他属于红色Vlan的端口。

若不使用汇聚链路,则需在两台交换机上各设一个红、蓝Vlan专用接口并用网线互联(接入链路)。但建筑楼层间的纵向布线比较麻烦,一般不能由基层管理人员随意进行。而且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口越多,端口利用率低,也限制网络的扩展。

汇聚链路承载多个Vlan的数据,负载较重,故汇聚链路必须支持100Mbps以上的传输速度。

默认情况下,汇聚链路会转发交换机上所有Vlan的数据,亦即汇聚链路同时属于交换机上所有的Vlan。实际应用中可能并不需要转发所有Vlan数据,因此为减轻交换机负载并减少带宽浪费,用户可设定限制能经由汇聚链路互联的Vlan。

VLAN端口类型

根据对Vlan帧的识别情况,交换机端口的类型(模式)分为Access端口、Trunk端口及Hybrid端口。

Access端口:交换机上连接用户主机的端口,只能连接接入链路。Access端口只属于一个Vlan,且仅向该Vlan转发数据帧。该Vlan的Vid = 端口PVid,故Vlan内所有端口都处于untagged状态。Access端口在从主机接收帧时,给帧加上Tag标签;在向主机发送帧时,将帧中的Tag标签剥掉。

Trunk端口:交换机上与其他交换机或路由器连接的端口,只能连接汇聚链路。Trunk端口允许多个Vlan的带标签帧通过,在收发帧时保留Tag标签。在它所属的这些Vlan中,对于Vid = 端口PVid的Vlan,它处于Untagged port状态;对于Vid ≠ 端口PVid的Vlan,它处于Tagged port状态。

Hybrid端口:交换机上既可连接用户主机又可连接其他交换机的端口,它既可连接接入链路又可连接汇聚链路。Hybrid 端口允许多个Vlan的帧通过,并可在出端口方向将某些Vlan帧的Tag标签剥掉。

注意,Access、Trunk和Hybrid端口是厂家对某种端口的称谓,并非IEEE802.1Q协议标准定义。

Access端口只属于一个Vlan,PVid就是其所在Vlan,故不用设置;Trunk和Hybrid端口属于多个Vlan,故需要设置PVid(缺省为1)。若设置端口PVid,则当端口收到不带Vlan Tag的数据帧时,对该帧加上Tag标记(Vid设置为端口所属的默认Vlan编号)并转发到属于PVid的端口;当端口发送Vlan Tag的数据帧时,若收帧的Vlan Tag和端口PVid相同,剥除Vlan Tag后再发送该帧。

Hybrid端口与Trunk端口在接收数据时处理方法相同,区别在于发送数据时:Hybrid端口允许多个Vlan的数据帧发送时不带标签,而Trunk端口只允许默认Vlan的数据帧发送时不带标签。在同一交换机上Hybrid端口和Trunk端口不能并存,实际使用中可用Hybrid代替Trunk。

本Hybrid端口的PVid和相连的对端交换机Hybrid端口的PVid必须一致。

由于端口类型不同,交换机对帧的处理过程也不同。下表根据不同的端口类型分别介绍。

表2 不同端口类型的Vlan帧处理方式

表2 不同端口类型的Vlan帧处理方式

VLAN端口状态

交换机端口可配置为属于某个或某几个Vlan。端口状态指其在某个Vlan中的状态,该状态决定端口接收到tagged或untagged帧时对该帧的处理方式。针对每个Vlan,端口有两种状态,即Tagged port和Untagged port。同一端口可根据不同Vlan ID设置Tagged或Untagged。

当为该端口配置其所属的Vlan时,若该Vlan的Vid = 端口PVid时,则端口在此Vlan中处于Untagged port状态;若Vid ≠ 端口PVid,则端口在此Vlan中处于Tagged port状态。

PVid只与报文的入口方向有关,对于进入交换机的无标签帧会打上进入端口的PVid标签;交换机内每个数据帧都带标签。Tagged/Untagged只与帧的出口方向有关,对于出端口为Untagged port的,转发帧时要剥除帧中的标签,否则保留标签。

VLAN划分方式

接入链路可事先设定,称为“静态Vlan”;也可根据所连主机而动态设定,称为“动态Vlan”。

* 静态VLAN

静态Vlan又称基于端口的Vlan (Port Based Vlan),即明确指定各端口属于哪个Vlan,如下图所示。

基于端口划分Vlan

根据端口划分Vlan因其简单而最为常用。但由于需要逐个端口地指定Vlan,因此当网络中主机数目较多时,操作就变得非常烦杂。并且,主机每次变更所连端口时,必须同时更改该端口所属Vlan的设定——这显然不适合那些需要频繁改变拓扑结构的网络。

* 动态VLAN

动态Vlan主要有:

基于MAC地址的Vlan (MAC Based Vlan)

基于子网的Vlan (Subnet Based Vlan)

基于用户的Vlan(User Based Vlan)

……

其差异主要在于根据OSI参照模型哪一层的信息决定端口所属的Vlan。决定端口所属Vlan时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。

网络设备厂商可能使用私有协议实现基于子网和基于用户的Vlan,因此不同厂商的设备间互联时可能出现兼容性问题。

* 基于MAC地址的VLAN

基于MAC地址的Vlan,就是通过查询并记录端口所连主机网卡的MAC地址来决定端口所属Vlan。假定MAC-A地址被交换机设定为属于Vlan10,则不论MAC-A地址的主机连在交换机哪个端口,该端口都会被划分到Vlan10内,如下图所示。

基于MAC地址划分Vlan

基于MAC地址划分Vlan,在初始设定时必须调查所连接的所有主机MAC地址并加以记录,工作量很大。而且这种划分方法会降低交换机执行效率,因为交换机每个端口都可能存在很多个Vlan组的成员,这样就无法限制广播包。此外,若主机(如笔记本电脑)经常更换网卡,则不得不经常更改Vlan设定。

* 基于子网的VLAN

基于子网的Vlan,就是通过所连主机的IP地址来决定端口所属Vlan。同一子网的所有数据帧属于同一Vlan,从而将同一子网内的用户划分在一个Vlan内(与路由器相似)。即使主机MAC地址改变,只要其IP地址不变,就仍可加入原先设定的Vlan,如下图所示。

基于子网划分Vlan

基于IP子网划分Vlan可按传输协议划分网段,有利于针对具体应用的服务来组织用户。再者,用户可在网络内部自由移动而不用重新配置主机,尤其是使用TCP/IP的用户。

这种方法的缺点是效率,因为检查每个数据包的网络层地址比较费时。同时由于一个端口也可能存在多个Vlan的成员,对广播报文也无法有效抑制。


相关内容