交换机对数据帧的处理规则

一、概述
以太网交换机对二层帧的转发处理比较复杂,很多同事都不是很清楚。本文将对此问题进行总结,并通过实验进行验证。

二、交换机基本概念
在了解交换机转发规则之前,我们先理解交换机的一些概念,如access、trunk、hybrid和PVID等,这些概念将会经常用到。

  1. access
    以太网交换机的端口有三种链路类型:access、trunk和hybrid。
    access是“接近、进入”的意思。access类型的端口只能属于1个VLAN,从access口出来的数据帧不带VLAN标签,一般用于连接计算机。
  2. trunk
    “trunk”是“干线、树干”的意思。trunk类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的数据帧,一般用于交换机之间的连接。
    trunk端口用来在不同的交换机之间进行互联,以保证在跨越多个交换机上建立的同一个VLAN的成员能够相互通信。与一般的交换机的级联不同,trunk是基于OSI第二层的。
    假如没有trunk技术,我们在两个交换机上分别划分了多个VLAN,那么交换机上相同VLAN的成员如果要互通,就需要在每个VLAN上各取1个端口作级联连接。如果交换机上划了10个VLAN,就需要10条级连线,端口效率太低了。
    当交换机支持trunk技术时,就比较简单了,只需要在两个交换机之间有一条级联线,并将对应的端口设置为trunk,这条线路就可以承载交换机上所有VLAN的信息。
    这样的话,就算交换机上设置了4094个VLAN,也仅需要1个端口就足够了。
  3. hybrid
    “hybrid”是“混合的”的意思。hybrid口同时兼有access口和trunk口的特点。hybrid类型的端口可以属于多个VLAN,可以接收和发送多个VLAN帧,可以用于交换机之间连接,也可以用于连接用户的计算机。
    hybrid端口可以根据需要,设置某些VLAN帧从hybrid口出去时带VLAN标签,某些VLAN帧不带VLAN标签。
  4. PVID
    在VLAN技术中,PVID是端口的一个重要概念。我们先来理解PVID的含义。
    “PVID”是“Port VLAN ID”的缩写,是“端口缺省VLAN ID”的意思,即一个端口缺省属于的VLAN。
    PVID的作用是:当一个数据帧进入交换机端口时,如果没有带VLAN标签,且该端口上配置了PVID,那么,该数据帧就会被打上端口的PVID。如果进入的帧已经带有VLAN标签,那么交换机不会再增加VLAN标签,即使端口已经配置了PVID。

三、交换机端口接收数据帧的处理规则
首先,我们要明白交换机的一点原理:
为了快速高效处理,交换机内部的数据帧一律都带有VLAN标签,以统一方式处理。

当交换机从端口收到二层数据帧时:

  1. Access端口
    (1)收到一个二层帧
    (2)判断是否有VLAN标签:没有则转到第3步,有则转到第4步
    (3)打上端口的PVID,并进行交换转发
    (4)若VLAN标签和PVID一致,转发VLAN帧;否则丢弃

  2. trunk端口
    (1)收到一个二层帧
    (2)判断是否有VLAN标签:没有则转到第3步,有则转到第4步
    (3)打上端口的PVID,并进行交换转发
    (4)判断该trunk端口是否允许该VLAN帧进入:允许则转发,否则丢弃
    (注意:trunk口允许或不允许VLAN帧,是对进入的帧而言的,对出去的帧没有限制。)

  3. hybrid端口
    (1)收到一个二层帧
    (2)判断是否有VLAN标签:没有则转到第3步,有则转到第4步
    (3)打上端口的PVID,并进行交换转发
    (4)判断该hybrid端口是否允许该VLAN帧进入:允许则转发,否则丢弃

    可以看到,trunk口和hybrid口对接收到的数据帧的处理规则是一样的。

