Super-vlan技术详解

在传统的VLAN间路由中,我们需要每个VLAN配置一个IP地址,作为此VLAN的网关,以实现三层路由;此方法中,每个VLAN都是一个子网,子网号不能为主机所用,此子网需要分配一个IP地址作为网关,还有一个IP地址作为定向广播地址,如果VLAN中的主机不需要那么多IP地址,那此子网内的剩余IP地址,也不能分配给其它VLAN的主机使用,造成极大的浪费。就算是使用VLSM分配IP地址,每个VLAN也至少浪费三个IP地址,如果有几十或上百个VLAN,那会浪费大量的IP地址。在此这种情况下,为节约IP地址,提出Super VLAN的概念。

Super VLAN又称VLAN聚合,其原理是一个Super VLAN包含多个Sub VLAN,每个Sub VLAN是一个广播域,不同Sub VLAN之间二层相互隔离。Super VLAN可以配置三层接口,Sub VLAN不能配置三层接口。 当Sub VLAN内的用户需要进行三层通信时,将使用Super VLAN三层接口的IP地址作为网关地址,通过ARP 代理可以进行ARP 请求和响应报文的转发与处理,从而实现了二层隔离端口间的三层互通 。这样多个Sub VLAN共用一个IP网段,从而节省了IP地址资源。
Super VLAN只建立三层接口,不包含物理端口,可以看到成是一个逻辑的三层接口,若干sub-VLAN的集合。

sub-VLAN 则只包含物理端口,但不能建立三层VLAN虚接口.它的三层通信依靠super-vlan来实现。

与原来的VLAN间路由不通,原本的三层交换可以根据各自的网关进行,但是现在所有的sub-vlan都属于同一个网段,则就处于不同的sub-vlan通信时,会认在同一个网段,会做二层转发,而不会进行三层转发,但是二层转发是被VLAN隔离了,这就造成sub-vlan间不能通信。解决方法就是代理ARP。

代理ARP的工作原理

源主机认为目标主机与自己在同一网段,广播发送ARP请求。

与源主机网络相连的网关已经使能ARP PROXY功能,如果存在到达目的主机的正常路由,则代替目的主机REPLY自己接口的MAC地址;

源主机向目的主机发送的IP报文都发给了路由器;

路由器对报文做正常的IP路由转发;

发往目的主机的IP报文通过网络,最终到达目的主机。

三层通信原理
PC1:192.168.10.10 MAC=PC1MAC与PC2:192.168.10.20 MAC=PC2MAC的通信过程:

首先PC1与PC2通信,通过对方IP和自己的子网掩码进行与运算,发现在同一个网段,所以广播发送ARP请求(DMC=FFF:FFF:FFF,SMAC=PC1MAC,ARP字段中 SMAC=PC1MAC,SIP=192.168.10.10 DMAC=000:000:000 DIP=192.168.10.20),SW2收到后学习SMAC(PC1MAC),同时向VLAN10 里广播,SW3收到后也学习SMAC(PC1MAC),同时向VLAN10里广播,并抄送一份给接口板的ARP模块,经过接口板ARP的分析,发现它来自SubVLAN,就将此ARP请求报文交给主控板ARP模块处理。主控板ARP首先在ARP表中查找ARP请求报文中的目的IP地址,假如找到对应项,看看目的IP地址是不是在SubVLAN10中,是就丢弃该报文,不是就将SuperVLAN5的MAC地址应答给PC1,完成代理工作(DMC=PC1MAC,SMAC=VLAN5MAC,ARP字段SMAC=VLAN5MAC,SIP=192.168.10.10,DMAC=PC1MAC,DIP=192.168.10.20)。 假如在ARP表中没有找到对应项,主控板ARP就查VLAN聚合与VLAN的逻辑映射表,知道Sub-VLAN10属于Super-VLAN5,将此报文中的源MAC地址替换成SuperVLAN5的MAC地址,VLAN ID的值由10分别替换成属于SuperVLAN3的其它Sub-VLAN的值,之后逐个向属于此SuperVLAN的其它Sub-VLAN(本例中为Sub-VLAN20)广播,并同时将此请求报文中的信息学习加入动态ARP表中。此后若收到PC2的ARP应答报文(其目的MAC地址为Super-VLAN5的MAC地址),主控板ARP模块发现此ARP应答报文的VLAN ID是Sub-VLAN20,即PC2位于Sub-VLAN20中,主控板CPU根据应答报文中的信息,搜索ARP表中的各项,找到对应项后把SuperVLAN5对应的MAC地址通过ARP应答报文回给PC1(若PC2位于Sub-VLAN10,PC2响应的ARP应答报文直接通过二层转发回给PC1,交换机就不再应答)。同时在接口板上将SubVLAN20中的响应报文信息记录在ARP表及FIB表中,以后再收到来自主机X的报文就可以通过查询FIB表进行三层转发了。二层通信原理

