什么是VLAN?他们能解决什么问题?

我正在帮助一个朋友学习基本的网络,因为他刚刚成为一家小公司的唯一系统管理员。我一直在向他指出有关各种网络主题的Serverfault的各种问题/答案,并且注意到了一个空白-似乎没有答案可以从基本原理上解释什么是VLAN。本着“子网划分如何工作”的精神,我认为在这里提出一个具有规范答案的问题会很有用。

答案中包含一些潜在的主题:


什么是VLAN?
它们打算解决什么问题?
在VLAN之前,事情如何运作?
VLAN与子网有什么关系?
什么是SVI?
什么是中继端口和访问端口?什么是VTP?

编辑:要清楚,我已经知道VLAN的工作原理-我只是认为Serverfault应该有一个答案涵盖了这些问题。如果时间允许,我也会提交自己的答案。

评论

也许是另一个问题:静态VLAN和动态VLAN有什么区别?有哪些管理方式?还有一项:管理供应商之间VLAN互操作的标准是什么?

就像飞蛾扑火一样,我已经到达并添加了4,000个单词...(我想我可以住一个社区Wiki ...我想我真的不需要代表...> smile <)

@Evan:我有点希望你能出现。但是我必须承认,在将其转交给CW之前,我可以做更多的代表。 :)

#1 楼

虚拟局域网(VLAN)是一种抽象,允许单个物理网络模拟多个并行物理网络的功能。这很方便,因为在某些情况下,您需要多个并行物理网络的功能,但不想花钱购买并行硬件。我将在此答案中谈论以太网VLAN(即使其他联网技术也可以支持VLAN),并且我不会深入探讨每一个细微差别。

一个人为的例子和问题

作为纯粹的示例场景,假设您拥有一栋出租给租户的办公楼。作为租赁的好处,每个租户将在办公室的每个房间中获得实时以太网插孔。您在每个楼层购买一个以太网交换机,将它们连接到该楼层每个办公室的插孔,然后将所有交换机连接在一起。

最初,您将空间租给两个不同的租户-一个租用一个1层和2层一对一。每个租户都使用静态IPv4地址配置其计算机。两个租户都使用不同的TCP / IP子网,一切似乎都正常。

后来,一个新租户租用了3楼的一半,并启动了其中一个新的DHCP服务器。时间流逝,一楼的租户也决定跳上DHCP潮流。这就是事情开始出现问题的时候。第3层的租户报告说,他们的某些计算机从不是DHCP服务器的计算机上获取“有趣的” IP地址。很快,第一层的租户报告了同样的事情。

DHCP是一种利用以太网的广播功能来允许客户端计算机动态获取IP地址的协议。由于租户都共享同一个物理以太网网络,因此它们共享同一个广播域。从网络中任何一台计算机发送的广播数据包都会将所有交换机端口泛洪到每台其他计算机。位于第1层和第3层的DHCP服务器将收到所有有关IP地址租约的请求,并且将有效地决斗以查看谁可以首先应答。显然,这不是您打算让租户体验的行为。但是,这是没有任何VLAN的“扁平”以太网网络的行为。更糟糕的是,位于2楼的租户购买了该“ Wireshark”软件并报告了该情况。 ,他们会看到来自交换机的流量,这些流量引用了他们从未听说过的计算机和IP地址。他们的一位员工甚至发现,可以通过将分配给他的PC的IP地址从192.168.1.38更改为192.168.0.38来与这些其他计算机通信!大概,他距离为其他租户之一执行“未经授权的公益系统管理服务”仅几步之遥。不好。

潜在的解决方案

您需要解决方案!您只需拔下地板之间的插头即可切断所有不必要的通讯!是的那是票...

可能行得通,除了您有一个新的房客,他要租用地下室的一半和3楼的空置的一半。如果之间没有联系, 3层交换机和地下室交换机,新租户将无法在将分布在他们两层的计算机之间进行通信。拔插头不是答案。更糟糕的是,新租户又带来了其中一台DHCP服务器!

您可能会为每个租户购买物理上分开的以太网交换机,但您会看到建筑物如何有30层,其中的任何一层都可以细分为4种方式,潜在的老鼠会在地板之间铺设地板到地板的电缆大量的并行以太网交换机可能是一场噩梦,更不用说昂贵了。如果只有一种方法可以使单个物理以太网网络像多个物理以太网网络一样工作,每个物理以太网都有自己的广播域。

用于救援的VLAN

