---恢复内容开始---
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
---恢复内容结束---