一、什么是二层转发

二层转发就是基于MAC地址进行数据包转发
1. 二层指的就是网络七层模型中的数据链路层

在这里插入图片描述


2. 数据链路层传输的数据单元叫 – 帧

以太帧格式

在这里插入图片描述

前两个字段分别是目的地址和源地址字段。第3个字段是2字节的类型字段,用来标识上一层是什么协议(0x800:IP协议,0x0806:ARP协议等)。第4个字段是数据字段,长度在46-1500字节之间。最后一个字段是CRC检验字段,存放4字节的帧检测序列FCS。校验范围是目的地址、源地址、类型、数据字段。

MAC帧长度最小为64字节,数据字段最小为46字节,如果不够,则自动加0填充。


3. MAC 地址

MAC地址也就是物理地址,大小为48位,6个字节,前24位是厂商代码,后24位为序号,比如H3C厂商代码为00-0f-e2。

  • 单播地址:第一个字节最低位为0,如 00-0f-e2-00-00-06
  • 多播地址:第一个字节最低位为1,如 01-0f-e2-00-00-06
  • 广播地址:48位全为1,如ff-ff-ff-ff-ff-ff

4. 冲突域与广播域
  • 冲突网络(冲突域):连接在同一个到导线上的所有工作站点集合,一个节点发出的报文其余节点都能收到,从而产生冲突。
  • 广播网络(广播域):限制以太网广播报文的范围,一个站点发送一个广播报文其余站点都可以收到。

5. 转发
  • 基于MAC地址转发:主要是根据原MAC、目的MAC、MAC地址表进行业务转发(详细见原理)
  • 基于VLAN转发:为了解决广播域的问题引入了VLAN机制进行隔离

二、二层转发原理

1. 转发原理及流程

原理:基于原MAC、目的MAC、MAC地址表进行业务转发
流程:PC_A 与 PC_B通信

在这里插入图片描述
① PC_A 发送 ARP 请求给交换机1来尝试获取计算机B的mac地址(基于以太网的通信必须在数据帧中指定目标MAC地址才能通信)
②交换机1 收到广播帧(ARP请求)后,会将他发给除接收端口外的所有端口,也就是flooding了。
③计算机B 收到 ARP 后,回复 MAC 地址给A。
④计算机A 收到 B 的MAC地址后,写入以太帧目的MAC中,开始业务传输。
⑤交换机1 收到 PC_A 发出的以太帧后,会进行查表。如果查到,就按照MAC地址表指定的端口转发;查不到的话就进行广播转发。


附:查表流程

在这里插入图片描述


附:MAC地址学习流程(以下流程按照地址表中未学习到介绍,学习到的话直接转发):

① PC_A 发送的以太帧进入交换机(假设与A连的端口是1,与B连的端口是2)
② 交换机查表,无相应信息
③ 交换机将收到 “以太帧的端口和源MAC地址” 学习到MAC转发表
④ 利用目的MAC转发,查表发现,MAC转发表中无 “目的MAC” 的对应信息
⑤ 广播,其他端口收到后丢弃,目的为以太帧中DMAC的设备接收

注意:除非 PC_B 和 PC_A 是双向业务的交换机才会学到B的MAC地址,A->B单向不会。


缺陷:

当网络过大时,采用无vlan的二层转发会增加网络的负载,给设备CPU造成负担

在这里插入图片描述
图中,是一个由5台二层交换机(交换机1一5)连接了大量客户机构成的网络。假设这时,计算机A 需要与 计算机B 通信。在基于以太网的通信中,必须在数据帧中指定目标MAC地址才能正常通信,因此 计算机A 必须先广播“ARP请求(ARP Request)信息”,来尝试获取 计算机B 的MAC地址。

交换机1 收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是Flooding了。接着,交换机2 收到广播帧后也会Flooding。交换机3、4、5也还会Flooding。最终ARP请求会被转发到同一网络中的所有客户机上。

