其他分享
首页 > 其他分享> > 06. 交换基本原理

06. 交换基本原理

作者:互联网

三层交换机的转发机制分为二层转发和三层交换。

二层转发

MAC地址

MAC地址由48bit的二进制数组成,有单播、组播和广播地址。

二层转发

二层转发涉及两个重要线程:地址学习线程和报文转发线程。

地址学习线程:

报文转发线程:

VLAN二层转发

报文转发线程

引入vlan之后对二层交换机的报文转发线程产生的影响如下:

以太网交换机引入vlan的好处:

VLAN终结和透传

VLAN透传:某个VLAN不仅在一台交换机上有效,还可以通过某种办法延伸到别的交换机上,在别的设备上依然有效

VLAN终结:某个VLAN的有效域不能再延伸到别的设备,或者不能通过某条链路延伸到别的设备上。

透传可以利用802.1Q,终结可以使用PVLAN。

IEEE802.1Q协议是VLAN的技术标准,主要是通过修改标准的帧头,添加一个tag字段,其中包含VLAN ID等vlan信息。

ps:

在trunk端口转发报文时,若报文的vlan tag等于端口上默认的vlan ID,则需要去掉tag后转发;对端接口收到没有tag的报文时,端口的默认vlan ID作为报文的tag。

去tag的原因 ? 保证一般用户插到trunk上以后,仍然能够通信。普通用户无法识别带有802.1Q vlan信息的报文。

三层交换

不同VLAN无法进行二层通信,需要借助支持VLAN的三层交换设备建立VLAN间通信。不直接使用路由器互联不同的VLAN有以下原因:

#1. PC1————PC2通信:同一个VLAN

①PC1构造的IP报文:

​ 源IP:10.1.1.1

​ 目标IP:10.1.1.2

②PC1查自己的路由表,匹配直连路由

​ 10.1.1.0/24 直连路由

​ 0.0.0.0/0 10.1.1.254

③PC1将此IP报文封装到二层

​ L3:源IP:10.1.1.1 目标IP:10.1.1.2

​ L2:目标MAC:??? 源MAC:MAC_PC1

④如果在PC1的ARP缓存表中已经存在IP地址10.1.1.2所对应的MAC地址,则直接到步骤⑩;

​ 这里假设PC1的ARP缓存表中未找到10.1.1.2对应的MAC地址。则:

​ PC1将向此广播域中发出ARP Request的广播报文,请求10.1.1.2对应的MAC地址。

​ 目标MAC:FFFF-FFFF-FFFF 源MAC:MAC_PC1

⑤该数据帧到达SW1,学习源MAC地址,写入SW1的MAC地址表。并且将此广播帧在VLAN 10中泛洪。

​ SW1的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC1 f0/1 10

⑥此数据帧通过SW1的Trunk链路到达SW2。SW2学习源MAC地址,写入SW2的MAC地址表。然后SW2将此广播帧从VLAN 10的所有端口泛洪出去到达PC2。

​ SW2的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC1 f0/24 10

⑦PC2收到此ARP Request,将10.1.1.1与MAC_PC1的对应关系写入PC2自己的ARP缓存表。并且PC2回复一个ARP Reply报文。

​ 目标MAC:MAC_PC1 源MAC:MAC_PC2

⑧PC2发出此ARP Reply,到达SW2。SW2学习源MAC地址,写入SW2的MAC地址表。

​ SW2的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC1 f0/24 10

​ MAC_PC2 f0/1 10

⑨ 从SW2的f0/24将此数据帧精确的转发出去,到达SW1。SW1学习源MAC地址,写入SW1的MAC地址表。然后SW1通过查看自己的MAC地址表将此数据帧精确的转发出去,到达PC1。

SW1的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC1 f0/1 10

​ MAC_PC2 f0/24 10

⑩ PC1将10.1.1.2与MAC_PC2的对应关系写入自己的ARP缓存表。

​ PC1继续步骤③,完成数据的二层封装。并且将此数据帧发送出去。

​ L3:源IP:10.1.1.1 目标IP:10.1.1.2

​ L2:目标MAC:MAC_PC2 源MAC:MAC_PC1

​ 此数据包的通信在解封装到2层时就已经可以做转发决策,SW1、SW2通过查看自己的MAC地址表完成数据的转发任务。

#2. PC3————PC2通信:不同VLAN

①PC3构造IP报文

​ 源IP:20.1.1.1 目标IP:10.1.1.2

②PC3查自己的路由表,匹配默认路由,即PC3认为此IP报文必须交由网关20.1.1.254来中转

​ 20.1.1.0/24 直连路由

​ 0.0.0.0/0 20.1.1.254

③PC3将此IP报文封装到二层

