VLAN技术2016.10.411.VLAN的概念1.1什么是VLANVLAN(VirtualLocalAreaNetwork)又称虚拟局域网,是指在交换局域网的基础上,采用网络管理软件构建的可跨越不同网段、不同网络的端到端的逻辑网络。一个VLAN组成一个逻辑子网,即一个逻辑广播域,它可以覆盖多个网络设备,允许处于不同地理位置的网络用户加入到一个逻辑子网中。VLAN工作在OSI参考模型的第2层和第3层,VLAN之间的通信是通过第3层的路由器来完成的。广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说,并不仅仅是广播帧,多播帧(MulticastFrame)和目标不明的单播帧(UnknownUnicastFrame)也能在同一个广播域中畅行无阻。本来,二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。那么,为什么需要分割广播域呢?如果仅有一个广播域,有可能会影响到网络整体的传输性能。具体原因,请参看附图加深理解。图1-1广播帧的传播过程图1-1中,是一个由5台二层交换机(交换机1~5)连接了大量客户机构成的网络。假设这时,计算机A需要与计算机B通信。在基于以太网的通信中,必须在数据帧中指定目标MAC地址才能正常通信,因此计算机A必须先广播“ARP请求(ARPRequest)信息”,来尝试获取计算机B的MAC地址。交换机1收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是泛洪(Flooding)。接着,交换机2收到广播帧后也会泛洪。交换机3、4、5也还会泛洪。最终ARP请求会被转发到网络中的所有客户机上。这个ARP请求原本是为了获得计算机B的MAC地址而发出的,只要计算机B能收到即可。可是事实上,ARP请求传遍整个网络,所有的计算机都收到了它。一方面广播信息消耗了网络整体的带宽,另一方面,收到广播信息的计算机还要消耗一部分CPU时间来对它进行处理,造成了网络带宽和CPU运算能力的无谓消耗。AB2在网络中,实际上广播帧会非常频繁地出现。利用TCP/IP协议栈通信时,除了ARP外,还有可能有DHCP、RIP等很多其他类型的广播信息。ARP广播,是在需要与其他主机通信时发出的。当客户机请求DHCP服务器分配IP地址时,就必须发出DHCP的广播。而使用RIP作为路由协议时,每隔30秒路由器都会对邻近的其他路由器广播一次路由信息。除了TCP/IP以外,NetBEUI、IPX和AppleTalk等协议也经常需要用到广播。例如在Windows下双击打开“网络计算机”时就会发出广播(多播)信息。下面是一些常见的广播通信:●ARP请求:建立IP地址和MAC地址的映射关系。●RIP:选路信息协议(RoutingInfromationProtocol)。●DHCP:用于自动设定IP地址的协议。●NetBEUI:Windows下使用的网络协议。●IPX:NovellNetware使用的网络协议。●AppleTalk:苹果公司的Macintosh计算机使用的网络协议。1.2VLAN的实现机制交换机使用VLAN分割广播域,首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口。如图1-2,计算机A发送广播信息后,会被转发给端口2、3、4。图1-2交换机转发广播报文如图1-3,如果在交换机上生成红、蓝两个VLAN;同时设置端口1、2属于红色VLAN、端口3、4属于蓝色VLAN。再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口——也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口。同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口。3图1-3交换机广播域VLAN通过限制广播帧转发的范围分割了广播域。图1-3中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用“VLANID”来区分的。如图1-4,通过VLAN配置,一台交换机在逻辑上分割成了数台交换机。在一台交换机上生成红、蓝两个VLAN,也可以看作是将一台交换机换做一红一蓝两台虚拟的交换机。图1-4虚拟交换机在红、蓝两个VLAN之外生成新的VLAN时,可以想象成又添加了新的交换机。VLAN生成的逻辑上的交换机是互不相通的。因此,在交换机上设置VLAN后,VLAN间是无法通信的。VLAN划分了广播域,通常广播域之间来往的数据包都是由路由器中继的。因此,VLAN4间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。1.3VLAN的划分方法VLAN的划分可以是事先固定的、也可以是根据所连的计算机而动态改变设定。前者被称为“静态VLAN”、后者称为“动态VLAN”。1.3.1静态VLAN静态VLAN又被称为基于端口的VLAN(PortBasedVLAN),即明确指定各端口属于哪个VLAN的设定方法。图1-5基于端口的VLAN由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得烦杂无比。并且,客户机每次变更所连端口,都必须同时更改该端口所属VLAN的设定——这显然不适合那些需要频繁改变拓补结构的网络。1.3.2动态VLAN动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN,可以避免上述的更改设定之类的操作。动态VLAN可以大致分为3类:●基于MAC地址的VLAN(MACBasedVLAN)●基于子网的VLAN(SubnetBasedVLAN)●基于用户的VLAN(UserBasedVLAN)其间的差异,主要在于根据OSI参照模型哪一层的信息决定端口所属的VLAN。如图1-6,基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个MAC地址“A”被交换机设定为属于VLAN“10”,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN10中去。计算机连在端口1时,端口1属于VLAN10;而计算机连在端口2时,则是端口2属于VLAN10。由于是基于MAC地址决定所属VLAN,因此这是一种在OSI的第二层设定访问链接的办法。但是,基于MAC地址的VLAN,在设定时必须调查所连接的所有计算机的MAC地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。5图1-6基于MAC地址的VLAN如图1-7,基于子网的VLAN,则是通过所连计算机的IP地址,来决定端口所属VLAN。不同于基于MAC地址的VLAN,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN。图1-7基于子网的VLAN因此,与基于MAC地址的VLAN相比,能够更为简便地改变网络结构。IP地址是OSI参照模型中第三层的信息,所以基于子网的VLAN是一种在OSI的第三层设定访问链接的方法。一般路由器与三层交换机都使用基于子网的方法划分VLAN。基于用户的VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。总的来说,决定端口所属VLAN时利用的信息在OSI中的层面越高,就越适于构建灵活多6变的网络。综上所述,VLAN的划分有静态VLAN和动态VLAN两种,其中动态VLAN又可以继续细分成几个小类。其中基于子网的VLAN和基于用户的VLAN有可能是网络设备厂商使用独有的协议实现的,不同厂商的设备之间互联有可能出现兼容性问题;因此在选择交换机时,一定要注意事先确认。下表总结了静态VLAN和动态VLAN的相关信息。种类解说静态VLAN(基于端口的VLAN)将交换机的各端口固定指派给VLAN动态VLAN基于MAC地址的VLAN根据各端口所连计算机的MAC地址设定基于子网的VLAN根据各端口所连计算机的IP地址设定基于用户的VLAN根据端口所连计算机上登录用户设定就目前来说,对于VLAN的划分主要采取上述基于端口的VLAN和基于子网的VLAN两种,而基于MAC地址和基于用户的VLAN一般作为辅助性配置使用。2.VLAN帧结构在交换机的汇聚链接上,可以通过对数据帧附加VLAN信息,构建跨越多台交换机的VLAN。附加VLAN信息的方法,最具有代表性的是IEEE802.1Q。2.1IEEE802.1QIEEE802.1Q,俗称“DotOneQ”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。如图2-1,IEEE802.1Q所附加的VLAN识别信息,位于数据帧中“发送源MAC地址”与“类别域(TypeField)”之间。具体内容为2字节的TPID和2字节的TCI,共计4字节。在数据帧中添加了4字节的内容,CRC值自然也会有所变化。这时数据帧上的CRC是插入TPID、TCI后,对包括它们在内的整个数据帧重新计算后所得的值。基于IEEE802.1Q附加的VLAN信息,就像在传递物品时附加的标签。因此,它也被称作“标签型VLAN(TaggingVLAN)”。7UserpriorityCFIVLANID3bits1bits12bits图2-1IEEE802.1Q帧结构1.TPID(TagProtocolIdentifier,也就是EtherType)TPID是IEEE定义的新的类型,表明这是一个加了802.1Q标签的帧。TPID包含了一个固定的值0x8100。2.TCI(TagControlInformation)TCI包括用户优先级(UserPriority)、规范格式指示器(CanonicalFormatIndicator)和VLANID。①UserPriority:该字段为3-bit,用于定义用户优先级,总共有8个优先级别。IEEE802.1P为3比特的用户优先级位定义了操作。最高优先级为7,应用于关键性网络流量,如路由选择信息协议(RIP)和开放最短路径优先(OSPF)协议的路由表更新。优先级6和5主要用于延迟敏感(delay-sensitive)应用程序,如交互式视频和语音。优先级4到1主要用于受控负载(controlled-load)应用程序,如流式多媒体(streamingmultimedia)和关键性业务流量(business-criticaltraffic)-例如,SAP数据-以及“losseligible”流量。优先级0是缺省值,并在没有设置其它优先级值的情况下自动启用。②CFI:CFI值为0说明是规范格式,1为非规范格式。它被用在令牌环/源路由FDDI介质访问方法中来指示封装帧中所带地址的比特次序信息。③VID:该字段为12-bit,VLANID是对VLAN的识别字段,在标准802.1Q中常被使用。支持4096个VLAN的识别。在4096个可能的VID中,VID=0用于识别帧优先级。4095(FFF)作为预留值,所以VLAN配置的最大可能值为4094,有效的VLANID范围一般为1-4094。83.VLAN访问链接模式3.1VLAN的几个重要概念介绍PVID:PortVLANID,指端口的缺省VLANID。PVID主要有两个作用:第一对于接收到的Untag包则添加本端口的PVID再进行转发;第二是接收过滤作用,比如只接收等于PVID的VLANTAG包。VLANID:VLANTAG包的VLANID号,有效范围是1-4094,0和4095都为协议保留值,VLANID0表示不属于任何VLAN,但携带802.1Q的优先级标签,所以一般被称为Priority-onlyframe,其一般作为系统使用,用户不可使用和删除。1为系统默认VLAN,即NativeVLAN,2-1001是普通的vlan,1006-1024保留仅系统使用,用户不能查看和使用,1002-1005是支持fdd