首页 > 动手实验室 > Cisco交换机Trunk详解
2019
09-20

Cisco交换机Trunk详解

一、Trunk概述

Cisco交换机Trunk详解 - 第1张  | 鹿鸣天涯

  • 当一条链路,需要承载多VLAN信息的时候,需使用trunk来实现
  • Trunk两端的交换机需采用相同的干道协议
  • 一般见于交换机之间或交换机与路由器、服务器之间

二、封装协议

Cisco交换机Trunk详解 - 第2张  | 鹿鸣天涯

1.baby giant frame大于标准的MTU1500字节,但是小于2000字节

对于采用ISL封装的,MTU=1548 (下文有解释)

对于Dot1Q MTU=1522

2.Vlan范围和映射

ISL 支持的vlan编号是1-1005(默认允许正常的),802.1q是1-4094(默认允许所有正常和扩展的)

所以当穿过802.1q和ISL的干道的时候就需要映射。

(1) 单台交换机上最多允许8个802.1q到ISL vlan的映射

(2) 只能映射到ethernet的vlan

(3) 该被映射的ethernet vlan将被阻塞

(4) 映射仅在本地有效

3.链路聚集模式

  • trunk  永久链路聚集模式,强制trunk,发送DTP帧
  • Nonegotiate 永久链路聚集模式,必须手动将邻居配为干道口,不发送DTP帧。一般用于对端设备不支持DTP的情况
  • Desirable 主动尝试将链路成为干道 (默认模式),发送DTP帧,如果邻接接口为trunk、desirable、或AUTO,那么此接口成为Trunk。
  • Auto 接口愿意成为trunk,如果邻接接口被设置为trunk或desirable,那么接口就成为trunk
  • Access  永久的nontrunking模式,并且与对端接口协商,使其成为nontrunking链路

Cisco交换机Trunk详解 - 第3张  | 鹿鸣天涯

三、ISL

Cisco交换机Trunk详解 - 第4张  | 鹿鸣天涯

  • CISCO私有协议
  • 支持PVST
  • 在原始的数据帧基础上封装上ISL头及新的FCS
  • 没有修改原始的数据帧,因此处理效率比802.1Q高
  • VLAN字段,15个比特目前用了10个,那么最多支持2的10次方=1024个VLAN
  • “原始以太网帧”最大是1518个字节,1500的IP MTU,加上源目的MAC地址共12,类型字段2个, CRC4,再加上30字节的ISL封装,就是1548字节了

上图中几个字段(ISL头)的描述如下:

  • DA  40bit的组播地址用于标示这个FRAME是ISL的
  • TYPE  标示这个帧是什么类型的,如以太、令牌环等
  • SA  发送帧的原交换机MAC
  • AAAA03    SNAP(固定值)
  • VLAN  15个比特目前用了10个,那么最多支持2的10次方=1024 VLAN
  • INDEX  这个帧的对端交换机来源端口

所以ISL帧最大1548bytes(1518+26+4)

四、Dot1q

1.帧格式

Cisco交换机Trunk详解 - 第5张  | 鹿鸣天涯

802.1Q Tag包含4个字段,其含义如下:

  • Type 长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
  • PRI Priority,长度为3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。用于当交换机阻塞时,优先发送优先级高的数据包。
  • CFI Canonical Format Indicator,长度为1比特,表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。
  • VID  VLAN ID,长度为12比特,表示该帧所属的VLAN。在VRP中,可配置的VLAN ID取值范围为1~4094。

2.优缺点

缺点是破坏了原始以太帧以及重新计算FCS,ISL是直接封装头和尾。DOT1q公用,ISL私有802.1Q支持4096个VLAN   最大帧:1518+4=1522

3.Native Vlan

在802.1q的native vlan 是不打标签的,使用Dot1q的交换机把所有未被标记的frame转发到native vlan 中,而ISL会对所有的数据帧,包括native vlan 进行封装,因此如果收到没有封装的数据帧它会丢弃(ISL没有native VLAN的概念)。

  • Native VLAN所属的帧在经过trunk时不打标签
  • Native VLAN在Trunk两端必须匹配,否则会出现VLAN流量互串
  • 默认的native vlan是vlan 1
  • 建议将一个生僻的VLAN配置为Native vlan

