vlan通信原理

vlan通信原理

一、vlan的作用

vlan(Virtual Local Area Network)是将一个物理的局域网在逻辑上划分成多个广播域的技术, 实现同一个个vlan的用户可以进行二层互访, 而不同vlan间的用户被二层隔离, 这样既可以隔离广播域, 又能提高网络的安全性。

作用 说明 应用场景
网络隔离 将一个物理网络划分为多个逻辑网络,VLAN之间的流量相互隔离,增强网络的逻辑划分能力。 不同部门(如财务部、研发部、市场部)划分为不同VLAN,保证数据隔离。
减少广播风暴 限制广播域范围,减少广播流量在整个网络中的传播,提升网络性能。 在大型企业网络中,避免广播流量占用过多带宽,造成网络拥塞。
提高网络安全性 VLAN之间通信需要路由器或三层交换机,便于对跨VLAN通信实施访问控制,防止未经授权的访问。 将访客网络和公司内网分配到不同VLAN,限制访客访问公司内部敏感数据。
简化网络管理 根据功能、位置或用户组划分网络,无需物理更改网络拓扑即可实现逻辑隔离和重新配置。 动态调整不同VLAN的配置,例如新增设备时,只需划分到相应的VLAN。
支持灵活扩展 VLAN允许在不同交换机间跨越物理边界进行组网,方便网络的扩展和设备的灵活部署。 将多个楼层或办公区域划分为一个VLAN,方便管理和统一配置。
优化网络性能 减少广播域大小的同时,优化了数据流量的分发路径,从而提升网络整体性能和带宽利用率。 数据中心中,将高带宽流量和普通流量分配到不同的VLAN以优化资源利用。

二、vlan通信原理

1、vlan帧格式

img

字段 长度 含义 取值
TPID 2Byte Tag Protocol Identifier(标签协议标识符),表示数据帧类型。 取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。
PRI 3bit Priority,表示数据帧的802.1p优先级。 取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧。
CFI 1bit Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。 CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。
VID 12bit VLAN ID,表示该数据帧所属VLAN的编号。 VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。

2、接口类型对vlan的处理

pvid(port vlan id):端口pvid在没有配置的情况下默认为1

接口类型 对接收不带Tag的报文处理 对接收带Tag的报文处理 发送帧处理过程
Access接口 接收该报文,并打上缺省的VLAN ID。 当VLAN ID与缺省VLAN ID相同时,接收该报文。当VLAN ID与缺省VLAN ID不同时,丢弃该报文。 先剥离帧的PVID Tag,然后再发送。
Trunk接口 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。 当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。
Hybrid接口 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。 当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag。
QinQ接口 QinQ接口是使用QinQ协议的接口。QinQ接口可以给帧加上双重Tag,即在原来Tag的基础上,给帧加上一个新的Tag,从而可以支持多达4094×4094个VLAN,满足网络对VLAN数量的需求。

3、vlanif

逻辑接口: VLANIF 是绑定在交换机的 VLAN 上的逻辑三层接口。

网关角色: VLANIF 接口通常配置一个 IP 地址,充当该 VLAN 的默认网关。

三层通信: VLANIF 主要用于实现 VLAN 间的数据通信,即三层路由功能。

物理承载: VLAN 流量必须通过物理接口在网络中传输, 路由器不支持交换端口, 那么将无法设置vlanif, 因为vlanif需要物理接口绑定vlan(access, trunk)进行支持。

vlanif是三层逻辑接口, 不对接口进行二层的处理, 在二层交给vlanif的时候已经被去除pvid了!

4、子接口(单臂路由)

vlanif在路由器上是不可用的因为路由器无法直接处理了vlan, 接口为三层接口, 所以只能通告子接口来处理vlan, 物理接口必须和子接口关联

子接口不需要像vlanif一样和vlan关联, 可以不创建vlan

实验(跨vlan通信)

子接口和物理接口共享mac地址!

