关于交换机数据帧的转发过程,本人之前一直处于比较模糊的状态。此次将总结交换机各接口及在个接口下详细的转发过程。此文由躺平bro同学提供解惑支持。
冲突域
冲突域是指连接在同一共享介质上的所有节点的集合。冲突域内所有节点竞争同一带宽,一个节点发出报文,(单播,组播,广播),其他节点都可以收到。
1)早期以太网,都处于一个冲突域中,可使用CSMA/CD(载波侦听多路访问/冲突检测机制)。
2)在交换机中,每个接口都是一个冲突域。(当交换机与路由器连接时,计算交换机冲突域,需计算上与路由器连接的接口,也算一个冲突域)
3)Hub一整个均为一个冲突域。
广播域
广播报文所能到达的整个访问范围称为二层广播域,简称广播域。同一广播域内所有主机都能收到广播报文。
1)早期以太网,都处于一个广播域中。
2)在交换机中对广播报文会向所有接口都转发,所以交换机的所有接口连接的节点都属于一个广播域。
3)路由每个接口下都是一个广播域。
4)Hub一整个均为一个广播域。
如下图,此图下有4个冲突域即2个广播域,4个冲突域为交换机的3个接口及整个HUB。2个广播域为路由器接口下的整个SWA和整个HUB
MAC地址解释
MAC地址是由六个十六进制数组成,一个十六进制为8bit,所以MAC地址长度为48bit,也等于6Byte.其中前3个字节为OUI(厂商代码)后面3字节由厂商分配。
MAC地址分类
MAC地址分为单播,组播和广播。单播和组播看第8位bit的数值。单播数值为0,组播数值为1,广播则MAC地址为全1,即FF-FF-FF-FF-FF-FF(此处要将第一个十六进制转换为二进制,查看此二进制的第八位即可查看)
交换机的3种数据帧处理
当数据发送时,交换机接口会记录这个源MAC地址,接口会与这个MAC地址一一对应。如有交换机中存在目标MAC地址,则会通过存在MAC地址记录的接口发送。
泛洪
当发送的MAC地址不存在交换机时,则会泛洪,将从除入接口之外的所有接口都发送。
转发
当找到MAC地址后,则会转发。
丢弃
在交换机中,数据帧出入的是同一个接口,出接口与入接口转发同一个数据帧时,则会丢弃。如下图,交换机下接hub集线器,当PC1发送数据给PC2时,hub会进行泛洪,此时PC2已经收到了PC1的数据帧,但因为泛洪的原因,交换机的G0/0/1接口也会收到PC1会出现网络问题。此时PC1的数据帧发送到交换机G0/0/1接口,又从交换机的1接口发出,则交换机会将此数据帧丢弃。
同网段数据通信全过程
1.网卡是通过MAC地址通信,主机A没有APR表路由器没有MAC地址表,主机Aping主机B时,会发送ARP Request (ARP请求),ARP Request 是广播包。此时源MAC为本机MAC,目标MAC为广播地址FF-FF-FF-FF-FF-FF,源IP地址为本机IP,目标IP为主机B IP地址。
2.此时交换机学习主机A的MAC地址并对应到所接接口,再将数据帧广播出去。
3.主机B收到时会发送ARP Reply,此时源MAC地址为主机B的MAC地址,目标MAC地址为主机A的MAC地址,源IP为主机B的IP,目标IP为主机A的IP。发送时,交换机MAC表学习到主机B的MAC地址并与接口对应,根据目标IP即目标MAC地址进行发送。此时主机A及主机B的ARP表将记录对方的MAC地址,交换机的MAC地址表也会记录两台设备在接口的对应关系。
VLAN
一个VLAN可以看作是一个广播域,VLAN作用于接口,同个VLAN的主机可以互相访问,不同的VLAN的通信需使用三层设备,做三层转换或单臂路由。(华为还可使用hybrid接口实现二层的不同VLAN通信)
VLAN发送数据帧时,会带VLAN标签,假如发送的数据帧的VLAN是同VLAN,则可以访达,如不同VLAN数据帧时,则不可访达。
Access接口工作原理
Access接口只属于一个VLAN。
Access接口作用于交换机与终端设备的连接,有时交换机需要和路由器接口直接进行通信时,也需要配置Access。(因为交换机接口无法直接配置IP地址,那么需要使用vlanif配置IP地址进行通信。那么为什么使用Access而不使用trunk,因为此处没有多个VLAN通过。如路由器使用子接口连接交换机时,则可配置Trunk)
接收帧
接口收到无标签的数据帧时,接收该帧,并打上该接口的PVID的tag.
接口收到带标签的数据帧时,当该帧的VLAN ID与该接口的PVID相同时,接收该帧,当该帧的VLAN ID与该接口的PVID不同时,丢弃该帧。
发送帧
帧的VLAN ID与接口PVID相同时,先剥离该帧的标签,然后再从该接口发出。
帧的VLAN ID与接口PVID不相同时,禁止将该帧从接口发出。
**此处较为抽象,第一次详细了解的时候一直没有搞清楚这是什么逻辑。但请记住两个原则:
1)剥离或加上VID 及 PVID,均是有其道理。
2)数据帧交换时并不是只看一个接口,需要结合多接口进行。**
access接口的功能为剥离及打上标签。
为什么要打上PVID
因为在二层中,终端设备中通信使用需申明数据帧来自哪个VLAN,相同VLAN之间方可通信。
为什么要剥离VLAN的ID
因为access连接的是终端设备,如主机或打印机等,这类设备无法识别VLAN标签,则需要剥离此VLAN ID,变成最初原始数据帧进行通信。
具体Access通信过程(不同VLAN及相同VLAN通信过程)
1)如下图所示,无标签的数据帧为主机发出的原始数据帧,当声明交换机接口G0/0/1为access并属于VLAN 10时,则发出的原始数据帧经过此access接口后将被打上VLAN 10。
2)如此时与为access并属于VLAN 20的G0/0/2通信,对于G0/0/2号口,此数据帧为进入接口带有VLAN 10标签的数据帧,那么在交换机内部,会查看G0/0/2号属于哪个VLAN,如不是与G0/0/2号口相同VLAN,则不可达。
3)如此时与为access并属于VLAN 10的G0/0/3通信,对于G0/0/3号口,此数据帧为进入接口带有VLAN 10标签的数据帧,那么在交换机内部,会查看G0/0/3号属于哪个VLAN,因为接口G0/0/3属于VLAN 10,那么G0/0/3作为发送方,会将剥离VLAN 10,然后变成原始数据帧进行转发。
Trunk接口工作原理
Trunk接口可属于多个VLAN,常用于交换机与交换机之间,Trunk可以指定唯一个PVID,当数据帧属于这个PVID时,则会剥离这个VLAN ID,变成无标签的数据帧。(此处为唯一在Trunk接口中能首发无标签原始数据帧的方式,PVID 缺省模式下为VLAN 1)
接收帧
接口收到无标签的数据帧时,该帧打上PVID,当PVID在该接口允许的通过的VLAN列表时则接收该帧,当PVID 不在允许通过VLAN的列表里时,丢弃该帧。(port trunk pvid vlan 10,VLAN10的数据帧就不带标签)
接口收到带标签的数据帧时,当该帧的VLAN ID在该接口允许通过的VLAN列表里时,接收该帧,否则丢弃该帧。
发送帧
数据帧的VLAN ID是该接口允许通过的VLAN ID,属于Tagged List的话则会转发交给需访问的终端设备的接口(Access),然后该Access接口则将与上述一样剥离VLAN ID后转发原始数据帧到主机。
具体Trunk通信过程(不同VLAN及相同VLAN通信过程)
1)如下图所示,PC1与PC3进行通信,无标签的数据帧为PC1发出的原始数据帧,当声明交换机接口G0/0/1为access并属于VLAN 10时,则发出的原始数据帧经过此access接口后将被打上VLAN 10。当数据帧经过LSW1G0/0/3时,LSW1会判断此数据帧是否在tagged List中,如存在此List中,则转发至LSW2的Trunk口,当进入的数据帧也属于tagged List中,则转发至对应Access接口,Access接口判断是否同为一个VLAN,是的话进行剥离,将原始数据帧转发至PC3。
2)如下图所示,PC1与PC4进行通信,无标签的数据帧为PC1发出的原始数据帧,当声明交换机接口G0/0/1为access并属于VLAN 10时,则发出的原始数据帧经过此access接口后将被打上VLAN 10。当数据帧经过LSW1G0/0/3时,LSW1会判断此数据帧是否在tagged List中,如存在此List中,则转发至LSW2的Trunk口,当进入的数据帧也属于tagged List中,则转发至对应Access接口,Access接口判断是否同为一个VLAN,但接口属于VLAN 20,所以此数据帧不可达。
Hybrid接口工作原理
Hybrid接口属于华为设备中特有的接口类型,此接口是最为抽象的接口。属于Access及Trunk的融合接口。它及可以允许多个VLAN通过,也可以剥离VLAN ID;又可以作用于交换机与交换机之间,又可以作用与交换机与终端设备之间;配置Hybrid接口后可以接收多个VLAN的数据帧。
Hybrid接口像Trunk接口一样,可属于多个VLAN并允许通过的多个VLAN ID(port hybrid tagger vlan X X X,此命令用于多VLAN通过的线路,如交换机之间的连接)。
Hybrid接口又像Access接口一样剥离VLAN ID,(port hybrid untagger vlan X X X,此命令用于剥离VLAN ID,用于交换机与终端之间的连接)
接收帧
当Hybrid接口收到一个不带有VLAN ID的数据帧,则会在Hybrid接口的PVID 加上PVID,然后进行转发。(此处类似Access接收原始数据帧的过程)
Hybrid接口收到一个带有VLAN ID的数据帧时,则会查看Tagged List和Untagged List,如存在于Tagged List,则进行转发。(此处类似Trunk接口允许通过VLAN)如存在于Untagged List,则剥离VLAN ID,还原数据帧。(此处类似Access剥离VLAN ID原始数据帧的过程)
发送帧
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID既不在Untagged VLAN ID列表中,也不在Tagged VLAN ID列表中,则该Tagged帧会被直接丢弃。
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Untagged VLAN ID列表中,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去。
当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Tagged VLAN ID列表中,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去。
具体Hybrid通信过程(不同VLAN及相同VLAN通信过程)
1)如下图所示,PC1和P2与PC3进行通信,无标签的数据帧为PC1和PC2发出的原始数据帧,当声明LSW1交换机接口G0/0/1和G0/0/2为Hybrid并属于pvid 10 和 pvid 20时,则发出的原始数据帧经过此Hybrid接口后将被打上VLAN 10和VLAN 20。当数据帧经过LSW1G0/0/3时,LSW1会判断此数据帧是否在tagged List中,如存在此List中,则转发至LSW2的Hybrid口,当进入的数据帧也属于tagged List中,则转发至对应Hybrid接口,Hybrid接口判断是否此数据帧是否存在接口的Untagged List中,是的话进行剥离 VLAN ID,将原始数据帧转发至PC3。(PC3访问PC1 PC2同理)
2)如下图所示,PC1和P2进行通信,无标签的数据帧为PC1和PC2发出的原始数据帧,当声明LSW1交换机接口G0/0/1和G0/0/2为Hybrid并属于pvid 10 和 pvid 20时,则发出的原始数据帧经过此Hybrid接口后将被打上VLAN 10和VLAN 20。Hybrid接口判断是否此数据帧是否存在接口的Untagged List中,由于接口的Untagger List中没有对方的VLAN ID,无法剥离VLAN ID,所以此数据帧不可达。
交换机环路
具体原理可查看以下文档,此文档总结较为完善。如出现交换机环路,可使用STP,消除交换机环路,避免广播风暴。
MAC地址震荡,STP震荡,OSPF路由协议震荡
本文由 yorickbao 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。