VLAN如何工作?


128

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

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

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

  • 什么是VLAN?
  • 他们打算解决什么问题?
  • 在VLAN之前情况如何?
  • VLAN与子网之间的关系如何?
  • 什么是SVI?
  • 什么是中继端口和访问端口?
  • 什么是VTP?

编辑:明确地说,我已经知道VLAN的工作原理-我只是认为Serverfault应该具有涵盖这些问题的答案。如果时间允许,我也将提交自己的答案。


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

像飞蛾扑火一样,我已经到达并添加了4,000个单词...(我想我可以作为社区Wiki生存...我想我真的不需要代表...> smile <)
埃文·安德森(Evan Anderson)2010年

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

Answers:


224

虚拟局域网(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层的端口“馈送”到VLAN 13。

该解决方案将一直有效,直到您将地下室的另一半租给第一层租户,他们也希望在其第一层和地下室计算机之间进行通信。您可以使用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配置,那不是很好吗?

诸如思科专有的“ VLAN中继协议”(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

通常,为了方便起见,为了促进隔离以及由于ARP协议的工作原理,VLAN与IP子网之间通常存在一对一的关系。

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

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

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

最后一点:VLAN和安全性

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

在我们的示例中,可能无法通过为另一位租户提供免费系统管理“服务”的第二层员工将其流量隔离到VLAN中而停止了这样做。不过,他可能还会想出如何利用交换机固件中的错误来使流量也“泄漏”到另一个租户的VLAN上。

城域以太网提供商越来越依赖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。实际上,您已将路由器配置为“出现”

摇杆和第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台交换机内部的嵌入式路由器路由的设备的设备本身都直接插入第3层交换机上的端口,否则您仍然需要担心交换机之间中继线的带宽。第3层交换机不是灵丹妙药,但通常比“

动态VLAN

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

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


9
再去淘金吧?:)
squillman

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

1
+1:哇!极好的答案。
阿伦·萨哈

12
喜欢这个:“未经授权的无偿系统管理服务”;)
problemPotato

1
@guntbert-很高兴为您提供帮助。
埃文·安德森

10

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

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

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

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

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

希望有帮助!


3
一个急需的简短网关答案,用于了解VLAN。获胜者较多,涉及的细节很多,因此可能对后代有用,但如果您想快速了解/理解该主题,则用处不大。现在,我知道了我的回答,现在可以随时返回以了解更多信息。
严苛的中国(Kashchina)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.