对比如下三种方式实现Vlan之间通信的利与弊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对比如下三种方式实现Vlan之间通信的利与弊相关的知识,希望对你有一定的参考价值。

VLAN之间通信

VLAN在分割广播域的同时也限制了不同VLAN间的主机进行二层通信
技术图片
解决vlan间通信方法如下:
? 二层交换机+一台路由器实现vlan之间通信(多臂路由)
? 单臂路由的方式实现vlan之间通信
? 现网中实际运用vlanif逻辑接口来实现vlan之间通信

1.二层交换机+一台路由器实现vlan之间通信

因为不同VLAN之间的主机是无法实现二层通信的,所以必须通过三层路由才能将报文从一个VLAN转发到另外一个VLAN,在二层交换机上配置VLAN,每一个VLAN使用一条独占的物理链路连接到路由器的一个接口上,来实现vlan之间的通信
技术图片

实战演练

技术图片
交换机的配置

#
vlan batch 2 to 3
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk pvid vlan 2
 port trunk allow-pass vlan 2 
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk pvid vlan 3
 port trunk allow-pass vlan 3
#
interface GigabitEthernet0/0/3
 port link-type access
 port default vlan 2
#
interface GigabitEthernet0/0/4
 port link-type access
 port default vlan 3
#

路由器的配置

#
interface GigabitEthernet0/0/0
 ip address 192.168.1.254 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 192.168.2.254 255.255.255.0 
#

连通性的检测
技术图片

分析一下通信过程

PC1访问PC2的过程

PC1自身的SIP是192.168.1.1,访问目标是192.168.2.1,PC1会用自身的掩码和目标IP地址做一个与运算,发现访问的目标和自己不在同一个网段,自己是192.168.1.0/24网段,目标是192.168.2.0/24网段,于是PC1会把数据发往AR1的G0/0/2接口,因为G0/0/2接口的IP地址恰好是我的网关地址,当数据到达交换机的时候,交换机进来会打上PVID是3的tag数据帧,交换机此时做的是解封装和封装停留在二层这块,因为交换机并没有做三层路由功能,查找MAC地址表项后,交换机会从G0/0/1接口发送出去,会剥离tag进行发送,因为路由器一般情况是下是不识别vlan数据帧的。
当PC1的数据包到达AR1的G0/0/0接口后,由于DIP是192.168.2.0/24网段,刚好AR1这边有直连路由,于是AR1查找路由表,发现去往192.168.2.0/24从接口G0/0/2接口发送出去,交换机收到路由器的数据后
交换机会进行解封装和封装动作,交换机从G0/0/2接口收到的数据,会打上vlan 3的数据tag,然后查找MAC地址表项从G0/0/4接口发送出去,会剥离tag进行发送,此时PC2就可以收到该数据了

PC2访问PC1的过程

PC2自身的SIP是192.168.2.1,访问目标是192.168.1.1,PC1会用自身的掩码和目标IP地址做一个与运算,发现访问的目标和自己不在同一个网段,自己是192.168.2.0/24网段,目标是192.168.1.0/24网段,于是PC2会把数据发往AR1的G0/0/2接口,因为G0/0/2接口的IP地址恰好是我的网关地址,当数据到达交换机的时候,交换机进来会打上PVID是3的tag数据帧,交换机此时做的是解封装和封装停留在二层这块,因为交换机并没有做三层路由功能,查找MAC地址表项后,交换机会从G0/0/2接口发送出去,会剥离tag进行发送,因为路由器一般情况是下是不识别vlan数据帧的。
当PC2的数据包到达AR1的G0/0/2接口后,由于DIP是192.168.1.0/24网段,刚好AR1这边有直连路由,于是AR1查找路由表,发现去往192.168.1.0/24从接口G0/0/0接口发送出去,交换机收到路由器的数据后
交换机会进行解封装和封装动作,交换机从G0/0/1接口收到的数据,会打上vlan 2的数据tag,然后查找MAC地址表项从G0/0/3接口发送出去,会剥离tag进行发送,此时PC1就可以收到该数据了