Cisco交换机Trunk详解 - 第6张  | 鹿鸣天涯

我们看上面这个图,两台交换机trunk两端native vlan不一样,会有什么问题?首先两端的vlan2通信肯定是没有问题的,但是vlan3 和vlan4通信就有问题了,左边vlan3的用户发出来的数据帧从左交换机出去上trunk,是不打标签的,但是这些数据帧到了右交换机,它会认为这些数据帧是属于vlan4的,这就出现问题了。

相关配置:

Switch(config-if)# switchport trunk native vlan ?

在trunk上设置native vlan

Switch(config)# vlan dot1q tag native

上述命令将对native vlan也打标签

4.Vlan范围

Cisco交换机Trunk详解 - 第7张  | 鹿鸣天涯

五、DTP

  • Trunk可以手工静态配置或者通过DTP进行协商
  • DTP使得交换机之间能够进行trunk协商
    Cisco交换机Trunk详解 - 第8张  | 鹿鸣天涯

六、Trunk配置

Switch(config-if)# switchport mode access

将接口设置为access模式

Switch(config-if)# switchport mode encapsulation {dot1q | ISL}

如果接口为trunk,设置干道协议类型

Switch(config-if)# switchport mode dynamic {auto | desirable}

将接口设置为DTP动态协商,可选auto或desirable

Switch(config-if)# switchport nonegotiate

将接口设置为nonegotiate,不发送DTP帧,如果配置为非协商,那么就必须手工配置接口模式,为access或trunk

Cisco交换机Trunk详解 - 第9张  | 鹿鸣天涯

SW1(config)# interface fast0/23

SW1(config-if)# switchport trunk encapsulation dot1q

SW1(config-if)# switchport mode trunk

SW1(config-if)# switchport native vlan 1

SW1(config-if)# switchport nonegotiate

SW1(config-if)# switchport trunk allowed vlan ?

WORD   VLAN IDs of the allowed VLANs when this port is in trunking mode

add     add VLANs to the current list

all     all VLANs

except   all VLANs except the following

none     no VLANs

remove   remove VLANs from the current list

上图中,两端PC都属于vlan10d的话,如果SW1的fa0/23口将vlan10remove掉,那么PC肯定就无法通信了。

七、MTU问题

MTU就是最大传输单元,不同的系统对于MTU的设定和理解是不同的。

CISCO IOS上,interface x接口模式下:

  • 》MTU 指的是二层的MTU,这是接口MTU,指的是不包含二层帧头的、Payload的MTU,这个MTU值一般是不能手工修改的,默认是1500字节。如此一来CISCO路由器支持的二层数据帧最大值就是1500的payload加上二层帧头及二层FCS:目的mac6字节+源mac6字节+类型字段2字节+FCS4字节,所以总的就是1518字节。
  • 》Ip mtu  指的是三层的MTU,这个值可以手工修改,但是最大值必须小于接口的二层MTU值也就是1500。这个MTU指的是三层IP包的总大小,如果接口发出的包大于这个接口的ip mtu,那么这个IP包将被分片

Cisco交换机Trunk详解 - 第10张  | 鹿鸣天涯

做个测试:上图中,R1的fa0/0口 ip mtu为1500,

我们去ping 1.1.1.2 repeat 1 size 1500,我们会发现R1直接将一个ICMP包发出去了,没有分片。

从报文中我们可以得出,这个IP包的大小为1500字节。

其中IP报头20字节,ICMP报头8字节,ICMP data荷载 1472字节,刚好1500字节。因此在CISCO IOS设备上,ping后面跟着的size指的就是发出去的IP包整个的大小。而在windows PC 的cmd下,ping后跟的包大小就是ICMP data大小,ping –l 1472,产生的包就是1500字节

还是上面的例子,如果我们在R1上,ping 1.1.1.2 repeat 1 size 1501,这个时候,R1由于产生的这个IP包大于mtu 1500,因此会被分片,然后在R2上,这两个分片被重组。

最后编辑:
作者:jacky
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。