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. HDUOJ----4006The kth great number(最小堆...)

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

  2. 几道比较难的SQL题

    上条记录和下一条记录 在展示博客文章时,在文章底部需要展示上一篇文章和下一篇文章,文章的排序当然是按照时间排序的. 选定下一条时可以用limit 1来实现,选取上一条时可以倒序limit 1实现 (S ...

  3. XP和Win 7双系统安装说明和注意事项

    安装前说明: 1.先装XP,再装Windows 7,最好不要反过来,不然XP不会把Windows 7的启动管理器给覆盖掉,会麻烦些.总之遵循“旧版本到新版本”安装原则. 2.如果分区不够大,请用以下软 ...

  4. DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000) [转]

    一.错误情况 环境:win7+iis7.0 DirectoryEntry配置IIS7出现如下错误 或者是 下面一段代码在IIS6.0下运转正常,但IIS7.0下运转会出错: System.Direct ...

  5. iOS “[App] if we're in the real pre-commit handler we can't actually add any new fences due

    最近运行APP,发现了这个问题,本着宁可错看,不可放过的原则,上stackoverFlow学习了一下: 链接:http://stackoverflow.com/questions/38458170/i ...

  6. js 去掉前后空格

    前后去空格 return str.replace(/(^\s*)|(\s*$)/g, ""); 全部去空格 $("#panelbody").text().rep ...

  7. 怎么使用 ab.exe 测试多个url。 how to use ab.exe test many url

    from a commandline in windows: for /F %q in (list.txt) DO ab -n 1000 https://test.com/search?%q   I ...

  8. ASP.NET Web API 中 特性路由(Attribute Routing) 的重名问题

    刚才忘了说了,在控制器名重名的情况下,特性路由是不生效的.不然的话就可以利用特性路由解决同名的问题了. 而且这种不生效是真的不生效,不会提示任何错误,重名或者什么的,直接会报告404,所以也是个坑.

  9. 关于VS中的调试信息输出

    有时候一些项目的调试信息不方便输出到界面中,比如ASP.NET或者WPF之类的 可以使用Debug.WriteLine()等方法输出到"输出"窗口,不过"输出" ...

  10. Hypothesis Testing

    Hypothesis Testing What's Hypothesis Testing(假设检验) Hypothesis testing is the statistical assessment ...