通常的vlan的IP分配,我们一般是一个vlan分配一个网段,但是有的时候这样的分配未免太过奢侈。所以就出现了多个vlan共用一个网段的情况。这个就是聚合vlan。
现在先来认识几个概念:
父亲vlan:该vlan不被分配给任何的物理接口,仅仅作为聚合vlan的网关,也就是聚合vlan的三层路由接口
子vlan:子vlan就是聚合vlan的一部分,子vlan用于分配给物理接口,子接口依靠父亲vlan的三层接口与外界联系或与不同vlan通信
配置
比如设置上面的例子中,vlan100为父亲vlan,vlan10,20为子vlan,假设聚合vlan其他的常规配置以及完成。
配置命令:
系统视图:vlan 100 vlan100视图:aggregate-vlan? :表明该vlan是一个父vlan vlan100视图:access-vlan 10,20?:将vlan11和vlan22加入到vlan100,作为其子vlan
完成到这里,只要其他的vlan也配置了三层虚拟接口,也就是vlanif,那么子vlan可以和其他不同vlan通信。但是聚合vlan内的子vlan却不能通信,这是因为它们使用的是同网段的地址,那么子vlan之间如果想要通过arp进行IP地址与mac地址的映射关系信息的获取的时候,子vlan会因为同网段的缘故将arp包进行广播,而其arp包中指明了其针对的对象是聚合vlan中的子vlan,但是虽然它们身处同一个聚合vlan,本质上它们还是不同的vlan,所以子vlan间的arp包自然带有vlan标签,所以一个子vlan的arp广播包按常理是不会传递到其他子vlan上去的,这就导致了子vlan之间的通信中断。
同一个聚合vlan中子vlan不能通信的原因和解决方法
要解决这个问题就要在父亲vlan的vlanif视图下输入arp-proxy inter-sub-vlan-proxy enable ,表示开启该接口的arp代理。这样当其他子vlan发送arp广播包的时候,三层交换机会代替被请求通信主机,作为消息的传递者。比如按上面的例子来解析,PC10想要和PC9进行通信,那么PC10发送arp广播包,然后三层交换机的vlanif100接口将自己的arp信息返送给PC10,并告诉它我就是PC9,其实有点善意的谎言的意思,然后三层交换机就从子vlan接口上发送arp广播,希望可以获得PC10想要通信的主机的arp信息,然后PC9就从G0/0/2接口上进行了回复,于是三层交换机就记录下其信息。当PC10有消息发送的时候,交换机只要将报文中的目的MAC,源MAC进行修改一下就好了。
比如我现在在上面的例子让PC10和PC9互相ping,然后观察它们的arp缓存,如下图所示:
?PC9的ARP缓存
PC10的ARP缓存
?
?
可以看见,这两台主机的arp缓存中对应IP的mac指向的都是同一个mac,这个mac地址就是vlanif100虚拟接口的mac地址。虽然在实际生活中arp代理可能很少遇见,但是这个配置的实例却让arp代理出现在大众的视野。
|