四、交换机端口转发数据帧的处理规则
当交换机把数据帧转发出端口时:

  1. Access端口
    (1)将二层帧的VLAN标签剥离,直接发送出去

  2. trunk端口
    (1)比较端口的PVID和将要发送二层帧的VLAN标签
    (2)如果两者相等则转到第3步,否则转到第4步
    (3)剥离VLAN标签,再发送
    (4)直接发送

  3. hybrid端口
    (1)判断VLAN在本端口的属性。用“dis interface”可看到该端口对哪些VLAN是untag,哪些VLAN是tag
    (2)如果是untag则转到第3步,如果是tag则转到第4步
    (3)剥离VLAN标签,再发送
    (4)直接发送

    说明:
    (1)Hybrid口中允许的VLAN分为untag和tag两类,untag和tag是对出去的帧而言的,对进入的帧没有限制
    (2)例如:“Untagged VLAN ID : 2,3”表示VLAN 2和VLAN 3的帧,从本hybrid口发送出去时,将被剥离VLAN标签
    (3)例如:“tagged VLAN ID : 4,5”表示VLAN 4和VLAN 5的帧,从本hybrid口发送出去时,不剥离VLAN标签,直接发送

五、交换机转发数据帧的一个浅显比喻
以上介绍的交换机对数据帧的处理原则,比较枯燥,也不容易理解。我们用一个浅显的例子来比喻一下,以形象地理解。

  1. 旅客进入候机室
    我们把交换机比作机场的候机室,所有不同航班的旅客(相当于不同VLAN的数据帧)都通过候机室进行“转发”。旅客可能会从四面八方、从不同的“入口”进入候机室,“入口”会有所不同(相当于端口有access、trunk和hybrid类型)。
    不同航班的旅客,手里拿的机票会不一样(相当于打了不同VLAN标签的数据帧)。候机室的有些入口,如access入口,是有检票功能的。当旅客拿有机票进入时,会检查机票和本access入口通往的航班(相当于缺省PVID)是否一致。一致则让旅客进入;不一致,则拒绝旅客进入(直接丢弃)。就像到海南的机票,却在北京入口处检票一样,当然不让旅客进入了。如果旅客没有机票,则access入口会让他买本航班的机票(打上本端口的PVID)。
    如果候机室的入口是trunk入口,也就是说这个入口是公共的入口,那么,持不同航班机票(相当于不同VLAN标签)的旅客可以带着机票进入。当然,如果trunk入口不允许某些航班不在此入口进入,则会把这些航班的旅客拦住的(直接丢弃)。如果允许,则让这些允许的航班的旅客带着机票,从trunk入口进入。当然,如果旅客没有机票,入口处会让你买票的(打上端口的PVID)。
    如果候机室的入口是hybrid类型的,其情形和trunk类型时是一样的。
  2. 旅客走出候机室
    现在,我们已经知道,在候机室(交换机)内部,所有旅客都是带有机票的了(交换机内部的所有数据帧都带有VLAN标签,以方便统一处理)。在候机室内部,旅客们怎么知道各自该往哪里走呢?
    旅客们抬头一看,发现了一块巨大的电子公告牌,上面显示着某某航班从哪个出口登机,登机时间是什么,等等(这个电子公告牌对应的是交换机内部的MAC表。MAC表指明了目的MAC地址和到达此目的MAC地址的出口的对应关系。登机时间可理解为MAC表项的老化时间)。所以,旅客们就知道各自要怎么找到出口了。
    如果出口是access出口,那么,出口通往的就是飞机了(对应地,access口一般接的是计算机)。access出口会把旅客的机票收下来(剥掉VLAN标签),把旅客送到飞机上(对应地,是access出口剥去VLAN标签,把VLAN帧变成标准的以太网帧,发送给计算机)。
    如果出口是trunk出口,那么,这个trunk出口连接的是另外一个候机室。如果旅客的机票与trunk出口的默认航班(端口缺省PVID)一致,他就知道:我的航班的出口是这个trunk出口,所以,trunk出口会把旅客的机票没收下来(剥掉VLAN标签),旅客也就可以放心地出去了。
    如果机票与trunk出口的默认航班(缺省PVID)不一致,他就知道,我的航班不在本trunk出口,是在后面出口检票,所以trunk出口会让旅客带着机票出去(相当于把VLAN帧透传出去)。
    如果出口是hybrid口,它兼有access出口和trunk出口的特点,即某些航班的旅客可以在hybrid出口处检票后登机,某些航班的旅客可以带着机票走向另外的入口。当hybrid出口设置了对某些航班进行检票(untagged)时,它就相当于access出口的功能,收下旅客的机票(剥离VLAN标签),再把旅客送出去。当hybrid出口设置了对某些航班不进行检票(tagged)时,旅客可以带着机票走出去,这时候hybrid出口又相当trunk出口。

你可能感兴趣的:(CCIE)