​ L3:源IP:20.1.1.1 目标IP:10.1.1.2

​ L2:目标MAC:???(网关) 源MAC:MAC_PC3

④如果在PC3的ARP缓存表中已经存在IP地址20.1.1.254所对应的MAC地址,则直接到步骤⑧

​ 这里假设PC3的ARP缓存表中未找到20.1.1.254对应的MAC地址。则:

​ PC3将向此广播域中发出ARP Request的广播报文,请求20.1.1.254对应的MAC地址。

​ 目标MAC:FFFF-FFFF-FFFF 源MAC:MAC_PC3

⑤该数据帧到达SW1,学习源MAC地址,写入SW1的MAC地址表。SW1发送该数据帧,将此广播帧在VLAN 20中泛洪。

​ SW1的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC3 f0/2 20

⑥此数据帧通过SW1的Trunk链路到达SW2。SW2学习源MAC地址,写入SW2的MAC地址表。SW2将此广播帧从VLAN 20的所有端口(包括划分到vlan 20的access端口、允许vlan 20通过的trunk端口,还有VLAN 20对应的三层接口/intface vlan 20)泛洪出去。

​ SW2的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC3 f0/24 20

​ SW2的int vlan 20收到此ARP Request,首先将20.1.1.1与MAC_PC3的对应关系写入SW2的ARP缓存表。并且SW2的int vlan 20接口回复一个ARP Reply报文。

​ 目标MAC:MAC_PC3 源MAC:MAC_SW2_int_vlan_20

​ SW2的二层模块从一个内部接口(SW2的二层模块与三层模块互连的内部接口)收到此数据帧,学习源MAC地址。并且查找MAC地址表将此ARP Reply从f0/24口发送到SW1。

​ SW2的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC3 f0/24 20

​ MAC_SW2_int_vlan_20 指向L3引擎的内部接口 20

⑦SW1从F0/24收到此数据帧,学习源MAC地址,并将此数据帧从f0/2口发出,到达PC3。

​ SW1的MAC地址表:

​ MAC地址 端口号 VLAN

​ MAC_PC3 f0/2 20

​ MAC_SW2_int_vlan_20 f0/24 20

⑧PC3收到ARP Reply后,将20.1.1.254<----->MAC_SW2_int_vlan_20的对应关系写入ARP缓存表。并继续步骤③,完成IP报文到2层以太网帧的封装。并将此数据包发送出去。

​ L3:源IP:20.1.1.1 目标IP:10.1.1.2

​ L2:源MAC:MAC_PC3 目标MAC:MAC_SW2_int_vlan_20

⑨PC3将此数据帧发出,SW1收到后,只解封装到2层就进行了数据的转发送给了SW2。

⑩数据到达SW2后,SW2查看自己的MAC地址表将此数据包交给了三层引擎处理。SW2的三层引擎查看自己的路由表匹配到一条直连路由,将此数据包从这个L3引擎的内部接口下发到2层后,转发给PC2。

三层交换机怎样区分二层和三层的数据流?

同一个VLAN内部 A到B,报文的目的MAC地址是主机B的MAC地址;不同VLAN互通 A到C,报文的目的MAC地址是设备虚接口MAC地址。所以交换机判断二层/三层报文是看报文目的MAC地址是否等于交换机虚接口上的MAC地址。

三层交换机处理流程:

软件协议栈:运行路由协议、维护路由表信息和IP协议栈等功能。在硬件不能完成报文转发时,它可以代替硬件来完成报文的三层转发。像telnet、ping、ftp和snmp的数据流都是由它处理完成。

硬件处理:二层的MAC地址表和三层的ipfdb表,两张表用于保存转发信息。在信息很全面的情况下,报文的转发和处理均是由硬件来完成处理,不需要软件干预。两个表互相独立,互不影响。设备收到报文,先判断该报文是二层还是三层报文,然后判断源和目的地址是否已经解析,如果已经解析,则通过硬件完成报文转发,若是未解析,则产生CPU中断,靠软件先学习该未解析的地址。

区分二和三层数据流:

宏观角度:对于同一个vlan内通信,对于与交换机是二层数据流;跨越VLAN通信是三层的数据流。

微观角度:两个终端在同一个vlan内部通信,报文的目的MAC地址将是另一台终端的MAC地址;跨越VLAN通信,报文的目的MAC地址是 交换机设备上虚接口VLAN的MAC地址。区分二层、三层数据流的标准是看报文的目的MAC地址是否等于交换机虚接口上的MAC地址。

标签:vlan,06,基本原理,报文,VLAN,交换,MAC,地址,SW2
来源: https://blog.csdn.net/weixin_45035811/article/details/123566367