赞
踩
传统以太网交换机在转发数据的时候(相邻两个结点之间),采用的是基于源MAC地址的学习方式,自动学习各个端口的连接的主机MAC地址形成并维护自己的转发表(mac地址表),然后依据此表进行以太网帧的转发。而所有端口之间都可以互相访问,并且转发的过程是自动的即网络管理人员无法控制端口之间的转发,例如不让主机A访问主机B。
这导致了过去的网络存在以下问题:
1)安全性能差。因为各个端口之间都可以互相访问。
2)网络效率低。用户可能收到不必要的广播报文,从而消耗网络的带宽和CPU的资源。
3)业务扩展能力差。交换机平等的对待每台主机的报文,无法实现有差别的服务,例如优先转发网络管理业务的以太网帧。
基于以上问题,主要是问题 2),因为传统的交换机总是对广播帧进行泛洪操作,其他所有PC都能收到这个广播帧。一个广播帧所能到达的整个范围即二层广播域即一个交换网络就是一个广播域。
如果广播域过大,广播帧占用的带宽也就越多即垃圾流量问题越严重,浪费网络资源。所以我们引入Vlan技术,就是为了将一个规模较大的广播域在逻辑上划分成若干个不同的,规模较小的广播域。每个逻辑网络内用户形成一个组(group),组内成员可以互相通信,组间不行。可以理解为 : 隔绝和限制广播域。
VLAN(Virtual Local Area Network)虚拟局域网技术。其中,LAN是一个转义词,用来专门指代一个广播域,而不再强调它是一个地理覆盖范围较小的局域网。当我们把一个规模较大的广播域,划分成10个规模较小的广播域时,可以描述为:把一个LAN划分成10个VLAN。
在逻辑上实现了组与组之间的隔离,不同Vlan之间不能互相在二层实现通信。如图:
而区分不同vlan则是看vlan ID标识,下面我们来看vlan的帧格式:
在以太网中添加的vlan标签的长度为32bits,添加在目的mac地址和源mac地址之后。
一, TPID(Tag Protocol ID)标签协议标识:16bits,固定取值:0x8100 即表示这是一个带有802.1Q标签的帧(有带Tag);否则表示该帧是一个传统以太网帧,不带Tag的帧。
二,TCI(Tag Control Information)标记控制信息,其中包含三个字段:
1)PRI(Priority),表示帧的优先级:3bits,即2^3=8有8个等级的优先级,值越大优先级越高。当交换机发生阻塞时,先转发优先级较高的帧。
2)CFI(Canonical Format Indicator)标准格式指示:1bit,表示MAC地址是否为经典格式。取值为0即经典格式(以太网),取值为1即非经典模式,用于令牌环网/源路由FDDI介质访问。
3)VID(VLAN Identifier)VLAN标识:12bits,即2^12=4096,表示该帧所属的VLAN,其中1 - 4094可以用来分配(0和4095为协议保留取值)。
计算机发出去的帧都是不带Tag的,而以太网帧在交换机内都是以Tagged frame的形式流动的,某端口从本交换机中其他端口收到的帧一定是Tagged的。而当计算机发送的Untagged帧一旦进入交换机后,交换机必须通过某种划分原则把这个帧分到某个特定的Vlan里面去。根据划分原则的不同,Vlan便有了不同的划分类型
1)基于端口的Vlan(Port-based VLAN) //最常使用
最常用的划分方式:将Vlan编号(VLAN ID)配置映射到交换机的物理接口上去。管理员给交换机的每个端口配置默认VLAN(Port VLAN ID, PVID)。如果收到一个Untagged帧,就给它打上对应的VLAN ID即PVID。基于端口的VLAN也叫物理层VLAN或者一层VLAN。
2) 基于MAC地址的VLAN(MAC-based VLAN)
划分原则:交换机内部建立并维护一个MAC地址与VLAN ID 的对应表,当交换机接收到计算机发送的Untagged帧时,交换机将分析帧中的S_MAC地址,然后查询MAC地址与VLAN ID的对应表,并根据对应关系把这个帧划分到相应的VLAN中去。基于MAC地址的VLAN也叫二层VLAN。
3)基于协议的VLAN(Protocol-based VLAN)
划分原则:交换机根据计算机发送的Untagged帧中的帧类型字段的值来决定帧的VLAN归属。例如,可以将类型值为0x0800(IPv4)的帧划分到一个VLAN里面,将类型值0x86dd(IPv6)的帧划分到另一个VLAN里面。即将数据载荷为IPv4的报文帧和IPv6的报文帧划分到不同的VLAN里面去。基于协议的VLAN也叫三层VLAN。
对于一个Tagged VLAN帧,交换机显然能通过其Tag中VID字段的值来判断出它属于哪个VLAN。对于Untagged VLAN帧(例如终端计算机发出去的帧),交换机需要根据某个原则(例如这个帧是从哪个端口进入交换机的)来判定或划分它属于哪个VLAN。
在一个VLAN交换网络当中,我们把交换机与终端计算机直接相连的链路称为Access链路(Access Link,接入链路),把Access链路上交换机一侧的端口称为Access端口(Access Port)。
同样的,我们把交换机之间直接相连的链路称为Trunk链路(Trunk Link,干道链路),把Trunk链路上两侧的端口,称为Trunk端口(Trunk Port)。
所以:
1. 在一条Access链路上运动的帧,只能是Untagged帧,并且这些个帧只属于某个特定的VLAN。一个Access端口只能属于某个特定的VLAN,并且只能让属于这个特定VLAN的帧通过。
2. 在一条Trunk链路上运动的帧,只能是Tagged帧,并且这些个帧可以属于不同的VLAN。一个Trunk端口可以同时属于多个VLAN,并且可以让属于不同VLAN的帧通过。
衔接上面介绍的知识点,再来看PVID:
当一台主机开始给接入交换机发送数据帧时,这个时候发送的是Untagged帧。交换机的Access接口收到这个数据帧时会添加VLAN Tag 即 给端口收到的Untagged帧添加上缺省VLAN的VLAN Tag。
补充:
1)而主机没有划分Vlan的功能,只有交换机有,交换机给端口划分的VlanID是多少则端口连接的主机就属于Vlan多少。
2)主机发送和接收的数据帧,一定是Untagged Frame。
如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。
<接收>如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
<发送>Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。Access端口发往对端设备的以太网帧永远是不带标签的帧。
在本示例中,交换机的G0/0/1,G0/0/2,G0/0/3端口分别连接三台主机,都配置为Access端口。1)主机A把数据帧(未加标签)发送到交换机的G0/0/1端口,再由交换机发往其他目的地。2)收到数据帧之后,交换机根据端口的PVID给数据帧打上VLAN标签10,然后决定从G0/0/3端口转发数据帧。3)G0/0/3端口的PVID也是10,与VLAN标签中的VLAN ID相同,交换机移除标签,把数据帧发送到主机C。4)连接主机B的端口的PVID是2,与VLAN10不属于同一个VLAN,因此此端口不会接收到VLAN10的数据帧。
Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过。
<接收>当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文。否则丢弃该报文。
<发送>端口发送数据帧时,当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与端口的PVID不同,且是该端口允许通过的VLAN ID时,保持原有Tag,发送该报文。
在本示例中,SWA和SWB连接主机的端口为Access端口,PVID如图所示。SWA和SWB互连的端口为Trunk端口,PVID都为1,此Trunk链路允许所有VLAN的流量通过。当SWA转发VLAN1的数据帧时会剥离VLAN标签,然后发送到Trunk链路上。而在转发VLAN20的数据帧时,不剥离VLAN标签直接转发到Trunk链路上。SWB收到Untagged帧后,打上自己端口的PVID1,转发到主机C。SWB收到VID是20的Tagged帧后,转发到主机D。
混合端口是交换机上既可以连接用户主机,又可以连接其他交换机的端口,即混合端口即可以连接接入链路,又可以连接干道链路。混合端口运行多个VLAN帧的通过。
Hybrid端口除了需要配置PVID外,还需要配置两个VLAN ID列表,一个是Unttagged VLAN ID列表,另一个是Tagged VLAN ID列表。这两个VLAN ID列表中的所有VLAN 帧都是允许通过这个Hybrid端口的。
1)当Hybrid端口从链路上收到一个Untagged帧后,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在两个VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作(泛洪,点到点转发),否则直接丢弃。
2)当Hybrid端口从链路上收到一个Tagged帧后,交换机会查看这个帧的Tag中的VID是否在两个VLAN ID列表中。如果在,则对该Tagged帧进行转发操作,否则直接丢弃。
3)当一个Tagged帧从本交换机内的其他端口,到达一个Hybrid端口之后,如果这个帧的Tag中的VID即不在Untagged VLAN ID列表中,也不在Tagged VLAN ID列表中,则该Tagged帧会被直接丢弃。
4)当一个Tagged帧从本交换机内的其他端口,到达一个Hybrid端口之后。如果这个帧的Tag中的VID在Untagged VLAN ID列表中,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上转发出去。
5)当一个Tagged帧从本交换机内的其他端口,到达一个Hybrid端口之后,如果这个帧的Tag中的VID在Tagged VLAN ID列表中,则交换机会不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去。
在本示例中,要求主机A和主机B都能访问服务器,但是它们之间不能互相访问。此时交换机连接主机和服务器的端口,以及交换机互连的端口都配置为Hybrid类型。交换机连接主机A的端口的PVID是2,连接主机B的端口的PVID是3,连接服务器的端口的PVID是100。
在SWA和SWB互连的端口上配置了port hybrid tagged vlan 2 3 100命令后,SWA和SWB之间的链路上传输的都是带Tag标签的数据帧。在SWB连接服务器的端口上配置了port hybrid untagged vlan 2 3,主机A和主机B发送的数据会被剥离VLAN标签后转发到服务器。
补充:我个人对于带vlan功能的交换机在进行数据转发,例如泛洪操作(目的地址为ff-ff-ff-ff-ff-ff的广播帧)。由交换机的一个端口收到这个广播帧后,进行泛洪操作,在交换机内部转发给各个端口。各个端口再查看本端口对于这个vlan帧中的vid如何处理,再进行选择操作。
总结:vlan属于层二的协议,而隔绝广播报文的话,其实上升的三层路由器可以很好的隔绝广播域,但是上升到三层的通信成本过高,所以vlan在lan的基础上诞生了。但是1-4094的vlan数量明显应对不了大型更加复杂的网络环境。所以QinQ协议诞生了,本人第一次了解到这个协议的时候,是在校期间兼职担任网管的时候发现有个内外vlan之分。当时觉得很奇怪问了很多人,都没搞明白,只是懂得内vlan标记了各个楼栋的以太网交换机,外vlan标记了各个交换机的下行端口。后续会继续介绍QinQ协议。有不恰当的地方希望读者可以指正。共勉!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。