🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 网络基本功(三):细说VLAN与Trunk **转载请在文首保留原文出处:EMC中文支持论坛**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [![image001.gif](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92002/image001.gif)](http://service.weibo.com/share/share.php?title=%23ECN%e4%b8%ad%e6%96%87%e6%94%af%e6%8c%81%e8%ae%ba%e5%9d%9b%23 %e7%bd%91%e7%bb%9c%e5%9f%ba%e6%9c%ac%e5%8a%9f%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9a%e7%bb%86%e8%af%b4VLAN%e4%b8%8eTrunk@EMC%e6%98%93%e5%ae%89%e4%bf%a1%e4%b8%ad%e5%9b%bd%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba&url=https://community.emc.com/message/834012#834012) ## 介绍 网络性能是影响业务效率的一个重要因素。将大型广播域分段是提高网络性能的方法之一。路由器能够将广播包阻隔在一个接口上,但是,路由器的LAN接口数量有限,它的主要功能是在网络间传输数据,而不是对终端设备提供网络接入。访问LAN的功能还是由接入层交换机来实现。与三层交换机相类似,通过在二层交换机上创建VLAN来减少广播域。现代交换机就是通过VLAN来构造的,因此在某种程度上,学习交换机就是学习VLAN。 ## 更多信息 **问题的产生:** 上一节已经讲过广播域的概念:即广播帧传播覆盖的范围。如下图所示,当网络上的所有设备在广播域产生大量的广播以及多播帧,就会与数据流竞争带宽。这是由网络管理数据流组成,如:ARP,DHCP,STP等。如下图所示,假设PC 1产生ARP,Windows登录,DHCP等请求: [![image002.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92003/image002.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92003/image002.jpg) 这些广播帧到达交换机1之后,遍历整个网络并到达所有节点直至路由器。随着网络节点增加,开销的总数也在增长,直至影响交换机性能。通过实施VLAN断开广播域将数据流隔离开来,能够解决这一问题。 **什么是VLAN:** VLAN(virtual local area network)是**一组与位置无关的逻辑端口**。VLAN就相当于**一个独立的三层网络**。VLAN的成员无需局限于同一交换机的顺序或偶数端口。下图显示了一个常规的部署,左边这张图节点连接到交换机,交换机连接到路由器。所有的节点都位于同一IP网络,因为他们都连接到路由器同一接口。 [![image003.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92025/image003.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92025/image003.jpg) 图中没有显示的是,缺省情况下,所有节点实际上都是同一VLAN。因此,这种拓扑接口可看作是基于同一VLAN的,如上面右图所示。例如,Cisco设备默认VLAN是VLAN 1,也称为管理VLAN。默认配置下包含所有的端口,体现在源地址表(source address table,SAT)中。该表用于交换机按照目的MAC地址将帧转发至合适的二层端口。引入VLAN之后,源地址表按照VLAN将端口与MAC地址相对应起来,从而使得交换机能够做出更多高级转发决策。下图显示了show mac address table和show vlan命令的显示输出。所有端口(FA0/1 – FA0/24)都在VLAN 1。 [![image004.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92026/image004.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92026/image004.jpg) 另一种常用的拓扑结构是两个交换机被一个路由器分离开来,如下图所示。这种情况下,每台交换机各连接一组节点。每个交换机上的各节点共享一个IP地址域,这里有两个网段:192.168.1.0和192.168.2.0。 [![image005.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92027/image005.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92027/image005.jpg) 注意到两台交换机的VLAN相同。非本地网络数据流必须经过路由器转发。路由器不会转发二层单播,多播以及广播帧。这种拓扑逻辑在两个地方类似于多VLAN:同一VLAN下的节点共享一个通用地址域,非本地数据流(对应多VLAN情况不同VLAN的节点)需通过路由器转发。在一台交换机上添加一个VLAN,去掉另一台交换机的话,结构如下所示: [![image006.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92028/image006.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92028/image006.jpg) 每一个VLAN相当于一个独立的三层IP网络,因此,192.168.1.0上的节点试图与192.168.2.0上的节点通信时,**不同VLAN通信必须通过路由器**,**即使所有设备都连接到同一交换机**。二层单播,多播和广播数据只会在同一VLAN内转发及泛洪,因此VLAN 1产生的数据不会为VLAN 2节点所见。只有交换机能看得到VLAN,节点和路由器都感觉不到VLAN的存在。添加了路由决策之后,可以利用3层的功能来实现更多的安全设定,更多流量以及负载均衡。 **VLAN的作用:** **安全性**:每一个分组的敏感数据需要与网络其他部分隔离开,减少保密信息遭到破坏的可能性。如下图所示,VLAN 10上的教职工主机完全与学生和访客数据隔离。 [![image007.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92029/image007.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92029/image007.jpg) **节约成本**:无需昂贵的网络升级,并且带宽及上行链路利用率更加有效。 **性能提高**:将二层网络划分成多个逻辑工作组(广播域)减少网络间不必要的数据流并提升性能。 **缩小广播域**:减少一个广播域上的设备数量。如上图所示:网络上有六台主机但有三个广播域:教职工,学生,访客。 **提升IT管理效率**:网络需求相似的用户共享同一VLAN,从而网络管理更为简单。当添加一个新的交换机,在指定端口VLAN时,所有策略和步骤已配置好。 **简化项目和应用管理**:VLAN将用户和网络设备汇集起来,以支持不同的业务或地理位置需求。 每一个VLAN对应于一个IP网络,因此,部署VLAN的时候必须结合考虑网络地址层级的实现情况。 **交换机间VLAN:** 多交换机的情况下,VLAN是怎么工作的呢?下图所示的这种情况,两个交换机VLAN相同,都是默认VLAN 1,即两个交换机之间的联系同在VLAN 1之内。路由器是所有节点的出口。 这时单播,多播和广播数据自由传输,所有节点属于同一IP地址。这时节点之间的通信不会有问题,因为交换机的SAT显示它们在同一VLAN。 [![image008.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92030/670-266/image008.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92030/image008.jpg) 而下面这种连接方式就会有问题。由于VLAN在连接端口的主机之间创建了三层边界,它们将无法通信。 [![image009.png](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92031/670-216/image009.png)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92031/image009.png) 仔细看上图,这里有很多问题。第一,所有主机都在同一IP网,尽管连接到不同的VLAN。第二,路由器在VLAN 1,因此与所有节点隔离。最后,两台交换机通过不同的VLAN互连。每一点都会造成通信阻碍,合在一起,网络各元素之间会完全无法通信。 交换机用满或同一管理单元物理上彼此分离的情形是很常见的。这种情况下,VLAN需要通过trunk延伸至相邻交换机。trunk能够连接交换机,在网络间传载VLAN信息。如下图所示: [![image010.png](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92032/670-234/image010.png)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92032/image010.png) 对之前的拓扑的改进包括: + PC 1和PC 2分配到192.168.1.0网段以及VLAN 2。 + PC 3和PC 4分配到192.168.2.0网段以及VLAN 3。 + 路由器接口连接到VLAN 2和VLAN 3。 + 交换机间通过trunk线互连。 注意到trunk端口出现在VLAN 1,他们没有用字母T来标识。trunk在任何VLAN都没有成员。现在VLAN跨越多交换机,同一VLAN下的节点可以物理上位于任何地方。 **什么是Trunk:** Trunk是在两个网络设备之间承载多于一种VLAN的端到端的连接,将VLAN延伸至整个网络。没有VLAN Trunk,VLAN也不会非常有用。VLAN Trunk允许VLAN数据流在交换机间传输,所以设备在同一VLAN,但连接到不同交换机,能够不通过路由器来进行通信。 **一个VLAN trunk不属于某一特定VLAN**,而是交换机和路由器间多个VLAN的通道。如下图所示,交换机S1和S2,以及S1和S3之间的链路,配置为传输从VLAN10,20,30以及90的数据流。该网络没有VLAN trunk就无法工作。 [![image011.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92033/image011.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92033/image011.jpg) 当安装好trunk线之后,帧在trunk线传输是就可以使用trunk协议来修改以太网帧。这也意味着交换机端口有不止一种操作模式。缺省情况下,所有端口都称为**接入端口**。当一个端口用于交换机间互连传输VLAN信息时,这种端口模式改变为trunk,节点也路由器通常不知道VLAN的存在并使用标准以太网帧或“untagged”帧。trunk线能够使用“tagged”帧来标记VLAN或优先级。 因此,在trunk端口,运行trunk协议来允许帧中包含trunk信息。如下图所示: [![image012.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92034/image012.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92034/image012.jpg) PC 1在经过路由表处理后向PC 2发送数据流。这两个节点在同一VLAN但不同交换机。步骤如下: + 以太网帧离开PC 1到达Switch 1。 + Switch 1的SAT表明目的地是trunk线的另一端。 + Switch 1使用trunk协议在以太网帧中添加VLAN id。 + 新帧离开Switch 1的trunk端口被Switch 2接收。 + Switch 2读取trunk id并解析trunk协议。 + 源帧按照Switch 2的SAT转发至目的地(端口4)。 VLAN tag如下图所示,包含类型域,优先级域,CFI(Canonical Format Indicator)指示MAC数据域,VLAN ID。 [![image013.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-834012-92035/image013.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-834012-92035/image013.jpg)