VLAN解决了这个麻烦的问题。 VLAN允许您将以太网交换机细分为逻辑上完全不同的虚拟以太网交换机。这样一来,单个以太网交换机就可以像多个物理以太网交换机一样工作。例如,对于细分的3楼,您可以配置48端口交换机,以使较低的24个端口位于给定的VLAN中(我们将其称为VLAN 12),而较高的24个端口位于给定的VLAN中(我们将其称为VLAN 13)。在交换机上创建VLAN时,必须为它们分配某种类型的VLAN名称或编号。我在这里使用的数字基本上是任意的,所以不用担心我选择什么具体数字。

将3层交换机划分为VLAN 12和13后,您会发现新的3层租户可以将其DHCP服务器插入分配给VLAN 13的端口之一,而插入分配给VLAN 12的端口的PC不会从新的DHCP服务器获取IP地址。优秀的!问题解决了!

哦,等等...我们如何将VLAN 13数据传输到地下室?

交换机之间的VLAN通信

您的三层楼和半层楼的租户想将地下室中的计算机连接到三层楼的服务器。您可以直接将电缆从分配给三层楼中VLAN的端口之一连接到地下室和生活会很好吧?

在VLAN的早期(802.1Q之前的标准),您可能会这样做。实际上,整个地下室交换机将是VLAN 13(您已选择分配给第3层和地下室的新租户的VLAN)的一部分,因为该地下室交换机将由分配给第3层的端口“馈送”到VLAN13。

该解决方案将一直有效,直到您将地下室的另一半租给第1层租户,他们也希望在其第1层和地下室计算机之间进行通信。您可以使用VLAN(分为VLANS 2和13)拆分地下室交换机,并用电缆将1层电缆连接到地下室中分配给VLAN 2的端口,但是更好的判断是,它很快就会变成老鼠的窝电缆(而且只会变得更糟)。使用VLAN拆分交换机是很好的,但是必须将多条电缆从其他交换机连接到属于不同VLAN的端口,这似乎很麻烦。毫无疑问,如果必须在也有较高楼层空间的租户之间将地下室交换机划分为4种方式,则可以在地下室交换机上使用4个端口,以终止楼​​上VLAN的“馈线”电缆。

现在应该清楚的是,需要使用某种类型的通用方法从一条电缆上的交换机之间的多个VLAN移动流量。仅在交换机之间添加更多电缆以支持不同VLAN之间的连接并不是一项可扩展的策略。最终,有了足够的VLAN,您将通过这些VLAN间/交换机间连接吞噬交换机上的所有端口。所需要的是一种通过单个连接(即交换机之间的“中继”连接)承载来自多个VLAN的数据包的方法。

至此,我们已经讨论过的所有交换器端口都称为“访问”端口。也就是说,这些端口专用于访问单个VLAN。插入这些端口的设备本身没有特殊配置。这些设备不“知道”存在任何VLAN。客户端设备发送的帧将传递到交换机,交换机随后将确保将帧仅发送到作为VLAN成员分配的端口,这些VLAN分配给该帧进入交换机的端口。如果某个帧在分配为VLAN 12成员的端口上进入交换机,则该交换机将仅发送该帧作为VLAN 12成员的端口。交换机“知道”分配给从中接收VLAN的端口的VLAN号。帧,并且以某种方式知道只能将该帧发送到同一VLAN的端口。

如果某台交换机可以通过某种方式将与给定帧关联的VLAN号共享给其他交换机,则另一台交换机可以正确处理仅将帧传送到适当的目标端口的情况。这就是802.1Q VLAN标记协议的作用。 (值得注意的是,在802.1Q之前,一些厂商制定了自己的VLAN标记和交换机间中继标准。在大多数情况下,这些预标准方法已被802.1Q取代。)

当您将两个支持VLAN的交换机相互连接,并且希望这些交换机将彼此之间的帧传送到正确的VLAN时,您可以使用“中继”端口连接这些交换机。这涉及将每个交换机上的端口配置从“访问”模式更改为“中继”模式(在非常基本的配置中)。

当端口配置为中继模式时,交换机发送出该端口的每个帧将在该帧中包含一个“ VLAN标记”。此“ VLAN标记”不是客户端发送的原始帧的一部分。而是,此标记是在将帧发送到中继端口之前由发送交换机添加的。此标记表示与帧起源的端口关联的VLAN号。

接收交换机可以查看标签以确定帧源自哪个VLAN,并基于该信息将帧仅转发到分配给原始VLAN的端口。因为连接到“访问”端口的设备不知道正在使用VLAN,所以在将“标记”信息发送出配置为访问模式的端口之前,必须先从帧中删除“标记”信息。标签信息的这种剥离会导致客户端设备隐藏整个VLAN中继过程,因为它们接收的帧将不包含任何VLAN标签信息。

