是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。常见的交换机是以太网交换机。
在写了一段关于分类什么的,发现这个分类其实不太重要,大概上就时广义上区分以及传输方式、传输速率什么的来分类。
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或prioritytagged报文,根据系统配置打上tag,VLANID从下列表获取:基于MAC,子网(subnet),协议(protocol),端口(port)的VLAN表(*-basedtable)
2.对于tagged报文,VLANID直接从报文中提取
3.经过以上两步,此时报文已经变成tagged报文,根据文中VLANID查VLAN表,若查到,则进行STP处理,VLANportbitmap处理以及PFM(portfileteringmode)处理;若查不到,报文丢弃或上送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表)
若没查到,不更新L3HIT位。并上送CPU,转入步骤3进行目的IP查找。
若查到,更新L3HIT位。若端口发生迁移,上送CPU,由软件更新L3接口表(端口迁移:从port1迁移到
port2,但SIP保持不变),若软件没有更新L3_ENTRY,报文仍然被转往port1
3.目的IP查找根据IP包中的DIP查L3_ENTRY表
若找到,提取出端口(destinationport),下一跳MAC及指向接口表的INDEX(即NEXT_PTR,根据该索
引获取router的MAC地址及出端口的vlan)
若没找到,再去进一步查找LPM表(即L3_DEFIP表),若找到再反向查找L3_ENTRY表(即3.1步骤)
4.再包转发出去的时候,用下一跳的MAC地址替换掉包的目的MAC地址。用接口表中MAC地址和VLAN替换掉包的原MAC地址和VLANID