因为super-vlan并不包含物理端口,是一个逻辑的三层接口,所以实际上不会有带有super-vlan的VLAN标记的报文。就算是有super-vlan的VLAN标记的报文过来,但由于trunk上不允许super vlan的VLAN标记的报文通过。所以二层通信与原来的通信是一样的。

与外部PC通信原理

PC1=192.168.1.10/24 MAC=PC1MAC PC3=1.1.1.10/24 MAC=PC3MAC

首先PC1与PC3通信,通过目标IP与PC1的子网掩码进行与运算,发现不在同一个网段,则应该将数据发送给网关,在ARP缓存表查询网关MAC(192.168.10.1的MAC),若没有,则发送ARP请求,与前面一样。得到网关MAC后,将数据发给网关,网关收到后,拆二层封装,以目标IP查询FIB表,发现应从e1/0/3发出,同时从该接口发送ARP请求请求PC3MAC,PC3收到后回复,数据包重新封装从该接口发出。当PC3回复数据时,正常转发到e1/0/3,查询FIB表,发现目标主机PC1对应的出接口为super-vlan5,但是VLAN5中没有包含任何物理端口,那么就不能转发出去,但是尽管在FIB表中192.168.1.0/24出接口为super-VLAN5,但是在ARP表中IP地址192.168.1.10对应的出接口却为sub-VLAN 10,真正用来构建转发表时所用的出接口应该是ARP表中对应的sub-VLAN接口,这样就可以通过在sub-VLAN下查找目的MAC找到正确的出端口。于是,PC3的回应报文就能正常到达主机PC1了。

H3C配置命令:

<h3c> system-view       //进入系统视图
[H3C] vlan 5        //进入VLAN视图
[H3C-vlan5] supervlan    //配置当前VLAN为Super VLAN 
[H3C-vlan5] vlan 10     //创建Sub VLAN
[H3C-vlan10] port ethernet1/0/1   //向Sub VLAN中添加以太网端口 。port命令只适用于将access端口加入sub vlan。如果需要将trunk端口和hybrid端口加入sub vlan,只能通过以太网端口视图下的port trunk permit vlan和port hybrid vlan命令实现

[H3C-vlan10] vlan 20
[H3C-vlan20] port ethernet1/0/2 

[H3C-vlan20] vlan 5    //进入Super VLAN的VLAN视图
[H3C-vlan5] subvlan 10 20 //创建Super VLAN与Sub VLAN间的映射关系
[H3C-vlan10] interface vlan 10      
[H3C-Vlan-interface10]ip address 192.168.10.1 24

思科交换机VLAN配置

switch# configure       //进入全局配置模式 
switch(config)# vlan vlan-id   //进入 VLAN配置模式 
switch(config-vlan)# supervlan    //打开 SuperVLAN的功能 

缺省情况下,Super VLAN功能是关闭的,使用 no supervlan 可以关闭已经打开得 supervlan 的功能。

switch(config-vlan)# subvlan vlan-id-list  //指定若干个 sub vlan 并把它们加入super vlan 中。 
switch(config-vlan)# exit        //退出到全局模式

设置 Super VLAN 的虚拟接口 

switch# configure       //进入配置模式 
switch(config)# interface vlan vlan-id  //进入 SVI 模式 
switch(config-vlan)# ip address ip mask  //设置虚拟接口的 IP 地址 
switch(config-vlan)# end        //回到特权模式 

打开ARP代理功能,默认是开启的
switch# configure        //进入配置模式 
switch(config)# vlan vlan-id //进入 VLAN模式 switch(config-vlan)# proxy-arp  //打开 VLAN的 ARP 代理功能

注意事项:

Trunk端口会过滤掉super-vlan。

Super VLAN不能做为其它Super VLAN的Sub VLAN。

Super VLAN不能当正常的1Q vlan来使用。

VLan 1不能作为SuperVLAN。

Sub VLAN不能配置为网络接口,不能配置IP地址。

SVLAN不能使用VRRP,不支持多播。

基于Super VLAN接口的ACL和QOS配置不对Sub VLAN生效。

每一个Super VLAN可以和127个Sub VLAN建立映射关系。系统最多允许建立1024个Sub VLAN。