现代机构的局域网常常是配置为等级结构的,每个工作组(部门)有自己的局域网,经过一个交换机等级结构与其他工作组的交换局域网互联,但是局域网存在如下的缺点:
1. 缺乏流量隔离
尽管等级结构把组流量局域化到一个单一交换机中,但广播流量(例如携带ARP和DHCP报文或那些目的地还没有被自学习交换机学习到的帧)仍然必须跨越整个机构网络。限制这些广播流量的范围将改善局域网的性能。更重要的是为了安全/隐私的目的也会希望限制局域网广播流量。
2. 交换机的无效使用
如果机构有10个组,则要求有10个第一级交换机。如果每个组都比较小,比如少10个人,则单台96端口的交换机将足以容纳每个人,但这台单一的交换机将不能提供流量隔离。
3.管理用户
如果一个雇员在不同组间移动,必须改变物理布线,以将该雇员连接到不同的交换机上。
为解决上述问题,虚拟局域网(Virtula Local Network, VLAN)出现。顾名思义,支持VLAN的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。在一个VLAN的主机彼此通信,仿佛它们(并且没有其他主机)与交换机连接。在一个基于端口的VLAN中,交换机的端口(接口)由网络管理员划分为组。每个组构成一个VLAN,在每个VLAN中的端口形成一个广播域(即来自一个端口的广播流量仅能到达该组中的其他端口)。
上图显示了具有16个端口的单一交换机。端口 2 ~8属于电气工程系(EE) VLAN,而端口 9 ~ 15属于计算机科学系(CS)VLAN (端口 1和16未分配)。这个VLAN解决了上面提到的所有困难,即EE VLAN帧和CS VLAN帧彼此隔离,两台交换机可由一台交换机替代,并且在交换机端口 8的用户加入计算机科学系时,网络操作员只需重新配置VLAN软件,使得端口 8与CS VLAN相关联即可。即网络管理员使用交换机管理软件声明一个端口属于某个给定的VLAN(其中未声明的端口属于一个默认的VLAN),在交换机中维护一张端口到VLAN的映射表;交换机软件仅在属于相同VLAN的端口之间交付帧。
加入VLAN之后又会带来新的问题:属于不同VLAN之间的流量怎么互通呢,解决这个问题的一种方式是将VLAN交换机的一个端口与一台外部的路由器相连,并且将该端口配置为属于EE VLAN和CS VLAN,这样的话,即使电器工程系和计算机科学系共享相同的物理交换机,其逻辑配置看起来也仿佛是电子工程系和计算机科学系具有分离的经路由器连接的交换机。从电子工程系发往计算机科学系的数据报将首先跨越EE VLAN到达路由器,然后由该路由器转发跨越CSVLAN到达CS主机。
现在考虑另一个问题,某些电子工程和计算机科学教职员位于一座建筑物中,他们需要网络接入,并且希望成为他们系VLAN的一部分。
如上图所示,出现了第二台8端口交换机,其中交换机端口已经根据需要定义为属于EE VLAN或CS VLAN。那么这两台交换机应该如何互联呢?
方法一:一种容易的解决方案是在每台交换机上定义一个属于CS VLAN的端口(对EE VLAN也类似处理),并且如图a所示将两个端口彼此互联起来。但是这种解决方案不具有扩展性,因为在每台交换机N个VLAN将要求N个端口直接互联这两台交换机。
方法二:一种更具可扩展性互联VLAN交换机的方法称为VLAN干线连接(VLAN trunking),在图b所示的VLAN干线方法中,每台交换机上的一个特殊端口(左侧交换机上的端口16,右侧交换机上的端口 1)被配置为干线端口,以互联这两台VLAN交换机。该干线端口属于所有VLAN,发送到任何VLAN的帧经过干线链路转发到其他交换机。
方法二又会引起另外的问题:一个交换机怎么知道到达干线端口的帧属于某个特定的VLAN呢?IEEE定义了一种扩展的以太网帧格式--802.1Q,用于跨越VLAN干线的帧。如下图所示,802. 1Q帧由标准以太网帧与加进首部的4字节VLAN标签(VLAN tag)组成,而VLAN标签承载着该帧所属的VLAN标识符。VLAN标签由在VLAN干线发送侧的交换机加进帧中,解析后并由在VLAN干线接收侧的交换机删除。VLAN标签自身由一个2字节的标签协议标识符(Tag Protocol Identifier, TPID)字段(具有固定的十六进制值81-00)。一个2字节的标签控制信息字段(包含一个12比特的VLAN标识符字段)和一个3比特优先权字段(具有类似于IP数据报TOS字段的目的)组成。
参考:
计算机网络-自顶向下第七版