文章目录
- 一、Trunk概述
- 二、封装协议
- 三、ISL
- 四、Dot1Q
- 五、DTP
- 六、Trunk配置
- 七、MTU问题
一、Trunk概述
- 当一条链路,需要承载多VLAN信息的时候,需要使用trunk来实现
- Trunk两端的交换机需要采用相同的干道协议
- 一般见于交换机之间或交换机与路由器、服务器之间
二、封装协议
ISL | 801.1Q |
Cisco私有 | 共有标准 |
采用封装的方式 | 采用tag的方式 |
在原始帧的基础上封装上新帧头及新的FCS | 在原始的帧头中插入tag字段,去掉原有FCS,重新计算FCS |
- baby giant frame 大于标准的MTU1500字节,但是小于2000字节
对于采用ISL封装的,MTU=1548(下文有解释)
对于Dot1Q,MTU=1522 - Vlan范围和映射
ISL支持的vlan编号是1~1005(默认允许正常的)
802.1q支持的vlan编号是1~4094(默认允许所有正常和扩展的)
所以当穿过802.1q和ISL的干道的时候就需要映射。
(1)单台交换机上最多允许8个802.1q到ISL vlan的映射
(2)只能映射到Ethernet的vlan
(3)该被映射的Ethernet vlan将被阻塞
(4)映射仅在本地有效 - 链路聚集模式
trunk 永久链路聚集模式,强制trunk,发送DTP帧
Nonegotiate 永久链路聚集模式,必须手动将邻居配为干道口,不发送DTP帧。一般用于对端设备不支持DTP的情况。
Desirable主动尝试将链路成为干道(默认模式),发送DTP帧,如果邻接接口为trunk、desirable、auto,那么此接口成为trunk。
Auto接口愿意成为trunk,如果邻接接口被设置为trunk或desirable,那么接口就成为trunk
Access永久的nontrunking模式,并且与对端接口协商,使其成为nontrunking链路
Dynamic Auto | Dynamic Desirable | Trunk | Access | |
Dynamic Auto | Access | Trunk | Trunk | Access |
Dynamic Desirable | Trunk | Trunk | Trunk | Access |
Trunk | Trunk | Trunk | Trunk | 不建议 |
Access | Access | Access | 不建议 | Access |
三、ISL
- Cisco私有协议
- 支持PVST
- 在原始的数据帧基础上封装上ISL头及新的FCS
- 没有修改原始的数据帧,因此处理效率比802.1Q高
- VLAN字段,15个比特目前用了10个,那么最多支持210=1024个VLAN
- “原始以太帧”最大是1518个字节,1500的ip MTU,加上源目的MAC地址共12,类型字段2个,CRC4个,再加上3字节的ISL封装,就是1548字节了
- 上图中几个字段(ISL)的描述如下
DA 40bit的组播地址用于标示这个FRAME是ISL的
TYPE 标示这个帧是什么类型的,如以太、令牌环等
SA 发送帧的原交换机MAC
AAAA03 SNAP(固定值)
VLAN 15个比特目前用了10个,那么最多支持210=1024 VLAN
INDEX 这个帧的对端交换机来源端口
所以ISL帧最大1548bytes(1518+26+4)
四、Dot1Q
- 帧格式
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。
- 优缺点
- 缺点是破环了原始以太网帧以及重新计算FCS,ISL是直接封装头和尾。
- Dot1Q公用,ISL私有
- 802.1Q支持4096个VLAN 最大帧:1518+4=1522
- 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两端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也打标签
- Vlan范围
VLAN的范围 | 作用 |
0,4095 | 保留,系统使用 |
1 | Cisco默认vlan |
2~1001 | For Ethernet VLANS |
1002~1005 | Cisco默认为FDDI及TokenRIng定义 |
1006~4094 | 只能为Ethernet使用,在一些特殊平台被保留使用 |
五、DTP
- Trunk可以手工静态配置或者通过DTP进行协商
- DTP使得交换机之间能够进行Trunk协商
Trunk | 永久链路聚集模式,强制trunk,发送DTP帧 |
Nonegotiate | 不发送DTP帧。一般用于对端设备不支持DTP的情况;需要搭配手工指定的trunk或access 模式命令 |
Desirable | 主动尝试将链路成为干道(默认模式)。发送DTP帧,如果邻接接口为trunk、desirable、Auto,那么此接口成为Trunk |
Auto | 接口有意愿成为trunk,但是不会主动发送DTP/如果邻接接口被设置为trunk或desirable,那么接口就成为trunk,会被动响应DTP协商数据帧 |
Access | 永久的nontrunking模式,并且与对端接口协商,使其成为nontrunking链路 |
Dynamic Auto | Dynamic Desirable | Trunk | Access | |
Dynamic Auto | Access | Trunk | Trunk | Access |
Dynamic Desirable | Trunk | Trunk | Trunk | Access |
Trunk | Trunk | Trunk | Trunk | 不建议 |
Access | Access | Access | 不建议 | Access |
六、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 ?
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都属于vlan10的话,如果SW1的Fa0/23口将vlan10 remove掉,那么PC肯定就无法通信了。
七、MTU问题
MTU就是最大传输单元,不同的系统对于MTU的设定和理解使不同的。Cisoc IOS善,interface x接口模式下:
- MTU指的使二层的MTU,这是接口MTU,值得是不包含二层帧头的、payload的MTU,这个MTU值一般是不能手工修改的,默认是1500字节。如此一来Cisco路由器支持的二层数据帧最大值就是1500的payload加上二层帧头及二层FCS:目的MAC 6字节+源MAC 6字节+类型字段2字节+FCS 4字节,所以总的就是1518字节。
- IP MTU值得是三层的MTU,这个值可以手工修改,但是最大值必须小于接口的二层MTU值也就是1500.这个MTU指的是三层IP包的总大小,如果接口发出的包大于这个接口的IP MTU,那么这个ip包将被分片
做个测试:上图中,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上,这两个分片被重组。