交换机基础及二三层转发学习笔记

时间:2024-03-04 08:31:21

---恢复内容开始---

2019年9月10号,一个身为渣渣的码农找到了第一份正式的工作。交换机相关的工作。以前没接触过交换机。

学习了一个月,总结一下。

 

1、交换机:switch  

是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。常见的交换机是以太网交换机。

在写了一段关于分类什么的,发现这个分类其实不太重要,大概上就时广义上区分以及传输方式、传输速率什么的来分类。

 

2、主要用途

主要功能就是物理编址、网络拓扑结构、错误校验、帧序及流控、VLAN(虚拟局域网)、链路聚合等功能。

 

3、转发原理

个人认为交换机中,搞清楚转发原理是十分重要的,后期针对交换机的开发中,你要知道你开发的功能是在那一层工作的,具体是实现什么的。

首先就是知道网络的七层模型。当然有时候也会说是五层模型。他们在本质上就是一样的。只不过七层中有三层对应的是一层

 

 

应用层:各协议HTTP、TFTP, FTP, NFS, WAIS、SMTP。同时负责解码和建立连接

传输层:TCP/UDP

网络层:以网络层的地址作为数据包在多个多个端口间交换的依据(HTTP、TFTP, FTP, NFS, WAIS、SMTP)。代表设备是路由器、三层交换机

              数据链路层:以数据链路层的地址作为数据帧在多个端口间交换的依据。代表设备是二层交换机

物理层:主要用于电信号放大,以增加传输距离。注意:在一层中不存在交换这概念。代表设备是HUB(集线器,是一个多端口转发器)。

 

交换机的转发要区分是二层还是三层转发。两者转发依据不同,处理的方式也就有所不一样。

交换机的二层转发

1.查找MAC转发表处理转发

2.对于表中不包含的地址,通过广播的形式转发

3.使用地址自动学习和老化机制进行地址表维护

4.一般不对帧格式将进行修改

 

二层转发主要是基于MAC地址。就是说交换机会学习并形成一张MAC地址表、然后根据表中数据来建立连接转发。具体如下

TAG包检查------》 ingress过滤 ---------》 源MAC检查(包含学习) -------》 目的MAC检查

 

1.从端口进入交换芯片的包首先检查 TAG ,判断是否带标记,对于untagged或priority tagged报文,根据系统配置打上tag, VLAN ID从下列表获取:基于MAC,子网(subnet),协议(protocol ),端口(port)的VLAN表(*-based table)

 

2.对于tagged 报文,VLAN ID直接从报文中提取

 

3.经过以上两步,此时报文已经变成tagged 报文,根据文中VLAN ID 查VLAN表,若查到,则进行STP处理,VLAN port bitmap 处理以及 PFM(port filetering mode)处理;若查不到,报文丢弃或上送CPU 

 

4.进入 MAC 学习阶段,基于源MAC+VLANID 以及查 L2表(L2-ENTRY),若找到,表示此信息已经学习到了;若没查到,则将此源MAC+VLANID 以及对应的端口写入L2 表中(此为MAC地址学习,CML控制是否学习) 

5.MAC 目的地址查找阶段

①若报文在 L2_USER_ENTRY 表中找到,报文的转发根据BPDU位设置进行(BPDU是运行STP的交换机之间的消息帧,包含了STP所需要的路径和优先级信息,STP利用这些确定根桥及到根桥的路径),若BPDU=0,根据DST_MODID+DST_PORT转发报文, =1,丢弃或者上传CPU,或在VLAN内广播

 

②若报文在L2_USER_ENTRY 表中找不到,但在L2_ENTRY中找到,则根据DST_MODID+DST_PORT/TGID 进行不保温转发,否则,在VLAN内广播

6.若报文为组播包,当在L2_ENTRY 表中存在匹配的条目时,根据表项中的L2MX_PTR 字段指向L2MC组播表,进行组播处理。

 

7.若报文为广播包,则在VLAN内广播

 

总结一下,二层转发就是:

1.接收网段上所有的数据帧 

2.利用接收数据帧中的源MAC地址来建立MAC地址表(源地址自学习),使用老化机制维护地址表

老化:长时间没有建立通信则删除

 

3.在MAC地址表中查找数据帧中的目的MAC地址:

找到了: 将数据帧发送到相应的端口

没找到: 想所有端口广播发送(除源地址外)

 

三层转发

如果查 目的MAC 地址表时发现L3Bit 置位了,就进入L3转发流程。与L2交换相比,L3交换可以实现跨VLAN转发,而且他的转发依据不是根据 目的MAC 地址,而是 根据目的IP

 

头部校验-----》源IP查找----------》目的IP查找----------》转发前数据替换

 

1.首先对L3头部进行校验, 校验和错的包直接丢弃

 

2.源IP 查找(查L3_ENTRY表)

若没查到,不更新L3 HIT位。并上送CPU,转入步骤3 进行目的IP查找。

若查到,更新L3 HIT位。 若端口发生迁移,上送CPU,由软件更新L3接口表(端口迁移:从port1迁移到

port2,但SIP保持不变),若软件没有更新L3_ENTRY,报文仍然被转往port1

 

3. 目的IP 查找 根据IP包中的DIP查L3_ENTRY表

若找到,提取出端口(destination port),下一跳MAC 及指向接口表的INDEX(即NEXT_PTR,根据该索

引获取router 的 MAC地址及出端口的vlan)

若没找到,再去进一步查找LPM表(即L3_DEFIP表),若找到再反向查找L3_ENTRY表(即3.1步骤)

 

4.再包转发出去的时候,用下一跳的MAC地址替换掉包的目的MAC地址。用接口表中MAC地址和VLAN替换掉包的原MAC地址和VLAN ID

 

 

 

 

---恢复内容结束---