二层设备虽然能够隔离冲突域,但是不能隔离广播域,为什么呢?因为如果一个接口发出广播报文,那么这个报文就会向除它之外的所有接口转发,主机数量少的时候还好说,如果这个二层设备连的主机数量比较多,那么这种无差别转发的行为就会大大消耗网络带宽,并且在安全方面也带来很多问题。为了避免这种情况,可以使用路由器,因为路由器的一个接口就是一个广播域,但是因为路由器成本太高且转发能力比较低,这种办法并不是最优解。基于这种情况,二层交换中出现了vlan技术。
什么是vlan呢?
vlan又叫做虚拟局域网,是将一个物理的网络在逻辑上划分为多个广播域的通信技术,就像是把一个网络通过二层设备变成了多个网络。主要的目的就是将广播报文限制在一个vlan内,一个vlan就是一个广播域,避免广播报文大量的转发,vlan内的主机可以互相通信,但是不同vlan间不能直接互通。那么vlan是怎样划分的呢?vlan的划分主要是根据使用需要进行,主要有三种方法,分别是基于接口的vlan划分,基于mac的vlan划分,以及基于IP子网的vlan划分。其中,基于接口划分vlan是最简单,最有效的vlan划分方法。
交换机是如何分辨不同vlan的报文呢?
tag标签。根据IEEE802.1q协议,在以太网数据帧的目的mac地址和源mac地址之后,协议类型字段之前加入4个字节的vlan标签(即tag)用于标识vlan信息。
原来的以太网数据帧格式
DMAC 6B |
SMAC 6B |
Length/Type 2B |
DATA 46-1500B |
FCS 4B |
VLAN数据帧格式
DMAC |
SMAC |
VLAN TAG 4B |
Length/Type |
DATA |
FCS |
VLAN TAG标签包含4个字段
TPID 2B |
PRI 3bit |
CFI 1bit |
VID 12bit |
TPID:tag protocol identifier ,标签协议标识符,表示数据帧类型,当其取值为0X8100时,表示IEEE802.1Q的vlan数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。各设备厂商也可自定义该字段的值,但是如果被修改为除0x8100的其他值时,对端设备也必须进行修改。
PRI:priority,表示数据帧的802.1p优先级,取值范围0-7,越大越优先。当网络阻塞时,交换机优先发送优先级高的数据帧。
CFI:canonical format indicator,标准格式指示位,表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。取0表示标准格式,在以太网中取0.
VID:vlan id.表示该数据帧所属vlan的编号,取值范围0-4095,0和4095为协议保留值,因此实际上我们可以有效取到1-4094.
交换机利用vlan标签中的vid来识别数据帧所属的vlan,广播帧只在同一vlan内转发,这就将广播域限制在一个vlan内。
在一个vlan交换网络中,以太网帧主要有两种存在形式:有标记帧(tagged帧)和无标记帧(untagged帧)
顾名思义,有标记帧就是加入了4字节vlan标签的帧,而无标记帧则是没有加vlan标签的帧。
在常用设备中,终端设备及傻瓜交换机,hub只能收发untagged帧,交换机、路由器和AC即能收发tagged帧,也能收发untagged帧,语音终端、AP等设备可以同时收发一个tagged帧和一个untagged帧。
为了提高处理效率,交换机内部处理的数据帧都是tagged帧。
现在,交换机内部处理的数据帧都带有了vlan标签,也就是我们之前所说的tag,但是现网中交换机连接的设备不止一台,有一些设备只会收发untagged帧,交换机如何才能与这些设备交互呢?这就需要接口能够识别untagged帧并且在收发时给帧添加或者剥离标签。同时,现网中属于同一个vlan的用户可能连接在不同的交换机上,且这些交换机之间交互的vlan有多个,这就需要交换机的接口能够识别和发送多个vlan的数据帧。
为了适应不同的连接和组网,华为定义了access接口,trunk接口,hybrid接口和qinq接口4种接口类型,以及接入链路、干道链路两种链路类型。
根据链路种需要承载的vl