2017年7月2日星期日

Cloud_28:VLAN 原理详解(摘录+整理)

1. 什么是 LAN ?
局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。局域网是封闭型的,可以由两台计算机组成,也可以由上千台计算机组成。
局域网一般是通过二层交换机建立的,二层交换机是一种基于 MAC 地址识别、能够完成封装转发数据包功能的网络设备。

2. 什么是广播 ?什么是广播域 ?
广播是一种信息的传播方式,指网络中的某一设备同时向网络中所有的其它设备发送数据,这个数据所能广播到的范围称为广播域。
广播域是指网络中所有能接收到同样广播消息的设备的集合。

3. 什么是 VLAN ?
局域网中的机器 A 想要和机器 B 通信,要在广播域中进行 ARP 广播,来获取机器 B 的 MAC 地址。
这种广播会影响到网络整体的传输性能。

图中,是一个由 5 台二层交换机(交换机1~5)以及连接大量客户机构成的局域网。
交换机 1 收到 ARP 请求后,会把它转发给除接收端口外的其它所有端口,同样,交换机 2 收到 ARP 请求后,也会把它转发给除接收端口外的其它所有端口,.....,最终 ARP 请求会被转发到同一网络中的所有客户机上。
如此一来,一方面广播信息消耗了网络整体的带宽;另一方面,收到广播信息的计算机还要消耗一部分 CPU 来对它进行处理。造成了网络带宽和 CPU 的无谓消耗。
请注意一下,这个 ARP 请求原本是为了获得计算机 B 的 MAC 地址而发出的,也就是说只要计算机 B 能收到就可以了,但结果却是传遍整个网络,导致所有的计算机都收到了它。

那么,网络上都有哪些广播信息呢?
(1)ARP 请求:建立 IP 地址和 MAC 地址的映射关系。
(2)RIP:一种路由协议,每隔 30 秒路由器都会对邻近的其它路由器广播一次路由信息。
(3)DHCP:用于自动设定 IP 地址的协议。
(4)NetBEUI:Windows下使用的网络协议。
(5)IPX:Novell Netware 使用的网络协议。
(6)Apple Talk:苹果公司的 Macintosh 计算机使用的网络协议。

因此,如果能够有效地分割广播域,就可以减少网络中不必要的消息广播。
在二层交换机上分割广播域的技术,就是 VLAN。

4. 如何实现 VLAN ?
在交换机上生成红、蓝两个 VLAN:同时设置端口 1 和 2 属于红色 VLAN;端口 3 和 4 属于蓝色 VLAN。
这样设置以后,广播消息只会转发给同属于一个 VLAN 的其它端口。
就这样,VLAN 通过限制广播转发的范围分割了广播域。可以理解为将一台交换机在逻辑上分割成了数台虚拟交换机。


注意,在交换机上设置 VLAN 后,如果未做其它处理,VLAN 之间是互不相通的。
明明接在同一台交换机上,但却无法通信,这个事实可能让人难以接受。
那么,如果 VLAN 之间需要通信时怎么办 ?
VLAN 之间的通信需要路由器提供中继服务,可以使用普通的路由器,也可以使用三层交换机。

5. VLAN 的划分方式

5.1 静态 VLAN
静态 VLAN 是基于端口的 VLAN,顾名思义,就是明确指定各端口属于哪个 VLAN 的设定方法。
由于需要一个个端口地指定,因此当网络中的计算机数目超过上百台后,设定操作就会变得烦杂无比。
并且,客户机每次变更所连端口,都必须同时更改该端口所属 VLAN,这显然不适合那些需要经常改变拓补结构的网络。


5.2 动态 VLAN
动态 VLAN 分为三类:
(1)基于 MAC 地址的 VLAN
(2)基于 IP 地址的 VLAN
(3)基于用户的 VLAN

5.2.1 基于 MAC 地址的 VLAN
通过查询并记录端口所连计算机上网卡的 MAC 地址来决定端口的所属 VLAN。即无论机器连在交换机哪个端口,该机器都属于同一个 VLAN。
如果计算机更换了网卡,还是需要更改设定。
由于是基于 MAC 地址决定所属 VLAN,因此这是一种在 OSI 第二层设定访问连接的办法。


5.2.2 基于 IP 地址的 VLAN
通过所连计算机的 IP 地址来决定端口所属 VLAN。即只要机器的 IP 地址不变,该机器都属于同一个 VLAN。
因此,与基于 MAC 地址的 VLAN 相比,基于 IP 地址的 VLAN 设定更为灵活,是一种在 OSI 的第三层设定访问连接的方法。


5.2.3 基于用户的 VLAN
根据交换机各端口连接的的计算机上的当前登录的用户来决定该端口属于哪个 VLAN。
这里的用户是操作系统的用户,是一种在 OSI 的第四层以上设定访问连接的方法。

6. 如何实现跨多台交换机的 VLAN ?
到此为止,讲的都是使用单台交换机如何设置 VLAN。如何实现跨多台交换机的 VLAN ?
如下图所示,此时,交换机 1 和交换机 2 该如何连接呢 ?


最简单的方法,当然是在交换机 1 和交换机 2 上各设一个红、蓝 VLAN 专用的接口,然后用网线互联。
但是,这个办法从扩展性和管理效率来看都不好。
比如,在现有网络基础上再新建 VLAN 时,为了让这个 VLAN 能够互通,就需要在交换机间连接新的网线。并且,VLAN 越多,交换机间互联所需的端口也越来越多,交换机端口的利用效率会很低,是对资源的一种浪费,也限制了网络的扩展。
为了避免这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这就是汇聚链接(Trunk Link)。

