IVL和SVL

SVL方式的二层交换机

SVL(Shared VLAN Learning)方式的二层交换机在学习MAC地址并建立MAC地址表的过程中并不附加VLAN ID,或者说它的MAC地址表是为所有VLAN共享使用的。它的二层转发基本流程如下:

(1)      根据接收到的以太网帧的源MAC信息添加或刷新MAC地址表项;

(2)      根据目的MAC信息查找MAC地址表,如果没有找到匹配项,那么在报文对应的VLAN内广播;

(3)      如果找到匹配项,但是表项对应的端口并不属于报文对应的VLAN,那么丢弃该帧;

(4)      如果找到匹配项,且表项对应的端口属于报文对应的VLAN,那么将报文转发到该端口,但是如果表项对应端口与收到以太网帧的端口相同,则丢弃该帧。

这种类型的二层交换机转发与普通二层交换机转发基本相同,只是多了转发过程中的VLAN检查。这样的交换机可能遇到下述问题:位于不同VLAN的主机(或网络设备)具有相同的MAC地址,由于SVL交换机所有VLAN共享一个MAC表,这样对应的MAC表项中端口就会不断的变化,而且两个VLAN的报文转发也会受到影响,这种情况如图7所示。

图7中,VLAN 10的PC A发送给PC B的报文由于MAC地址表查找结果与VLAN不符而被丢弃了;同理,当MAC B学习到PORT 2时,VLAN 20的PC D和PC C之间的通信就会出现问题。这样,虽然不同的主机被隔离在了不同的冲突域和广播域中,但是MAC地址却可能导致不同VLAN的通信相互影响。

在实际应用中,SVL方式的二层交换机已经比较少见了。

 IVL方式的二层交换机

IVL(Independent VLAN Learning)方式的交换机在学习MAC地址并建立MAC地址表的过程中同时附加VLAN ID,同一个MAC地址可以出现在不同的VLAN中,这样的方式也可以理解为每个VLAN都有自己独立的MAC地址表。它的二层转发基本流程如下:

(1)      根据接收到的以太网帧的源MAC+VLAN-ID信息添加或刷新MAC地址表项;

(2)      根据目的MAC+VLAN-ID查找MAC地址表项,如果没有找到匹配项,那么在VLAN-ID对应的VLAN内广播;

(3)      如果能够找到匹配表项,则向表项所示的对应端口转发,但是如果表项所示端口与收到以太网帧的端口相同,则丢弃该帧。

SVL方式交换机上可能遇到的转发问题,在IVL交换机中得以解决,如图8所示。

IVL方式的二层交换机转发流程更加清晰,VLAN之间不会互相影响,目前实际应用中的二层交换机大多采用这种方式。

----------------------------------------------------------------------

1、IVL模式是独享式的MAC地址学习模式,各个VLAN内学习到的MAC地址为各个VLAN所有,不会共享给其他VLAN。我司多数交换机为这种MAC学习模式。
SVL模式是共享式MAC地址学习模式,某一个VLAN学习到的MAC会被其他所有VLAN共享使用,我司3026系列交换机,2050系列交换机支持这种MAC学习模式。
2、转发流程角度
a、对于支持IVL的交换机,转发流程分以下几步
根据帧内Tag Header的VLAN ID查找L2FDB表,确定查找的范围;
根据目的MAC查找出端口,图中应该从端口2转发出去;
如果在L2FDB表中查找不到该目的MAC,则该报文将通过广播的方式在该VLAN内所有端口转发;
同时该以太网帧的源MAC将被学习到接收到报文的端口上,即端口1(VLAN 2);
L2FDB表中的MAC地址通过老化机制更新;
在转发的过程中,不会对帧的内容进行修改;
b、对于支持SVL的交换机,转发流程分以下几步
根据帧的目的MAC查MAC转发表(即L2FDB),查找相应的出端口。根据现有L2FDB表,报文应该从端口2发送出去;
判断出端口的VLAN ID和报文Tag Header内的VLAN ID是否匹配,匹配则转发,不匹配则丢弃;
如果在L2FDB表中查找不到该目的MAC,则判断出端口的VLAN ID和报文Tag Header内的VLAN ID是否匹配,不匹配直接丢弃;匹配则在该VLAN内广播;
L2FDB表中MAC地址通过老化机制来更新;
在转发的过程中,不会对帧的内容进行修改。


### IVL SVL 的定义 在虚拟局域网 (VLAN) 技术中,存在两种主要的 MAC 地址学习模式:独立 VLAN 学习 (IVL, Independent VLAN Learning) 共享 VLAN 学习 (SVL, Shared VLAN Learning)[^1]。 #### 独立 VLAN 学习 (IVL) IVL 是一种独享式的 MAC 地址学习机制,在这种模式下,每个 VLAN 都拥有自己独立的 MAC 地址表。这意味着当某个 VLAN 内部的学习到了一个新的 MAC 地址时,这个地址仅限于该特定 VLAN 使用,并不会被其他 VLAN 所知晓或访问[^2]。 对于采用 IVL 方式的二层交换机而言,其转发流程相对简单明了,因为各 VLAN 间相互隔离,不存在跨 VLAN 的数据冲突风险。因此,在现代企业级网络部署场景里,大多数情况下会选择使用基于 IVL 设计的产品来构建内部通信环境[^3]。 ```python def ivl_mac_learning(vlan_id, mac_address): """ Simulate the process of learning a new MAC address under IVL mode. Args: vlan_id (int): The ID number associated with this VLAN. mac_address (str): A string representing the hardware address to be learned. Returns: dict: Updated dictionary containing only entries specific to given VLAN. """ # Initialize an empty dictionary for storing MAC addresses per-VLAN basis mac_table = {} # Add or update entry corresponding to specified VLAN and MAC combination if vlan_id not in mac_table: mac_table[vlan_id] = [] mac_table[vlan_id].append(mac_address) return {vlan_id: list(set(mac_table.get(vlan_id)))} ``` #### 共享 VLAN 学习 (SVL) 相比之下,SVL 则采取了一种更为开放的态度对待 MAC 地址管理——即允许所有 VLAN 访问同一个全局性的 MAC 表单。这样一来,只要任意一个 VLAN 成功记录下一个新的物理地址,则整个系统内的每一个 VLAN 均可立即获得此信息并加以利用[^4]。 然而值得注意的是,尽管这种方法提高了资源利用率,但也带来了潜在的安全隐患技术挑战。例如,如果多个不同的 VLAN 中出现了重复使用的硬件地址情况,那么就可能导致严重的路由错误服务中断现象发生。 ```python def svl_mac_learning(global_mac_table, mac_address): """ Demonstrate how a global MAC table is updated across all VLANs using SVL method Args: global_mac_table (list): List holding globally accessible MAC addresses. mac_address (str): String representation of newly discovered device's physical address. Returns: set: Unique collection of known devices' identifiers available system-wide. """ # Append new discovery into centralized storage structure without duplicates global_mac_table.append(mac_address) return set(global_mac_table) ``` 综上所述,虽然两者都属于有效的解决方案之一,但在实际应用场景的选择上往往取决于具体需求考量因素如安全性、性能优化等方面的要求差异而定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值