1.定位:VLAN,即虚拟局域网(Virtual Local Area Network),一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。VLAN是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。

2.原理:VLAN在以太网帧的基础上增加了VLAN头,用VLAN ID把用户划分为更小的工作组,从而限制不同工作组间的用户互访。VLAN的本质是分割广播域。

标准有:802.10    802.1Q

早期的局域网LAN技术基于总线型结构,它存在以下几个问题:

  • 若某时刻有多个节点同时试图发送消息,则它们将产生冲突。

  • 从任意节点发出的消息都会被发送到其他所有节点,形成广播。

  • 所有主机共享一条传输通道,无法控制网络中的信息安全。

这种网络构成了一个冲突域,网络中计算机数量越多冲突越严重,网络效率越低。同时,该网络也是一个广播域,当网络中发送信息的计算机数量越多时,广播流量将会耗费大量带宽。

因此,传统网络不仅面临冲突域和广播域两大难题,而且无法保障传输信息的安全。

为了扩展传统LAN,以接入更多计算机,同时避免冲突的恶化,出现了网桥和二层交换机,它们能有效隔离冲突域。

网桥和交换机采用交换方式将来自入端口的信息转发到出端口上,克服了共享介质上的访问冲突问题,从而将冲突域缩小到端口级。采用交换机进行组网,通过二层快速交换解决了冲突域问题,但是广播域和信息安全问题依旧存在。

为减少广播,需要在没有互访需求的主机之间进行隔离。路由器是基于IP地址信息来选择路由的,其连接两个网段时可以有效抑制广播报文的转发,但成本较高。因此人们设想在物理局域网上构建多个逻辑局域网,即VLAN。

VLAN技术将广播报文限制在一个VLAN内,使得同一VLAN内的主机之间可以直接相互通信,而不同VLAN间的主机则不能直接通信,提高了网络的安全性。

3.优点:

1)灵活,降低成本:

VLAN技术的出现,使得管理员根据实际应用需求,把同一物理局域网内的不同用户在逻辑上划分成不同的广播域,每一个VLAN都与物理上形成的LAN有着相同的属性。由于它是从逻辑上划分,而不是从物理上划分,

所以同一个VLAN内的各个工作站没有限制在同一个物理范围中,即这些工作站可以在不同物理LAN网段。

2)避免广播风暴,提高带宽利用率

同一个VLAN中的广播只有VLAN中的成员才能听到,而不会传输到其他的VLAN中去,这样可以很好的控制不必要的广播风暴的产生;

3)增强局域网的安全性

网络管理员可以通过配置VLAN之间的路由来全面管理企业内部不同管理单元之间的信息互访,增强网络的安全性。

4.VLAN的帧格式

IEEE 802.1Q标准对传统Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag,形成了VLAN的帧格式。

802.1Q Tag包含4个字段,其含义如下:

  • Type

    长度为16比特,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

  • PRI

    Priority,长度为3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高。用于当设备阻塞时,优先发送优先级高的数据帧。

  • CFI

    Canonical Format Indicator,长度为1比特,表示MAC地址是否是经典格式。

  • VID

    VLAN ID,长度为12比特,表示该帧所属的VLAN。

5.Vlan端口类型

1)接入(access)端口

接入端口只能属于某单一一个VLAN,它只能承载某一个VLAN的流量。流量只以本机格式(native formats)接收和发送,不会带有VLAN标记(tagging)。

到达某个访问端口的任何数据,只是简单地被假定属于那个端口所分配的 VLAN。因此,如果某个访问端口接收到带有标记的数据包,比如带有IEEE 802.1Q标记时,那个数据包将只是被丢弃。

因为访问端口不会查看源地址,所以带有标记的流量只能被中继端口转发和接收。

只允许VLAN ID与端口的PVID(端口缺省的VLAN ID)相同的VLAN通过该端口。

如果该端口收到的对端设备发送的帧是untagged(不带VLAN标签),设备将强制加上该端口的PVID。

Access端口发往对端设备的以太网帧永远是untagged的帧。

在帧被转发到连接访问链路的设备之前,交换机要从帧中删除任何有关VLAN的信息。连接到访问链路的设备不能与VLAN外部的设备进行通信,除非数据包是通过路由转发的。

注:可根据用户主机网卡的MAC地址来划分VLAN。其优点是成员移动方便,缺点是需要预先定义所有成员。

2)干道(trunk)端口

trunk端口能够同时承载多个VLAN的信息,可以使单个端口同时成为多个不同VLAN的一部分。trunk端口上通过的帧一般为带Tag的VLAN帧。

注:交换机中配置成VLAN trunk的有效端口模式:dynamic desirable, trunk (on), and nonegotiate.

6..帧标记

帧标识方法独一无二地给每个帧分配一个用户定义的ID,即“VLAN ID”。

工作原理:接收到帧的每台交换机必须首先识别帧标记中的VLAN ID,然后通过查看过滤表中的信息,它就知道该对帧进行哪些处理。如果接收到帧的交换机有另一条中继链路,帧就从中继链路端口上转发出去。

一旦帧到达了由转发/过滤表决定的、与帧  的VLAN ID相匹配的访问链路的出口,交换机就删除VLAN标识。这样,目的设备就可以接收该帧,而无需去理解它们的VLAN标识。

帧标记与VLAN标识有关,当帧正在穿越交换机结构时,交换机使用帧标记来跟踪所有的帧。

对于所有非标记的流量将要穿越的VLAN,中继端口将被分配一个默认的端口VLAN ID(PVID)。这种VLAN也称为本机(native)VLAN,默认时,它始终是VLAN1(但可以改为任何VLAN号)。

