问题描述
在一般的三层交换机中,通常是采用一个 VLAN 对应一个 VLANIF 接口的方式实现广播域之间的互通,这在某些情况下导致 IP 地址的浪费。
1)因为同个 VLAN 对应的子网中,子网号、子网广播地址、子网网关地址不能用作 VLAN 内的主机 IP 地址,
2)且子网中实际接入的主机可能少于可用IP地址数量,空闲的IP地址也会因不能再被其他VLAN使用而被浪费掉;
解决方案
VLAN Aggregation(VLAN 聚合,也称 Super-VLAN):指在同个物理网络内,用多个 VLAN(称为 Sub-VLAN)隔离广播域,并将这些 Sub-VLAN 聚合成一个逻辑的 VLAN(称为Super-VLAN),这些 Sub-VLAN 使用相同 IP Sub Netowrk 和 Default Gateway,进而达到节约IP地址资源的目的。
Sub-VLAN:
1)只包含物理接口,不能建立三层 VLANIF 接口,用于隔离广播域;
2)每个 Sub-VLAN 内的主机与外部的三层通信是靠 Super-VLAN 的三层 VLANIF 接口来实现的。
Super-VLAN:
1)不包含物理接口,只需建立三层 VLANIF 接口,与子网网关对应;
2)与普通 VLAN 不同,Super-VLAN 的 VLANIF 接口状态取决于所包含 Sub-VLAN 的物理接口状态;
3)Super-VLAN 不能在 Trunk 中 Allow Pass;
原理简述
每个 Sub-VLAN 对应一个广播域,多个 Sub-VLAN 和同个 Super-VLAN 关联,只给 Super-VLAN 分配一个IP子网,所有 Sub-VLAN 都使用 Super-VLAN 的 IP子网和缺省网关进行三层通信(更像二层)。
所有主机的默认网关都是 192.168.1.254/24
相同 Sub-VLAN 内部通信
不同 Sub-VLAN 之间通信
问题:不同 Sub-VLAN 间进行通信,IP地址属于相同网段,因此主机会发送ARP请求,但是实际不同 Sub-VLAN 间属于不同的广播域,所以 ARP 报文无法传递到其他 Sub-VLAN,ARP 请求得不到响应,设备无法学习到对端MAC地址,从而无法完成Sub-VLAN之间通信。
解决:要实现 Sub-VLAN 之间的通信,需要在 Super-VLAN 的 VLANIF 中开启 ARP Porxy 功能。
当 Super-VLAN VLANIF100 开启 ARP Proxy 后,PC1 和 PC2 间通信过程如下:
1)PC1 发现其与 PC2 在同个网段,且自己 ARP 表无 PC2 对应表项,则直接发送 ARP 请求 PC2 的 MAC 地址;
2)作为网关的 Super-VLAN 对应的 VLANIF 100 收到 PC1 的 ARP 请求,由于网关上使能 Sub-VLAN 间的 ARP Proxy 功能,则向 Super-VLAN 100 的所有 Sub-VLAN 接口发送一个 ARP 广播,请求 PC2 的 MAC 地址;
3)PC2 收到网关发送的 ARP 广播后,对此请求进行 ARP 应答;
4)网关收到 PC2 的应答后,就把自己的 MAC 地址回应给 PC1,PC1 之后要发给 PC2 的报文都先发送给网关,由网关做三层转发(更像二层);
补充说明:
1)在此过程中,数据包从交换机的同个接口进出,所以可能会看到 ICMP Redirect 报文,
Sub-VLAN 与其他设备的二层通信
当 Sub-VLAN 与其他设备进行二层通信时,与普通的 VLAN 内二层通信无区别。
由于 Super-VLAN 不属于任何物理接口,即不会处理任何携带 Super-VLAN 标签的报文,即保持物理接口报文的原始 VLAN Tag 信息。
Sub-VLAN 二层通信过程举例:
1)从PC1进入SW1的报文会被打上VLAN10的Tag。在 SW1 中,该 Tag 不会因为 VLAN10 是 VLAN100 的 Sub-VLAN 而变为 VLAN100 的 Tag;
2)当报文从 SW1.GE0/0/0 出去时,依然 Tag=VLAN10,即也就是说,SW1 本身不会发出 VLAN100 的报文。就算其他设备有 VLAN100 的报文发送到该设备上,这些报文也会因为 SW1 上没有 VLAN100 应的物理接口而被丢弃。
3)对于其他设备而言,有效的 VLAN 只有 Sub-VLAN 10、20、30, 所有的报文都是在这些VLAN中交互的。所以 SW1 上虽然配置 VLAN 聚合,但与其他设备的二层通信,不会涉及到Super-VLAN,与正常的二层通信流程一样。
当 Sub-VLAN 内的 PC 需要与其他网络进行三层通信时,首先将数据发往默认网关,即 Super-VLAN 对应的 VLANIF,再进行路由;
特性说明
多个 Sub-VLAN 共享同个网关地址,节约了子网网络地址、子网定向广播地址、子网缺省网关地址
且各 Sub-VLAN 间的界线也不再是从前的子网界线,可以根据每个 Sub-VLAN 内所需的网络地址数量进行灵活的地址规划,从而既保证了各个Sub-VLAN作为一个独立广播域实现广播隔离,又节省网络地址资源,提高编址的灵活性。
应用场景
传统VLAN方式每一个VLAN需要划分不同的IP地址网段,在本例中需要耗费4个IP网段和产生4条路由条目;而 Super-VLAN方式只需要分配一个IP地址网段,下属二层VLAN共用同一个IP地址网段,共用同一个三层网关,同时VLAN之间保持二层隔离。
配置案例
配置命令
// 创建Super-VLAN [Huawei-vlan100] aggregate-vlan Super-VLAN中不能包含任何物理接口,VLAN1不能配置为Super-VLAN。 Super-VLAN中的VLAN ID与Sub-VLAN中的VLAN ID 必须使用不同的 VLAN ID。 // 将Sub-VLAN加入Super-VLAN // 此时,必须保证 Sub-VLAN 没有创建对应的 VLANIF 接口。 [Huawei-vlan100] access-vlan { vlan-id1 [ to vlan-id2 ] } //(可选)使能 Super-VLAN 对应的 VLANIF 接口的 Proxy ARP 以实现两个 VLAN 间互通 [Huawei-vlanif100] arp-proxy inter-sub-vlan-proxy enable // 在端口隔离存在时,如果需要通信,则使用 inner-sub-vlan-proxy enable 特性; // 端口隔离是为了让数据通过网关,以进行策略控制; [Interface] port-isolate Interfaece group 1 [Vlanif] arp-proxy inner-sub-vlan-proxy enable
实验示例
通过实验我们得知:
1)VLAN 间的通信与 Super-VLAN 无关:即使 LSW1 不开启 ARP Proxy 也不影响 PC6 与 PC2 的通信;
2)Super-VLAN 存在的意义是作为 Sub-VLAN 的网关(完成 Sub-VLAN 间通信,及 Sub-VLAN 与外部通信);