在实际配置VLAN之前,我建议在测试交换机上为中继模式配置端口,并使用嗅探器(例如Wireshark)监视从该端口发送的流量。您可以从另一台计算机创建一些示例流量,将其插入访问端口,然后查看离开中继端口的帧实际上大于测试计算机发送的帧。您将在Wireshark的帧中看到VLAN标签信息。我发现值得一看嗅探器中发生的事情。在这一点上,阅读802.1Q标记标准也是一件很体面的事情(尤其是因为我不是在谈论“本地VLAN”或双重标记之类的事情)。

VLAN配置的噩梦和解决方案

随着您在建筑物中租用越来越多的空间,VLAN的数量也在增加。每次添加新的VLAN时,您都必须登录到越来越多的以太网交换机,并将该VLAN添加到列表中。如果有某种方法可以将VLAN添加到单个配置清单中,并让它自动填充每个交换机的VLAN配置,那不是很好吗?

像Cisco专有的“ VLAN Trunking”这样的协议协议”(VTP)或基于标准的“多个VLAN注册协议”(MVRP-先前拼写为GVRP)都可以实现此功能。在使用这些协议的网络中,单个VLAN创建或删除条目会导致将协议消息发送到网络中的所有交换机。该协议消息将VLAN配置的更改传达给其余的交换机,其余交换机依次修改其VLAN配置。 VTP和MVRP并不关心将哪些特定端口配置为特定VLAN的访问端口,但是在将VLAN的创建或删除传达给所有交换机时很有用。

如果您对VLAN感到满意,则可能需要回过头来阅读有关“ VLAN修剪”的信息,该修剪与诸如VTP和MVRP之类的协议相关。到目前为止,没有什么值得关注的。 (Wikipedia上的VTP文章有一个很好的图表,解释了VLAN修剪及其好处。)

何时在现实生活中使用VLAN?

在进一步介绍之前重要的是要考虑现实生活而不是虚构的例子。在这里代替复制另一个答案的文本,我将带您参考我的答案:何时创建VLAN。它不一定是“初学者”,但是现在值得一看,因为在回到人为的示例之前,我将简要地参考它。

对于“ tl; dr”人群(肯定已经在这一点上全部停止读取了),上面那个链接的要点是:创建VLAN以使广播域更小或当您出于某些特定原因而将流量隔离时(安全性) ,政策等)。使用VLAN的确没有其他充分的理由。

在我们的示例中,我们使用VLAN来限制广播域(以保持DHCP等协议正常工作),其次,因为我们想要隔离在各个租户的网络之间。

关于:IP子网和VLAN

一般来说,VLAN和IP子网之间通常存在一对一的关系,例如方便起见,以便于隔离,以及ARP协议的工作原理。

如我们在回答开头所看到的,可以在同一物理以太网上毫无问题地使用两个不同的IP子网。如果您使用VLAN来缩小广播域,那么您将不希望与两个不同的IP子网共享同一VLAN,因为您将把它们的ARP和其他广播流量结合在一起。

出于安全或策略原因使用VLAN隔离流量,那么您可能也不想将多个子网合并在同一个VLAN中,因为您将无法达到隔离的目的。

IP使用广播-基于IP的协议,即地址解析协议(ARP),用于将IP地址映射到物理(以太网MAC)地址。由于ARP是基于广播的,因此将同一IP子网的不同部分分配给不同的VLAN将是一个问题,因为一个VLAN中的主机将无法从另一个VLAN中的主机接收ARP答复,因为广播不会在VLAN之间转发。您可以使用代理ARP解决此“问题”,但是最终,除非您有充分的理由需要将IP子网划分为多个VLAN,否则最好不要这样做。

最后一个撇开:VLAN和安全性

最后,值得注意的是,VLAN并不是很好的安全设备。许多以太网交换机都有一些错误,这些错误允许将源自一个VLAN的帧发送到分配给另一个VLAN的端口。以太网交换机制造商一直在努力解决这些错误,但令人怀疑的是,是否会实现完全无错误的实现。

在我们精心设计的示例中,第2层员工不愿提供通过将其流量隔离到VLAN中,可以阻止向其他租户提供的免费系统管理“服务”。不过,他可能还会想出如何利用交换机固件中的错误,使流量也“泄漏”到另一个租户的VLAN中。

Metro以太网提供商越来越依赖于VLAN标签功能和交换机提供的隔离。不公平地说使用VLAN无法提供安全性。可以公平地说,在具有不受信任的Internet连接或DMZ网络的情况下,最好使用物理上分开的交换机来承载这种“敏感的”流量,而不是也要承载您的受信任“防火墙后”流量的交换机上的VLAN。