6.1 什么是汇聚链接 ?
汇聚链接(Trunk Link)指的是能够转发多个不同 VLAN 的通信的端口。
汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个 VLAN 的特殊信息。
用户只需要简单地将交换机间互联的端口设定为汇聚链接就可以了。
我们看看汇聚链接是如何实现跨越交换机间的 VLAN 的:
(1) A 发送的数据帧从交换机 1 经过汇聚链路到达交换机 2 时,在数据帧上附加了表示属于红色 VLAN 的标记。
(2) 交换机 2 收到数据帧后,经过检查 VLAN 标识后,发现这个数据帧是属于红色 VLAN 的,因此去除标记后,根据需要将原始的数据帧只转发给其它属于红色 VLAN 的端口。


另外,由于汇聚链路上流通着多个 VLAN 的数据,负载较重。因此,在设定汇聚链接时,必须支持 100Mbps 以上的传输速度。
另外,默认条件下,汇聚链接(端口)会转发交换机上存在的所有 VLAN 的数据。换一个角度看,可以认为汇聚链接(端口)同时属于交换机上所有的 VLAN。

6.2 VLAN 的汇聚方式
在交换机的汇聚链接上,通过对数据帧附加 VLAN 信息,可以构建跨越多台交换机的 VLAN。
附加VLAN信息的方法,最具有代表性的有:IEEE 802.1Q 和 ISL。

6.2.1 IEEE 802.1Q
IEEE 802.1Q,俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。
在此,请大家先回忆一下以太网数据帧的标准格式。
IEEE 802.1Q 所附加的 VLAN 识别信息,位于以太网数据帧中的“发送源 MAC 地址”与“类型”之间。具体内容为 2 字节的 TPID(Tag Protocol IDentifier)和 2 字节的 TCI(Tag Control Information),共计 4 字节。
TPID 的值固定为 0x8100,它标示网络帧承载的 802.1Q 类型,交换机通过它来确定数据帧内附加了基于 IEEE 802.1Q 的 VLAN 信息。
真正的 VLAN ID,保存在 TCI中,一共有 12 位,因此最多可供识别 4096 个 VLAN。
在数据帧中添加了 4 字节的内容,那么循环冗余校验(Cyclic Redundancy Check, CRC) 值也会有所变化。
而当数据帧离开汇聚链路时,TPID 和 TCI 会被去除,这时会重新计算 CRC 。


6.2.2 ISL(Inter Switch Link)
ISL 是 Cisco 支持的一种与 IEEE 802.1Q 类似的、用于在汇聚链路上附加 VLAN 信息的协议。
使用 ISL 后,每个数据帧头部都会被附加 26 字节的 ISL Header,并且在帧尾附带上通过对包括 ISL Header 在内的整个数据帧进行计算后得到的 4字节 CRC 值。
总共增加了 30 字节的信息。
在使用 ISL 的环境下,由于原先的数据帧及其 CRC 都被完整保留,无需重新计算 CRC,因此当数据帧离开汇聚链路时,只要简单地去除 ISL Header和新 CRC 就可以了。



7. 如何实现 VLAN 之间的路由 ?
在使用路由器进行 VLAN 间路由时,与构建横跨多台交换机的 VLAN 时的情况类似,还是会遇到“该如何连接路由器与交换机”这个问题。
路由器和交换机的接线方式,大致有以下两种:
(1)将路由器与交换机上的每个 VLAN 分别连接。
(2)不论 VLAN 有多少个,路由器与交换机之间使用汇聚链接,只用一条网线连接。
采用(1)的办法,不难想象它的扩展性很成问题。每增加一个新的 VLAN,都需要消耗路由器的端口和交换机上的访问链接,而且还需要重新布设一条网线。
采用(2)的办法,即使之后在交换机上新建 VLAN,仍只需要一条网线连接交换机和路由器。只需要在路由器上新设一个对应新 VLAN 的子接口就可以了。


因此一般采用第 (2) 种方法,具体实现过程为:
(1)首先将用于连接路由器的交换机端口设为汇聚链接(Trunk Link),而路由器上的端口也必须支持汇聚链路。
(2)双方用于汇聚链路的协议自然也必须相同。
(3)在路由器上定义对应各个 VLAN 的子接口。尽管实际与交换机连接的物理端口只有一个,但可以把它分割为多个虚拟端口。
VLAN 将交换机从逻辑上分割成了多台,因而用于 VLAN 间路由的路由器,也必须拥有分别对应各个 VLAN 的虚拟接口。

7.1 同一 VLAN 内的通信

(1)计算机 A 发出 ARP 请求信息,请求解析 B 的 MAC 地址。
(2)交换机收到数据帧后,检索 MAC 地址列表中与收信端口同属一个 VLAN 的表项。结果发现,计算机 B 连接在端口 2 上,于是交换机将数据帧转发给端口 2,最终计算机 B 收到该帧。
收发信双方同属一个 VLAN 之内的通信,一切处理均在交换机内完成。

7.2 不同 VLAN 间的通信

(1)计算机 A 从通信目标的 IP 地址(192.168.2.1)得出 计算机 C 与本机不属于同一个网段。因此会向设定的默认网关发数据帧。在发送数据帧之前,需要先用 ARP 获取路由器的 MAC 地址。
(2)得到路由器的 MAC 地址 R 后,接下来就是按图中所示的步骤发送往 计算机 C 的数据帧。

参考文献:
1. http://blog.csdn.net/phunxm/article/details/9498829/

没有评论: