VLAN技术详解

    科普搬运 刘工 3899次浏览 0个评论

    VLAN简介

    定义

    VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。

    目的

    以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。在这种情况下出现了VLAN技术,这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。

    图1 VLAN示意图

    图1是一个典型的VLAN应用组网图。两台交换机放置在不同的地点,比如写字楼的不同楼层。每台交换机分别连接两台计算机,他们分别属于两个不同的VLAN,比如不同的企业客户。

    说人话:就是如果一台8口交换机划分了两个VLAN,1-4口加入一个VLAN,5-8口加入另一个VLAN,那个我们就得到了两台逻辑上独立的交换机。如图1,当VLAN跨交换机配置时就需要配置VLAN透传

    优点

    • 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
    • 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
    • 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
    • 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。

    VLAN原理描述

    VLAN标签定义和作用

    要使交换机能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。如图2所示。

    图2 IEEE 802.1Q封装的VLAN数据帧格式

    VLAN标签包含4个字段,各字段含义如表1所示:

    表1 VLAN标签各字段含义

    字段长度含义取值
    TPID2ByteTag Protocol Identifier(标签协议标识符),表示数据帧类型。表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
    各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。
    PRI3bitPriority,表示数据帧的802.1p优先级。取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧。
    CFI1bitCanonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。
    VID12bitVLAN ID,表示该数据帧所属VLAN的编号VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094.

    交换机利用VLAN标签中的VID来识别数据帧所属的VLAN,广播帧只在同一VLAN内转发,这就将广播域限制在一个VLAN内。

    常用设备收发数据帧的VLAN标签情况

    在一个VLAN交换网络中,以太网帧主要有以下两种形式:

    • 有标记帧(Tagged帧):加入了4字节VLAN标签的帧。
    • 无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的帧。

    常用设备中:

    • 用户主机、服务器、Hub、傻瓜交换机只能收发Untagged帧。
    • 交换机、路由器和AC既能收发Tagged帧,也能收发Untagged帧。
    • 语音终端、AP等设备可以同时收发一个Tagged帧和一个Untagged帧。

    为了提高处理效率,交换机内部处理的数据帧一律都是Tagged帧。

    链路类型和接口类型

    交换机内部处理的数据帧一律都带有VLAN标签,而现网中交换机连接的设备有些只会收发Untagged帧,要与这些设备交互,就需要接口能够识别Untagged帧并在收发时给帧添加、剥除VLAN标签。同时,现网中属于同一个VLAN的用户可能会被连接在不同的交换机上,且跨越交换机的VLAN可能不止一个,如果需要用户间的互通,就需要交换机间的接口能够同时识别和发送多个VLAN的数据帧。

    以华为交换机为例,华为定义了Access接口、Trunk接口、Hybrid接口和QinQ接口4种接口类型其中Access接口、Trunk接口和Hybrid接口如图3所示

    图3 链路类型和接口类型示意图

    接口类型

    如图3所示,根据接口连接对象以及对收发数据帧处理的不同,以太网接口分为:

    • Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧,且只能为Untagged帧添加唯一VLAN的Tag。
    • Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。它可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。
    • Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器等)和网络设备(如Hub、傻瓜交换机),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。它可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag(即不剥除Tag)、某些VLAN的帧不带Tag(即剥除Tag)。Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。比如在2:1 VLAN映射中,服务提供商网络的多个VLAN的报文在进入用户网络前,需要剥离外层VLAN Tag,此时Trunk接口不能实现该功能,因为Trunk接口只能使该接口缺省VLAN的报文不带VLAN Tag通过。

    缺省VLAN

    缺省VLAN又称PVID(Port Default VLAN ID)。前面提到,交换机处理的数据帧都带Tag,当交换机收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。它的具体作用是:

    • 当接口接收数据帧时,如果接口收到一个Untagged帧,交换机会根据PVID给此数据帧添加等于PVID的Tag,然后再交给交换机内部处理;如果接口收到一个Tagged帧,交换机则不会再给该帧添加接口上PVID对应的Tag。
    • 当接口发送数据帧时,如果发现此数据帧的Tag的VID值与PVID相同,则交换机会将Tag去掉,然后再从此接口发送出去。

    每个接口都有一个缺省VLAN。缺省情况下,所有接口的缺省VLAN均为VLAN1,但用户可以根据需要进行配置:

    • 对于Access接口,缺省VLAN就是它允许通过的VLAN,修改接口允许通过的VLAN即可更改接口的缺省VLAN。
    • 对于Trunk接口和Hybrid接口,一个接口可以允许多个VLAN通过,但是只能有一个缺省VLAN,修改接口允许通过的VLAN不会更改接口的缺省VLAN。

    不同类型接口添加或剥除VLAN标签的比较

    接口类型对接收不带Tag的报文处理对接收带Tag的报文处理发送帧处理过程
    Access接口接收该报文,并打上缺省的VLAN ID当VLAN ID与缺省VLAN ID相同时,接收该报文。
    当VLAN ID与缺省VLAN ID不同时,丢弃该报文。
    先剥离帧的PVID Tag,然后再发送。
    Trunk接口打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。
    打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。
    当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。
    当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。
    当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。
    当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。
    Hybrid接口打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。
    打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。
    当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。
    当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。
    当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag。

    由上面各类接口添加或剥除VLAN标签的处理过程可见:

    当接收数据帧时:

    • 当接收到不带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收。
    • 当接收到带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收。

    当发送数据帧时:

    • Access接口直接剥离数据帧中的VLAN标签。
    • Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
    • Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。

    因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签,Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag。

    VLAN通讯

    VLAN内互访

    同一VLAN内用户互访(简称VLAN内互访)会经过如下三个环节。

    1,用户主机的报文转发

    源主机在发起通信之前,会将自己的IP与目的主机的IP进行比较,如果两者位于同一网段,会获取目的主机的MAC地址,并将其作为目的MAC地址封装进报文;如果两者位于不同网段,源主机会将报文递交给网关,获取网关的MAC地址,并将其作为目的MAC地址封装进报文。

    2,交换机内部的以太网交换

    交换机会根据接收报文的目的MAC地址+VID以及三层转发标志位来判断是进行二层交换还是进行三层交换:

    • 如果目的MAC地址+VID匹配自己的MAC表且三层转发标志置位,则进行三层交换,会根据报文的目的IP地址查找三层转发表项,如果没有找到会将报文上送CPU,由CPU查找路由表实现三层转发。
    • 如果目的MAC地址+VID匹配自己的MAC表但三层转发标志未置位,则进行二层交换,会直接将报文根据MAC表的出接口发出去。
    • 如果目的MAC地址+VID没有匹配自己的MAC表,则进行二层交换,此时会向所有允许VID通过的接口广播该报文,以获取目的主机的MAC地址。

    3,设备之间(包括交换机与用户主机、交换机与交换机、交换机与其他网络设备)交互时,VLAN标签的添加和剥离交换机内部的以太网交换都是带Tag的,为了与不同设备进行成功交互,交换机需要根据接口的设置添加或剥除Tag。不同接口VLAN标签添加和剥离情况不同。

    同设备VLAN内互访

    如图4所示,用户主机Host_1和Host_2连接在同台交换机上,属于同一VLAN2,且位于相同网段,连接接口均设置为Access接口。(假设Router上还未建立任何转发表项)。

    图4 同设备VLAN内互访

    当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设交换机Switch上还未建立任何转发表项)。

    1. Host_1判断目的IP地址跟自己的IP地址在同一网段,于是发送ARP广播请求报文获取目的主机Host_2的MAC地址,报文目的MAC填写全F,目的IP为Host_2的IP地址10.1.1.3。
    2. 报文到达Switch的接口IF_1,发现是Untagged帧,给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后将报文的源MAC地址+VID与接口的对应关系(1-1-1, 2, IF_1)添加进MAC表。
    3. 根据报文目的MAC地址+VID查找Switch的MAC表,没有找到,于是在所有允许VLAN2通过的接口(本例中接口为IF_2)广播该报文。
    4. Switch的接口IF_2在发出ARP请求报文前,根据接口配置,剥离VID=2的Tag。
    5. Host_2收到该ARP请求报文,将Host_1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP,发现跟自己的相同,就发送ARP响应报文,报文中封装自己的MAC地址2-2-2,目的IP为Host_1的IP地址10.1.1.2。
    6. Switch的接口IF_2收到ARP响应报文后,同样给报文添加VID=2的Tag。
    7. Switch将报文的源MAC地址+VID与接口的对应关系(2-2-2, 2, IF_2)添加进MAC表,然后根据报文的目的MAC地址+VID(1-1-1, 2)查找MAC地址表,由于前面已记录,查找成功,向出接口IF_1转发该ARP响应报文。
    8. Switch向出接口IF_1转发前,同样根据接口配置剥离VID=2的Tag。
    9. Host_1收到Host_2的ARP响应报文,将Host_2的MAC地址和IP地址对应关系记录ARP表。


    后续Host_1与Host_2的互访,由于彼此已学习到对方的MAC地址,报文中的目的MAC地址直接填写对方的MAC地址。此组网场景下,当同一VLAN的用户处于不同网段时,主机将在报文中封装网关的MAC地址,若Switch为二层交换机,用户将不能互访;若Switch为三层交换机,可借助VLANIF技术(需配置主从IP地址)实现互访,其互访原理与“同设备VLAN间互访”原理类似,不再赘述。

    跨设备VLAN内互访

    如图5所示,用户主机Host_1和Host_2连接在不同的交换机上,属于同一个VLAN2,且位于相同网段。为了识别和发送跨越交换机的数据帧,交换机与交换机间通过干道链路连接。

    图5 跨设备VLAN内互访示意图

    当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设交换机Switch_1和Switch_2上还未建立任何转发表项)。

    1. 经过与同设备VLAN内互访的步骤1~2一样的过程后,报文被广播到Switch_1的IF_2接口。
    2. Switch_1的IF_2接口在发出ARP请求报文前,因为接口的PVID=1(缺省值),与报文的VID不相等,直接透传该报文到Switch_2的IF_2接口,不剥除报文的Tag。
    3. Switch_2的IF_2接口收到该报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。
    4. 经过与同设备VLAN内互访的步骤3~6一样的过程后,Switch_2将向其出接口IF_2转发Host_2的ARP响应报文,转发前,因为接口IF_2为Trunk接口且PVID=1(缺省值),与报文的VID不相等,直接透传报文到Switch_1的IF_2接口。
    5. Switch_1的IF_2接口收到Host_2的ARP响应报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。后续处理同同设备VLAN内互访的步骤7~9一样。

    可见,干道链路除可传输多个VLAN的数据帧外,还起到透传VLAN的作用,即干道链路上,数据帧只会转发,不会发生Tag的添加或剥离。此组网场景下,当同一VLAN的用户处于不同网段时,若Switch_1或Switch_2为二层交换机,用户不能互访;若Switch_1或Switch_2为三层交换机,可借助VLANIF技术实现互访,其互访原理与“跨设备VLAN间互访”原理类似,不再赘述。


    喜欢 (1)
    发表我的评论
    取消评论
    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址