VLAN原理和配置
VLAN的三种端口类型
Access:接入链路类型(一般使用:交换机与PC)
Trunk:干道链路类型(一般使用:交换机与交换机)
Hybrid
在这里,我们只使用和讲解Access和Trunk
VLAN原理
链路类型
Access口
Trunk口
通过汇聚链路时附加的VLAN识别信息,有可能支持标准的“IEEE 802.1Q”协议,也可能是Cisco产品独有的“ISL(Inter Switch Link)”。如果交换机支持这些规格,那么用户就能够高效率地构筑横跨多台交换机的VLAN。
VLAN的汇聚方式——IEEE802.1Q与ISL
IEEE 802.1Q
IEEE 802.1Q,俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。
在此,请大家先回忆一下以太网数据帧的标准格式。
IEEE 802.1Q所附加的VLAN识别信息,位于数据帧中“发送源MAC地址”与“类别域”(Type Field)之间。具体内容为2字节的TPID(Tag Protocol IDentifier)和2字节的TCI(Tag Control Information),共计4字节。
在数据帧中添加了4字节的内容,那么CRC值自然也会有所变化。这时数据帧上的CRC是插入TPID、TCI后,对包括它们在内的整个数据帧重新计算后所得的值。
而当数据帧离开汇聚链路时,TPID和TCI会被去除,这时还会进行一次CRC的重新计算。
TPID字段在以太网报文中所处位置与不带VLAN Tag的报文中协议类型字段所处位置相同。TPID的值固定为0x8100,它标示网络帧承载的802.1Q类型,交换机通过它来确定数据帧内附加了基于IEEE 802.1Q的VLAN信息。而实质上的VLAN ID,是TCI中的12位元。由于总共有12位,因此最多可供识别4096个VLAN。
基于IEEE 802.1Q附加的VLAN信息,就像在传递物品时附加的标签。因此,它也被称作“标签型VLAN”(Tagging VLAN)。
ISL(Inter Switch Link)
ISL,是Cisco产品支持的一种与IEEE 802.1Q类似的、用于在汇聚链路上附加VLAN信息的协议。
使用ISL后,每个数据帧头部都会被附加26字节的“ISL包头(ISL Header)”,并且在帧尾带上通过对包括ISL包头在内的整个数据帧进行计算后得到的4字节CRC值。换而言之,就是总共增加了30字节的信息。
在使用ISL的环境下,当数据帧离开汇聚链路时,只要简单地去除ISL包头和新CRC就可以了。由于原先的数据帧及其CRC都被完整保留,因此无需重新计算CRC。
ISL有如用ISL包头和新CRC将原数据帧整个包裹起来,因此也被称为“封装型VLAN”(Encapsulated VLAN)。
需要注意的是,不论是IEEE802.1Q的“Tagging VLAN”,还是ISL的“Encapsulated VLAN”,都不是很严密的称谓。不同的书籍与参考资料中,上述词语有可能被混合使用,因此需要大家在学习时格外注意。
并且由于ISL是Cisco独有的协议,因此只能用于Cisco网络设备之间的互联。
vlan配置示例
VLAN间路由
VLAN间路由的必要性
根据目前为止学习的知识,我们已经知道两台计算机即使连接在同一台交换机上,只要所属的VLAN不同就无法直接通信。接下来我们将要学习的就是如何在不同的VLAN间进行路由,使分属不同VLAN的主机能够互相通信。
首先,先来复习一下为什么不同VLAN间不通过路由就无法通信。在LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而为了获取MAC地址,TCP/IP协议下使用的是ARP。ARP解析MAC地址的方法,则是通过广播。也就是说,如果广播报文无法到达,那么就无从解析MAC地址,亦即无法直接通信。
计算机分属不同的VLAN,也就意味着分属不同的广播域,自然收不到彼此的广播报文。因此,属于不同VLAN的计算机之间无法直接互相通信。为了能够在VLAN间通信,需要利用OSI参照模型中更高一层——网络层的信息(IP地址)来进行路由。关于路由的具体内容,以后有机会再详细解说吧。
路由功能,一般主要由路由器提供。但在今天的局域网里,我们也经常利用带有路由功能的交换机——三层交换机(Layer 3 Switch)来实现。接下来就让我们分别看看使用路由器和三层交换机进行VLAN间路由时的情况。
使用路由器进行VLAN间路由
在使用路由器进行VLAN间路由时,与构建横跨多台交换机的VLAN时的情况类似,我们还是会遇到“该如何连接路由器与交换机”这个问题。路由器和交换机的接线方式,大致有以下两种:
(1)将路由器与交换机上的每个VLAN分别连接
(2)不论VLAN有多少个,路由器与交换机都只用一条网线连接
最容易想到的,当然还是“把路由器和交换机以VLAN为单位分别用网线连接”了。将交换机上用于和路由器互联的每个端口设为访问链接(Access Link),然后分别用网线与路由器上的独立端口互联。如下图所示,交换机上有2个VLAN,那么就需要在交换机上预留2个端口用于与路由器互联;路由器上同样需要有2个端口;两者之间用2条网线分别连接。
如果采用这个办法,大家应该不难想象它的扩展性很成问题。每增加一个新的VLAN,都需要消耗路由器的端口和交换机上的访问链接,而且还需要重新布设一条网线。而路由器,通常不会带有太多LAN接口的。新建VLAN时,为了对应增加的VLAN所需的端口,就必须将路由器升级成带有多个LAN接口的高端产品,这部分成本、还有重新布线所带来的开销,都使得这种接线法成为一种不受欢迎的办法。
那么,第二种办法“不论VLAN数目多少,都只用一条网线连接路由器与交换机”呢?当使用一条网线连接路由器与交换机、进行VLAN间路由时,需要用到汇聚链接。
具体实现过程为:首先将用于连接路由器的交换机端口设为汇聚链接(Trunk Link),而路由器上的端口也必须支持汇聚链路。双方用于汇聚链路的协议自然也必须相同。接着在路由器上定义对应各个VLAN的“子接口”(Sub Interface)。尽管实际与交换机连接的物理端口只有一个,但在理论上我们可以把它分割为多个虚拟端口。
VLAN将交换机从逻辑上分割成了多台,因而用于VLAN间路由的路由器,也必须拥有分别对应各个VLAN的虚拟接口。
采用这种方法的话,即使之后在交换机上新建VLAN,仍只需要一条网线连接交换机和路由器。用户只需要在路由器上新设一个对应新VLAN的子接口就可以了。与前面的方法相比,扩展性要强得多,也不用担心需要升级LAN接口数不足的路由器或是重新布线。
同一VLAN内的通信
接下来,我们继续学习使用汇聚链路连接交换机与路由器时,VLAN间路由是如何进行的。如下图所示,为各台计算机以及路由器的子接口设定IP地址。
红色VLAN(VLAN ID=1)的网络地址为192.168.1.0/24,蓝色VLAN(VLAN ID=2)的网络地址为192.168.2.0/24。各计算机的MAC地址分别为A/B/C/D,路由器汇聚链接端口的MAC地址为R。交换机通过对各端口所连计算机MAC地址的学习,生成如下的MAC地址列表。
端口 | MAC地址 | VLAN |
1 | A | 1 |
2 | B | 1 |
3 | C | 2 |
4 | D | 2 |
5 | - | - |
6 | R | 汇聚 |
首先考虑计算机A与同一VLAN内的计算机B之间通信时的情形。
计算机A发出ARP请求信息,请求解析B的MAC地址。交换机收到数据帧后,检索MAC地址列表中与收信端口同属一个VLAN的表项。结果发现,计算机B连接在端口2上,于是交换机将数据帧转发给端口2,最终计算机B收到该帧。收发信双方同属一个VLAN之内的通信,一切处理均在交换机内完成。
不同VLAN间的通信
接下来是这一讲的核心内容,不同VLAN间的通信。让我们来考虑一下计算机A与计算机C之间通信时的情况。
计算机A从通信目标的IP地址(192.168.2.1)得出C与本机不属于同一个网段。因此会向设定的默认网关(DefaultGateway,GW)转发数据帧。在发送数据帧之前,需要先用ARP获取路由器的MAC地址。
得到路由器的MAC地址R后,接下来就是按图中所示的步骤发送往C去的数据帧。①的数据帧中,目标MAC地址是路由器的地址R、但内含的目标IP地址仍是最终要通信的对象C的地址。这一部分的内容,涉及到局域网内经过路由器转发时的通信步骤,有机会再详细解说吧。
交换机在端口1上收到①的数据帧后,检索MAC地址列表中与端口1同属一个VLAN的表项。由于汇聚链路会被看作属于所有的VLAN,因此这时交换机的端口6也属于被参照对象。这样交换机就知道往MAC地址R发送数据帧,需要经过端口6转发。
从端口6发送数据帧时,由于它是汇聚链接,因此会被附加上VLAN识别信息。由于原先是来自红色VLAN的数据帧,因此如图中②所示,会被加上红色VLAN的识别信息后进入汇聚链路。路由器收到②的数据帧后,确认其VLAN识别信息,由于它是属于红色VLAN的数据帧,因此交由负责红色VLAN的子接口接收。
接着,根据路由器内部的路由表,判断该向哪里中继。
由于目标网络192.168.2.0/24是蓝色VLAN,,且该网络通过子接口与路由器直连,因此只要从负责蓝色VLAN的子接口转发就可以了。这时,数据帧的目标MAC地址被改写成计算机C的目标地址;并且由于需要经过汇聚链路转发,因此被附加了属于蓝色VLAN的识别信息。这就是图中③的数据帧。
交换机收到③的数据帧后,根据VLAN标识信息从MAC地址列表中检索属于蓝色VLAN的表项。由于通信目标——计算机C连接在端口3上、且端口3为普通的访问链接,因此交换机会将数据帧去除VLAN识别信息后(数据帧④)转发给端口3,最终计算机C才能成功地收到这个数据帧。
进行VLAN间通信时,即使通信双方都连接在同一台交换机上,也必须经过:“发送方——交换机——路由器——交换机——接收方”这样一个流程。
参考连接
请参考https://blog.csdn.net/phunxm/article/details/9498829