jjzjj

华为eNSP配置STP(单实例生成树)

嘻嘻哥哥~ 2023-07-23 原文

STP

STP(Spanning Tree Protocol)是生成树协议的英文缩写,可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败,要排除故障可能非常困难,这取决于网络设计。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的

基本配置:
接口不用配置,默认开启
LSW3:
int eth0/0/1                    #进入接口eth0/0/1中
port link-type access           #可以不用配置vlan,但是access接口一定要开,不开不能通信
quit                            #退出接口配置模式
​
LSW4:
int eth0/0/1                    #进入接口eth0/0/1中
port link-type access           #可以不用配置vlan,但是access接口一定要开,不开不能通信
quit                            #退出接口配置模式

PC1配置IP地址

PC2配置IP地址

LSW1:
stp enable                  #开启stp服务
stp mode stp                #stp模式改为stp
stp priority 4096           #stp优先级为4096,也可以是stp root primary,数字和汉字都可以,具体看题目上的优先级是数字还是汉字的
​
LSW2:
stp enable                  #开启stp服务
stp mode stp                #stp模式改为stp
stp priority 8192           #stp优先级为8192,也可以是stp root secondary,数字和汉字都可以,具体看题目上的优先级是数字还是汉字的
​
LSW3:
stp enable                  #开启stp服务
stp mode stp                #stp模式改为stp
​
LSW4:
stp enable                  #开启stp服务
stp mode stp                #stp模式改为stp

查看STP状态

在LSW1和LSW2上使用display查看STP状态时,系统输出的信息,从红色框框可以看出STP的模式为根网桥,如果根网桥4c1f-ccbd-49ae与本地交换机的MAC地址一样,说明本地交换机就是这个STP域中的根网桥

查看STP端口角色

使用命令display stp brief查看一下几台交换机上的STP端口角色,在LSW1上,我们可以看到三个端口都是指定端口(DESI),状态都是转发(FORWARDING)。在LSW2上,我们则可以看到Gthernet0/0/2是LSW2的根端口(ROOT),状态也是转发(FORWARDING);Ethernet0/0/1 和Ethernet0/0/3 是指定端口,状态都是转发(FROWARDING)。在LSW3和LSW4上,我们可以看到连接LSW1的端口为根端口(ROOT),状态是转发(FORWARDING);而与LSW2相连的端口是预备端口(ALTE),状态是阻塞(DISCARDING)

查看端口开销

命令display stp interface e0/0/1的输出内容中我们可以看出e0/0/1的STP相关信息,该端口使用的开销标准是Dot1T,也就是802.1t标准,开销值为20000。管理员可以使用命令stp pathcost-standard legacy,将STP使用的端口开销标准更改为华为的私有标准。

转发延迟

转发延迟可以使用命令stp timer forward-delay进行配置,这条命令的参数单位为厘秒(百分之一秒),取值范围是400~3000,默认为1500,也就是15秒
[LSW1]stp timer forward-delay 2000  #转发延迟的时间修改为20秒

配置STP计时器值

使用命令stp timer hello来修改默认的Hello时间,Hello时间的配置同样以厘秒为单位,取值范围是100~1000,默认为200,也就是2秒。根网桥会根据这个时间设置来生成并发送CBPDU(配置BPDU)。
使用命令stp timer max-age来修改默认的保存BPDU时间,以厘秒为单位,取值范围是600~4000,默认为2000,也就是20秒。当STP环境中发生故障时,若处于阻塞状态的端口(预备端口)无法从对端的指定端口收到BPDU,那么在MaxAge计时器超时后,这台交换机就会重新开始计算STP。
[LSW1]stp timer hello 300       #stp计时值修改默认时间为3秒
[LSW1]stp timer max-age 3000    #stp计时值修改默认保存BPDU时间为30秒

LSW4上查看STP信息

LSW4上查看STP信息上一行是LSW4本地的计时器设置,下一行是当前使用的计时器值。华为交换机通常会按照默认的STP计时器配置正常工作,管理员无需修改默认值。如果有特殊需求,在修改时一定注意这些计时器值需要全网统一,否则会造成链路状态不稳定的情况。

指定STP网络直径

[LSW1]stp bridge-diameter 2 #指定STP的网络直径,让STP根据管理员定义的网络环境自动计算出适用于这个网络的计时器值

其中Hello 2s MaxAge 10s FwDly 7s MaxHop 20
从这可以看出:交换机根据网络直径2自动计算出了计时器值:Hello计时器为2秒,MaxAge计时器为10秒,转发延迟计时器为7秒

有关华为eNSP配置STP(单实例生成树)的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  3. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  4. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  5. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  6. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  7. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  8. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  9. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  10. ruby-on-rails - Ruby on Rails - 为文本区域和图片生成列 - 2

    我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数

随机推荐