当前位置: 首页 网络技术 正文

LAN技术

朱古力 |
    1. MAC地址表
    2. 安全端口
    3. MAC地址漂移
    4. 免费ARP
    5. RSTP对STP报文的变化
    6. 拓扑变化的区别
    7. P/A机制

MAC地址表

MAC地址表的几个主要的要素:mac地址、端口号、地址类型、vlan号:

动态MAC:由交换机根据数据包中的源MAC和接收这个数据包的接口来自动学习的,默认300秒老化。type为dynamic

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\60FEA95F.tmp

静态mac:由管理员手动配置,不会老化,type为static。配置如下:

mac-address static 0817-9122-9083 GigabitEthernet 0/0/1 vlan 10

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\22DD59C5.tmp

黑洞表项:由管理员手动配置,当数据包的源目mac如果是该配置黑洞表项mac的报文都会被丢弃,表项不可老化。

如下:正常情况下三台设备均可通信,假设pc3被病毒感染,为了安全起见可将pc3的mac地址配置为黑洞表项。

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\E694751B.tmp

正常情况下:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\9D1868E1.tmp

将pc3的mac配置为黑洞表项:类型为blackhole

mac-address blackhole 5489-983f-3f88 vlan 1

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\A31F7E97.tmp

再次测试:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\436A3BBD.tmp

安全端口

在现实网络情况中,客户对网络的安全性有一定要求,为了防止网络中出现mac地址泛红(黑客机发送大量源mac不同的伪造数据包)等攻击,可以在交换机设备上配置安全端口来实现。它的实现原理是将交换机动态学习到的mac地址转换为安全,以此来限制之后的非法主机接入到网络。其核心就是限制mac地址数。

如图:在上个实验的基础上添加。在LSW1的g0/0/4口配置端口安全,并限制安全端口数为2 。

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\BB0AC1D3.tmp

配置:

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,所以第三台设备就无法进行通信。

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\B3032E59.tmp

查看mac地址表:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\7452FACF.tmp

同时他可以配置当达到用户上限后收到其他数据包后的处理方式:1丢弃并报警、2丢弃、3关闭端口。默认动作是1丢弃并报警:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\134B5CB5.tmp

这个方式虽然可以实现安全的防护,但是它有个问题,那就是当lsw1的g0/0/4接口down掉后安全端口学习的mac地址表也会被清除。为了解决这个问题,出现了另一种技术——stick粘性mac

配置:

port-security mac-address sticky

这样的话,当链路down之后这个安全表项还会被保留。

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\5CC2A58B.tmp

同时粘性mac还可以手动配置(安全静态mac地址):

port-security mac-address sticky 5489-98D5-59A4 vlan 1

mac地址漂移

mac地址漂移产生的前提是产生了环路,在交换机上先学习到的mac地址被后学习到的mac地址覆盖的现象就是mac地址漂移。比如以下场景:(首先要关闭stp功能,在现实情况中也会有这样的需求,比如将一台交换机当hub用的时候)

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\E37EA2D1.tmp

在pc1上ping192.168.1.2 ,交换机在收到一个未知单播包后会泛红该数据包,即向除了接收该数据包的接口之外的所有端口转发出去。这个时候网络中就会产生广播风暴。

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\15EDFE07.tmp

在一个交换机上不停的查看mac地址表就可以看到mac地址漂移现象

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\34089CAD.tmp

解决这个问题最粗略的一个方法就是断开链路,但是不能根本上解决问题,又因为需求原因不能运行破坏协议,针对这种情况出现了相应的解决方案:

  1. 配置mac地址的学习优先级
  2. 不允许相同优先级的mac地址漂移
  3. 配置mac地址漂移监测

配置mac地址的学习优先级配置:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\42EF0043.tmp

默认优先级为0,最大为3,越大越优先。(注意在做实验时候要等mac地址表老化,也可以直接修改老化时间mac-address aging-time 10)

不允许相同优先级mac地址漂移:

[Huawei]undo mac-learning priority 0 allow-flapping

配置mac地址漂移监测:

[Huawei]mac-address flapping detection

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\27A0A649.tmp

免费ARP

免费arp就叫无故arp,又叫GARP。他的作用是通告本地的ip地址和冲突地址检测,还有一个作用就是刷新mac地址表。

刷新mac地址表常见在VRRP协议中,当一条链路down掉后VRRP备份链路启用后发送免费arp来刷新mac地址表。

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\D3E1683F.tmp

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\5825DBA5.tmp

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端口。

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\AB1EB1FB.tmp

BP作为指定端口的备份,场景是这样的:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\7B3B18C1.tmp

根桥发送的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的拓扑变化:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\583A1977.tmp

假设有这么个环境,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秒,这是一个转发延迟的时间。

发生拓扑变化:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\62A2F99D.tmp

P/A机制

P/A机制主要解决的问题是在learning->forwarding状态时等待15秒的问题。该15秒是为了解决临时环路。(临时环路发生的原因是当端口角色发生变化后直接进入了forwarding状态,但是该变为阻塞口的接口还未来得及阻塞,而导致的临时环路)

P/A机制的工作原理如下:

C:\Users\Administrator\AppData\Local\Microsoft\Windows\INetCache\Content.MSO\64BC9AB3.tmp

  1. 一开始两设备都认为自身为根桥,都会发送P置位的rst BPDU
  2. 非根交换机收到对面发的更优的BPDU后就会意识到自身的端口将会变为根端口,立刻停止发送P置位的BPDU并且阻塞除接收BPDU端口之外的所有非边缘端口,并回复A置位的RST BPDU。此时为discarding状态
  3. 根桥收到A置位的BPDU之后立刻进入转发状态。
  4. 该过程继续向下游进行。

由于在P/A机制时候非边缘端口和接收端口是阻塞的,所以也就避免了临时环路的发生。所以RSTP中不必等待15秒来避免临时环路。

RSTP快的原因有三个:

  1. P/A机制是RSTP速度快的根本原因
  2. 边缘端口的引入,边缘端口能够加速网络的收敛,可以直接进入转发状态,并且拓扑变化之后不会产生TCN BPDU,也不会处理TCN BPDU
  3. 根端口的快速切换。RSTP将端口角色进行细化之后的一大用途,也是为什么STP没有这个机制的原因。

声明:原创文章请勿转载,如需转载请注明出处!