交换机的工作原理
一、概述
以太网交换机(以下简称交换机)是工作在OSI参考模型数据链路层的设备,外表和集线器相似。
它通过判断数据帧的目的MAC地址,从而将帧从合适的端口发送出去。
交换机的冲突域仅局限于交换机的一个端口上。
比如,一个站点向网络发送数据,集线器将会向所有端口转发,而交换机将通过对帧的识别,只将帧单点转发到目的地址对应的端口,而不是向所有端口转发,从而有效地提高了网络的可利用带宽。
以太网交换机实现数据帧的单点转发是通过MAC地址的学习和维护更新机制来实现的。
以太网交换机的主要功能包括MAC地址学习、帧的转发及通信过滤和避免回路。
以太网交换机是用5个基本操作来完成功能:学习、老化、泛洪、选择性转发、过滤。
学习:交换机MAC地址表包含MAC地址和其对应的端口。
每一个帧进入交换机时,交换机审查源MAC地址,进行查找,如果MAC地址表中没包含这个MAC地址,交换机创建一个新的条目,包括源MAC地址和接收的端口。
以后如果有去往这个MAC地址的帧,交换机则往对应的端口进行转发。
老化:交换机中的MAC地址条目有一个生存时间。
每学到一个MAC地址条目,都附加一个时间值。
随着时间的流逝,该数值一直减小,当数据值减小到0的时,清除该MAC 地址条目。
如果有包含该MAC地址的新的帧到达,则刷新MAC地址的老化时间值。
泛洪:如果交换机收到一个数据帧,则可在交换机的MAC地址表中找,若找不到该数据帧的目的MAC地址,交换机转发该数据帧到除接收端口以外的所有端口,即广播该数据帧。
如果交换机收到一个广播的数据帧,即数据帧的目的MAC地址是“FFFFFFFFFFFF”,交换机也会转发该数据帧到除接收端口外的所有端口。
因为没有设备的MAC地址是“FFFFFFFFFFFF”,交换机根据数据帧的源MAC地址进行学习,永远也不会学到这个MAC 地址。
选择性转发:交换机根据帧的目的MAC地址进行转发。
当交换机收到某个数据帧时,交换机在MAC地址表中查找该数据帧的目的MAC地址,如果交换机已经学到这个MAC 地址,数据帧将被转发到该MAC地址的对应的端口,而不用泛洪到所有的端口。
过滤:在某些情况下,帧不会被转发,这个过程被称为帧过滤,一种情况是交换机不转发帧到接收到的端口;另一种情况是,如果一个帧的CRC校验失败,帧也会被丢弃。
实用帧过滤的另一个原因是安全方面的考虑,可以阻止或允许交换机转发特定的MAC地址到特定的端口。
二、帧的转发
(1)交换机转发数据帧时遵循以下规则:
如果数据帧的目的MAC地址是广播地址或者组播地址,则向交换机所有端口转发(除数据帧来的端口)。
如果数据帧的目的地址是单播地址,但是这个地址并不在交换机的MAC地址表中,那么也会向所有的端口转发(除数据帧来的端口)。
图13.3 数据帧交换过程如果数据帧的目的地址在交换机的MAC地址表中,那么就根据MAC地址表转发到相应的端口。
如果数据帧的目的地址与数据帧的源地址在一个网段上,它就会丢弃这个数据帧,交换也就不会发生。
(2)交换机数据帧的具体交换过程
数据帧交换过程
①当主机D发送广播帧时,交换机从E3端口接收到目的地址为ffff.ffff.ffff的数据帧,则向E0、E1、E2和E4端口转发该数据帧。
②当主机D与E主机通信时,交换机从E3端口接收到目的地址为0260.8c01.5555的数据帧,查找MAC地址表后发现0260.8c01.5555并不在表中,因此交换机仍然向E0、E1、E2和E4端口转发该数据帧。
③当主机D与主机F通信时,交换机从E3端口接收到目的地址为0260.8c01.6666的数据帧,查找MAC地址表后发现0260.8c01.6666也位于E3端口,即与源地址处于同一个网段,所以交换机不会转发该数据帧,而是直接丢弃。
④当主机D与主机A通信时,交换机从E3端口接收到目的地址为0260.8c01.1111的数据帧,查找MAC地址表后发现0260.8c01.1111位于E0端口,所以交换机将数据帧转发至E0端口,这样主机A即可收到该数据帧。
⑤如果在主机D与主机A通信的同时,主机B也正在向主机C发送数据,交换机同样会把主机B发送的数据帧转发到连接主机C的E2端口。
从以上的交换操作过程中,可以看到数据帧的转发都是基于交换机内的MAC地址表,但是这个MAC地址表是如何建立和维护的呢?
三、MAC地址学习
交换机的MAC地址表中,一条表项主要由一个主机MAC地址和该地址所位于的交换机端口号组成。
当然,在存放MAC地址表项之前,交换机首先应该查找MAC地址表中是否已经存在该源地址的匹配表项,仅当匹配表项不存在时才能存储该表项。
地址表项每次被使用或者被查找时,表项的时间标记就会被更新。
如果在一定的时间范围内地址表项仍然没有被引用,它就会从地址表中被移走。
因此,MAC地址表中所维护的一直是最有效和最精确的MAC地址/端口信息。
①最初交换机MAC地址表为空。
②如果有数据需要转发,如主机PC1发送数据帧给主机PC3,交换机从E0/1端口接收到主机PC1发送的数据帧后,它首先检查这个帧的源MAC地址(M1)是否已经被缓存在MAC地址表中,通过查找发现MAC地址表中没有主机PC1的MAC地址(M1)对应的条目,所以交换机记录与之对应的端口(F0/1),于是交换机生成(M1,E0/1)这样一个条目,并加入到MAC地址表内。
此时,在MAC地址表中没有主机PC3的MAC地址(M3)对应的条目,交换机将向除向E0/1以外的其它所有端口转发。
在转发数据帧之前,交换机是通过识别数据帧的源MAC地址学习到MAC地址和端口的对应关系的。
当得到MAC地址与端口的对应关系后,交换机将检查MAC地址表中是否已经存在该对应关系。
③循环上一步,MAC地址表不断加入新的MAC地址与端口对应信息。
直到MAC地址表记录完成为止。
交换机的MAC地址表也可以手工静态配置,静态配置的记录不会被老化。
学习地址举例一(单交换机):
(1)交换机初始时的MAC地址表是空的。
(2)工作站A向工作站C发送帧.
交换机缓存工作站A的MAC地址到MAC地址表中。
由于在MAC地址表中没有C的MAC地址,交换机向除了E0接口之外的所有其他接口扩散(flooding)这个数据帧。
在MAC地址表中的MAC地址缺省存留5分钟。
(3)工作站D向工作站C发送数据帧.
交换机缓存工作站D的MAC地址到端口E3中。
交换机将向除了E3之外的所有接口扩散这个数据帧,因为在MAC地址表中没有工作站C的MAC地址。
如果工作站C有回应,则交换机将缓存工作站C的MAC地址到MAC地址表中。
学习地址举例二(多交换机):
过程一:
如图,交换机A 、B ,主机11给主机33发送一个数据帧:假设交换机A B MAC地址表都是空的。
1.交换机A在接收到数据帧后,执行以下操作:
1)交换机A学习主机11的MAC地址,则现在交换机A的MAC地址表为:
2)交换机A查看MAC地址表;
3)如果MAC地址表有目的主机MAC地址则直接进行数据转发。
如果没有则继续执行步
骤4):
4)交换机A向除源数据发送端口外的其他所有端口发送广播;
2.交换机B在接收到数据帧后,执行以下操作:
1)交换机B学习源MAC地址和端口号,交换机B 现在的MAC地址表为:
2)交换机B查看MAC地址表;
3)交换机B向除源数据发送端口外的其他所有端口发送广播包;
4)主机22,查看数据包的目标MAC地址不是自己,丢弃数据包;
5)主机33,接收到数据帧;
6)主机44,丢弃数据帧。
过程二:
假如这时主机44要给主机11发送一个数据帧:
1.交换机B在接收到数据帧后,执行以下操作:
1)交换机B学习源MAC地址和端口号;
2)交换机B查看MAC地址表,根据MAC地址表中的条目,单播转发数据到端口3。
2.交换机A在接收到数据帧后,执行以下操作:
1)交换机A学习源MAC地址和端口号;
2)交换机A查看MAC地址表,根据MAC地址表中的条目,单播转发数据到端口1;
3)主机11,收到数据帧。
四、通信过滤
交换机建立起MAC地址表后,它就可以对通过的信息基于帧中的目的地址做出丢弃或转发到何处的决定,即进行过滤。
1.转发
工作站A向工作站C发送数据帧,由于目的MAC地址已经获得;因此,将按照MAC 表中所指示的接口转发数据帧,不会扩散帧;重新刷新工作站C的MAC地址超时时间。
2.丢弃
工作站A向工作站B发送数据帧,由于工作站B的MAC地址和接收的数据帧处于相同的接口,交换机将丢弃这个帧。
五、交换机工作过程描述
以太网LAN 交换机采用五种基本操作来实现其用途:
获取
过期
泛洪
选择性转发
过滤
第一步:初始化
第二步:数据发送
.
第三步:学习(获取)地址
第四步:泛洪第五步:应答
第六步:学习(获取)地址第七步:转发。