这个ARP请求原本是为了获得 计算机B 的MAC地址而发出的。可是事实上,数据帧却传遍整个网络,导致所有的计算机都收到了它。如此一来,一方面广播信息消耗了网终整体的带宽,另一方面,收到广播信息的计算机还要消耗一部分CPU时间来对它进行处理。造成了网络带宽和CPU运算能力的大量无谓消耗。


2、VLAN转发原理及流程

说明:为了解决上面1.中提到的802.1d存在的问题,就引入了VLAN技术(Virtual Local Area Network),即虚拟局域网技术。通过 vlan 划分广播域解决802.1d的问题。

特点:
①相同 vlan 内的主机可以任意通信。
②不同 vlan 的主机在二层就可以完全隔离。


VLAN的基本概念

1)VLAN帧结构概述
802.1Q帧格式是现在使用最广泛的VLAN协议标准,许多厂家的交换机路由器都支持IEEE 802.1Q标准。

2)802.1Q标准的VLAN帧格式
在这里插入图片描述

802.1QTag的长度是4bytes,它位于以太网帧中源MAC地址和长度/类型之间。802.1QTag包含4个字段。

Type:长度为2bytes,表示帧类型,802.1Qtag帧中type字段取固定值0x8100,如果不支持802.1Q的设备收到802.1Q帧,则将其丢弃。
PRI:priority字段,长度为3bit,表示以太网帧的优先级,取值范围是0~7,数值越大,优先级越高。当交换机/路由器发生传输用色时,优先发送优先级高的数据帧。
CFI:Canonical FormatIndicator,长度为1bit,表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。该字段用于区分以太网帧、FDDI帧和令牌环网帧,在以太网帧中,CFI取值为0。
VID:VLAN ID,长度为12bit,取值范围是0~4095,其中0和4095是保留值,不能给用户使用。

3)以太端口TAG数据简述(端口链路类型)

Access 类型端口端口只能属于1个VLAN,一般用于连接计算机的端口

在这里插入图片描述

Trunk 类型的端口可以允许多个VLAN通过,可以接受和发送多个VLAN的报文,一般用于交换机之间的连接端口

在这里插入图片描述

Hybrid 类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间的连接也可以用于连接用户的计算机

知识点
HybridTrunk 的异同
同:Hybrid 和 Trunk 在接收数据是处理方式相同
异:发送时 Hybrid 可以允许多个VLAN的报文发送时不带标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
②缺省VLAN
Access 端口只属于1个VLAN,所以它的缺省VLAN就是他所在的VLAN,不用设置。
Hybrid 端口和 Trunk 端口属于多个VLAN ID,缺省情况下, Hybrid 端口和 Trunk 端口的缺省 VLAN 为 VLAN 1。
③tag list 和 untag list
从两方面将,一方面如果是指报文,untag就是普通的Eth报文,普通PC机的网卡是可以识别这样的报文进行通讯;tag报文结构的变化是在源mac地址和目的mac地址后加上了4bytes的vlan信息,也就是vlan tag头,一般来说这样的报文不同PC机的网卡是不能识别的。另一方面,在报文进入端口和从端口发送出去时,还需要对报文中携带的VLAN、tag list和untag list这两个列表进行对比再进行下一步处理,而tag list和untag list就是由一个或多个VLAN值组成的列表。在设备设置二层转发是进行配置。
在这里插入图片描述


MAC 学习方式

在这里插入图片描述


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的报文转发也会受到影响。
在实际应用中,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) 如果能够找到匹配表项,则向表项所示的对应端口转发,但是如果表项所示端口与收到以太网帧的端口相同,则丢弃该帧。

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


问题

1、二层交换出现环路会有什么影响?

-----对于MAC表中存在的报文,会出现MAC地址表刷表,导致业务中断;对于广播报文,会出现物理带宽被占满,最终导致业务中断。

2、如何避免环路?

-----第一物理链路避免,第二使用SIP等生成树协议,阻止二层交换成环。


原文链接

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