VLAN(Virtual Local Area Network),是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的技术。

以一个网络接口为主设备,可以创建多个虚拟网络接口,称为子接口(802.1q子接口),主设备称为主接口或父接口;每个子接口对应一个vlan id;
当主接口接收报文时,如果为802.1q报文,则根据vlan id将报文分发的对应的子接口;
当子接口需要发送报文时,子接口在报文中添加802.1q头,然后交由其主接口实际完成发送。

mac vlan是其中一个特例:当主接口接收报文时,根据报文的源mac地址将报文分发的对应的子接口;当子接口需要发送报文时,交由其主接口实际完成发送。
在openert中mac vlan的地址表是通过netifd的ubus接口添加和删除的。

一. 必要性

VLAN技术允许网络管理者将一个物理的LAN逻辑地划分成不同的广播域(或称虚拟LAN,即VLAN),每一个VLAN都包含一组有着相同需求的计算机,由于VLAN是逻辑地而不是物理地划分,所以同一个VLAN内的各个计算机无须被放置在同一个物理空间里,即这些计算机不一定属于同一个物理LAN网段。

VLAN的优势在于VLAN内部的广播和单播流量不会被转发到其它VLAN中,从而有助于控制网络流量、减少设备投资、简化网络管理、提高网络安全性。

在一个大的局域网内划分成不同的组来进行管理而不相互干扰(VLAN在DHCP广泛使用之前已经出现)。

局域网覆盖了一个广播(或组播)包能够达到的范围,即广播域。

二. 使用

一个VLAN可以是某台交换机的一个端口子集,也可以包含多个交换机的端口。

映射端口到虚拟局域网的思想是,有一串互连的交换机,然后定义一个从VLAN(假定VLAN有多个)到交换机端口的映射关系。一个简单的例子是,在某个交换机,它的一些端口位于VLAN A中,另一些端口位于虚拟局域网B中。你怎样确定一个VLAN的范围呢?以下是几个简单策略:

1)该交换机始终让端口1~k位于一个虚拟局域网上,而让端口k+1~2k位于另外一个虚拟局域网上。

2)可以为交换机配置端口/VLAN之间的映射关系。

3)可以为交换机配置一张VLAN/MAC地址的映射表。

4)可以为交换机配置VLAN/IP前缀之间的映射关系。

5)可以为交换机配置一张VLAN/协议之间的映射关系表。

三.帧格式

在两个交换机之间的链路上,包可能属于VLAN1,也可能属于VLAN2。IEEE提出了一个方案,给包增加一个附加信息(称为VLAN标识,VLAN tag),以便交换机能够分清这个包应该发给哪个VLAN。但是如果站点收到一个带VLAN标识的包,它可能混淆,所以交换机必须区分哪些端口连的是交换机,哪些端口连的是站点。交换机在把带VLAN标识的包发给连到非交换机的端口时,需要先出去包中的VLAN标识。

VLAN标识占两个字节,其中3位用于表示优先级,12位用于表示VLAN的ID,1位用于表示地址是否属于规范格式。通过使用以太网类型81-00来确定存在VLAN标识。

这四个字节的802.1Q标签头包含了2个字节的标签协议标识(TPID)和2个字节的标签控制信息(TCI)。

TPID(Tag ProtocolIdentifier)是IEEE定义的新的类型,表明这是一个加了802.1Q标签的帧。TPID包含了一个固定的值0x8100。

TCI是包含的是帧的控制信息,它包含了下面的一些元素:

Priority:这3 位指明帧的优先级。一共有8种优先级,0-7。IEEE 802.1Q标准使用这三位信息。

Canonical Format Indicator( CFI ):CFI值为0说明是规范格式,1为非规范格式。它被用在令牌环/源路由FDDI介质访问方法中来指示封装帧中所带地址的比特次序信息。

VLAN Identified( VLAN ID ):这是一个12位的域,指明VLAN的ID,取值范围为0~4095,一共4096个,由于0 和4095 为协议保留取值,所以VLAN ID 的取值范围为1~4094。每个支持802.1Q协议的交换机发送出来的数据包都会包含这个域,以指明自己属于哪一个VLAN。

在一个交换网络环境中,以太网的帧有两种格式:有些帧是没有加上这四个字节标志的,称为未标记的帧(ungtagged frame),有些帧加上了这四个字节的标志,称为带有标记的帧(tagged frame)。

注:在AP上配置VLAN接口后,该vlan口网段内发送的数据包带tag,直接与PC相连ping,PC可收到vlan包(AP vlan包为广播包),但PC回复的包不带tag,vlan口接收不到。但vlan倚赖的实接口可接收到包(不带tag)。

四. 配置

vlan的配置工具是vconfig。

Usage: vconfig COMMAND [OPTIONS]
Create and remove virtual ethernet devices
add IFACE VLAN_ID
rem VLAN_NAME
set_flag IFACE | VLAN_QOS
set_egress_map VLAN_NAME SKB_PRIO VLAN_QOS
set_ingress_map VLAN_NAME SKB_PRIO VLAN_QOS
set_name_type NAME_TYPE

