vlan详解
VLAN(Vitual Local Area Network,虚拟局域网)是将物理网络划分成多个逻辑局域网的技术。一个VLAN就是一个广播域,亦即一个逻辑子网,在其内的站点可位于不同物理LAN上,但站点间像在同一个普通局域网上那样自由通信而不受物理位置的限制。利用VLAN技术,网络管理者可根据实际应用需要,在二层交换机上把同一物理局域网中的用户逻辑划分成不同广播域,使具有相同需求或业务的用户处于同一广播域,不同需求或业务的用户处于不同的广播域。
在未设置任何Vlan的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口。配置Vlan后,当交换机属于某Vlan的一个端口收到广播帧后,为保证同属一个Vlan的所有主机都收到该广播帧,交换机必须按照如下原则转发:
1) 发送给本交换机中同一个Vlan中的其它端口;
2) 发送给本交换机的包含该Vlan的所有汇聚链路,以便其它交换机上同一Vlan的端口也发送该帧。
图5给出交换机上创建两个Vlan后,主机发出的广播帧被转发的示例。为便于说明,以红、蓝两色识别不同Vlan(实际使用中以Vlan ID来区分)。其中端口1、2属于红色Vlan,端口3、4属于蓝色Vlan。
Vlan分割广播域
可见,从PC1发出的广播帧仅被转发给同一Vlan内的其他端口,即同属于红色Vlan的端口2,而不会再转发给属于蓝色Vlan的端口。就这样,Vlan通过限制广播帧转发的范围分割广播域,进而改善网络效率和安全性。
Vlan可理解为在逻辑上将一台交换机分割成数台虚拟交换机,且这些虚拟交换机互不相通。Vlan是广播域,而通常两个广播域间由路由器连接,广播域间来往的数据帧由路由器中继。因此,Vlan间的通信也需要路由器(或三层交换机)提供中继服务,即“Vlan间路由”。在Vlan之间配置路由器,使Vlan内部流量仍通过原来Vlan的内部二层网络进行,从一个Vlan到另一Vlan的通信流量通过路由进行三层转发,转发到目的网络后再通过二层交换网络把数据帧最终发送给目的主机。路由器不转发以太网广播帧,故Vlan间配置的路由器不会改变划分Vlan所达到的隔离广播的目的。
VLAN帧格式
* 以太网V2 MAC帧格式
以太网MAC帧格式有两种标准,即DIX(DEC,Intel,Xerox) Ethernet V2标准(RFC894)和IEEE 802.3标准。图6所示的是常用的以太网V2的MAC帧格式(事实标准):
以太网V2的MAC帧格式
以太网帧在链路层传输,故源和目的MAC地址又称链路层地址(link layer address),也称L2地址、二层地址或硬件地址。
类型(Type)字段表明上层使用什么协议。常用协议类型值如表1所示:
表1 常用协议类型值
数据(Data)字段为帧承载的数据内容,由一个上层协议的协议数据单元PDU构成。数据长度在46~1500之间,若上层协议数据单元长度少于46 字节,则必须填充该字段的其余部分,以保证MAC帧长度不小于64字节。
可见,一个以太网帧长范围为64~1518字节。
注意:发包工具如Testcenter设置发包长度时会将CRC考虑在内,即帧长包含CRC的4字节;而抓包工具如Wireshark显示的帧长不包括CRC字段。
* 带VLAN的以太网帧格式
IEEE 802.1Q(俗称Dot One Q)标准在以太网数据帧中“发送源MAC地址”与“类别域(Type Field)”之间附加4字节的Vlan识别信息(标签),如图7所示:
插入Vlan后的以太网帧格式
TPID(Tag Protocol Identifier,标签协议标识)值规定为0x8100。设备缺省采用协议规定的TPID值,交换机通过TPID来确定数据帧是否附加基于IEEE802.1Q的VLAN信息。
TCI(Tag Control Information,标签控制信息)字段分为Pri、CFI和VLAN三部分。Pri表示报文优先级(也称1p优先级、COS或1q优先级),CFI(Canonical Format Indicator)标识MAC地址在不同传输介质中是否以标准格式进行封装,通常为0(标准格式)。Vlan ID标识该报文所属的VLAN编号,取值范围为 0~4095,一般0和4095保留(中兴设备Vid=0表示priority-tagged帧)。
在交换网络环境中,以太网帧有两种格式:有些帧未附加四字节标签,称为未标记帧(ungtagged frame),有些帧附加四字节标签,称为带标记帧(tagged frame)。
在基于端口划分的Vlan中,每个802.1Q端口都会分配一个默认的Vlan ID,称为PVID(Port Vlan ID)或端口默认Vlan ID(default Vid),CISCO称之为native Vlan。端口接收到的所有untagged帧都认为属于端口默认Vlan ID,并在端口默认Vlan ID内转发。
注意,插入或剥除Vlan标签时均会对数据帧重新计算CRC。
VLAN链路与端口
* VLAN链路类型
Vlan内的链路可分为:
接入链路(Access Link,或称访问链路):将没有也无法识别Vlan标签的设备(如用户主机)连接到配置Vlan的交换机端口。它只能传送不带标签(untagged)的以太网帧,且只与一个Vlan关联。
汇聚链路(Trunk Link,或称干道链路、中继链路) :连接两个能够识别Vlan标签的设备(如交换机),可传输发往多个Vlan的带标签(tagged)帧,可与多个Vlan相关联。
混合链路(Hybrid Link):既可传送不带标签的帧,也可传送带标签的帧。但对于一个特定Vlan,传送的所有帧必须类型相同,即对于一个Vlan,传送的帧要么不带标签,要么携带相同标签。
显示三种链路的区别:
Vlan链路类型
规划企业级网络时,很有可能会遇到隶属同一部门的用户分散在同一座建筑中不同楼层的情况,此时可能需要考虑如何跨越多台交换机设置Vlan。如在下图所示网络中,通过汇聚链路将不同楼层的四台主机设置为同一Vlan。
汇聚链路
如图所示,PC1发送的数据帧从SW1经过汇聚链路到达SW2时,帧内附加了表示属于红色Vlan的标签。SW2收到数据帧后,检查Vlan标签发现该帧属于红色Vlan,故剥除标签后根据需要(单播、广播或组播)将复原的数据帧转发给其他属于红色Vlan的端口。
若不使用汇聚链路,则需在两台交换机上各设一个红、蓝Vlan专用接口并用网线互联(接入链路)。但建筑楼层间的纵向布线比较麻烦,一般不能由基层管理人员随意进行。而且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口越多,端口利用率低,也限制网络的扩展。
汇聚链路承载多个Vlan的数据,负载较重,故汇聚链路必须支持100Mbps以上的传输速度。
默认情况下,汇聚链路会转发交换机上所有Vlan的数据,亦即汇聚链路同时属于交换机上所有的Vlan。实际应用中可能并不需要转发所有Vlan数据,因此为减轻交换机负载并减少带宽浪费,用户可设定限制能经由汇聚链路互联的Vlan。
VLAN端口类型
根据对Vlan帧的识别情况,交换机端口的类型(模式)分为Access端口、Trunk端口及Hybrid端口。
Access端口:交换机上连接用户主机的端口,只能连接接入链路。Access端口只属于一个Vlan,且仅向该Vlan转发数据帧。该Vlan的Vid = 端口PVid,故Vlan内所有端口都处于untagged状态。Access端口在从主机接收帧时,给帧加上Tag标签;在向主机发送帧时,将帧中的Tag标签剥掉。
Trunk端口:交换机上与其他交换机或路由器连接的端口,只能连接汇聚链路。Trunk端口允许多个Vlan的带标签帧通过,在收发帧时保留Tag标签。在它所属的这些Vlan中,对于Vid = 端口PVid的Vlan,它处于Untagged port状态;对于Vid ≠ 端口PVid的Vlan,它处于Tagged port状态。
Hybrid端口:交换机上既可连接用户主机又可连接其他交换机的端口,它既可连接接入链路又可连接汇聚链路。Hybrid 端口允许多个Vlan的帧通过,并可在出端口方向将某些Vlan帧的Tag标签剥掉。
注意,Access、Trunk和Hybrid端口是厂家对某种端口的称谓,并非IEEE802.1Q协议标准定义。
Access端口只属于一个Vlan,PVid就是其所在Vlan,故不用设置;Trunk和Hybrid端口属于多个Vlan,故需要设置PVid(缺省为1)。若设置端口PVid,则当端口收到不带Vlan Tag的数据帧时,对该帧加上Tag标记(Vid设置为端口所属的默认Vlan编号)并转发到属于PVid的端口;当端口发送Vlan Tag的数据帧时,若收帧的Vlan Tag和端口PVid相同,剥除Vlan Tag后再发送该帧。
Hybrid端口与Trunk端口在接收数据时处理方法相同,区别在于发送数据时:Hybrid端口允许多个Vlan的数据帧发送时不带标签,而Trunk端口只允许默认Vlan的数据帧发送时不带标签。在同一交换机上Hybrid端口和Trunk端口不能并存,实际使用中可用Hybrid代替Trunk。
本Hybrid端口的PVid和相连的对端交换机Hybrid端口的PVid必须一致。
由于端口类型不同,交换机对帧的处理过程也不同。下表根据不同的端口类型分别介绍。
表2 不同端口类型的Vlan帧处理方式
VLAN端口状态
交换机端口可配置为属于某个或某几个Vlan。端口状态指其在某个Vlan中的状态,该状态决定端口接收到tagged或untagged帧时对该帧的处理方式。针对每个Vlan,端口有两种状态,即Tagged port和Untagged port。同一端口可根据不同Vlan ID设置Tagged或Untagged。
当为该端口配置其所属的Vlan时,若该Vlan的Vid = 端口PVid时,则端口在此Vlan中处于Untagged port状态;若Vid ≠ 端口PVid,则端口在此Vlan中处于Tagged port状态。
PVid只与报文的入口方向有关,对于进入交换机的无标签帧会打上进入端口的PVid标签;交换机内每个数据帧都带标签。Tagged/Untagged只与帧的出口方向有关,对于出端口为Untagged port的,转发帧时要剥除帧中的标签,否则保留标签。
VLAN划分方式
接入链路可事先设定,称为“静态Vlan”;也可根据所连主机而动态设定,称为“动态Vlan”。
* 静态VLAN
静态Vlan又称基于端口的Vlan (Port Based Vlan),即明确指定各端口属于哪个Vlan,如下图所示。
基于端口划分Vlan
根据端口划分Vlan因其简单而最为常用。但由于需要逐个端口地指定Vlan,因此当网络中主机数目较多时,操作就变得非常烦杂。并且,主机每次变更所连端口时,必须同时更改该端口所属Vlan的设定——这显然不适合那些需要频繁改变拓扑结构的网络。
* 动态VLAN
动态Vlan主要有:
基于MAC地址的Vlan (MAC Based Vlan)
基于子网的Vlan (Subnet Based Vlan)
基于用户的Vlan(User Based Vlan)
……
其差异主要在于根据OSI参照模型哪一层的信息决定端口所属的Vlan。决定端口所属Vlan时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。
网络设备厂商可能使用私有协议实现基于子网和基于用户的Vlan,因此不同厂商的设备间互联时可能出现兼容性问题。
* 基于MAC地址的VLAN
基于MAC地址的Vlan,就是通过查询并记录端口所连主机网卡的MAC地址来决定端口所属Vlan。假定MAC-A地址被交换机设定为属于Vlan10,则不论MAC-A地址的主机连在交换机哪个端口,该端口都会被划分到Vlan10内,如下图所示。
基于MAC地址划分Vlan
基于MAC地址划分Vlan,在初始设定时必须调查所连接的所有主机MAC地址并加以记录,工作量很大。而且这种划分方法会降低交换机执行效率,因为交换机每个端口都可能存在很多个Vlan组的成员,这样就无法限制广播包。此外,若主机(如笔记本电脑)经常更换网卡,则不得不经常更改Vlan设定。
* 基于子网的VLAN
基于子网的Vlan,就是通过所连主机的IP地址来决定端口所属Vlan。同一子网的所有数据帧属于同一Vlan,从而将同一子网内的用户划分在一个Vlan内(与路由器相似)。即使主机MAC地址改变,只要其IP地址不变,就仍可加入原先设定的Vlan,如下图所示。
基于子网划分Vlan
基于IP子网划分Vlan可按传输协议划分网段,有利于针对具体应用的服务来组织用户。再者,用户可在网络内部自由移动而不用重新配置主机,尤其是使用TCP/IP的用户。
这种方法的缺点是效率,因为检查每个数据包的网络层地址比较费时。同时由于一个端口也可能存在多个Vlan的成员,对广播报文也无法有效抑制。
* 基于用户的VLAN
基于用户的Vlan,则是根据交换机各端口所连的主机上当前登录的用户,来决定该端口属于哪个Vlan。用户识别信息一般是主机操作系统登录的用户,如Windows域中使用的用户名。
* 基于协议的VLAN
基于协议的Vlan将物理网络划分为基于协议的逻辑Vlan。在端口接收帧时,它的Vlan由帧中的协议类型决定。例如,IP、IPX和Appletalk可能有各自独立的Vlan,IP 广播帧只被送到IP Vlan中的所有端口。
* 基于组播地址的VLAN
基于组播地址的Vlan由组播分组动态创建的。如每个组播分组对应一个不同Vlan,保证组播数据帧只被那些连接到相应组播分组成员的端口接收到。这种划分方式效率不高,不适合局域网。但因其将Vlan扩大至广域网,故灵活性更高,且易于通过路由器进行扩展。
* 基于策略的VLAN
基于策略的Vlan是Vlan的最基本的定义。每个输入(无标签)帧都在策略数据库查看,该数据库决定该帧所属的Vlan。如建立公司管理人员之间往来电子邮件的特别Vlan策略,以便不在其他地方被看见。
这种划分方式最为灵活,具有自动配置能力,能够把相关用户连成一体,在逻辑划分上称为“关系网络”。网络管理员只需在网管软件中确定划分Vlan的规则(或属性),则站点加入网络时将会被“感知”,并被自动包含进正确的Vlan中。同时,也可自动识别和跟踪站点的移动和改变。
基于VLAN的转发与路由
Vlan内通信的主机同属一个广播域,主机之间的流量通过二层网络直接转发;Vlan间通信的主机位于不同广播域,主机无法直接通过ARP广播请求到对方的地址,此时必须借助三层路由器来完成通信。
路由器可视为各个Vlan的网关,因此通过路由器来互相通信的主机必须知道路由器的存在及其在本Vlan上的接口地址(默认网关)。在主机上配置默认网关后,对于跨Vlan的通信,主机会自动寻找默认网关,并把报文交给默认网关转发而不是直接发给目的主机。
可见,当报文的目的MAC地址是网关地址(路由器或三层交换机MAC地址)时,该报文为三层报文。
VLAN扩展
* VLAN Translation
Vlan转换又称Vlan翻译或Vlan映射,它允许用于边缘接入的不同以太网交换机的Vlan ID设置互相重叠,通过以太网交换机的Vlan转换功能,将不同交换机的重复Vlan ID修改为不同的Vlan ID,并从上联端口发送出去,从而在二层核心交换机中也实现用户的隔离,以简化边缘接入交换机的设置。
例如PON系统中,通过Vlan转换模式,OLT或ONU设备将上行以太网帧中用户自行添加的Vlan标签(Vid可能不是其独用的,可能在同一个系统内有其他用户使用相同的Vid)转换为唯一的网络侧Vlan标签;并在下行方向执行相反的操作。
* QinQ
随着以太网技术在运营商网络中的大量部署(城域以太网),利用IEEE 802.1Q Vlan对用户进行隔离和标识受到很大限制。因为802.1Q定义的Vlan标签域仅能表示4096个Vlan(12比特),对于城域网中需要标识的大量用户捉襟见肘,于是QinQ技术应运而生。
QinQ(也称Stacked Vlan即Vlan堆叠或Double Vlan)技术出自IEEE 802.1ad标准,是对基于IEEE 802.1Q封装的隧道协议的形象称呼。QinQ实现在原有802.1Q Vlan标签(内层标签,也称Customer Vlan,CVlan)之外再增加一个Vlan标签(外层标签,也称Service Provider Vlan,SVlan),外层公网标签将内层用户私网标签屏蔽起来,使报文携带两层Vlan标签穿越运营商骨干网络(公网),到达用户另一端网络边缘交换机时再剥除外层公网Vlan标签,还原出内层用户标签便于用户进行下一步的通信。可见,QinQ技术不仅可有效拓展Vlan的数量空间(多达4096×4096个),而且可提供简单的二层VPN(虚拟专用网)隧道,特别适合以三层交换机为骨干的小型企业网或小型局域网。
* QinQ报文格式
QinQ报文封装格式如下图所示。公网传输时内层Vlan标签为用户私网Vlan标签,外层Vlan标签由运营商分配给用户。私网Vlan标签被透明传输,故不同的用户Vlan标签可重复使用,只需外层Vlan标签在公网上唯一即可。
QinQ报文封装格式
某些厂商将QinQ报文外层标签的TPID值设置为0x9100或其他数值。为和这些设备互通,用户应可自行配置TPID值,使发送到公网中的QinQ帧携带的TPID值与其他厂商相同。由于TPID字段在以太网帧中所处位置与不带Vlan标签的帧中协议类型(Type)字段所处位置相同,为避免造成网络中数据帧转发和接收混乱,不允许用户将TPID值配置为常用协议类型值。
* QinQ封装方式
QinQ封装是指如何把单层Q报文转换为双层Q报文, 封装主要发生在城域网面向用户的UPE设备,一般在交换式的端口上进行。根据不同的封装依据,QinQ可分为基于端口的QinQ、基于流的QinQ和路由子接口上进行的特殊QinQ封装。
* 基于端口的QinQ封装
基于端口封装指进入一个端口的所有流量全部封装一个外层Vlan。当端口收到报文时,无论报文是否带有Vlan标签,交换机都会为该报文附加本端口缺省Vlan的标签。若接收报文已带标签,则该报文成为双标签报文;若接收报文不带标签(untagged),则该报文将携带本端口缺省Vlan标签。基于端口的QinQ封装容易实现,故业界主流厂家的三层交换机都支持。其缺点是外层Vlan标签封装方式死板,当多个不同用户或用户网络以不同的Vlan接入到同一个端口时无法区分用户,即无法在一个端口上根据业务种类选择多个外层标签,从而很难有效支持单端口多业务的灵活运营。
此外,基于端口封装需增加链路,组网复杂,不利于扩展维护。
* 基于流的QinQ封装
基于流的QinQ封装先对进入端口的数据进行流分类,然后对于不同的数据流选择是否插入外层标签以及插入何种外层标签,因此也称灵活QinQ(Smart QinQ或Selective QinQ)。当一些数据流(如组播)出口不添加外层标签,或单个端口根据内层Vlan添加不同的外层标签时,就需要用到灵活QinQ。
灵活QinQ根据流分类方法又可细分如下:
1) 根据报文中的Vlan区间分流
当同一用户的不同业务使用不同Vlan时,可根据Vlan区间进行分流,如PC上网Vlan范围是101~200,IPTV的Vlan范围是201~300,VoIP的Vlan范围是301~400。面向用户的设备收到用户数据后,根据Vlan范围,对上网业务插入100的外层标签,对IPTV插入300的外层标签,对VoIP插入500的外层标签。
2) 根据报文中的Vid+Priority分流
不同业务有不同优先级,当同一用户的多种业务使用相同Vlan时,可根据不同业务的优先级进行区分,然后插入不同的外层标签。
3) 根据报文的目的IP地址分流
当同一台PC既包括上网业务又包括语音业务时,不同业务目的IP不同,可利用ACL对目的IP地址进行分流,然后插入不同的外层标签。
4) 根据ETYPE进行QinQ封装
当同一用户既包括PPPOE的上网业务,又包括IPOE的IPTV业务时,这些终端都通过一个Vlan上行,可根据PPPoE(0x8863/8864)和IPoE(0x0800)报文不同的ETYPE协议号作为QinQ的分流依据。
当前灵活QinQ主要应用于运营商接入网络。在运营商网络中给接入用户分配一个Vlan,以便于追踪问题和防止不同用户间互访,用外层标签区分用户应用;或在接入环境中用外层标签区分不同的接入地点,用内外两层标签唯一标识一个接入用户。
* 路由子接口QinQ封装
QinQ封装一般在交换式端口上直接进行,但特殊情况下QinQ也可在路由子接口上进行封装。
当核心网采用VLL/PWE3透传用户数据时,NPE设备上的路由子接口可根据用户Vlan ID封装外层Vlan,通过外层Vlan接入VLL/PWE3。可通过一个QinQ Stacking子接口来透传多个标识用户的Vlan ID。
该方式也是基于流的QinQ封装,但QinQ Stacking子接口只能与L2VPN(PWE3/VLL/VPLS)结合起来才有意义,不支持三层转发功能。
* QinQ报文转发
三层交换机连接用户网络的端口称为Customer端口,连接骨干网的端口称为Uplink端口,骨干网的边缘接入设备称为PE(Provider Edge)。一般用户侧网络通过Trunk方式接入骨干边缘交换机,骨干网络内Uplink端口通过Trunk方式对称连接。
在通过QinQ实现简单二层VPN的过程中,报文按如下方式转发:
QinQ报文转发过程
当报文从用户侧网络1到达运营商骨干网边缘交换机Switch A的Customer端口时,无论该报文是否携带标签,Switch A都基于端口PVid对其强行插入外层标签(Vid=10)。在骨干网络内部,报文沿着Vlan10的Trunk端口传播,用户私网标签在骨干网络中保持透明状态,直至到达边缘交换机Switch B。
Switch B发现与用户网络2相连的端口为Customer端口,按照传统的802.1Q协议剥离外层标签,恢复成用户的原始报文,转发到用户侧网络2,从而实现一个简单二层VPN功能。PE接入点用外层SVlan隔离,安全且节省Vlan。对用户的管理可基于外层SVlan和内层CVlan唯一定位。
易知,若Vlan映射为C→S+C,则为Vlan堆叠;若Vlan映射为C→S,则为Vlan转换。
注意,MAC地址学习、生成树等均基于外层SVlan。
* QinQ优缺点
利用QinQ提供接入业务时具有以下优点:
Ÿ可解决日益紧缺的公网Vlan资源问题;
Ÿ用户可规划自己的私网Vlan ID,不会与公网Vlan ID冲突;
Ÿ提供一种较为简单的二层VPN解决方案;
Ÿ使用户网络具有较高的独立性,在服务提供商升级网络时,用户网络不必更改原有配置;
Ÿ可按不同层次的Vlan ID区分不同的业务,以区别提供不同的管道、QoS策略;
ŸQinQ技术上可多层嵌套,仅受以太网帧长度的限制,具有很好的扩充性。
但随着用户数量的增加,QinQ模型也会带来可扩展性问题。某些用户可能希望在分支机构间传输数据时可携带自己的Vlan ID,这就使采用QinQ技术的管理服务提供商面临以下两个问题:第一个客户的Vlan标识可能与其他客户冲突;服务提供商将受到客户可使用标识数量的严重限制。若允许用户按他们自己的方式使用各自的Vlan ID空间,则核心网络仍存在4096个Vlan的限制。
* PVlan(Cisco)
PVLAN(Private VLAN,私有VLAN)即所有工作站在同一个子网中,但工作站只能与自己的默认网关通信。PVlan采用两层Vlan隔离技术,只有上层Vlan全局可见,下层Vlan互相隔离。若将交换机的每个端口划为一个(下层)Vlan,则实现所有端口的隔离。
每个Private Vlan包含两种Vlan:主Vlan(Primary Vlan)和辅助Vlan(Secondary Vlan),后者又分为隔离Vlan(Isolated Vlan)和团体Vlan(Community Vlan)。
PVlan通信范围:
主Vlan可与所有与之关联的隔离Vlan、团体Vlan通信。不同主Vlan之间的任何端口都不能互相通信(此处“互相通信”指二层连通性)。
团体Vlan可与处于相同团体Vlan内的团体端口通信,也可与PVlan中的混杂端口通信。 每个PVlan可有多个团体Vlan。
隔离Vlan不可与处于相同隔离Vlan内的其它隔离端口通信,只可与混杂端口通信。每个PVlan中只能有一个隔离Vlan。
相应地,交换机物理端口有三种类型:
隔离端口(Isolated port),与用户相连,属于隔离Vlan。只可与混杂端口通信,彼此不能通信。
团体端口(Community port),属于团体Vlan。不仅可与混杂端口通信,也可与同一团体中的其它物理端口进行通信。
混杂端口(Promiscuous port),与路由器或三层交换机接口相连,属于主Vlan。它收到的流量可发往隔离端口和团体端口。
PVlan端口类型
如图,port1、port2和port3三者之间互相隔离,不允许通信,只能与port6通信;port4和port5间可以通信,也可以与port6通信。所有端口只需分配共享一个IP地址。
PVlan的应用对于保证接入网络的数据通信安全性非常有效。所有用户都接入PVlan,每个用户一个Vlan,用户间二层互相隔离。用户只需与自己的默认网关连接,一个PVlan不需要多个Vlan和IP子网就可提供具备二层数据通信安全性的连接。PVlan功能可保证同一个Vlan中的各个端口相互之间不能通信,但可穿过Trunk端口。这样即使同一Vlan中的用户,相互之间也不会受到广播的影响。
对于上层交换机来说,可认为下层交换机中只有几个主Vlan,而不必关心主Vlan 中的端口实际所属的Vlan,从而简化配置并节省Vlan 资源。一个主Vlan中包含的所有Private Vlan处于同一个子网中,可节省子网数目和IP 地址资源。
PVlan通常用于企业内部网,用来阻断连接到某些接口或接口组的网络设备间的相互通信,但却允许与默认网关进行通信。尽管各设备处于不同的PVlan中,但可使用相同的IP子网。
* SuperVlan
不同Vlan间通信需要通过三层路由进行转发,而每个子网(Vlan)都需要设置一个路由地址。每分配一个子网,就有三个IP地址(子网的网络号、广播地址和默认网关)被占用。同时,这种地址分配的固有约束也严重降低编址的灵活性,使许多闲置地址被浪费。为提高IP地址的利用率,Super VLAN超网应运而生。
SuperVlan(又称VLAN Aggregation,即Vlan聚合)把多个子Vlan(SubVlan)聚合成一个SuperVlan,这些SubVlan共同使用一个IP子网和默认网关。通过VLAN聚合可使所有在同一子网上的终端用户通过统一的路由(同一子网网段地址)而使用不同的广播域。
利用SuperVlan技术,只需为SuperVlan分配一个子网地址,并为每个用户或子网建立一个SubVlan。所有SubVlan可灵活分配SuperVlan子网中的IP地址,使用SuperVlan的默认网关。每个SubVlan都是一个独立的广播域,保证不同用户之间的隔离;SubVlan间通信需要通过SuperVlan进行路由。由于各个SubVlan不需要真正的子网网段,可有效提高IP利用率。这样的子网可分配足够小且扩展方便,无需重新定义子网大小。
SuperVlan内的主机使用同一个网段的地址,共用同一个上行网关。即使是属于不同SubVlan的主机,由于其地址同属一个子网,设备会认为它们是二层互通的,会做二层转发,而不会送网关进行三层转发。而实际上SubVlan间在二层互相隔离,因此需要采用ARP代理(Proxy)来实现SubVlan间的互通。Subvlan之间以及和外部通信通过ARP代理,所有Subvlan内主机发送的ARP请求都由SuperVlan的MAC地址作为ARP应答。
注意,SuperVlan并不包含物理端口,可将其视作逻辑的三层概念——若干SubVlan的集合。对交换芯片来说SuperVlan是透明的,仍按芯片中的Vlan进行转发。在基于端口的Vlan中,二层通信时,无论收发都不会有针对SuperVlan的报文。即进入SubVlan设备的数据帧会附加该SubVlan的标签,从Trunk端口发出时也不会改为SuperVlan的标签。
* ARP Proxy原理
一个物理网络子网(Subnet)中的源主机向另一个物理网络子网中的目的主机发送ARP request请求,和源主机直连的网关用自己接口的MAC地址代替目的主机回复ARP reply应答,该过程称为ARP代理。
ARP代理的基本过程如下:
源主机向另一物理网络的子网中的目的主机发ARP请求;
与源主机网络相连的网关已使能ARP代理功能,若存在到达目的主机的正常路由,则代替目的主机应答自己接口的MAC地址;
源主机向目的主机发送的IP报文都发给路由器;
路由器对报文做正常的IP路由转发;
发往目的主机的IP报文通过网络,最终到达目的主机。
* SubVlan间的三层互通
【例】SuperVlan 2包含SubVlan 21和SubVlan 22,分析PC1与PC2的互通过程(假设PC1的ARP表中无PC2对应表项)。IP地址和MAC地址如下图所示。
用ARP代理实现不同SubVlan间的三层互通
PC1要发送报文给PC2,则将PC2的IP地址(1.1.1.3)与自己所在网段1.1.1.0 /24进行比较。由于SubVlan 21和SubVlan 22同属一个SuperVlan所在子网,于是发广播ARP请求PC2的MAC地址;而PC2并不在SubVlan 21的广播域内,无法接收到该ARP请求。当PC1在二层发出的ARP请求在其广播域内没有回应时,交换机网关运行ARP代理,查找路由表并发现下一跳为直连路由接口(SubVlan 22),则在该接口发送一个ARP请求PC2的MAC地址;得到PC2回应后,就把网关自己的MAC地址GwMac当作PC2的MAC地址(实际是Mac2 )回给PC1 (不同设备实现略有不同)。之后,主机PC1要发给PC2的报文都发给交换机,由三层交换机做正常的三层转发。
PC2回送给PC1的报文转发过程和上述的PC1到PC2的报文流程类似。
* SuperVlan与外部的三层通信
【例】交换机1上配置SuperVlan 2、SubVlan 21和22,并有一个正常的Vlan 10。交换机2上配置两个正常的Vlan 10和20。假设SuperVlan 2下SubVlan 21中的PC1想访问交换机2下连的PC3,分析其上下行报文的转发流程。
Super VLAN与外部的三层通信图例
* 报文上行流程
PC1 (1.1.1.2/24)要访问PC3(1.1.3.2/24),因为IP地址不在一个网段,故PC1发送ARP请求给自己的网关,请求网关的MAC地址。SubVlan21收到ARP报文后,将其上送CPU。CPU查找SubVlan和SuperVlan的对应关系,知道应回应SuperVlan2的MAC地址(不同设备实现可能略有不同),且知道回应报文应从SubVlan21发送给PC1。
PC1学到网关MAC地址后,开始发送目的MAC为SuperVlan2、目的IP为1.1.3.2的报文。SubVlan21收到报文后,检测目的MAC后得知应进行三层转发,于是查找转发路由表,发现下一跳地址为1.1.2.2,出接口为Vlan10,并通过ARP表项和MAC表项确定出端口,把报文发送给交换机2,交换机2根据正常的转发流程把报文发送给PC3。
* 报文下行流程
PC3回应的报文,在交换机2上按正常的转发流程到达交换机1,此时交换机1查找转发路由表表项,发现目的地址为PC1(1.1.1.2),对应的出接口为SuperVlan2。但SuperVlan2未包含任何端口,那么如何确定报文的出端口呢?
仔细查看可发现,尽管转发路由表中1.1.1.2/24网段的出接口为SuperVlan2,但在ARP表中IP地址1.1.1.2对应的出接口却为SubVlan 21。而芯片真正用来构建转发表时所用的出接口应是ARP表中对应的SubVlan接口,通过在SubVlan下查找目的MAC地址即可找到正确的出端口。于是,PC3的回应报文就可正常到达PC1。
注意,若位于一个SuperVlan内的计算机运行基于广播或组播的高层应用,则这些应用被限制在SubVlan内。因此,应仔细分析高层应用,在没有基于组播或广播的应用时才可使用SuperVlan。