不足点:

1.随着每个交换机上VLAN数量的增加,这样做必然需要大量的路由器接口,而路由器的接口数量是极其有限的。
2.某些VLAN之间的主机可能不需要频繁进行通信,如果这样配置的话,会导致路由器的接口利用率很低

2.单臂路由的方式实现vlan之间通信

将交换机和路由器之间的链路配置为Trunk链路,并且在路由器上创建子接口以支持VLAN路由,配置能够让路由器子接口识别vlan的tag数据
配置路由器子接口封装vlan 在路由器相应的子接口下配置下面两条命令

dot1q termination vid "几"

命令配置子接口对一层tag报文的终结功能,即配置该命令后路由器子接口在接收带有vlan tag 的报文时 将剥掉tag进行三层转发 在发送报文时 会将与该子接口对应vlan的vlan tag添加到报文中

ARP broadcast enable 

命令开启ARP广播的功能 如果不配置该命令 将会导致该子接口无法主动发送ARP广播报文,以及向外转发IP报文
技术图片

实战演练

技术图片
交换机的配置
S2的配置

vlan batch 10 20
#
interface Ethernet0/0/1
 port link-type access
 port default vlan 10
#
interface Ethernet0/0/2
 port link-type access
 port default vlan 20
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
S3的配置
vlan batch 30
#
interface Ethernet0/0/1
 port link-type access
 port default vlan 30
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk allow-pass vlan 30
#

S1的配置

vlan batch 10 20 30
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10 20 30
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
interface GigabitEthernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 30
#

路由器的配置

vlan batch 10 20 30
#
interface GigabitEthernet0/0/1.1
 dot1q termination vid 10
 ip address 192.168.1.254 255.255.255.0 
 arp broadcast enable
#
interface GigabitEthernet0/0/1.2
 dot1q termination vid 20
 ip address 192.168.2.254 255.255.255.0 
 arp broadcast enable
#
interface GigabitEthernet0/0/1.3
 dot1q termination vid 30
 ip address 192.168.3.254 255.255.255.0 
 arp broadcast enable
#

结论:
技术图片

分析一下通信过程

PC1访问PC2的过程

PC1自身的SIP是192.168.1.1,访问目标是192.168.2.1,PC1会用自身的掩码和目标IP地址做一个与运算,发现访问的目标和自己不在同一个网段,自己是192.168.1.0/24网段,目标是192.168.2.0/24网段,于是PC1会把数据发往AR1的G0/0/1.1接口,因为G0/0/1.1接口的IP地址恰好是我的网关地址,当数据到达交换机的时候,交换机进来会打上PVID是10的tag数据帧,交换机此时做的是解封装和封装停留在二层这块,因为交换机并没有做三层路由功能,查找MAC地址表项后,交换机会从G0/0/2接口发送出去,会保持tag进行发送,S1交换机收到tag为10的数据后,查找MAC地址表从G0/0/1接口发送出去,保持tag为10的标签进行发送,当这带有tag为10的数据到达AR1的G0/0/1.1接口后,由于该接口配置子接口对一层tag 10报文的终结功能,将剥掉tag 10进行三层转发 路由器查找路由表 发现从G0/0/1.2接口转发,在发送报文时 会将与该G0/0/1.2子接口对应vlan的vlan tag 20添加到报文中 并且由该子接口需要发送arp报文进行数据封装 所以 子接口需要支持主动发送arp报文的功能 所以需要在子接口上面配置该命令 ARP broadcast enable
当S1的数据包收到tag 20的数据后,会从G0/0/2接口发送出去,然后S2收到后,会从Eth0/0/2接口发送给PC2主机

PC2访问PC1的过程

