-
- MAC地址表
- 安全端口
- MAC地址漂移
- 免费ARP
- RSTP对STP报文的变化
- 拓扑变化的区别
- P/A机制
MAC地址表
MAC地址表的几个主要的要素:mac地址、端口号、地址类型、vlan号:
动态MAC:由交换机根据数据包中的源MAC和接收这个数据包的接口来自动学习的,默认300秒老化。type为dynamic
静态mac:由管理员手动配置,不会老化,type为static。配置如下:
mac-address static 0817-9122-9083 GigabitEthernet 0/0/1 vlan 10
黑洞表项:由管理员手动配置,当数据包的源目mac如果是该配置黑洞表项mac的报文都会被丢弃,表项不可老化。
如下:正常情况下三台设备均可通信,假设pc3被病毒感染,为了安全起见可将pc3的mac地址配置为黑洞表项。
正常情况下:
将pc3的mac配置为黑洞表项:类型为blackhole
mac-address blackhole 5489-983f-3f88 vlan 1
再次测试:
安全端口
在现实网络情况中,客户对网络的安全性有一定要求,为了防止网络中出现mac地址泛红(黑客机发送大量源mac不同的伪造数据包)等攻击,可以在交换机设备上配置安全端口来实现。它的实现原理是将交换机动态学习到的mac地址转换为安全,以此来限制之后的非法主机接入到网络。其核心就是限制mac地址数。
如图:在上个实验的基础上添加。在LSW1的g0/0/4口配置端口安全,并限制安全端口数为2 。
配置:
interface GigabitEthernet0/0/4
port-security enable
port-security max-mac-num 2
让pc4、6先ping一下192.168.1.1。之后再让pc4 ping一下192.168.1.1 之后就会发现由于设置了安全端口限制数量为2,所以第三台设备就无法进行通信。
查看mac地址表:
同时他可以配置当达到用户上限后收到其他数据包后的处理方式:1丢弃并报警、2丢弃、3关闭端口。默认动作是1丢弃并报警:
这个方式虽然可以实现安全的防护,但是它有个问题,那就是当lsw1的g0/0/4接口down掉后安全端口学习的mac地址表也会被清除。为了解决这个问题,出现了另一种技术——stick粘性mac
配置:
port-security mac-address sticky
这样的话,当链路down之后这个安全表项还会被保留。
同时粘性mac还可以手动配置(安全静态mac地址):
port-security mac-address sticky 5489-98D5-59A4 vlan 1
mac地址漂移
mac地址漂移产生的前提是产生了环路,在交换机上先学习到的mac地址被后学习到的mac地址覆盖的现象就是mac地址漂移。比如以下场景:(首先要关闭stp功能,在现实情况中也会有这样的需求,比如将一台交换机当hub用的时候)
在pc1上ping192.168.1.2 ,交换机在收到一个未知单播包后会泛红该数据包,即向除了接收该数据包的接口之外的所有端口转发出去。这个时候网络中就会产生广播风暴。
在一个交换机上不停的查看mac地址表就可以看到mac地址漂移现象
解决这个问题最粗略的一个方法就是断开链路,但是不能根本上解决问题,又因为需求原因不能运行破坏协议,针对这种情况出现了相应的解决方案:
- 配置mac地址的学习优先级
- 不允许相同优先级的mac地址漂移
- 配置mac地址漂移监测
配置mac地址的学习优先级配置:
默认优先级为0,最大为3,越大越优先。(注意在做实验时候要等mac地址表老化,也可以直接修改老化时间mac-address aging-time 10)
不允许相同优先级mac地址漂移:
[Huawei]undo mac-learning priority 0 allow-flapping
配置mac地址漂移监测:
[Huawei]mac-address flapping detection
免费ARP
免费arp就叫无故arp,又叫GARP。他的作用是通告本地的ip地址和冲突地址检测,还有一个作用就是刷新mac地址表。
刷新mac地址表常见在VRRP协议中,当一条链路down掉后VRRP备份链路启用后发送免费arp来刷新mac地址表。
RSTP对STP报文的变化
1.端口角色的变化
stp中的端口角色有:AP DP RP 在RSTP中对端口角色进行了细分,他的端口角色有RP DP AP BP ,其中AP作为RP的备份,BP作为DP的备份,备份的原因是为了实现端口的快速切换。这也是RSTP为什么要比STP速度快的原因之一,并且RSTP可以有这种机制,STP却没有的原因。由于AP口的对端必定是一个指定端口,RP端口down掉后,交换机能瞬间感知到,并将AP端口的角色转变为RP端口。
BP作为指定端口的备份,场景是这样的:
根桥发送的BPDU会被1、2口相互收到,此时开销一致。BID一样。接下来需要比较PID,PID包含端口优先级和端口号,默认情况下端口优先级一样,所以选择端口号小的作为指定端口,所以1是DP口,2是BP口。
2.端口状态的变化
STP有五种端口状态:disable 、 blocking、listening、learning、forwarding。RSTP对端口状态进行了改进,简化为三种状态 discarding、learning、forwarding。
3.报文的变化
STP中有两种报文:配置BPDU和TCNBPDU。RSTP中只有一种报文RSTBPDU。同时将报文中的flag字段进行了改进。
flag字段有8比特,在stp中的flag字段只用了最低位和最高位,第一位是tc位。第八位是tca位。
rstp中除了这两个位之外还使用了其他的五位。其中第二位是P位,低7位为A位。他两个用于P/A机制。第三四位为端口角色其中当为11时表示为DP口,10时为RP口,01时为AP或BP口。00这个未使用。第五位和第六位表示端口状态,低五位为learning,低六位为forwarding,他俩都不置位时候就是discarding。
4.拓扑发生变化时的改变
stp的拓扑变化:
假设有这么个环境,sw1为根桥,当SW4与SW5之间的链路发生变化后(RSTP中接口变为forwarding状态为变化,STP只要up/down就为变化)的处理过程如下:
- SW4感知到发生拓扑变化之后会产生TCN 向上游发送
- 当上游设备SW3收到TCN BPDU之后向下游SW4发送TCA置位的BPDU,通知SW4停止发送TCN BPDU
- 同时SW3复制一份该TCN BPDU继续向上游发送,重发该过程,直到根桥收到该TCN BPDU
- 根桥收到TCN BPDU之后就会直到网络发生了拓扑变化,会向全网发送TC置位的BPDU,通知全网设备刷新MAC地址表。且第一份报文中的TCA和TC都置位,TC置位的BPDU会持续发送15秒,这是一个转发延迟的时间。
发生拓扑变化:
P/A机制
P/A机制主要解决的问题是在learning->forwarding状态时等待15秒的问题。该15秒是为了解决临时环路。(临时环路发生的原因是当端口角色发生变化后直接进入了forwarding状态,但是该变为阻塞口的接口还未来得及阻塞,而导致的临时环路)
P/A机制的工作原理如下:
- 一开始两设备都认为自身为根桥,都会发送P置位的rst BPDU
- 非根交换机收到对面发的更优的BPDU后就会意识到自身的端口将会变为根端口,立刻停止发送P置位的BPDU并且阻塞除接收BPDU端口之外的所有非边缘端口,并回复A置位的RST BPDU。此时为discarding状态
- 根桥收到A置位的BPDU之后立刻进入转发状态。
- 该过程继续向下游进行。
由于在P/A机制时候非边缘端口和接收端口是阻塞的,所以也就避免了临时环路的发生。所以RSTP中不必等待15秒来避免临时环路。
RSTP快的原因有三个:
- P/A机制是RSTP速度快的根本原因
- 边缘端口的引入,边缘端口能够加速网络的收敛,可以直接进入转发状态,并且拓扑变化之后不会产生TCN BPDU,也不会处理TCN BPDU
- 根端口的快速切换。RSTP将端口角色进行细化之后的一大用途,也是为什么STP没有这个机制的原因。