类似地,任何带NULL(没有分配的)VLAN ID的标记或非标记流量,都假定属于有端口默认PVID的VLAN(同样,默认时为VLAN1)。其VLAN ID等于外出端口。默认PVID的数据包将作为非标记流量发送,且只能与VLAN1中的主机或设备进行通信。

其他所有的VLAN流量必须用VLAN标记发送,以便在与此标记相对应的特定VLAN中通信。

7.不同类型端口处理帧的过程

1.VLAN的更多相关文章

  1. Configure a VLAN on top of a team with NetworkManager (nmcli) in RHEL7

    SOLUTION VERIFIED September 13 2016 KB1248793 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  2. Configure a bridge interface over a VLAN tagged bonded interface

    SOLUTION VERIFIED February 5 2014 KB340153 Environment Red Hat Enterprise Linux 6 (All Versions) Red ...

  3. Create a bridge using a tagged vlan (8021.q) interface

    SOLUTION VERIFIED April 27 2013 KB26727 Environment Red Hat Enterprise Linux 5 Red Hat Enterprise Li ...

  4. Configure a VLAN (on top of a bond) with NetworkManager (nmcli) in RHEL7

    not on top of a bond Environment Red Hat Enterprise Linux 7 NetworkManager Issue Need an 802.1q VLAN ...

  5. Set up VLAN (802.1q) tagging on a network interface?

    SOLUTION VERIFIED October 13 2015 KB39674 KB741413 environment Red Hat Enterprise Linux 4 Red Hat En ...

  6. Python黑帽编程 3.4 跨越VLAN

    Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理 ...

  7. CISCO VLAN ACL

    对于cisco VLAN ACL 首先得定义 standard ACL或 extented ACL用于抓取流量 注意这里的抓取流量不是最终的对流量的操作,而是决定什么样的流量用VLAN ACL 来处理 ...

  8. 创建第二个 vlan network "vlan101" - 每天5分钟玩转 OpenStack(96)

    前面我们创建了 vlan100,并部署了 instance,今天将继续创建第二个 vlan network "vlan101". subnet IP 地址为 172.16.101. ...

  9. 创建第一个 vlan network "vlan100" - 每天5分钟玩转 OpenStack(94)

    上一节我们在 ML2 配置中 enable 了 vlan network,今天将创建 vlan100 并讨论底层网络变化. 打开菜单 Admin -> Networks,点击 “Create N ...

  10. 在 ML2 中配置 Vlan Network- 每天5分钟玩转 OpenStack(93)

    上一节我们学习了 Neutron Vlan Network 的原理,今天讨论如何在 ML2 配置中 enable 它. 首先在 /etc/neutron/plugins/ml2/ml2_conf.in ...

随机推荐

  1. 多线程,线程类三种方式,线程调度,线程同步,死锁,线程间的通信,阻塞队列,wait和sleep区别?

    重难点梳理 知识点梳理 学习目标 1.能够知道什么是进程什么是线程(进程和线程的概述,多进程和多线程的意义) 2.能够掌握线程常见API的使用 3.能够理解什么是线程安全问题 4.能够知道什么是锁 5 ...

  2. java混淆工具 字符串加密 程序加密 代码逻辑混淆 防止反编译

    混淆工具使用文档 ht-confusion-project1.0.0 目 录 1.功能介绍... 1 2.安装说明... 3 2.1Window查询jdk版本(点击开始菜单,输入cmd, 输入java ...

  3. Linux 下 swap 分区及作用详解

    我们在安装系统的时候已经建立了 swap 分区.swap 分区是 Linux 系统的交换分区,当内存不够用的时候,我们使用 swap 分区存放内存中暂时不用的数据.也就是说,当内存不够用时,我们使用 ...

  4. SparkSql自定义数据源之读取的实现

    一.sparksql读取数据源的过程 1.spark目前支持读取jdbc,hive,text,orc等类型的数据,如果要想支持hbase或者其他数据源,就必须自定义 2.读取过程 (1)sparksq ...

  5. WebApi 中请求的 JSON 数据字段作为 POST 参数传入

    使用 POST 方式请求 JSON 数据到服务器 WebAPI 接口时需要将 JSON 格式封装成数据模型接收参数.即使参数较少,每个接口仍然需要单独创建模型接收.下面方法实现了将 JSON 参数中的 ...

  6. 利用DES,C#加密,Java解密代码

    //C#加密 /// <summary> /// 进行DES加密. /// </summary> /// <param name="pToEncrypt&quo ...

  7. PAT甲级 Perfect Sequence (25) 记忆化搜索

    题目分析: 意思是要求对于一个给出的数组,我们在其中尽可能多选数字,使得所选数字的max <= min * p,而由于数据量较大直接二层循环不加优化实现是不现实的,由题意得知,对于数字序列的子序 ...

  8. (十)Python装饰器

    装饰器:本质就是函数,功能是为其他函数添加附加功能. 两个原则: 1.不修改被修饰函数的源代码 2.不修改被修饰函数的调用方式 一个栗子 def test(): res = 0 for i in ra ...

  9. ctfshow—pwn10

    格式化字符串漏洞 具体什么是格式化字符串请大家参考如下文章 https://wiki.x10sec.org/pwn/fmtstr/fmtstr_intro/ printf函数格式化输出符号及详细说明 ...

  10. ETCD数据迁移

    ETCD数据迁移 本文阅读对象为想要将Rainbond平台rbd-etcd切换至外部etcd的相关人员. 在k8s master节点创建secret 本文中将要切换的ETCD为根据Rainbond官方 ...