原文地址:交换trunk基础知识
作者:红茶三杯
作者:红茶三杯
一、Trunk概述
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/fAZBri.png)
- 当一条链路,需要承载多VLAN信息的时候,需使用trunk来实现
- Trunk两端的交换机需采用相同的干道协议
- 一般见于交换机之间或交换机与路由器、服务器之间
二、封装协议
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链路
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/nUvUNv.png)
三、ISL
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/BraaYv.png)
- 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.帧格式
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/mAjqQ3.png)
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
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/iA7F7b.png)
我们看上面这个图,两台交换机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范围
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/zE7RBb.png)
五、DTP
- Trunk可以手工静态配置或者通过DTP进行协商
- DTP使得交换机之间能够进行trunk协商
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/YfEjAv.png)
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/JjaQje.png)
六、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
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 ?
上图中,两端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包将被分片
![[转载]交换trunk基础知识 交换trunk基础知识](/wp-content/uploads/2018/7/u6Nbya.png)
做个测试:上图中,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上,这两个分片被重组。