## 交换机MAC学习 拓扑,两台终端连接至同一台交换机,交换机为2层交换机,默认VLAN1 。使用PC1 ping PC2 ![](https://s4.51cto.com/images/blog/202104/22/9bde243916cc466dc99aa5ecd2dc84c3.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 查看交换机mac地址表 ``` dis mac-address ``` PC1的MAC(5489-9821-0EA9)映射在交换机的G0/0/24端口 PC2的MAC(5489-98e1-0a25)映射在交换机的G0/0/23端口 有了这个映射条目 ,交换机就可以把接收的帧相互进行转发 ![](https://s4.51cto.com/images/blog/202104/22/dc9f56f43529177c3d4479c9a212d207.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 此处还涉及到两个概念,一个叫广播,一个叫单播。所谓广播,既广而播之,单播为定向。 交换机加电,加载IOS后,MAC条目都为空。当PC1 ping PC2 时,交换机端口接收到包后就会发起广播,寻找PC2的MAC地址。我们在PC2就会看到广播包,PC2将信息返给交换机。通过这样一个问寻,就建立起了MAC地址列表。PC1 与 PC2 在以后的通信过程中就可以直接看到对方,而无需再进行广播。 ![](https://s4.51cto.com/images/blog/202104/22/b34e77880cab400a69b385431cd9edb7.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ## 环路 二层交换中会涉及到一个非常通用的概念,环路。即交换机产生了环路,环路会导致MAC学习混乱以及广播风暴产生 ,导致网络不可用。终其原理就是会在不同的端口学习到同一个MAC地址,导致交换机无法正常处理,就会反复的学习。无法到达终态,非常吃资源。 拓扑 ![](https://s4.51cto.com/images/blog/202104/22/2d223d0f7b3ad393f7f92fa2bf8bf8be.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 两台交换机关闭STP,模拟环路。 ``` sys stp diable ``` 在console界面,最显著特征就是会有mac flapping提示,表示有环路存在 ![](https://s4.51cto.com/images/blog/202104/22/6b4042ba541808a626da3ec3c1120de4.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 开启RSTP ![](https://s4.51cto.com/images/blog/202104/26/c3e3902968b865f01dd8854ea170295f.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) RSTP 是STP的加版 ,需要设置主根。将SW01设置为主根 sw1配置如下: ``` stp enable stp mode rstp stp root primary ``` sw2 sw3都开启生成树 ``` stp enable stp mode rstp ``` sw01 为主根 ![](https://s4.51cto.com/images/blog/202104/25/131bf3b7bc44fc45e8d7f17b11f70059.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) sw01,02,03 的端口状态如下,sw02端口有阻塞,如果环路中其它端口发生了变化 ,down掉,sw02的端口就会放开,保证链路的畅通。 ![](https://s4.51cto.com/images/blog/202104/25/5dd90d926b5ca2b3f079dbe33a9279e7.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s4.51cto.com/images/blog/202104/25/550c0835fdd3b2a50288b52d74c58a25.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s4.51cto.com/images/blog/202104/25/85c251611f4bf4d26ae7f660a47e2dca.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ## STP 原理 ### 概念 1、BPDU,桥接协议数据单元 ,用于存储生成树信息,并通过组播在交换机之间传递。BPDU传递的时间间隔默认为2S 2、Bridge ID,用于选举根交换机,由桥优先级和MAC组成。可配范围:0-65535 ``` -------[CIST Global Info][Mode RSTP]------- CIST Bridge :0 .4c1f-cc05-4633 ``` BID的规则 ,优先比较桥ID,桥ID越小优先级越高。如果优先级相同,则次比MAC地址,值越小优先级越高。 Port Cost,端口开销,华为说法,数据从端口发出时的开销,接收无开销。带宽越高,开销越小,带宽与开销成反比。开销值可以自定义(实验可以,但实际环境不建议,根据实际情况来决定) 3、Root Port,根端口,离根交换机最近的端口,到根路径开销最小。 根路径开销(root path cost),非根交换机到根交换机最小开销路径 ![](https://s4.51cto.com/images/blog/202104/25/a376f96a51002076c9e06281744b0817.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 4、Desinged Port,转发根交换机数据的端口 ![](https://s4.51cto.com/images/blog/202104/25/5cbe30c2153dff9b2d1a6881568b07cf.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 5、Alternate Port, 预备后补端口,实际上就是已经没有实际数据转发的端口,阻塞端口 ![](https://s4.51cto.com/images/blog/202104/25/9b38dadf3026d6417b7522d7fdf9249f.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 端口状态 Forwarding 转发状态 ,正常学习MAC,正常的端口状态 Learning 只处理bpdu,不转发流量,但正常学习MAC Discarding 丢弃状态,不转发数据流量 ,只接收bpdu信息 ``` stp现在没有用的,5种端口状态基本了解即可 ``` ![](https://s4.51cto.com/images/blog/202104/25/28ca15e9331bdc6f15fc9d143e6b3184.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### 根桥选举 前提: 所有交换机的链路都相同,链路的带宽一致。 1>根桥选举 在SW01上执行了,stp root primary ,根优先级便设置为了0。优先级最高,那必定产生两个DP端口。 ![](https://s4.51cto.com/images/blog/202104/25/da150785e83d97d480762fc4058e3a25.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s4.51cto.com/images/blog/202104/25/754386e7a29a243556a848a43b44797a.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 2>RP端口选举 根据RP端口定义,到根路径开销最小非根交换机的端口为root port。通过拓扑,我们可以查看到SW02的G0/0/1到根交换机的开销最小(直连) SW03的G0/0/2到根交换机的开销最小,选举为根端口。 ![](https://s4.51cto.com/images/blog/202104/26/9f6ef74fe8156cada96b16e6156e6b35.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](https://s4.51cto.com/images/blog/202104/26/91cfc065fa04642de1c00dad6e30c436.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 3>选举指定端口、阻塞端口 现在只剩下最后一段链路,SW2和SW3。端口抓包ROOT PATH COST都一样,此处使用了20000的值。那比较桥ID,SW3的梆ID最小。优先级高选举为DP端口,另一侧则为ALER端口(discarding) ![](https://s4.51cto.com/images/blog/202104/26/a152c9d8e6037525e34e2c274ce195a6.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 技巧: 根端口的选择:把自己放到非根桥交换机的位置,沿着每个端口可到达根桥,累加途经的带宽开销,开销最小的那个端口胜出,即是根端口。 指定端口的选择:把自己放在链路的中点,从链路的中点开始沿着两个不同方向的端口到达根桥,累计途经的带宽开销,开销最小的那个端口胜出,即是指定端口。