VLAN技术的原理

个人认为IT行业从业者必须具备一点点抽象概念。所谓的VLAN全称叫做Virtual Local Area Network,翻译过来便为虚拟局域网。从字面意思上其实我们就可以理解,VLAN究竟是个什么玩意。

外层和内层vlan_vlan

那么,如上图所示,再结合名称,其实我们可以很好的理解VLAN是什么。通常意义上局域网是指的某个内部网络,与互联网之间有一道闸门——网关。而VLAN中所指的局域网其实就是一个二层网络,那么想建立虚拟局域网,前提条件就是这个不是虚拟的局域网得联通起来。一是物理上的相通,而是二层逻辑上的相通。然后,才能在这基础之上,将原有的逻辑网络,再次进行划分。而我们知道,网络当中的逻辑划分无非就是通过报文实现的。

其实我认为,只需要理解我上图所示的那样,首先是物理层,然后是逻辑层,然后再逻辑层基础上再次逻辑划分,就能很好理解VLAN技术的原理。

那么,VLAN如何实现呢?其实VLAN技术的实现也很简单,无非就是我上文所提到的报文。拿以接口划分去举例,当我们认为某些终端应该在某一个虚拟局域网中时,我们就把它这个接口放在对应的虚拟局域网中。当终端将报文发送过来时,接口为这个报文打上Tag,这个Tag表示了这个报文可以从哪些链路中通过,不能通过哪些链路,因为每一条链路都会标识哪些Tag可以通过,哪些Tag不能通过。简而言之,Tag就是用来标识报文,以至于软件逻辑去识别Tag并做出相应动作。

如上,也就知道VLAN具体的实现原理了!

Trunk接口&Access接口

Trunk接口叫做主干道,那么我们知道,主干道是很多小路会和出来的,就像溪流、江河之间的关系。Trunk就是江河,连接着很多溪流,但是因为污染,很多溪流的污水不能流到江河里,于是便有闸,这个闸决定了哪些溪流可以流入江河,哪些不能。于是,Trunk接口相当于对携带了Tag的报文放不放行,可以放行的就放,不能放的就扔。

Access接口叫做接入接口,和Trunk不一样的是,他并不是对流量进行管控,它是负责给流量标上Tag的。那么Access接口为什么要在收到报文时打上标签,发送报文时去掉标签?因为Access是接入接口,下连的全是终端用户,而大部分终端的网卡设备是不能识别带有Tag的报文的,当然,有的网卡也可以识别Tag报文,但是你不能去期望终端用户去把VlanID告诉网卡。

VLAN技术的发展历史

有时候,透观一个事物的历史,能更好的理解。在网络诞生的早期,组网方式大多还是总线型网络,而且物理链路也是半双工的同轴电缆(这里并不是指只有半双工的传输介质会造成后面的情况),然后通过集线器一类的设备连接起来。那么这样的组网方式其实很不好,但是限制于当时的技术手段。在这样的组网方式下,所有的终端通信都得经过唯一的总线,于是咱们可以想象一下,一条单行车道,从南北各来一辆车,最终的结果会怎样!于是我们管这种网络叫做冲突域,为了解决冲突域的问题,后来有了CSMA/CD技术去解决,通过监测链路是否空闲再去发报文!这项技术很好的解决了冲突问题,但也带来了新的问题,那就是网络的延迟随着设备的增多会越来越大。说白了就是食堂只有一个打饭窗口,随着排队的人越多,时间就会越久!后来人们发明了交换机,交换机和集线器一类的设备可不一样,集线器只是将报文做简单的复制,而交换机可以认识报文。那咱们先看一下交换机的工作原理,简单点说即是依据MAC地址表去转发数据包,但是MAC地址表也不是凭空而来,甚至于说,终端用户发起访问,只知道对端的IP地址,不知道对端的MAC地址,也是无用。于是,在发起访问之前,终端用户会有一个依据IP地址获取MAC地址的动作。那么如何获取,很简单,问所有人,谁是XXX,你家住哪?这就是我们所说的ARP广播,这个问的动作会被交换机除源端口之外所有端口全部转发一遍。OK,这个时候我们想一下,假设一个局域网中有1w台终端用户,那么广播报文会被散发到全网除源终端之外的所有终端。而且广播报文并不止ARP一种,广播报文在二层网络中很容易被触发。于是,一台终端用户发送的广播报文可能不算什么,但是如果成千上万的广播报文在网络中被不断转发,结果可想而知。这个报文转发占用着交换机的转发性能,链路带宽,直接拉低了网络质量。于是新的问题出现了,广播域太大会影响网络质量!!!那么,我们有什么好方法去隔离广播域呢?路由器好像是一种选择,但是路由器造假昂贵,转发性能也远不如交换机,很明显,1w台计算机得配备多少路由器啊?不现实,于是技术问题就需要技术手段去解决,VLAN技术应运而生。

VLAN就先分享到这里,以后想到再来补充,其它类型得Vlan再单独说。另外,其实Vlan得设计思想也为三层网络得快速转发提供了思路,咱们以后再聊。

写不下去了,难得写这么多啊!