1
2
3
4
5
6
7
8
9
10
11
S1(config)#vlan 10
S1(config-vlan)#vlan 20
S1(config)#int fa0/2
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config)#int fa0/3
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 20
S1(config)#int fa0/1
S1(config-if)#switchport mode trunk
S1(config-if)#switchport trunk allowed vlan all
1
2
3
4
5
6
R1(config)#int g0/0.10
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip address 192.168.1.1 255.255.255.0
R1(config)#int g0/0.20
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip address 192.168.2.1 255.255.255.0

在PC1上pingPC2流程:

PC1开始构建icmp包, 查看目标和自己是不是一个网段, 发现不是一个网段

查看自己的路由表有没有处理192.168.2.2的路由, 发现只有一条默认路由, 开始请求默认路由下一跳192.168.1.1的mac地址

发送到S1的Fa0/3端口, S1收到后查看这个请求包发现没有pvid, 添加上配置的端口pvid(vlan10)

S1发现是广播包通过mac地址表来转发到vlan10的所有端口, Fa0/3是vlan20的端口不进行转发, Fa0/1是trunk口并且允许了所有vlan所以只转发到Fa0/1, trunk口发现广播包是允许通过的pvid进行放行

交换机会记录下发过来的arp包的端口、vid、源mac地址

1
2
3
4
5
6
7
8
S1#show mac-address-table 
Mac Address Table
-------------------------------------------

Vlan Mac Address Type Ports
---- ----------- -------- -----

10 00d0.d3e3.e44b DYNAMIC Fa0/2

S1添加pvid

R1收到arp包, 发现请求的mac地址是自己的接口g0/0

R1返回自己g0/0的mac地址给请求ip192.168.1.1

R1响应192.168.1.1的arp包

S1收到后会将R1发过来的arp包的端口、vid、源mac地址记录进mac地址表

1
2
3
4
5
Vlan    Mac Address       Type        Ports
---- ----------- -------- -----

10 00d0.d3e3.e44b DYNAMIC Fa0/2
10 00e0.f9b7.1101 DYNAMIC Fa0/1

PC1收到arp包后写入arp表, 然后开始继续构建icmp包的第二层, 目标mac地址为网关地址

PC1发送icmp包, S1添加上pvid后发送给R1, R1接收到后发现pvid为10 去除pvid后转发给 g0/0.10处理

查看路由表后发现192.168.2.0/24属于直连路由g0/0.20, 发送给g0/0.20, 这个时候g0/0会重新封装icmp, 把源mac改为g0/0的mac地址, 然后目标mac改为192.168.2.2的mac地址

R1也不知道192.168.2.2的mac地址这个时候会发送arp请求192.168.2.2的mac地址, g0/0给它加上vlan20

R1请求PC2的arp包

PC2返回自己的mac地址, S1记录PC2的端口、vid、mac地址在mac地址表

R1收到后重新构建icmp包, 源mac为g0/0mac地址, 目标为192.168.2.2的mac地址, 由于路由器无法缓存icmp包所以这个包超时了

PC1重新发送icmp包,R1收到后重新封装, PC2收到后进行回应

PC2回应PC1的ICMP包

R1收到后g0/0.10会把源mac改为g0/0的mac地址, 目标mac为192.168.1.2的mac地址

PC1收到PC2的ICMP响应包

三、vlanif和子接口的区别

特性 Vlanif 接口 VLAN 子接口
定义 三层逻辑接口,直接与 VLAN 绑定,用于提供三层功能。 在物理接口上划分的逻辑接口,通过 VLAN ID 识别流量。
适用设备 三层交换机(具备二层交换和三层路由功能)。 路由器或支持子接口的三层设备。
VLAN 的绑定方式 通过 VLAN ID 和 VLAN 配置绑定到对应的 VLAN。 通过 encapsulation dot1Q 和 VLAN 标签识别流量。
二层依赖性 必须依赖 VLAN 的配置(如 Access 或 Trunk 接口)。 不依赖 VLAN 配置,通过物理接口直接处理带标签的流量。
物理接口关系 不直接绑定物理接口,通过 VLAN ID 间接关联。 在物理接口上划分逻辑子接口,与物理接口直接关联。