如果在同一栋建筑物中,我有两个物理上独立的网络通过简单的交换机将设备连接在一起,我的理解是,如果我使用智能交换机,通过中继端口将它们相互连接,并让它们根据设备应属于哪个“物理”网络将连接到设备的不同端口分配给两个 VLAN 之一,那么我可以节省一些硬件复杂性。
在两个独立物理网络的场景下,如果我想把它们合并成一个物理网络,硬件方面只需要在两者之间接一个交换机即可。如果我理解正确的话,相当于在两者之间插一个 linux 路由器,桥接两个网络连接的两个端口。
要在 VLAN 场景中执行相同操作,我可以通过中继端口将路由器连接到交换机,创建虚拟接口 eth0.10 和 eth0.20(例如)并将这两个接口桥接在一起。这会按预期工作吗?
我之所以问这个问题,是因为我只是在思考交换机如何转发流量。在物理网络的情况下,每个交换机都会构建一个 ARP 表,该表告诉它哪个端口可以访问哪个 MAC 地址。如果一个端口连接到另一个交换机,则该端口最终应该会发送连接到该另一个交换机的所有 MAC 地址的所有流量。
假设我有以下物理网络布局:
____________ ___________ __________ ___________ ____________
| | | | | | | | | |
| Device 1 |___| Network 1 |___| "Bridge" |___| Network 2 |___| Device 2 |
| MAC ...:01 | | Switch | | Switch | | Switch | | MAC ...:02 |
|____________| |___________| |__________| |___________| |____________|
现在,如果设备 1 想要向设备 2 发送数据包,交换机 1 知道 MAC ...:02 连接到其正确端口的某个地方,因此它会将数据包传递到桥接交换机等。
如果我将网络更改为以下布局:
____________ ________ ____________
| | | | | |
| Device 1 |_____________| Smart |_____________| Device 2 |
| MAC ...:01 | VLAN ID 1 | Switch | VLAN ID 2 | MAC ...:02 |
|____________| |________| |____________|
||
|| Trunk
____||____
| |
| "Bridge" |
| Router |
|__________|
然后,如果设备 1 想要向设备 2 发送数据包,智能交换机不应仅仅因为目标 MAC 地址匹配而将数据包从其右侧端口发送出去。相反,它需要将数据包从底部端口转发到桥接路由器,然后桥接路由器应将其从顶部端口发送回去,但现在标记为 VLAN 2,而不是 VLAN 1。
这意味着智能交换机和桥接路由器都需要维护两个(或更多)独立的 ARP 表,每个 VLAN 一个,对于智能交换机,当且仅当流量属于 VLAN 2 时,MAC ...:02 应该链接到正确的端口,当且仅当流量属于 VLAN 1 时,它应该链接到底部端口。
是这样的吗?还是说这个设置无法工作,因为智能开关会混淆?
另外,我上面描述的理解是否正确?:)
答案1
你使用的“智能开关”一词不是标准术语。我思考当您说“智能交换机”时,您的意思是“支持 VLAN 的交换机”。
交换机维护第 2 层邻接表。这些表标识物理端口和 MAC 地址关联,并允许交换机仅将流量定向到预期目的地。这些实际上不是“ARP 表”——它们与将第 3 层地址映射到第 2 层地址无关。这些实际上是将第 2 层地址映射到可以说是第 1 层地址的表。
在支持 VLAN 的交换机中,邻接表还将考虑端口 VLAN 成员身份,以防止未连接到同一 VLAN 成员端口的相邻设备之间进行直接第 2 层通信,并将帧(非单播帧和发往未知目的地的帧)的泛洪限制到单个 VLAN。
路由器不维护第 2 层邻接表,但会维护 ARP 表。路由器通常会为每个逻辑接口维护至少一个 ARP 表,将第 3 层地址映射到该接口介质的第 2 层地址。路由器本身并不特别“关心” VLAN。VLAN 将作为物理接口的逻辑子接口呈现给路由器(例如,eth0.1
在 Linux 计算机上,表示eth0
接口上的 VLAN 1),并且如果该逻辑子接口分配了 IP 地址,则会维护 ARP 表。