【问题标题】:Understanding vlan treatment on packet了解对数据包的 vlan 处理
【发布时间】:2011-12-22 08:10:54
【问题描述】:

大家好,我想了解标记和未标记数据包上的 vlan 行为。我遇到过这些声明,这听起来让我很困惑

When a tagged packet enters a port, the default VLAN ID setting has no effect on the tag.


 1. The packet proceeds to the VLAN specified by its VLAN ID tag number.

 2. If the port in which the packet entered does not belong to the VLAN
    specified by the packet’s VLAN ID tag, the system drops the packet.


 3. If the port belongs to the VLAN specified by the packet’s VLAN ID,
    the system can send the packet to other ports with the same VLAN ID.

我对所有这些陈述都很困惑。这三个有何不同。他们相互矛盾数据包/端口属于特定的vlan ID意味着什么,因为端口只能有一个vlan ID

【问题讨论】:

    标签: networking lan ethernet


    【解决方案1】:

    概述

    我一直没有回答这个问题,因为我认为它会被迁移到Server Fault;由于它在这里挥之不去,我将解决您问题的具体细节。如果没有更多关于作者为什么提出这些观点的背景,也很难完全回应,但我会尽力回答。我不知道为什么我花了这么多时间来回答这个问题,除了圣诞节和我妻子出国探望她的家人......

    图表

    我认为最好用一种叫做多层交换机的东西来说明这些概念,它只是一个能够理解 IP 地址的以太网交换机。我画了一张图来说明:

    • 交换机有四个物理接口,编号为 Port 1/1、Port 1/2、Port 1/3 和 Port 1/4
    • 交换机有一个虚拟接口,Vlan12。虚拟接口有一个以太网 MAC 地址和一个分配给它的 IP 地址。
    • 假设三个以太网帧进入端口 1/1
    • 端口 1/1 配置为接受 Vlan 标记 12 和 13。端口 1/1 还具有默认 Vlan 1;这意味着任何未标记的帧都被放入 Vlan 1。
    • 以太网交换机使用的第一个决策点是确定帧属于哪个 Vlan。
    • 接下来,以太网交换机查看它所知道的以太网 MAC 地址数据库

    答案

    我对所有这些陈述都很困惑。这三个有何不同。他们互相矛盾数据包/端口属于特定的vlan ID意味着什么,因为端口只能有一个vlan ID

    实际上,这取决于我们正在讨论的端口类型。作者在trunk mode 中非常清楚地描述了以太网交换机端口上发生的情况。

    • 以太网中继模式端口 可以处理多个 Vlan ID,如果它们处于中继模式(请参见图中的端口 1/1)。端口 1/1 可以接受带有任一 Vlan 12 或 Vlan 13 的以太网帧;但是,这些帧必须上有一个802.1q tag,以便交换机知道它们属于哪个 Vlan
    • 以太网访问模式端口只分配了一个 Vlan。

    解决文中引用的要点...

    当标记的数据包进入端口时,默认的 VLAN ID 设置对标记没有影响。

    1. 数据包进入由其 VLAN ID 标签号指定的 VLAN。

    Frame A 可能发生的事情最好地说明了这一点。

    即使端口 1/1 有一个默认的 Vlan (Vlan 1),帧 A 仍然分配给 Vlan 12。因此,它可以退出端口 1/2、1/3 或直接进入虚拟接口 Vlan12:

    • 如果帧 A 从端口 1/2 发出,发送到端口 1/1 的 802.1q tag (12)保留在帧 A 上,因为端口 1/2 处于中继模式
    • 如果帧 A 从端口 1/3 发出,发送到端口 1/1 的802.1q tag (12) 会从帧 A 中删除,因为端口 1/3 处于访问模式李>
    • 如果帧 A 被传送到虚拟接口 Vlan12(如果帧 A 的目标 mac 地址为 000a.dead.beef),则交换机不需要将帧转发到其他任何地方。通常,您会看到发送到交换机上虚拟接口的以太网帧的原因是出于管理目的,例如telnetsshsnmp。还有其他原因,但我们暂时不要让事情变得复杂。

    ... 2.如果报文进入的端口不属于VLAN 由数据包的 VLAN ID 标签指定,系统丢弃数据包。

    B 帧 发生的事情最好地说明了这一点。

    端口 1/1 未配置为接受 Vlan ID 20,因此当交换机在 802.1q tag 中看到“20”时,帧 B被丢弃

    ... 3. 如果端口属于报文的VLAN ID指定的VLAN, 系统可以将数据包发送到具有相同 VLAN ID 的其他端口。

    这又是指Frame A;在这种情况下,作者描述了如果交换机不将帧 A 传送到虚拟接口 Vlan12 会发生什么。

    最后我加入了Frame C供你参考。这是为了说明以太网中继端口上默认 Vlan 的行为。

    圣诞快乐,祝你学习顺利。

    【讨论】:

    • 原来这里有一些误解。例如,在答案 #2 中,帧 B 不一定会被端口 1/1 丢弃。实际上,默认情况下它会在入口处被接受。请参阅 IEEE 802.1Q-2011 8.6.2 入口过滤:“如果设置此参数,则应丢弃在与帧的 VID 关联的成员集 (8.8.10) 之外的端口上接收的帧。默认此参数的值被重置,即为所有端口禁用入口过滤。"。
    • 您似乎错过了端口 1/1 上允许的 vlan 点。该开关仅配置为允许标签 12 和 13
    • 我知道这一点。我很好奇的是,如果您为此端口配置 PVID,是否会在端口上自动启用“入口过滤”。这似乎是一个单独的标志,大概。对我来说,标准并没有明确说明,但如果任何供应商不这样做,那就太令人惊讶了。
    • 这里是新的 VLAN 学习者:非常感谢图表的详细答案!但我对框架 A 的部分感到困惑,因为它有三种可能的路径。什么决定了 Frame A 的最终路径?它是依赖于开关的行为吗?或者是否有任何文档指定算法来确定帧 A 应该采用的路径?
    【解决方案2】:

    让我们退后一步,看看这里的概念。

    如果您只有一个“哑”交换机,它只有一个 VLAN,并且那个 VLAN 是“未标记的”。这意味着每个数据包都有一个“普通”以太网标头,其中不包含802.1q 标签。

    如果您想在一个物理介质上多路复用多个网络,交换机必须有某种方式来区分这些网络。这样做的方法是使用 VLAN 标记。假设您有两个相互连接的交换机,并且您有三个 VLAN,100、200 和 300。

    假设两个交换机相互连接,只有一根电缆连接到每个交换机上的端口 A。您将在每个交换机上配置端口 A 以接受和转发这三个 VLAN 上的 标记 流量。然后,您可以在向最终用户公开的每个端口上配置您希望位于 VLAN 100、200 和 300 中的端口作为该端口的默认 VLAN。

    总结一下几个重点:

    • VLAN 标签用于在同一物理链路上复用多个逻辑第 2 层网络
    • VLAN 标签通常用于基础设施设备(可能还有服务器)之间,并且在最终用户的网络上看不到
    • 交换机通常配置为,在交换数据包时,会在数据包穿过网络基础设施时添加适当的标签,然后在最终用户设备再次看到数据包之前将其移除。

    有点难以解释。希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      当标记的数据包进入端口时,默认的 VLAN ID 设置对标记没有影响。 意味着当一个数据包进入某个分配了某个 VLAN ID 的交换机时,它将继续在具有相同 VLAN ID 的交换机内传输。如果数据包没有vlan id,则数据包将被分配默认的vlan id,通常为1。

      1.数据包进入由其 VLAN ID 标签号指定的 VLAN。

      因为数据包已经分配了vlan id,所以它会继续使用相同的vlan id。

      2.如果报文进入的端口不属于VLAN 由数据包的 VLAN ID 标签指定,系统丢弃数据包。 数据包将根据数据包头中的目标IP地址和交换机内部的路由表进入交换机决定的某个端口。如果该端口无权传输具有该特定数据包的 vlan id 的数据包,则该端口将丢弃该数据包。

      3.如果端口属于数据包的 VLAN ID 指定的 VLAN, 系统可以将数据包发送到具有相同 VLAN ID 的其他端口。 否则,如果端口有权传输具有该特定 vlan id 的数据包,那么它将提前传输数据包。

      在数据包到达目的地之前,它遇到的每个交换机都将遵循相同的标准。

      【讨论】:

      • 顺便说一句,一个端口可以有一系列vlan id,我们可以配置是否允许具有这些vlan id的数据包或丢弃。
      【解决方案4】:

      帧 B 和 C 都将被丢弃。如果中继中不允许本地 vlan,则不允许未标记的帧传输

      【讨论】:

        【解决方案5】:

        VLAN 标记是数据包链路标头的一部分(位于 ISO/OSI 的第二层)。

        您有两种设置端口的可能性:

        1) 端口属于VLAN(接入方式)。

        这涉及两种行为:

        a) 在交换机内部,每个端口都有自己的 VLAN ID(默认通常是 VLAN 1)。此模式下的每个端口都拒绝入口 802.1q 标记帧,并自动将未标记帧分配给该端口的 VLAN ID。

        b) 如果帧进入与此模式关联的端口,并从中继端口(如下)传出,则该帧将使用 802.1q 标头和与入口端口关联的适当 VLAN ID 进行标记。

        如您所见,当您将交换机上的一半端口设置为 VLAN5,将另一半端口设置为 VLAN2 时,您将交换机分为两部分,您将拥有两个虚拟交换机。

        2) 端口是“中继端口”

        通过此端口发送数据包,无需修改其他交换机或 PC,这些交换机或 PC 可以处理标记的数据包。在某些交换机上,您可以使用过滤器,您可以在其中指定哪个 VLAN(或 VLAN 的哪些标记)可以通过此端口。但此端口不会更改 VLAN 标签。

        在这种情况下,交换机外部的数据包与交换机内部的标签完全相同。

        【讨论】:

        • 很抱歉,您在 1) 中的描述不正确。正确的术语是端口处于“访问模式”,并且处于所述模式的端口考虑带有 Vlan 标头标记的帧。
        • @MikePennington 每个供应商都有自己的术语,但实际上我的回答是对的。 Cisco 的术语是 1) switchport access 和 2) 是 switchport trunk,其中可以是 native vlan。但我认为在这种情况下它是如此令人困惑。请再次尝试阅读,不要给我一个糟糕的投票。非常感谢。
        • @MikePennington 再次 - 访问模式下的端口标记传入数据包(没有标签)并清除传出数据包的标签。我认为,这是我的回答,这是正确的。
        • @MikePennington 我阅读了您的个人资料,并且了解您的职业和认证。但我仍然认为,我是对的。你知道,更简单的交换机有一个基本的 VLAN1,每个端口都是这个 VLAN 的访问端口。为什么?因为进入交换机的每个流量(并且没有 VLAN 标记)都在由标记 Nr.1 标记的传入队列中,并且在传出队列中此标记被清除。也许一些愚蠢的交换机和智能路由器可以在没有传入标记的情况下完成这项工作,但总的来说,存在这种行为。您是否曾尝试删除 C2950 上的所有(包括默认)VLAN?
        • @MikePennington 对不起,你是对的。我恢复了对他的编辑的回答。我再次感到非常抱歉。我虽然,交换机内部有每个打包的 802.1q 标头,但它们只能由另一种机制标记。好吧,我错了。谢谢你的解释。
        猜你喜欢
        • 2015-01-01
        • 2015-07-12
        • 1970-01-01
        • 1970-01-01
        • 2020-08-15
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 2017-03-29
        相关资源
        最近更新 更多