如何让交换机动态学习这些表项呢?(一)

STP的定位

在三层环境中,一组路由器相互连接。要实现路由选择,可以运行动态路由协议或使用静态路由。可以指定从源到目的通过哪条路径,修改路由的属性,比如修改Metric值,修改管理距离,在BGP中也可以修改路径向量,也叫路径属性,通过操纵这些参数,做一个三层路径的交换机,在二层环境下,因为交换机的智能不如路由器强,所以在二层环境下,交换机是互联的,冗余的时候设备之间的路径是连接的,源端到目的端走哪条路径,如何保证源端和目的端之间没有环路,而路径是最好的,取决于一个控制平面协议。该协议称为 STP。在说STP之前,我们先来回顾一下交换机的工作原理。

开关的工作原理

任何设备都有一个控制平面和一个数据平面。交换机的控制平面包含一个表,称为MAC地址表,也称为CAM表,称为内容可寻址存储器。该表作为交换机的转发表,帮助交换机转发网络中的数据。该表中的三个元素,PC的MAC地址c语言实现二层交换机的工作原理,PC连接的交换机的接口,接口所属的VLAN。通过这张表,交换机可以知道流量是通过哪个接口接收的,然后通过哪个接口发出,那么交换机是如何学习这个表的呢?交换机是否有类似的动态路由协议来学习这些东西?应该说它是一种动态切换协议。

答案是否定的,那我们可以手动写静态条目吗?当然,静态MAC地址表项也可以写,但是这种写法工作量大,不灵活。当 PC 需要频繁更改一些连接并进行一些迁移时,静态条目的使用是不可扩展的。那么,我们怎样才能让交换机动态学习这些条目呢?通常使用自动学习。这种自动学习特别不可靠,但是没有其他更好的学习方法,所以只能用这种方法。

如何学习交换机的MAC地址表

交换机刚上电时,交换机的MAC地址表为空。在自动学习过程中,无论是谁发送的帧,都会携带一个源MAC地址。该 MAC 地址是设备本身的标识符。当交换机通过一个接口收到一个源MAC地址的数据帧后,根据数据帧的源MAC地址、接收接口和该接口所属的VLAN,我将这三个地址绑定,形成一个MAC地址表项. 交换机的学习是指,只要我收到一个帧,我认为这个帧的发送者连接到我的接口。

你觉得这种学习方法靠谱吗?其实是不可靠的,因为我们不能保证发送端直接连接到交换机的接口,因为在我们的校园网中,在一个交换块内,交换机也会互联,交换机还是会连接到交换机的接口上。彼此。中继链路,一条中继链路可以允许多个VLAN通过。如果此时交换机之间连接了多条中继链路,您认为会发生什么?

在该图中,假设主机 A 连接在 SW1 后面,主机 B 连接在 SW2 后面,两个交换机之间连接了两条中继链路。当主机A发送广播数据时,SW 2是关于主机A的,MAC地址表将如何学习?

我们说交换机发送的广播帧中,目的MAC地址全为F,交换机能学习到的表项只能是单播表项。收到广播帧后,找不到转发表项,只能泛洪。该帧被复制成多个副本,并通过其他接口发送出去。交换机完成的泛洪称为 VLAN 中的泛洪。我通过 VLAN 中的接口接收广播流量。我可以通过哪些接口发送出去?属于该VLAN的其他接入接口,以及允许VLAN通过的Trunk接口和Hybrid接口,交换机之间通过Trunk链路互连。

因此,主机 A 发送的流量将通过这两条中继链路由 SW1 发送。假设先通过上层链路接收,SW2会将PCA的MAC地址绑定到上层接口。当 SW2 也通过下面的接口接收到同样的数据,那么开关 SW2 会做什么呢?

其实这个问题是在问大家,当交换机通过一个接口接收到一个数据帧,然后通过另一个接口接收到完全相同的帧,源MAC地址是一样的,这个地址学习怎么处理,学习之后之前的MAC地址表项会覆盖先学习的MAC地址表项,还是先学习的MAC地址表项保持不变,以后不更新?还是他们同时保留两者?答案是后来学到的东西会覆盖之前学到的东西。

当交换机通过一条路径学习到一个转发表项时,如果通过另一条路径学习到同一个转发表项,后面学习到的转发表项会覆盖第一个学习到的转发表项,这就是交换机控制平面学习到不可靠的根本原因。

泛洪会导致 MAC 地址表翻转

因为只要学会了这个入口,我就觉得这个设备是连接到我的接口的。当交换机之间存在多条冗余链路时,交换机可以通过多条链路接收相同的数据,如果让这些多条链路同时工作,设备会出现什么问题?设备会认为A暂时可以通过上层路径访问,而暂时可以通过下层路径访问。接收设备会不断切换路径,这就是MAC地址表的翻转。MAC地址表的翻转会导致流量转发不稳定。

例如,主机A向SW 1发送广播帧,SW 1通过上层链路洪泛将其发送给SW 2,SW 2将多次复制该数据帧,从除接收接口外的其他接口发送出去。会发给主机B,也会从下层链路洪泛到SW1,SW1通过下层链路发来的广播流量会从上层链路通过SW2洪泛回去。这是一个循环,泛洪会产生广播风暴,SW1和SW2收到这些流量后会继续泛洪,因为目的MAC地址全F,交换机肯定会泛洪目的MAC地址全F的数据帧。发送,可以发现,这种泛滥是永无止境的。只要设备之间存在冗余路径,就会出现环路。

那么如何解决这个问题呢?删除这些设备之间的冗余路径之一就足够了。只要设备之间没有冗余路径,就不会有环路。虽然这个地方会泛滥c语言实现二层交换机的工作原理,但是接收到的泛滥流量还是能再次泛滥回来吗?一定不能泛洪回,也就是说不能通过接收接口发回。因此,如果只连接一条路径,就不会出现前面的问题,但是单条链路会出现另一个问题,就是单点故障。, 没有冗余的网络是不健壮的。为了保持网络的健壮性,设备之间必须连接多条链路。

二层设备没有类似于动态路由协议的机制让设备知道整个网络是如何连接的。为了解决二层设备造成的环路问题,引入了生成树技术。

生成树技术的好处:

1、可以动态监控链路和设备的运行状态,定时发送链路检测报文。如果在限定时间内没有收到对方的检测报文,则认为链路故障。

2、生成树可以自动计算最优路径,保证网络中的数据转发路径是最优路径。

3、当设备或链路不可用时,可立即发现拓扑变化,无需人工干预即可立即启动拓扑变化的计算并自动完成。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论