网络技术之vlan
三层交换机和二层交换机的区别及背后逻辑
华为设备的PVID的使用及原理
1.关于vlan的出现背景
单纯将设备一股脑的接到交换机上,也是可以接通的,那我们为什么要划分vlan呢。
因为如果设备规模特别夸张,就会出现问题。
主要有两个问题:1.接入的设备都会在广播域发送消息,设备规模大的话无效信息会把信道给占满,接收的数据包拆包也会占用CPU资源,结果就是网络非常非常卡
2.可能会有人私接路由或者是配置环路,这样的话影响范围会非常大。
我们引入vlan就可以解决这两个问题,引入后设备接收到的无效数据包会大幅减少,某个设备造成的影响也可以限制在比较小的范围内

2.两层交换下的vlan
两层交换的设置下的vlan,它可以将不同vlan口的数据包隔离开,但是也带来了新的问题,会将不同vlan口正常的通信隔离掉。(就是一刀切,不仅隔离了广播包,也隔离了正常通信)
下面的示意图,交换机中配置了vlan10 口下挂的设备就只能和配置了vlan10 口下挂设备通信,vlan20口也是一样

我们可以在ensp上模拟两层vlan的情况
开始时,我们不设置vlan口,同一个网段的设备可以正常通信

192.168.1.1可以ping其他的PC

但是我们在1.1上ping 192.168.1.2的时候,在1.3上抓包,是可以看到1.1发过来ARP包的,对1.3来说这个包是无效的

那我们对交换机做一下换分,将其划分到不同的vlan
vlan口的类型分为access 和trunk ,我们先说一下access。
① access是一种只能通过一个编号vlan的端口类型
(3)步骤3 把接口划入到VLAN
[LSW1]interface g0/0/1
[LSW1-GigabitEthernet0/0/1]port link-type access //接口类型为access
[LSW1-GigabitEthernet0/0/1]port default vlan 10 //把接口划入到vlan10
[LSW1-GigabitEthernet0/0/1]quit
[LSW1]interface g0/0/2
[LSW1-GigabitEthernet0/0/2]port link-type access
[LSW1-GigabitEthernet0/0/2]port default vlan 10
[LSW1-GigabitEthernet0/0/2]quit
【提示】读者有没有觉得一个一个接口特别麻烦?
[LSW1]port-group 1 //创建一个端口组,编号为1
[LSW1-port-group-1]group-member g0/0/3 to g0/0/4 //g0/0/3和g0/0/4属于端口组
[LSW1-port-group-1]port link-type access
[LSW1-port-group-1]port default vlan 20
[LSW1-port-group-1]quit
【提示】如果需要对多个以太网接口进行相同的VLAN配置,可以采用端口组批量配置,减少重复配置工作。

将192.168.1.1 和192.168.1.2划分到vlan10
192.168.1.3 和192.168.1.4划分到vlan20后,不同vlan的PC不能相互通信,相同的vlan下依旧可以通信
PC1ping其他电脑,相同vlan可以通信,不同vlan不行

vlan 的access口有个特点,就是数据包进入交换机之后会打上和vlan号一样的标记,然后在交换机内部根据标记号确定从哪个口发出,发出后标记会抹除
所以在PC上收到的报文,上面是没有vlan号的

② 关于vlan口的第二种类型trunk
我们为啥需要trunk,因为会有下面这种场景,一个端口可能要走多个vlan号的报文

两侧交换机的0/0/2口都是vlan10, 0/0/3口都是vlan20,如果PC1和PC3通信,那么0/0/1要怎么设置,设置为access 口vlan10吗,那PC2和PC4就不通了。这个时候我们就需要trunk口了
trunk 和access最大的区别就是,trunk可以设置白名单,通过多个vlan号的报文 。

我们将vlan口设置为 trunk类型,可以通过的vlan号在port trunk allow-pass vlan 10 20(白名单)里进行设置,有的设备默认白名单包含所有的vlan号

这个时候就可以ping通同一个vlan号下的PC了
在trunk口抓包,可以看到发送的包被打了标记(可以和上面的报文做比较)