将第3层引入图片中

到目前为止,该答案涉及的所有内容都与第2层-以太网帧有关。如果我们开始将第3层引入其中,会发生什么?

让我们回到人为的建筑示例中。您已经接受了将VLAN配置为将每个租户的端口配置为单独VLAN的成员的VLAN。您已经配置了中继端口,以便每个楼层的交换机都可以将标有原始VLAN号的帧交换到上下楼层的交换机。一个租户可以将计算机分布在多个楼层,但是由于您熟练的VLAN配置技能,这些物理分布的计算机似乎都属于同一物理LAN的一部分。

您的IT成就无比充实,您决定开始为租户提供Internet连接。您购买了较粗的Internet管道和路由器。您将想法浮动给所有租户,其中两个立即被买断。幸运的是,您的路由器具有三个以太网端口。您将一个端口连接到胖Internet管道,将另一个端口连接到分配用于访问第一个租户的VLAN的交换机端口,将另一个端口连接到分配用于访问第二个租户的VLAN的端口。您在每个租户的网络中用IP地址配置路由器的端口,然后租户开始通过您的服务访问Internet!收入增加,您很高兴。

很快,另一个租户决定使用您的Internet产品。但是,您的路由器端口不足。该怎么办?

幸运的是,您购买了一个路由器,该路由器支持在其以太网端口上配置“虚拟子接口”。简而言之,此功能允许路由器接收和解释带有原始VLAN编号的帧,并为虚拟(即非物理)接口配置适合其将与之通信的每个VLAN的IP地址。实际上,这允许您“复用”路由器上的单个以太网端口,以使其看起来像多个物理以太网端口。

您将路由器连接到其中一台交换机上的中继端口,并配置与每个租户的IP寻址方案相对应的虚拟子接口。每个虚拟子接口都配置有分配给每个客户的VLAN号。当帧离开交换机上与路由器绑定的中继端口时,它将带有带有原始VLAN号的标签(因为它是中继端口)。路由器将解释该标签,并将数据包视为已到达对应于该VLAN的专用物理接口。同样,当路由器响应请求将帧发送到交换机时,它将在该帧中添加VLAN标签,以便交换机知道应将响应帧传递到哪个VLAN。实际上,您已经将路由器配置为在多个VLAN中作为物理设备“出现”,而仅在交换机和路由器之间使用单个物理连接。

摇杆和第3层交换机上的路由器

使用虚拟子接口,您可以向所有租户出售Internet连接,而无需购买具有25个以上以太网接口的路由器。您对自己的IT成就感到非常满意,因此当您的两个租户提出新要求时,您会做出积极的回应。

这些租户已选择“合作”一个项目,并且他们希望允许从一个租户办公室中的客户端计算机(一个给定的VLAN)访问另一租户办公室中的服务器计算机(另一个VLAN)。由于它们都是您的Internet服务的客户,这是对核心Internet路由器(在其上为每个租户的VLAN配置了虚拟子接口的虚拟子接口)中的ACL进行的相当简单的更改,以允许流量在其VLAN之间流动。以及从其VLAN到Internet。您进行更改,然后按租户的方式发送。

第二天,您收到来自两个租户的投诉,他们抱怨一个办公室中的客户端计算机与第二个办公室中的服务器之间的访问速度非常慢。服务器和客户端计算机都具有到交换机的千兆以太网连接,但是文件仅以大约45Mbps的速度传输,这恰好是核心路由器连接到其交换机的速度的一半。显然,从源VLAN到路由器的流量,再从路由器流回目的地VLAN的流量,由于路由器与交换机的连接而成为瓶颈。

您对核心路由器所做的一切,允许它在VLAN之间路由流量,通常被称为“棒上的路由器”(可以说是愚蠢的异想天开的委婉说法)。此策略可以很好地起作用,但是流量只能在VLAN之间流动,直到路由器与交换机的连接容量为止。如果以某种方式将路由器与以太网交换机本身的“内胆”结合在一起,则它可以更快地路由流量(因为按照制造商的规格表,以太网交换机本身能够交换2Gbps的流量)。从逻辑上讲,“第3层交换机”是一种以太网交换机,其中包含埋在其内部的路由器。我发现将第3层交换机视为隐藏在交换机内部的小型且快速的路由器非常有帮助。此外,我建议您将路由功能视为与第3层交换机提供的以太网交换功能截然不同的功能。出于所有目的和目的,第3层交换机是包装在单个机箱中的两个不同的设备。

