trunk链路上的协议
- ISL
ISL协议是思科的私有协议,是基于封装帧的,在要发送的帧前面加26个字节,后面加上4个字节,开销一共30个字节,里面含有vlan id等信息,这个协议不允许有未标记的流量流入trunk链路。 - 802.1q
这是IEEE的国际标准,需要在内部插入vlan id等信息,然后在最后重新计算FCS校验和,实现较复杂,允许有未标记的流量流入trunk链路。
实例分析
- 普通情况
1,2,4,5口是access口,3,6口是trunk口,trunk链路可以是ISL也可以是802.1q协议,我们以802.1q协议为例,以1口为例,1口是vlan2的口,pc流量进入1口,从3口流出,会给该流量打上标记,用此来标记它是vlan2的流量,然后经过trunk链路的传输最终流入6口,经过交换机内部处理,知道该流量是vlan2的,将打上的标记去掉还原到原来的帧,最终会选择vlan2的口转发,从4口流出。 - 复杂情况
中间是一个hub,hub是连接到trunk链路上的,假设pc流量流入1口,从2口流出,然后流入3口。首先声明一下ISL是不允许这种情况(有未标记流量流入trunk链路)存在的,只是在802.1q协议中存在,另外这种配置严重影响安全性等性能,所以这种拓扑很少见。1口处的pc流量流入1口经2口流出到中继链路上,本来中继链路上传输的流量都是有标记的,然而这里出现了未标记的流量,这里就用到了native vlan(本征vlan只存在于trunk链路上,是基于trunk口来配置的),未标记流量流入3口,经过内部处理这种未标记的流量到最后都会发给本征vlan。