• 思科生成树与端口聚合


    交换机(Switch)是一种用于电信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路,最常见的交换机是以太网交换机,其他常见的还有电话语音交换机、光纤交换机等,交换机是集线器的升级替代产品,理论上讲交换机就是按照通信两端传输信息的需求,将需要的信息发送到目标设备上的网络组件.

    文字描述,摘抄自《网络设备配置与管理》精简内容,部分内容来自华为(HCIP认证》课程笔记,适合学习面试,其中的架构图,与搭建流程为自己规划并实验的。

    STP 技术简介

    ◆冗余技术概述◆

    冗余技术又称为储备技术,是利用并联模型来提高网络可靠性的一种手段,它通过向网络中增加备用的链路,当一条通信信道出现故障时,自动切换到备用的通信信道,从而提高网络的稳定性和可靠性.

    冗余技术虽然可以提高网络的稳定性和可靠性,但是也会产生许多的问题,如果两个交换机相连的话会造成交换机环路,出现的问题就是随机出现网络不通的现象,严重的话还会导致网络广播风暴,重复拷贝帧,MAC地址表不稳地等情况,但如果是智能交换机的话则不会出现此种情况,以下将分别介绍这几种环路的基本原理.

    广播风暴: 在物理网络中出现环路现象,且没有采取解决措施的情况下,一旦域内有某个主机发送了广播帧,则当域内的交换机接收到数据后,就会不停的发送和转发广播帧,从而形成网络广播风暴,网络广播风暴会长时间占用网络带宽,和交换机CPU资源,影响网络性能,甚至引起整个网络瘫痪.

    重复拷贝帧: 重复拷贝帧也称多帧复制,是指单播帧可能被多次复制传送到目标主机上去,此时数据帧的多个副本会保存在目标主机上,从而造成主机资源的浪费,甚至会造成目的主机无法选择其他来源的数据帧而导致数据丢失,简单的来讲就是数据分别从两个口进入了目的主机,导致目的主机MAC地址表中存在多个数据帧,有时还会导致数据的多次覆盖,从而无法接收到准确的数据.

    MAC地址表不稳定: 一般情况下交换机接收到数据时,会将接收数据帧的端口与发送主机MAC地址的对应关系添加到本机的MAC地址表中,那么如果交换机在不同的端口接收到同一个数据帧的多份副本,将造成MAC地址表在短时间内被多次修改,和循环重复的覆盖,从而影响MAC地址表的稳定性.

    以上几种情况是冗余技术的技术瓶颈所在,在实际的应用中网络的结构往往会很复杂,有更多的冗余链路,从而会产生更多的交换机环路,因此所带来的网络广播风暴,多帧复制会更加的严重,就因为这种需求,STP就由此诞生了.

    ◆STP生成树协议◆

    为了解决网络冗余链路所产生的问题,IEEE定义了802.1D协议,即生成树协议STP,利用生成树协议可以避免帧在环路中的增生和无限循环,生成树的主要思想是,当两个交换机之间存在多条链路时,通过一定的算法只激活其中最主要的一条链路,而将其他冗余链路阻塞掉变为备用链路,当主链路出现问题时,生成树协议将自动启用备用链路,整个过程不需要认为干预.

    STP协议中定义了,根桥(RootBridge),根端口(Root Port),指定端口(Designated Port),路径开销(Path Cost)等概念,目的在于通过构建一棵自然树的方法阻塞冗余链路,同时实现链路备份和链路最优化.

    STP协议的通信,是通过桥协议数据单元(BPDU)进行通信的,它是运行STP的交换机之间交流消息帧,所有的支持STP协议的交换机都能接收并处理BPDU报文.

    STP工作过程: 选举根桥->选举根端口->选举指定端口->STP阻塞非根

    1.选举根桥:交换机假定自己是根,然后发送BPDU报文给其他交换机,最终选出ID号最小的交换机作为根桥.
    2.选举根端口:每台非根交换机都会选举出一个根端口,并且仅有一个根端口,并按照优先级选择一个根端口.
    3.选举指定端口:选择一条网桥到根桥的路径成本最小的路径,或者发送方的网桥ID最大的作为指定端口.
    4.选择阻塞端口:至此,就会根据STP算法,从多个链路中选择性的阻塞掉一些端口的数据通信.

    STP端口状态:

    1.阻塞(Blocking):端口只接受BPDU,不能接收或发送数据,也不能把学习到的MAC地址天机到MAC地址表中.
    2.转发(Forwarding):端口能够接收并转发数据,也能够学习MAC地址,并添加到MAC地址表中.
    3.侦听(Listening):该状态是从阻塞到转发状态过程中的临时状态,该状态只能发送和接受BPDU数据.
    4.学习(Learning):该状态是从阻塞到转发状态过程中的临时状态,该状态不能够发送或接收数据.
    5.关闭(Disable):该状态端口只提供网络管理服务,不能接受发送任何数据,也就是停止服务的状态.

    ◆RSTP 快速生成树◆

    STP协议虽然解决了链路闭合引起的死循环问题,但是在端口从阻塞状态到转发状态间经过了一个只学习MAC地址但不参与转发的过程,产生了转发延时(默认15秒),从而使得生成树的收敛过程需要较长的时间,一般是转发延时的两倍.

    为了解决STP收敛时间过长的缺点,IEEE又推出了802.1w标准,定义了RSTP(快速生成树)协议.RSTP协议在网络配置参数发生变化时,能够显著的减少网络的收敛时间,由于RSTP是从STP发展而来的,其与STP协议保持高度的兼容性,RSTP协议规定,在某些情况下,处于阻塞状态的端口不必经历阻塞->侦听->学习->转发这一个过程,就可以直接进入转发状态.

    RSTP协议只有以下三种:

    1.丢弃(Discarding):RSTP将STP中的阻塞,禁用,和侦听统称为丢弃模式.
    2.学习(Learning):拓扑有所变动情况下,端口处于学习状态并学习MAC地址,将其添加到MAC地址表.
    3.转发(Forwarding):在网络拓扑稳定后,端口处于转发状态,并开始转发数据包.

    以上就是生成树协议的常用内容,对比后会发现,RSTP的收敛时间明显低于STP,解决了数据同步过慢的问题所在.

    生成树的配置

    接下来通过一个具体的实例,来完成生成树的配置命令和配置流程的实践,以下实验我们将把Switch1(三层交换)配置成根桥,将Switch2(二层交换)配置为备份根桥,实验拓扑结构如下图:

    判断根桥: 首先我们需要判断当前的根桥是哪一个设备,我们分别在四台交换机上执行show spanning-tree 命令,来查询默认那一台是根桥设备,以下实验显示结果为Switch4是根桥设备.

    Switch1# show spanning-tree           // 查询switch1是否为根桥
    Switch2# show spanning-tree           // 查询switch2是否为根桥
    Switch3# show spanning-tree           // 查询switch3是否为根桥
    Switch4# show spanning-tree           // 查询switch4是否为根桥
    VLAN0001
      Spanning tree enabled protocol ieee
      Root ID    Priority    32769            // 根桥ID的优先级
                 Address     0003.E41C.0B2C   // 根桥的MAC地址
                 This bridge is the root      // 出现这条语句,则说明这台是交换机根桥
                 Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
    
      Bridge ID  Priority    32769            // 网桥ID优先级
                 Address     0003.E41C.0B2C   // 网桥的MAC地址
                 Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
                 Aging Time  20
    
    Interface        Role Sts Cost      Prio.Nbr Type
    ---------------- ---- --- --------- -------- --------------------------------
    Fa0/2            Desg FWD 19        128.2    P2p
    Fa0/1            Desg FWD 19        128.1    P2p
    

    指定根桥: 我们想让Switch1(三层交换)作为根桥设备,此时可在三层交换机上,直接通过以下命令,更换根桥设备.

    Switch1> enable
    Switch1# configure terminal
    Switch1(config)# spanning-tree vlan 1 root primary     // 将本设备配置成根桥
    Switch1(config)# exit
    Switch1# show spanning-tree                            // 查询是否配置成功
    VLAN0001
      Spanning tree enabled protocol ieee
      Root ID    Priority    24577
                 Address     0004.9A4C.052D
                 This bridge is the root                   // 看到这里,说明配置成功了
                 Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
    
      Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
                 Address     0004.9A4C.052D
                 Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
                 Aging Time  20
    
    Interface        Role Sts Cost      Prio.Nbr Type
    ---------------- ---- --- --------- -------- --------------------------------
    Fa0/1            Desg FWD 19        128.1    P2p
    Fa0/2            Desg FWD 19        128.2    P2p
    

    指定备份根桥: 接下来将Switch2(二层交换)指定为备份根桥,当Switch1出现故障后,Switch2将被选举为根桥设备,从而保证网络的正常运转,修改方式通过以下命令即可实现.

    Switch2> enable
    Switch2# configure terminal
    Switch2(config)#spanning-tree vlan 1 root secondary     // 将本设备配置成根桥
    Switch2(config)#exit
    Switch2#show spanning-tree
    VLAN0001
      Spanning tree enabled protocol ieee
      Root ID    Priority    24577
                 Address     0004.9A4C.052D
                 Cost        19
                 Port        1(FastEthernet0/1)
                 Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
    
      Bridge ID  Priority    28673  (priority 28672 sys-id-ext 1)
                 Address     00E0.8FAC.DC89
                 Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
                 Aging Time  20
    
    Interface        Role Sts Cost      Prio.Nbr Type
    ---------------- ---- --- --------- -------- --------------------------------
    Fa0/2            Desg FWD 19        128.2    P2p
    Fa0/1            Root FWD 19        128.1    P2p
    

    此时配置到这里,我们可以手动关闭Switch1(三层交换),然后去查看Switch2(二层交换),通过show spanning-tree命令,你会发现当三层交换机关机的时候,二层交换机默认变成了根桥,顶替了Switch1的工作,当Switch1启动后,默认会将Switch1再次恢复成根桥.

    配置端口聚合

    在我们的实际生产环境中,常常将交换机之间用多条链路连接起来,以获得更高的传输能力和网络性能,但根据之前的生成树协议,当交换机之间有冗余链路时,实际工作的链路只有一条,也就是说生成树协议阻碍了网络传输能力的提高.

    为了解决生成树协议的传输能力的不足,出现了一种名为端口聚合的技术,它将多条物理链路组合成一条逻辑线路,实现链路带宽的增加,且还具有冗余作用,当其中部分链路出现故障时,其他链路还可以继续传输数据.

    但是并不是所有的端口都可以任意聚合,端口聚合需要满足以下条件.

    1.聚合的端口配置需要相同,包括端口速率和传输介质等.
    2.聚合的端口必须属于同一个VLAN,也就是不许再一个虚拟局域网中.
    3.聚合的端口类型必须相同,二层端口只能二层聚合,三层端口只能三层聚合.

    端口聚合形成的逻辑端口称为聚合端口,端口聚合后原来端口的属性就会被聚合端口的属性所覆盖,也不能在源端口上做任何配置,实现端口聚合后,即使网络链路出现故障,只要不是所有链路都故障,网络还是可以继续运行的,只不过网络传输速度会降低而已.

    下面将用一个具体的实例讲解端口聚合的配置方法和配置过程,包括创建聚合端口,配置聚合端口的工作方式和配置负载平衡,首先分别创建两个三层交换机,并通过网线fa0/1-4相连,拓扑图如下:

    创建聚合端口: 在两台交换机上分别创建聚合端口,且两台交换机端口要一致.

    #----在Switch1上操作-------------------------
    Switch1(config)#interface port-channel 1          // 创建端口号为1的聚合端口(Switch1)
    Switch1(config-if)#exit
    #----在Switch2上操作-------------------------
    Switch2(config)#interface port-channel 1
    Switch2(config-if)#exit
    

    添加聚合端口: 将图中的fa0/1-4端口加入到聚合端口中,且两台交换机都需要配置.

    #----在Switch1上操作-------------------------
    Switch1(config)# interface range fa0/1-4            // 选择配置聚合的端口范围
    Switch1(config-if-range)# channel-group 1 mode on   // 将所选端口加入到1号聚合,并启动
    #----在Switch2上操作-------------------------
    Switch2(config)# interface range fa0/1-4
    Switch2(config-if-range)# channel-group 1 mode on
    

    配置负载平衡: 接下来分别在,交换机Switch1和交换机Switch2上配置根据源MAC地址的负载平衡.

    #----在Switch1上操作-------------------------
    Switch1(config)# port-channel load-balance src-mac   // 配置负载平衡模式为src-mac
    #----在Switch2上操作-------------------------
    Switch2(config)# port-channel load-balance src-mac
    

    配置聚合端口: 继续配置聚合端口属性,在交换机Switch2上配置聚合的属性.

    #----在Switch2上操作-------------------------
    Switch2(config)# interface port-channel 1      // 选择聚合端口
    Switch2(config-if)# switchport mode trunk      // 配置聚合端口工作模式为Trunk
    

    查询是否生效: 最后通过使用show etherchannel summary命令,查询聚合情况,两台交换机都可查询到.

    Switch1# show etherchannel summary
    
    Flags:  D - down        P - in port-channel
            I - stand-alone s - suspended
            H - Hot-standby (LACP only)
            R - Layer3      S - Layer2
            U - in use      f - failed to allocate aggregator
            u - unsuitable for bundling
            w - waiting to be aggregated
            d - default port
    
    
    Number of channel-groups in use: 1
    Number of aggregators:           1
    
    Group  Port-channel  Protocol    Ports // 四个端口都加入了聚合链路中
    ------+-------------+-----------+----------------------------------------------
    1      Po1(SU)           -      Fa0/1(P) Fa0/2(P) Fa0/3(P) Fa0/4(P)    // 这里显示
    

    根据上面的返回信息可以看到,fa0/1,fa0/2,fa0/3,fa0/4都加入到了聚合端口1,使用相同的命令也可以查询到二号交换机的配置情况.

    配置端口安全

    在实际的生产环境中,对于有较高安全要求的设备,可以使用端口安全技术(Port Security)来提高网络的安全性,端口安全技术可在接入层验证接入设备,防止未经允许的设备接入到网络中,还可以限制端口接入的设备数量,防止过多设备接入网络,影响网络速率.

    配置端口安全有两种,动态绑定和静态绑定

    ● 动态绑定:该方法是配置端口安全最简单的方法,在一个已经启用的端口上配置动态绑定后,可以让交换机自动绑定最先接入的规定数量的设备,该方法也是最常用的一种绑定方式.
    ● 静态绑定:动态绑定时,一旦交换机重启,首先接入交换机的设备可用会发生变化,为保证安全性,可以根据MAC地址或IP地址指定可接入网络的设备.

    接下来看一个具体的实例,来实现端口安全的配置,包括端口绑定端口违规的处理等,实验拓扑图参数如下:

    启用端口安全: 配置交换机Switch0启用fa0/1端口,配置端口时应先关闭端口,否则会报错误.

    Switch0(config)# interface fa0/1               // 选择1号端口
    Switch0(config-if)# shutdown                   // 先关闭端口,防止冲突
    Switch0(config-if)# switchport mode access     // 配置端口工作模式为Trunk
    Switch0(config-if)# switchport port-security   // 启用端口安全
    Switch0(config-if)# no shutdown                // 开启端口
    

    配置静态地址: 静态指定允许接入的设备的MAC地址,首先要知道MAC地址是多少.

    C:>arp -a                           // 首先查询到两台机器MAC地址是多少
    PC0   0001.4272.5EE7
    PC1   00D0.589B.0C35
    
    #----绑定MAC地址列表-----------------------------
    Switch0(config)# interface fa0/1                                           // 选择配置端口 
    Switch0(config-if)# switchport port-security maximum 2                     // 配置最大允许2台设备接入
    Switch0(config-if)# switchport port-security mac-address 0001.4272.5EE7    // 绑定MAC地址
    Switch0(config-if)# switchport port-security mac-address 00D0.589B.0C35
    Switch0(config-if)# switchport port-security violation shutdown            // 配置违规后关闭指定端口
    Switch0(config-if)# no shutdown                                            // 启动这些端口
    Switch0(config-if)# exit
    
    #----查询绑定MAC地址列表-------------------------
    Switch0# show port-security address                                        // 查询绑定的MAC地址列表
          Secure Mac Address Table
    -------------------------------------------------------------------------------
    Vlan  Mac Address Type      Ports   Remaining Age
                    (mins)
    ----  ----------- ----      -----   -------------
    1 00D0.589B.0C35  SecureConfigured  FastEthernet0/1   -         // 绑定的MAC地址
    1 0001.4272.5EE7  SecureConfigured  FastEthernet0/1   -
    ------------------------------------------------------------------------------
    Total Addresses in System (excluding one mac per port)     : 1
    Max Addresses limit in System (excluding one mac per port) : 1024
    

    配置动态地址: 动态分配接入设备的MAC地址,此配置无需绑定MAC地址,会接入最先访问的主机MAC地址.

    Switch0(config)# interface fa0/1                                    // 选择指定端口
    Switch0(config-if)# switchport port-security maximum 2              // 配置最大接入MAC地址为2
    Switch0(config-if)# switchport port-security mac-address sticky     // 自动获取接入设备
    Switch0(config-if)# switchport port-security violation shutdown     // 对违规设备拒绝服务
    Switch0(config-if)# no shutdown                                     // 启动这些端口
    Switch0(config-if)# exit
    

    最后查询结果: 查看配置结果以及分配情况,使用show port-security interface fa0/1命令,查看fa0/1端口的配置结果.

    Switch0# show port-security interface fa0/1                         // 查看端口fa0/1的接入情况
    
    Port Security              : Enabled                                // 端口安全是否启用
    Port Status                : Secure-up                              // 端口状态
    Violation Mode             : Shutdown                               // 违规端口的处理方式
    Aging Time                 : 0 mins
    Aging Type                 : Absolute
    SecureStatic Address Aging : Disabled
    Maximum MAC Addresses      : 2                                      // 允许接入的最大设备
    Total MAC Addresses        : 2                                      // 当前接入的设备数量
    Configured MAC Addresses   : 2                                      // 静态配置的MAC地址数量
    Sticky MAC Addresses       : 0                                      // 动态配置的MAC地址数量
    Last Source Address:Vlan   : 0000.0000.0000:0                       // 标注出违规设备的MAC地址
    Security Violation Count   : 0                                      // 安全违规计数器
    

    完成上方的配置后,手动在Switch0交换机上新添加一个PC2主机,则一切正常,而如果在Hub集线器上添加一个PC3主机,那么链路将触发违规动作,如果此时使用show port-security interface fa0/1 命令查询会发现,Security Violation Count:1安全违规计数变成了1.

    如果更换了主机设备,这里通过更改PC1主机的MAC地址来模拟设备的更换,然后再测试会发现Last Source Address:Vlan这一个选项,会具体的标注出违规设备的MAC地址.

  • 相关阅读:
    HashMap put原理详解(基于jdk1.8)
    适合 C++ 新手学习的开源项目——在 GitHub 学编程
    连续肝了好几天,终于把Java面试必备最重要的基础知识【Java集合】知识点总结整理出来了。
    「精选」史上最全Java工程师面试题汇总,没有之一,不接受反驳!
    想拿到10k-40k的offer,这些技能必不可少!作为程序员的你了解吗?
    QuickBI助你成为分析师-数据建模(一)
    Java Web整合开发(36) -- Web Service框架XFire
    查找
    CentOS7下RabbitMQ服务安装配置
    php rabbitmq操作类及生产者和消费者实例代码 转
  • 原文地址:https://www.cnblogs.com/LyShark/p/11199607.html
Copyright © 2020-2023  润新知