对于一台二层交换机来说,整机就是一个广播域、一个LAN。这意味着,只要连接到这个广播域的PC配置在一个IP子网内,即可进行互相访问,而且更重要的一点是,处于同一个广播域内的某个用户,发送一个广播数据帧,意味着在这个广播域内的所有用户都会收到这个数据帧,并且耗费资源来处理(即使她它可能并不需要这个数据帧)。当这个广播域变得特别大、用户数量变得特别多时,网络就非常有可能被大量的广播消耗掉大量资源。
另一方面,实际的网络中经常存在这样的需求:连接在同一个交换机上的用户有可能是不同的业务部门,我希望对他们进行隔离,或者以独立的网络单元进行管理。
基于上述需求,引入VLAN的概念,所谓VLAN,翻译为Virtual LAN,实际上是一个虚拟的、逻辑的LAN,通过VLAN技术,我们可以在交换机上,根据接口等信息进行LAN的划定。例如:
上图中,我们基于设备接口进行VLAN的划分。将接口1、2划分到了VLAN10,将接口23、24划分到了VLAN20。这样一来,接口1、2所连接的PC就加入了VLAN10,处于同一个LAN、同一个广播域内,那么这些PC只要配置同一个网段的IP地址,就能够直接进行互访了。而接口23、24处于另一个VLAN20,另一个LAN、另一个广播域。属于VLAN20的PC之间能够直接进行互访。但是,不同的VLAN之间,用户是被隔离的(除非借助路由设备),当然,一个VLAN内的广播数据帧并不会被泛洪到另一个VLAN来,因为他们处于不同的广播域。
有了VLAN技术,我们的网络设计将更加灵活、更加可控。VLAN是一个虚拟的LAN,不再受设备的限制。我们可以根据实际的业务环境需要,灵活的进行VLAN的规划。而VLAN更可以跨交换机,因此VLAN的成员,也就是业务PC所处的位置就非常灵活了。例如上图所示,你可能希望每个部门单独划分到一个LAN中,部分之间互相隔离,而一个部门的员工又往往未必在同一楼层,可能分散在不同的楼层,那么有了VLAN技术,完全可以把分散在不同楼层的业务PC划分入一个VLAN。
下面做一个小结:
一个VLAN中所有设备都是在同一广播域内,不同的VLAN为不同的广播域;
VLAN之间互相隔离,广播不能跨越VLAN传播,因此不同VLAN之间的设备一般无法互访,不同VLAN间需通过三层设备实现相互通信;
一个VLAN一般为一个逻辑子网,由被配置为此VLAN成员的设备组成;
VLAN中成员多基于交换机的接口分配,划分VLAN就是对交换机的接口划分;
VLAN工作于OSI参考模型的第二层;
VLAN是二层交换机的一个非常根本的工作机制。
前面我们已经了解了VLAN的概念。我们可以借助VLAN技术,在一台交换机上创建多个VLAN以便对应不同的业务部门,然后基于交换机的接口,将不同的接口划分给不同的VLAN。
如果我分别在两台交换机上部署了VLAN,并且做了统一性的VLAN规划,这时两台交换机对接的时候就需要小心。因为这两台交换机之间互联的链路,需要承载多个VLAN的数据,那么如果某个特定VLAN的数据从一台交换机发送出来,经过交换机之间的链路到达另一台交换机,后者如何判定,这个数据到底应该放入哪一个VLAN呢?
这里我们就需要一种“标记”手段。在将数据送出这个互联接口前,给数据做上相应的标记(tag),对端交换机在收到这个数据之后,就能够根据前者对数据所做的标记来识别数据究竟是属于哪一个VLAN的。这时候,我们称两台交换机之间的互联链路为一段干道链路,而链路两端的接口称为Trunk接口。
上面提到的“标记”手段,我们成为干道封装协议,一个众所周知的公有协议是802.1q,或者叫Dot1Q,由于是公有协议,因此几乎所有的交换机厂商都能支持。Dot1q针对数据帧的处理方式很简单,就是在原始的以太网数据帧中插入一个dot1q的字段,同时重新做CRC校验。在插入的Dot1q字段中,就有VLANID字段用来指示这个数据帧所属的VLAN。
下面做一个小结:
当一条链路,需要承载多VLAN信息的时候,需使用trunk来实现
Trunk两端的交换机需采用相同的干道协议
Trunk一般见于交换机之间或交换机与路由器、服务器之间
1.以太网交换机的端口分类
Access接口常用于连接PC、服务器或其他终端,或路由器等设备。
Access接口只能加入一个VLAN,一旦加入特定VLAN后,该接口所连接的设备也就加入了该VLAN。
一般用于交换机之间连接的端口,trunk端口可以加入多个VLAN,可以接收和发送多个VLAN的报文。
可以用于交换机之间连接,也可以用于接用户的计算机,hybrid端口可以属于多个VLAN,可以接收和发送多个VLAN的报文。可根据需求灵活的设定vlan是否打标签。
2.Access端口收到帧
如果该帧不带tag,则接收帧并打上端口的pvid;
如果该帧携带tag,则当vlanID与缺省vlanID相同时,接收该报文,否则丢弃
3.Access端口发送帧
剥离802.1Q tag header,发出的帧为普通以太网帧
4.Trunk端口收到帧
若数据帧不带tag,打上接口pvid,若pvid在允许通过的vlanID列表里,则接收该报文。若pvid不在允许通过的vlanID列表里,则丢弃该报文。
5.Trunk端口收到帧
若数据帧带tag,且vlanID在接口允许通过的vlanID列表里,则接收该报文。否则丢弃该报文。
6.Trunk端口发送帧
若vlanID与接口pvid相同,且该vlan在allow-pass vlan列表中,则去掉Tag,发送数据帧。
若vlanID与接口pvid不同,且该vlan在allow-pass vlan列表中,则保持原有Tag,发送该带tag的数据帧。
7.hybrid端口收到帧
若数据帧不带tag,打上接口pvid,若pvid在允许通过的vlanID列表里,则接收该报文。若pvid不在允许通过的vlanID列表里,则丢弃该报文。
若数据帧带tag,且vlanID在接口允许通过的vlanID列表里,则接收该报文。否则丢弃该报文。
8.Hybrid端口发送帧
当vlanID是该接口允许通过的vlanID时,发送该帧。可以通过命令设置发送时是否携带Tag。