在两个不同的交换机上各有着三个vlan,那么如果要实现交换机A的vlan2和交换机B的vlan2通信。
就要使用到trunk命令了。而trunk又分为两种:1.ISL(思科私有的协议)2.IEEE 802.1Q 公有的协议
而他们是如何实现vlan间在不同的交换机上传输的呢,其实它们是通过在“中继链路(交换机A和交换机B中间相连的那条线)”打标记tag的方式来实现的。
ISL和IEEE 802.1Q的打标记的方式是不一样的。
IEEE802.1Q打标记的方式:
在中继链路的数据帧中间源MAC地址后面插入一个4个字节的标记。
也就说会在”SA”的后面插入一个4个字节的Tag
而这个4个字节的Tag,是32位。4*8=32bit
但实际上真正的标记只用到了32位里面的12位用来标记VLANID,通过换算可以得出12bit可以标记的vlan有”4096”个。(212)
那因为valn本来是应该0到4095个,而第0个和第4095个是保留的。
所以可用的vlan实际上就只有1到4094个。如下图所示:
上图里面的VLANID就只有12bit。
那最后的priority是做为QOS里面的优先级使用的。
ISL(思科私有的工作协议)
因为在数据帧里面插入一个Tag从原理上来说实际上是破坏了数据帧的格式,那么在破坏数据帧格式的情况,CRC的帧效验序列按理来说是需要重新写入并效验的。
而ISL的打标方式则是:
首先在数据帧的头部封装一个26字节的ISL头,在尾部封装一个4个字节的CRC帧效验序列。一共是30个字节。
因为是30个字节比IEEE 802.1Q的字节数多,那么所以ISL的数据帧里面的数据就少了,这样的话传输起来就比较慢。
但它也有一个优点,那就是不破坏数据帧格式。
那么这30字节(240bit)里面,vlan号占了多少位呢,只占用了15bit,但是实际上确也只用到了10bit。
所以210=1024,如果使用ISL的方式来打标的话,只能对1024个vlan号来进行打标。
ISL和802.1Q的异同:
相同点:
都是显示标记,即帧被显示标记了vlan的信息
不同点:
IEEE 802.1Q 是公有的标记方式,ISL是Cisco私有的
ISL采用外部标记的方法,802.1Q采用内部标记的方法
ISL标记的长度为30个字节,802.1Q标记的长度为4个字节
ISL标记vlan号占用了10bit,802.1Q标记vlan号占用了12bit
那么中继链路的也有四种模式:
Switchport mode access打出这个命令就是为了防止PC机和交换机起trunk,PC机也可以发送DTP数据的。
所以要关闭trunk,故此才必须要用上这个命令。
看下图:
1.如果一边是ACCESS模式,而另一边无论是什么模式,这条trunk链路都不会起来。
2.而如一边是AUTO模式,而另一边也是AUTO模式,那么这条链路也是起不来trunk的,因为没有发送。
3.其他的任意组合都可以起trunk
4.Nonegotiate 是在两边都起trunk的情况下,因为已经建立了trunk,后面就不用再多发送DTP帧了,这样可增加链路带宽。
S1(config-if)#switchport mode trunk
S1(config-if)#switchport nonegotiate
记得两边都得配置相同的命令
S2(config-if)#switchport mode trunk
S2(config-if)#switchport nonegotiate
Trunk端口不属于任何vlan,所以如果是配置了trunk模式的端口在show vlan 下是看不到这个端口的。
VTP协议
当局域网内的交换机数量越来越多的情况下,而每一台交换机都有数十个vlan的情况下,如果手动一台一台的去配置,那就肯定不可能,那么就需要用到VTP的协议。
而VTP协议是CISCO私有的协议,只有思科的设备才有这个功能。
Vlan Trunk Protocol
目的是从一个控制点,维护整个企业网上vlan的添加、删除和重命名的工作。
一:vtp域:
相同域名,通过trunk相互连接的,一组交换机。
域名:随便起一个名字就可以了不用后面跟.com
创建VTP域:switch(config)#vtpdomain domain_name
Vtp有三种模式:
配置交换机的vtp模式:switch(config)#vtp mode server/client/transparent
服务器模式(server)
-提供vtp消息,包括vlanID的名字信息
-学习相同域名的vtp消息
-转发相同域名的vtp消息
-可以添加、删除和更改vlan
域名不相同是不能学,不能发,也不能转的。
客户机模式(client)
-请求vtp消息
1.交换机重启的时候会有请求
2.加入一个新的域的时候会有请求
3.当发现server那边有新的vlan的时候会发请求(是根据“配置版本修订号”来发现server是否有新的vlan产生的。)
-学习相同域名的vtp消息
-转发相同域名的vtp消息
-不可以添加、删除和更改vlan
透明模式(Transparent)
-不提供vtp消息
-不学习vtp消息
-转发vtp消息
可以添加、删除和更改vlan,只在本地有效。
Vtp通告:
【使用组播发送,地址为01-00-0c-cc-cc-cc
只通过中继端口传递,也就是说只能通过trunk端口来传送。
Vtp消息通过Vlan1 传送】
vtp消息分为两类:
一类是客户机的消息请求-获取vlan信息
1. 交换机重启后
2. Vtp域名变更后
3. 交换机接收到了配置修订号大的汇总消息
二类是服务器的通告响应-发送vlan信息
1. 汇总消息
-用于通知邻接的Catalyst交换机目前的vtp域名和配置修订编号(Configuration Revision);每隔300秒一次,或配置改变的时候发送消息。
2. 子集消息
-包含vlan的详细信息。
配置修订编号(Configuration Revision):只要改动一次交换机配置,它都会在原来的数值上加1
配置版本修订号可是使用命令来查看:
Switch#show vtpstatus 查看vtp的配置
Switch#show vlan brief
不管对端是什么模式,只要它的版本号比我大,我就会来同步vlan信息。
如果client端的配置版本修订号比server端的大,那么server也是会向client端来学习vlan信息的。
但是如果是在同样的配置修订版本号情况下,vlan的名称不一样,比如server端是12345的vlan,client端是12346的vlan。
它们是不会同步的。
但是最后当client端再次和server端同步的时候,之前client端上面的vlan6就会消失,而变的和server端一样,是12345的vlan。
Vtp的加密:
switch(config)#vtp password ilync
那如果在server端配置了vtp的密码,那么在client端也要配上相同的密码,client端才可以继续学习到server端的vlan信息,否则的话client端是学习不到server端的配置信息的。
For example:在server端配置了一个密码,然后又建立了一个vlan,那么client端在show vlan命令下是看不到的,也就是没有学习到,而如果client端也配置了这个相同的密码,再用show vlan去看,就可以看到,而client端就可以继续学了。
所以这个vtp的加密,就是为了防止非法的交换机来学习server端的vlan信息的。
Vtp的修剪:
Vtp的修剪是为了减少中继链路上的不必要的广播信息。
Switch(config)#vtp pruning
如果配置上了vtp的修剪,那么上图中的“vtp pruning Mode”后面就回事Enable
那最后还有一个条命令就是修改vtp的版本。
Switch(config)#vtp version 2