这里再补充下,access和trunk的PVID号,access的PVID号就是vlan号,用来打标记并确认数据包往哪个端口发送
trunk的PVID号是默认不用打标签的vlan号,相当于是去火车站不用买票,可以优化发包速率,只能设置一个。使用场景是某个vlan口占大多数流量的情况。
③还有一个特别灵活的端口类型hybrid
它可以作为access也可以作为trunk
关于hybrid的使用,有一个场景。
3.三层交换下的vlan
背景:
节点之间通信的方式:
1.IP地址设计在一个网络,通过二层广播的方式进行通信。
2.IP地址设计在不同网络,通过三层的路由单播的方式进行通信
我们要在不同的vlan之间进行正常通信,那么我们就需要一个路由器作为网关,打个比方。相同的vlan下挂设备就是在一个聊天群里面的群友,那充当网关的路由器就是所有聊群的群主,
如果不同的群之间,有正常通信的数据包,那么群主也就是网关就可以作为不同群聊沟通的桥梁,负责传话。

关于跨vlan间通信,我们说三种方式,由浅到深
第一种方式:所有的数据包都汇聚到路由器上,通过路由器的网关地址进行不同vlan间的数据通信

我们可以通过一个数据包从PC1到PC2的过程来理解数据包在不同vlan间的传输过程。
PC1的包进入交换机1的G0/0/1口 , 走trunk 口到 交换机2 的 G0/0/1,再通过 交换机2发送到路由器,路由器的三个口都配置了IP地址,配置的IP地址都是对于vlan下的PC设置的网关地址(比如说G0/0/2口会收到来自PC1的vlan10 的数据包,PC1设置的网关地址是192.168.10.254,那G0/0/2口就设置为192.168.10.254),数据包到了对应的网关,就开始查路由表,存在192.168.10.254到192.168.20.254的直连路由,那么包就转发给了192.168.20.254对应的网关口G0/0/0,G0/0/0把数据包发送给交换机2的G0/0/3,在通过trunk口转发出去,后面的情况就类似了。
这个方法配置过程比较明晰,问题就是,每个vlan都需要一根网线,如果是一百个vlan的话,哪有这么多口。所有这种方法不现实,用的很少。
第二种方法 单臂路由,在一根网线上,逻辑分成三个数据口,同时跑多个vlan口的流量,将它们分成3个路由接口,配置对应的网关地址。
注意:现在使用单臂路由的很少,但是单臂路由中涉及到的子接口技术用的很多
分析下:逻辑上路由器是有3个子接口,走不同vlan的数据包,但是物理上只有一根线,所以我们要配trunk,只有这样才能走不同标签的vlan数据包
同样的交换机2也是一根物理线,走三个vlan的数据包,也要配trunk,(三层口配不了turnk口,我们可以通过dot1q termination vid 10 以及arp broadcast enable来迂回)。
我们分析下,不同网段的数据包走向:(其他配置和方法1一样,我们只看路由器到交换机的部分)路由器的子接口收到从交换机trunk发过来打了dot1q标签的数据包,交换机的子接口已经做了dot1q termination vid 10 以及arp broadcast enable使能,(dot1q termination vid 10 表示该子接口会接收打了dot1q 标签10 的数据,发送的数据也会打dot1q 标签10),对应子接口接收后,就会查路由表,通过对应的子接口发送出去,发送出去的包也会带标签(子接口的ARP使能是默认关闭的,我们打开之后才能ping)。交换机2的trunk口接收到打了标签的数据包,然后再转发出去,其他就一样了。

这个方法节省了网线,但是有个问题,路由器下面的这根网线限制了数据交换的速率,而且路由器的交换速率是有限的。还有一点是没有备份,很容易出现断裂的风险。
方法三 现网用的最多的方法 vlanif
4.关于vlan报文
vlan报文后面的有12byte对应的是端口号,2的12次方就是4096,vlan端口号就只能在0到4095之间。
有部分部分配置可以不带vlan端口号

浙公网安备 33010602011771号