使用示例:

)    在eth0接口上配置两个VLAN:
vconfig add eth0
vconfig add eth0
) 设置VLAN的REORDER_HDR参数,默认就行
vconfig set_flag eth0.
vconfig set_flag eth0.
) 配置网络信息
ifconfig eth0 0.0.0.0
ifconfig eth0. 172.16.1.8 netmask 255.255.255.0 up
ifcon fig eth0. 172.16.2.8 netmask 255.255.255.0 up
) 删除VLAN
vconfig rem eth0.
vconfig rem eth0.

参考:

1. 网络互连:网桥、路由器、交换机和互连协议。

2. VLAN帧格式

3. 802.1q vlan原理

802.1q VLAN的更多相关文章

  1. vlan 以及 Linux实现的IEEE 802.1Q VLAN

    vlan 以及 Linux实现的IEEE 802.1Q VLAN Vlan的概念 VLAN技术介绍 VLANVLAN概述 以太网是一种基于CSMA/CD(Carrier Sense Multiple ...

  2. 802.1Q VLAN技术原理

    文章出处:http://hi.baidu.com/x278384/item/d56b0edfd4f56a4eddf9be79 在数据通信和宽带接入设备里,只要涉及到二层技术的,就会遇到VLAN.而且, ...

  3. 管理型交换机IEEE 802.1Q VLAN设置应用实例

    转载标注: IEEE802.1Q 我粗略理解为对交换机入口规则和出口规则设置,入口打上VID,设置从哪些口可以出去,并且是否带标签. 一 VLAN的概念 VLAN(Virtual Local Area ...

  4. 如何在centos上配置802.1Q VLAN标记,linux单网卡多vlan多网段Ip配置案例

    介绍 VLAN使将大型网络分成较小且易于管理的网络成为可能.802.1Q是所有供应商都在其网络设备中实施的标准.某些交换机能够将多个VLAN分配给单个网络端口.使用此功能,您可以将多个VLAN分配给单 ...

  5. (四)802.1Q VLAN

  6. 网络工程知识(二)VLAN的基础和配置:802.1q帧;Access、Trunk、Hybrid接口工作模式过程与配置;VLANIF的小实验

    介绍-VLAN VLAN(Virtual Local Area Network)即虚拟局域网,工作在数据链路层. 交换机将通过:接口.MAC.基于子网.协议划分(IPv4和IPv6).基于策略的方式划 ...

  7. Linux实现的IEEE 802.q VLAN

    本文转载自: http://blog.chinaunix.net/uid-20786208-id-4291059.html Technorati 标签: Linux VLAN   ---------- ...

  8. 【vlan-trunk和802.1q子接口配置】

    根据项目需求,搭建好拓扑图如下: 配置sw1的g1/0/3的/trunk,把g1/0/1和g1/0/2分别加入vlan 10 和 vlan 20 配置sw1的g1/0/3的/trunk,把g1/0/1 ...

  9. VLAN-3-VLAN Trunk:ISL和802.1Q

      (1)ISL和802.1Q概念       通过使用VLAN Trunk链路,设备可以通过一条链路发送去往多个vlan的流量.为了知道数据帧属于哪个vlan,发送方会添加原始以太网数据帧的头部,这 ...

随机推荐

  1. js getAttribute getAttributeNode

    getAttribute():返回属性值,是一个文本字符串 getAttributeNode("属性名"):返回属性节点,是一个对象 <p id="bj" ...

  2. 老毛桃pe装机工具一键还原系统

    系统崩溃后,很多菜鸟朋友会六神无主,不知接下来怎么办.如果是老手,已经屡见不鲜了,因为只需一键还原系统就可以恢复到原来的工作状态.下面不妨跟小编一起继续看看怎么一键还原系统.  ①制作一个老毛桃win ...

  3. std::copy 和 std::back_inserter

    #define print_vector(v1) \ for(auto iter = v1.begin();iter != v1.end();iter++) \ cout<<*iter&l ...

  4. HDUOJ---hello Kiki

    Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. eclipse 垃圾回收器,内存释放

    http://zhangrong-0825-163-com.iteye.com/blog/7334071.如何在eclipse里修改web工程的访问路径,步骤如下: 点击web工程——>选择pr ...

  6. SecureCRT 详细使用教程和技巧

    SecureCRT 常用技巧 0.在secureCRT里切换不同的窗口:ctrl+tab.    复制:[ctrl] + [shift] + c    粘贴:[ctrl] + [shift] + v  ...

  7. Ubuntu 10.04 安装流程

    ubuntu 10.04 安装流程   需安装libxrender-dev才能跑html5           来自为知笔记(Wiz)

  8. 未能找到类型集或命名空间名称 "xxxxxx" (是否缺少using 指令或引用?)

    “未能找到类型或命名空间名称XXXX”,以往遇到这种情况第一时间想到就是没有引用需要的dll. 但今天我反复检查了好几次,还是没有解决问题.我注意到除了错误信息,还有几个警告信息“未能解析引用的程序集 ...

  9. iOS网络框架 AFNetworking

    -(void)GetActivationUser{ NSString *url = @"http://app.xxxx.com/music/search?key=%E9%AC%BC%E5%9 ...

  10. django web 笔记

    安装 django  pip install django 创建虚拟环境  python -m venv  testenvironment 进入虚拟环境: testenvironment\Script ...