VLAN间通信的解决方法
使用路由器的物理接口
- 路由器三层接口作为网关,转发本网段前往其它网段的流量。
- 路由器三层接口无法处理携带VLAN Tag的数据帧,因此交换机上联路由器的接口需配置为Access。
- 路由器的一个物理接口作为一个VLAN的网关,因此存在一个VLAN就需要占用一个路由器物理接口。
- 路由器作为三层转发设备其接口数量较少,方案的可扩展性太差。
使用路由器子接口(单臂路由)
- R1使用一个物理接口(GE0/0/1)与交换机SW1对接,并基于该物理接口创建两个子接口:GE0/0/1.10及GE0/0/1.20,分别使用这两个子接口作为VLAN 10及VLAN 20的默认网关。
- 由于三层子接口不支持VLAN报文,当它收到VLAN报文时,会将VLAN报文当成是非法报文而丢弃。因此,需要在子接口上将VLAN Tag剥掉,也就是需要VLAN终结(VLAN Termination)。
[Huawei]int g0/0/0.10
[Huawei-GigabitEthernet0/0/0.10]dot1q termination vid 10
[Huawei-GigabitEthernet0/0/0.10]arp broadcast enable
[Huawei-GigabitEthernet0/0/0.10]ip add 网关地址 掩码[Huawei]int g0/0/0.10
[Huawei-GigabitEthernet0/0/0.10]dot1q termination vid 10
[Huawei-GigabitEthernet0/0/0.10]arp broadcast enable
[Huawei-GigabitEthernet0/0/0.10]ip add 网关地址 掩码
- interfaceinterface-typeinterface-number.sub-interface number命令用来创建子接口。sub-interface number代表物理接口内的逻辑接口通道。一般情况下,为了方便记忆,子接口ID与所要终结的VLAN ID相同。
- dot1q termination vid命令用来配置子接口Dot1q终结的单层VLAN ID。缺省情况,子接口没有配置dot1q终结的单层VLAN ID。arp broadcast enable命令用来使能终结子接口的ARP广播功能。缺省情况下,终结子接口没有使能ARP广播功能。终结子接口不能转发广播报文,在收到广播报文后它们直接把该报文丢弃。为了允许终结子接口能转发广播报文,可以通过在子接口上执行此命令。
-
- 对接口接收到报文,剥除VLAN标签后进行三层转发或其他处理。
- 对接口发出的报文,又将相应的VLAN标签添加到报文中后再发送。
使用VLANIF技术实现VLAN间通信
- 二层交换机(Layer 2 Switch)指的是只具备二层交换功能的交换机。
- 三层交换机(Layer 3 Switch)除了具备二层交换机的功能,还支持通过三层接口(如VLANIF接口)实现路由转发功能。
- VLANIF接口是一种三层的逻辑接口,支持VLAN Tag的剥离和添加,因此可以通过VLANIF接口实现VLAN之间的通信。
- VLANIF接口编号与所对应的VLAN ID相同,如VLAN 10对应VLANIF 10。
VLANIF转发流程
- 假设PC、三层交换机上都已存在相应的ARP或MAC表项。
- PC1与PC2之间通信过程如下:
- PC1通过本地IP地址、本地掩码、对端IP地址进行计算,发现目的设备PC2与自身不在同一个网段,判断该通信为三层通信,将去往PC2的流量发给网关。PC1发送的数据帧:源MAC = MAC1,目的MAC = MAC2。
- 交换机收到PC1发送的去往PC2的报文,经解封装发现目的MAC为VLANIF10接口的MAC地址,所以将报文交给路由模块继续处理。
- 路由模块解析发现目的IP为192.168.20.2,非本地接口存在的IP地址,因此需要对该报文三层转发。查找路由表后,匹配中VLANIF20产生的直连路由。
- 因为匹配的为直连路由,说明已经到达最后一跳,所以交换机在ARP表中查找192.168.20.2,获取192.168.20.2的MAC地址,交由交换模块重新封装为数据帧。
- 交换模块查找MAC地址表以明确报文出接口、是否需要携带VLAN Tag。最终交换模块发送的数据帧:源MAC = MAC2,目的MAC = MAC3,VLAN Tag = None。
二三层接口对比
VLAN间通信实验
- PC1 -SW1 vlanif10 三层,拆10 ,找PC2 20 网段,需要走 12 ,打上12 的标走到SW2 ,SW2 走到 vlanif 12 拆掉12 的标。查找到 vlan 20 ,之后 vlanif20打标出来,走二层带着20 标过来