第3层交换机中的嵌入式路由器以一定速度连接到交换机的内部交换结构,该速度通常允许以线速或接近线速在VLAN之间路由数据包。与您在“棒上路由器”上配置的虚拟子接口类似,可以在第3层交换机内部为该嵌入式路由器配置虚拟接口,这些虚拟接口“似乎”是对每个VLAN的“访问”连接。从VLAN到第3层交换机内部的嵌入式路由器的这些逻辑连接未称为虚拟子接口,而是称为交换机虚拟接口(SVI)。实际上,第3层交换机内部的嵌入式路由器具有一定数量的“虚拟端口”,可以“插入”到交换机上的任何VLAN。

嵌入式路由器执行相同的方式作为物理路由器,除了它通常不具有与物理路由器相同的动态路由协议或访问控制列表(ACL)功能(除非您已经购买了非常好的第3层交换机)。但是,嵌入式路由器具有非常快的优点,并且没有与其所插入的物理交换机端口相关的瓶颈。

对于带有“合作伙伴”租户的示例,您可能选择获取第3层交换机,将其插入中继端口,以使来自两个客户VLAN的流量都到达该交换机,然后使用以下方式配置SVI: IP地址和VLAN成员身份,以使其“出现”在两个客户VLAN中。完成此操作后,只需调整核心路由器和第3层交换机中的嵌入式路由器上的路由表,以使租户VLAN之间的流量通过第3层交换机内部的嵌入式路由器进行路由即可。 “棒上的路由器”。

使用第3层交换机并不意味着不会存在与互连您的交换机的中继端口的带宽相关的瓶颈。但是,这与VLAN所解决的问题息息相关。 VLAN与带宽问题无关。通常,带宽问题是通过获取高速交换机间连接或使用链路聚合协议将多个较低速连接“绑定”到虚拟高速连接中来解决的。除非所有创建要由后三台交换机内部的嵌入式路由器路由的设备的设备本身都直接插入三层交换机上的端口,否则您仍然需要担心交换机之间中继线的带宽。第3层交换机不是万能药,但通常比“棒上的路由器”要快。

动态VLAN

最后,某些交换机中有功能提供动态VLAN成员资格。当连接设备时,可以动态更改端口的配置(访问或中继以及其VLAN),而不是将给定端口分配为给定VLAN的访问端口。动态VLAN是一个更高级的主题,但是知道存在的功能可能会有所帮助。

各供应商之间的功能有所不同,但是通常您可以根据所连接设备的MAC地址802.1X配置动态VLAN成员身份。设备的身份验证状态,专有和基于标准的协议(例如,CDP和LLDP,以允许IP电话“发现”语音流量的VLAN号),分配给客户端设备的IP子网或以太网协议类型。

评论


再去淘金吧? :)

–squillman
2010-10-8 22:05

+1您显然为此付出了相当大的努力,谢谢!

–提姆·朗
2010年11月3日,下午1:26

+1:哇!极好的答案。

–阿伦·萨哈(Arun Saha)
10 Nov 17 '21:35

喜欢这个:“未经授权的公益系统管理服务”;)

–problemPotato
15年2月19日在13:45

@guntbert-很高兴为您提供帮助。

–埃文·安德森(Evan Anderson)
16-3-3在20:20

#2 楼

VLAN是“虚拟局域网”。以下是我的理解-我的背景主要是系统工程和管理,具有OO编程和大量脚本编写的功能。

VLAN旨在跨多个硬件设备创建隔离的网络。较早的传统LAN可能仅存在于专用于特定网络的单个硬件设备的地方。通常,允许连接到该网络设备的所有服务器/设备(交换机或集线器,取决于历史时间范围)在LAN之间自由通信。

VLAN不同,因此您可以互连多个网络设备并创建通过在VLAN中将服务器分组在一起来隔离网络,从而消除了为单个LAN配备“专用”网络设备的需求。网络设备制造商之间可配置VLAN和支持的服务器/设备的数量会有所不同。

再次取决于供应商,我认为并非所有服务器都必须位于同一子网中才能成为一部分同一VLAN。我相信使用旧版网络配置就可以做到(网络工程师在此处进行更正)。

使VLAN与VPN有所不同的是字母“ P”代表“专用”。通常,VLAN流量不会被加密。

希望有所帮助!

评论


一个急需的简短网关答案,用于了解VLAN。获胜者较多,涉及的细节很多,因此可能对后代有用,但如果您想快速了解/理解该主题,则用处不大。现在,我知道了我的回答,可以随时回头了解更多信息。

– Harsha_K
17 Mar 24 '17在8:04