ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

06. 交换基本原理

2022-03-18 22:03:18  阅读:191  来源: 互联网

标签:vlan 06 基本原理 报文 VLAN 交换 MAC 地址 SW2


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

二层转发

MAC地址

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

  • 第1个字节的倒数第一个bit,若为1表示此MAC为组播或广播MAC地址;若为0,表示此MAC为单播MAC;

    • 单播MAC地址 00-e0-fc-00-00-06
    • 多播MAC地址 01-e0-fc-00-00-06
    • 广播地址:48位全1,如:ff-ff-ff-ff-ff-ff
  • 第1个字节的倒数第二个bit,若为1表示此MAC为本地意义;若为0表示为全局意义。

二层转发

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

地址学习线程:

  • 交换机接收所有的数据帧,利用接收到的数据帧中源MAC地址构建MAC地址表(cam表)
  • 端口移动机制。数据包源MAC地址对应的实际入端口和交换机的MAC地址表中对应的端口不同,就会产生端口移动,将MAC地址重新关联到新的端口。
  • 地址老化进制。交换机在很长时间都没有接收到某台主机发出的报文, 则将cam表中该主机对应的MAC地址条目删除。等下次报文经过的时候重新学习。

报文转发线程:

  • 在MAC地址表中查找数据帧中的目的MAC地址。若找到,则将数据帧通过记录的接口发送到传输链路;若找不到,则向所有的端口发送。
  • 收到的数据帧,源MAC地址和目的MAC地址所在的端口相同,则丢弃该报文。、
  • 广播报文转发,向入端口以外的其他所有端口转发

VLAN二层转发

报文转发线程

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

  • 交换机在MAC地址表中查找数据帧中的目的MAC地址,如果找到就将数据帧发送到相应的端口,同时要确保报文的入vlan和出vlan一致;如果找不到,就向所有同vlan内的所有端口发送。

  • 如果接收到报文中的源MAC地址和目的MAC地址所在的端口相同,则丢弃该报文。

  • 交换机向入端口以外的所有同vlan的端口转发广播报文。

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

  • 限制局部的网络流量,提供网络的处理能力。

  • 形成虚拟的工作组,通过灵活配置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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有