PC2自身的SIP是192.168.2.1,访问目标是192.168.1.1,PC1会用自身的掩码和目标IP地址做一个与运算,发现访问的目标和自己不在同一个网段,自己是192.168.2.0/24网段,目标是192.168.1.0/24网段,于是PC1会把数据发往AR1的G0/0/1.2接口,因为G0/0/1.2接口的IP地址恰好是我的网关地址,当数据到达交换机的时候,交换机进来会打上PVID是20的tag数据帧,交换机此时做的是解封装和封装停留在二层这块,因为交换机并没有做三层路由功能,查找MAC地址表项后,交换机会从G0/0/2接口发送出去,会保持tag进行发送,S1交换机收到tag为20的数据后,查找MAC地址表从G0/0/1接口发送出去,保持tag为20的标签进行发送,当这带有tag为20的数据到达AR1的G0/0/1.2接口后,由于该接口配置子接口对一层tag 20报文的终结功能,将剥掉tag 20进行三层转发 路由器查找路由表 发现从G0/0/1.1接口转发,在发送报文时 会将与该G0/0/1.1子接口对应vlan的vlan tag 10添加到报文中 并且由该子接口需要发送arp报文进行数据封装 所以 子接口需要支持主动发送arp报文的功能 所以需要在子接口上面配置该命令 ARP broadcast enable
当S1的数据包收到tag 10的数据后,会从G0/0/2接口发送出去,然后S2收到后,会从Eth0/0/1接口发送给PC1主机

思考:如果在子接口下面配置DHCP SERVER功能

请问:还需要在子接口上面启用arp广播功能吗?

不足点:

1、 存在单点故障的可能性
2、 此场景需要一台路由器,成本相对较高

3.现网中运用vlanif逻辑接口来实现vlan之间通信

在三层交换机上配置VLANIF接口来实现VLAN间路由

什么是三层交换机

二层交换机和路由器在功能上的集成构成了三层交换机,三层交换机在功能上实现了VLAN的划分、VLAN内部的二层交换和VLAN间路由的功能
技术图片

三层交换机的原理

技术图片
就是二层交换机和路由器的结合体,但是会比这种方式更加高效
三层交换机里面有路由引擎和交换引擎
? 当三层交换机识别到主机发送的DMAC地址不是我自己的时候,就会交给交换引擎,从对应的接口转发出去
? 当三层交换机识别到主机发送的DMAC地址是我自己的时候,就会交给路由引擎处理,三层交换机就会进行路由 从对应的vlan发送出来
? 第一个数据包交给路由引擎处理(CPU处理的)然后会把信息交给交换引擎 同一个数据流的后面的报文不会交给路由引擎处理了 都会交给二层的芯片的转发(更快) 因为芯片转发更快 这些信息包括出接口 arp信息等 这就是一次路由 多次交换

VLANIF接口

华为中低端交换机接口几乎都是二层功能 二层接口不能配置IP地址 但三层交换机需要一个逻辑接口 就是vlanif接口(思科是SVI接口) 这个接口具有三层功能 只要有接口在这个vlan当中 那么 这个vlanif就是up状态
在三层交换机上配置VLANIF接口来实现VLAN间路由。如果网络上有多个VLAN,则需要给每个VLAN配置一个VLANIF接口,并给每个VLANIF接口配置一个IP地址。用户设置的缺省网关就是三层交换机中VLANIF接口的IP地址
技术图片

实战演练

技术图片
交换机的配置

vlan batch 10 20 
#
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 10
#
interface GigabitEthernet0/0/2
port link-type access
 port default vlan 10
#
interface GigabitEthernet0/0/3
port link-type trunk
 port trunk allow-pass vlan 20
#

结论:
技术图片

分析一下通信过程

PC1访问PC2的过程

PC2访问PC1的过程

以上是关于对比如下三种方式实现Vlan之间通信的利与弊的主要内容,如果未能解决你的问题,请参考以下文章

Redis 使用 List 实现消息队列的利与弊

敏捷开发的利与弊

Redis 使用 List 实现消息队列的利与弊

数据仓库的利与弊

云原生的利与弊

用Go语言进行编程的利与弊