• VLAN协议


    VLAN协议

    来源 https://zhuanlan.zhihu.com/p/151853557

    我们知道一个企业随着业务发展网络中的计算机越来越多,所有的主机在一个二层的以太网中会造成以下问题:

    • 网络中的所有主机属于同一个广播域,容易造成广播报文泛滥,浪费网络带宽,造成链路拥塞;
    • 广播域太大,同一广播域下的主机都可以互相通信,容易带来安全性问题。

    VLAN技术可以隔离广播域,缩小广播域的范围,从而解决了上述问题。

    正文

    1:什么是VLAN?

    VLAN(Virtual Local Area Network)即虚拟局域网,可以将一个物理局域网在逻辑上划分成多个广播域,也就是多个VLAN。

    VLAN作用:

    VLAN技术部署在数据链路层,用于隔离二层流量。

    VLAN的通信原则:

    • 同一个VLAN内的主机共享同一个广播域,它们之间可以直接进行二层通信;
    • VLAN间的主机属于不同的广播域,不能直接实现二层互通。

    VLAN优点:

    既能够隔离广播域,又能够提升网络的安全性。

    如上图所示:

    原本属于同一广播域的主机被划分到了两个VLAN中,即,VLAN2和VLAN3。由于PC1和PC4同属于VLAN3,因此二层可以互相通信;PC1和PC2属于不同的VLAN,不能够二层通信。

    2:VLAN报文格式:
    带有VLAN的数据帧比正常以太网数据帧多了Tag字段,VLAN Tag长4个字节,直接添加在以太网帧头中。

    Tag字段组成:

    1、TPID:Tag Protocol Identifier,2字节,固定取值,0x8100,是IEEE定义的新类型,表明这是一个携带802.1Q标签的帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

    2、TCI:Tag Control Information,2字节。帧的控制信息,详细说明如下:

    • Priority:3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。当交换机阻塞时,优先发送优先级高的数据帧。
    • CFI:Canonical Format Indicator,1比特。CFI表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。
    • VLAN Identifier:VLAN ID,12比特,可配置的VLAN ID取值范围为0~4095,但是0和4095在协议中规定为保留的VLAN ID,不能给用户使用。

    在Tag字段中,主要关注的就是VLAN Identifier, 这个字段表示该数据帧带的vlan id是多少。

    3:PVID
    PVID即Port VLAN ID,代表端口的缺省VLAN。

    为什么需要PVID?

    交换机从对端设备收到的帧有可能是Untagged的数据帧,但所有以太网帧在交换机中都是以Tagged的形式来被处理和转发的,因此交换机必须给端口收到的Untagged数据帧添加上Tag。

    为了实现此目的,必须为交换机配置端口的缺省VLAN。

    交换机收到Untagged数据帧的处理方式:

    当该端口收到Untagged数据帧时,交换机将给它加上该缺省VLAN的VLAN Tag。

    缺省情况下,交换机每个端口的PVID是1。

    如下图所示:通过dis int g0/0/3可以查看交换机二层端口的PVID为1。

    4:VLAN的划分
    我们知道vlan可以隔离广播域,那么如何去划分vlan呢?下面介绍下5种vlan的划分方法,重点关注基于端口的VLAN划分方式。
    • 基于端口划分:根据交换机的端口编号来划分VLAN。
      通过为交换机的每个端口配置不同的PVID,来将不同端口划分到VLAN中。初始情况下,交换机的端口处于VLAN1中。
      优点:此方法配置简单,但是当主机移动位置时,需要重新配置VLAN。
    • 基于MAC地址划分:根据主机网卡的MAC地址划分VLAN。
      此划分方法需要网络管理员提前配置网络中的主机MAC地址和VLAN ID的映射关系。如果交换机收到不带标签的数据帧,会查找之前配置的MAC地址和VLAN映射表,根据数据帧中携带的MAC地址来添加相应的VLAN标签。
      优点:在使用此方法配置VLAN时,即使主机移动位置也不需要重新配置VLAN。
    • 基于IP子网划分:交换机在收到不带标签的数据帧时,根据报文携带的IP地址给数据帧添加VLAN标签。
    • 基于协议划分:根据数据帧的协议类型(或协议族类型)、封装格式来分配VLAN ID。
      网络管理员需要首先配置协议类型和VLAN ID之间的映射关系。
    • 基于策略划分:使用几个条件的组合来分配VLAN标签。这些条件包括IP子网、端口和IP地址等。只有当所有条件都匹配时,交换机才为数据帧添加VLAN标签。另外,针对每一条策略都是需要手工配置的。
    5:VLAN工作原理:
    在介绍VLAN工作原理之前,我们先看下VLAN的2种链路类型和3种端口类型。

     

    2种链路类型

    VLAN链路分为两种类型:Access链路和Trunk链路。

    • 接入链路(Access Link):连接用户主机和交换机的链路称为接入链路。如本例所示,图中主机和交换机之间的链路都是接入链路。
    • 干道链路(Trunk Link):连接交换机和交换机的链路称为干道链路。如本例所示,图中交换机之间的链路都是干道链路。干道链路上通过的帧一般为带Tag的VLAN帧。

     

    3种端口类型

    学习了vlan的概念,我们知道网络中的数据帧要么是没有加上VLAN标记的标准以太网帧(untagged frame),要么是带有VLAN标记的以太网帧(tagged frame)。

    那么不同类型的接口是如何发送和接收带有vlan标记的以太网数据帧的呢?

    Access接口:

    Access端口是交换机上用来连接用户主机的端口,它只能连接接入链路,并且只能允许唯一的VLAN ID通过本端口。

    Access端口收发数据帧的规则如下:

    • 如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。
      如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
    • Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。Access端口发往对端设备的以太网帧永远是不带标签的帧。

    Trunk端口:

    Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过。

    Trunk端口收发数据帧的规则如下:

    • 当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
      接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文。否则丢弃该报文。
    • 端口发送数据帧时,当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时,去掉Tag,发送该报文。
      当VLAN ID与端口的PVID不同,且是该端口允许通过的VLAN ID时,保持原有Tag,发送该报文。

    Hybrid端口:

    Access端口发往其他设备的报文,都是Untagged数据帧,而Trunk端口仅在一种特定情况下才能发出untagged数据帧,其它情况发出的都是Tagged数据帧。

    Hybrid端口是交换机上既可以连接用户主机,又可以连接其他交换机的端口。

    Hybrid端口既可以连接接入链路又可以连接干道链路。Hybrid端口允许多个VLAN的帧通过,并可以在出端口方向将某些VLAN帧的Tag剥掉。华为设备默认的端口类型是Hybrid。

    Hybrid端口收发数据帧的规则如下:

    • 当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
      当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
    • Hybrid端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过。如果允许通过,则可以通过命令配置发送时是否携带Tag。

     

    VLAN的工作原理:

    下一章节我们一起介绍下VLAN的工作原理:

    结合VLAN的链路类型和端口类型,根据PC2和PC3互相通信的过程介绍下VLAN的工作原理。

    阶段一:PC2 ARP广播获取PC3的MAC地址

    1、我们知道主机间是基于MAC地址进行二层通信的,PC2和PC3由于是首次通信,PC2不知道PC3的MAC地址,因此会在广播域中发送ARP广播报文,询问有谁知道PC3的MAC地址。

    2、LSW1从接口g0/0/2 收到PC2发送的ARP广播报文,由于接口g0/0/2是access接口,端口属于vlan 2,首先会在MAC地址表项中记录下PC2 mac地址、所属VLAN2、g0/0/2三者的对应关系,然后会给数据帧打上vlan2的标签,并在vlan 2中泛洪该广播报文。

    3、LSW1将带有vlan2标签的广播报文发送给LSW2。

    4、LSW2从接口g0/0/1 收到PC2发送的ARP广播报文,首先在MAC地址表项中记录下PC2 mac地址、VLAN2、g0/0/1三者的对应关系,并在vlan 2中泛洪该广播报文。

    5、LSW2在发送广播报文给PC3时会剥除vlan2的标签。

    6、PC3收到从LSW2发送的ARP广播报文,会进行ARP单播回应。

    回应的报文转发流程和上述类型,不做讲解。

    阶段二:数据转发过程

    1、PC2发送源MAC是PC2,目的MAC是PC3的以太网数据帧。

    2、LSW1从接口g0/0/2 收到PC2发送的数据帧,由于接口g0/0/2是access接口,端口属于vlan 2,首先会给数据帧打上vlan2的标签,然后在对应vlan中根据目的mac查找mac地址表,可以找到PC3 MAC地址对应的接口是g0/0/1。

    3、LSW1的g0/0/1端口类型是trunk,放通了vlan 2 和3,因此LSW1将带有vlan2标签的数据帧从g0/0/1发送给LSW2。

    4、LSW1从接口g0/0/1 收到PC2发送的数据帧,由于g0/0/1端口类型是trunk,放通了vlan 2 和3,因此接收该数据帧,在对应vlan中根据目的mac查找mac地址表,可以找到PC3 MAC地址对应的接口是g0/0/2。

    5、LSW2的g0/0/1端口类型是access接口,端口属于vlan 2,因此LSW2剥除vlan2标签将数据帧从g0/0/2发送给PC3。

    6、PC3收到数据帧查看目的mac是发送给自己的接收下该数据帧。

    6: VLAN配置:

    创建VLAN:

    VLAN ID的取值范围是1到4094。在交换机上划分VLAN时,需要首先创建VLAN。在交换机上执行vlan <vlan-id>命令,创建VLAN。

    例如:执行vlan 10命令后,就创建了VLAN 10,并进入了VLAN 10视图。

    如需创建多个VLAN:

    • 可以在交换机上执行vlan batch { vlan-id1 [ to vlan-id2 ] }命令,以创建多个连续的VLAN。
    • 也可以执行vlan batch { vlan-id1 vlan-id2 }命令,创建多个不连续的VLAN,VLAN号之间需要有空格。

    VLAN端口类型的配置:

    华为系列交换机上,默认的端口类型是hybrid。

    配置端口类型的命令是port link-type <type>,type可以配置为Access,Trunk或Hybrid。

    配置Access

    1、使用port link-type access命令修改端口的类型为Access;

    2、添加端口到VLAN:可以使用两种方法把端口加入到VLAN。

    • 第一种方法是进入到VLAN视图,执行port <interface>命令,把端口加入VLAN。
    • 第二种方法是进入到接口视图,执行port default <vlan-id>命令,把端口加入VLAN。vlan-id是指端口要加入的VLAN。

    配置Trunk

    1、使用port link-type trunk命令修改端口的类型为Trunk;

    2、配置Trunk端口允许哪些VLAN的数据帧通过。执行port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }命令,可以配置端口允许的VLAN,all表示允许所有VLAN的数据帧通过。

    3、执行port trunk pvid vlan vlan-id命令,可以修改Trunk端口的PVID。

    修改Trunk端口的PVID之后,需要注意:

    • 缺省VLAN不一定是端口允许通过的VLAN。只有使用命令port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }允许缺省VLAN数据通过,才能转发缺省VLAN的数据帧。
    • 交换机的所有端口默认允许VLAN1的数据通过。

    配置Hybrid

    1、port link-type hybrid命令的作用是将端口的类型配置为Hybrid。默认情况下,交换机的端口类型是Hybrid。因此,只有在把Access口或Trunk口配置成Hybrid时,才需要执行此命令。

    2、port hybrid tagged vlan{ { vlan-id1 [ to vlan-id2 ] } | all }命令用来配置允许哪些VLAN的数据帧以Tagged方式通过该端口。

    3、port hybrid untagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }命令用来配置允许哪些VLAN的数据帧以Untagged方式通过该端口。

    配置检查

    执行display vlan命令,可以确认端口是否已经加入到VLAN中。

    7:实战——vlan配置实例

    如图所示:PC1和PC4属于vlan3,PC2和PC3属于vlan2。通过配置实现PC1和PC4能够互通,PC1和PC2相互隔离;

    配置如下:

    [LSW1]
    #
    sysname LSW1
    #
    vlan batch 2 to 3
    #
    interface GigabitEthernet0/0/1
    port link-type trunk
    port trunk allow-pass vlan 2 to 3
    #
    interface GigabitEthernet0/0/2
    port link-type access
    port default vlan 2
    #
    interface GigabitEthernet0/0/3
    port link-type access
    port default vlan 3

    [LSW2]
    #
    sysname LSW2
    #
    vlan batch 2 to 3
    #
    interface GigabitEthernet0/0/1
    port link-type trunk
    port trunk allow-pass vlan 2 to 3
    #
    interface GigabitEthernet0/0/2
    port link-type access
    port default vlan 2
    #
    interface GigabitEthernet0/0/3
    port link-type access
    port default vlan 3
    #

    在LSW1上查看:

    在PC1上ping测试PC4和PC2,可以发现相同vlan之间可以通信,不同vlan间不可以通信。

    分别在LSW1的G0/0/3和G0/0/1抓取报文:

    在G0/0/3抓取的报文是不带标签的

    G0/0/1抓取报文是带标签的:

    根据type取值0x8100,表明这是一个携带802.1Q标签的帧。可以得到以下信息:

      • Priority为0,优先级最低。
      • CFI的值为0表明是以太网
      • VLAN ID值为3,表示这是一个带有vlan3标签的数据帧。

    ============== End

  • 相关阅读:
    2013-2014-2(复变函数56)
    2015-2016-1(实变函数56)
    2014-2015-2(常微分方程64, 数学分析提高64)
    2015-2016-2(点集拓扑56, 点集拓扑56)
    2016-2017-2(点集拓扑56, 点集拓扑56)
    2016-2017-1(实变函数56, 点集拓扑56)
    2017-2018-1(实变函数56, 点集拓扑56)
    2013-2014 指导2014届毕业生8名(48)
    2015-2016 指导2016届毕业生8名(48)
    2014-2015 指导2015届毕业生8名(48)
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/13935650.html
Copyright © 2020-2023  润新知