思科模拟器:高级交换实验
高级交换实验
一、实验目的
(1)了解生成树协议的作用; (2)熟悉生成树协议的配置。
二、应用环境
采用生成树协议可以避免环路。
生成树协议的根本目的是将一个存在物理环路的交换网络变成一个没有环路的逻辑树形网络。IEEE802.ID
协议通过在交换机上运行一套复杂的算法STA(spanning-tree algorithm)
, 使冗余端口置于“阻断状态”,使得接入网络的计算机在与其他计算机通讯时,只有一条链路生效,而当这个链路出现故障无法使用时,IEEE802.1d
协议会重新计算网络链路,将处于“阻断状态”的端口重新打开,从而既保障了网络正常运转,又保证了冗于能力。
三、实验设备
(1) DCS
二层交换机2台
(2) PC
机2台
(3) 直通网线4-
8根
四、实验拓扑
五、实验要求
IP地址设置:
设备 |
IP |
Mask |
---|---|---|
交换机A |
10.1.157.100 |
255.255.255.0 |
交换机B |
10.1.157.101 |
255.255.255.0 |
PC1 |
10.1.157.113 |
255.255.255.0 |
PC2 |
10.1.157.114 |
255.255.255.0 |
网线连接:
交换机A f0/1 |
交换机B f0/3 |
---|---|
交换机A f0/2 |
交换机B f0/4 |
PC1 |
交换机A f0/24 |
PC2 |
交换机B f0/23 |
如果生成树成功,则 PC1 无论何时均可以 ping 通 PC2
六、实验步骤
第一步:正确连接网线,恢复出厂设置之后,做初始配置。
首先交换机 A 做初始化配置,包括恢复出厂设置和设置 ip 地址。 SwitchA
先改名字:
HOSTNAME switchA
恢复出厂设置:
# 首先进入特权模式
enable
# 恢复出厂设置
erase startup-config
delete vlan.dat
vlan.dat
# 配置 ip 地址
config
int vlan 1
ip address 10.1.157.100 255.255.255.0
exit
exit
# 验证
show run
验证配置:
SwitchB
也可以直接在图形化界面改 HOSTNAME
:
# 首先进入特权模式
enable
# 恢复出厂设置
erase startup-config
delete vlan.dat
vlan.dat
# 配置 ip 地址
config
int vlan 1
ip address 10.1.157.101 255.255.255.0
exit
exit
# 验证
show run
验证配置:
PC1 设置 ip 地址:
验证配置:
PC2 设置ip地址:
验证配置:
第二步:“PC1 ping PC2-t”观察现象
在 PC1 ping PC2 居然可以 ping 通。
原因是因为交换机默认情况下是开启了最小生成树协议的 pvst
,所以两条链路之间存在冗余链路会自动的运行生成树协议。
没有划分端口默认都是 vlan1 的,而 vlan1 有最小生成树协议,所以我们只需要关闭它即可。
下面分别在交换机 AB 里面,执行下面的命令即可关闭该协议:
no spanning-tree vlan 1
验证配置:
show spa
这个时候再去 ping 一下:
- (1)
ping
不通 - (2) 所有连接网线的端口的绿灯很频繁的闪烁,表明该端口收发数据量很大,已经在交换机内部形成广播风暴
说明广播风暴了。
第三步:在两台交换机中都使用启用生成树协议
下面启用生成树协议:
spanning-tree vlan 1
验证配置:
Desg 是指定端口。 FWD:forwarding,转发状态,意思是接口是打开的,接到一个分组之后会转发。 BLK:block,关闭的状态,阻塞的意思,这个接口是暂时关闭的。
第四步:继续使用“PC1 ping PC2-t”观察现象
拔掉交换机 B 端口 4 的网线,观察现象
这个时候又可以 ping
通了,因为没有环了,肯定是可以通的。
(1) 使用show spanning-tree查看生成树状态,写在下方:
只有两个端口了,状态都处于 FWD 状态,因为不存在环路了。
(2) 再插上交换机 B 端口 4 的网线,观察现象,写在下方:
三个端口了,再去 ping
也是可以 ping
通的。
因为有最小生成树的协议控制着。
七、注意事项和排错
在交换机未启动生成树之前尽量不要使两台设备之间形成环路,因为一旦形成环路,交换机性能将遭受很大影响,很可能影响后续设备是否能够写入设备。
2950
之间互联必须使用交叉线。
但是 2960
可以自动翻转端口,所以是通的。
- Disruptor-NET和内存栅栏
- 我们是如何将 Cordova 应用嵌入到 React Native 中
- ADO.NET的弹性连接控制[ADO.NET idle connection resiliency]
- ASP.Net MVC 5 in Xamarin Studio 5.2
- 自制基于 Snips 和 Snowboy 的智能音箱来保护你的隐私
- 从 React 将从 BSD 改 MIT 许可证,谈如何选择正确的开源许可
- Topshelf 支持Mono 扩展Topshelf.Linux
- 如何在 React Native 实现类微信小程序平台:WebView 调用原生组件
- 如何运营一个开源项目并取得较大影响力?
- ASP.NET Identity 2新增双重认证、帐号锁定、防伪印章功能并修复了一些bug
- Serverless 应用开发指南:基于 Serverless 与 Lambda 的微信公共平台
- Serverless 应用开发指南:serverless 的 hello, world
- 通过一组RESTful API暴露CQRS系统功能
- 通过使用结构化数据 JSON-LD,我为网站带来了更多的流量
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一个Spring Bean从诞生到逝去的九次人生转折!
- 原创 | 详解git rebase,让你走上git大神之路
- 启用chrome浏览器内置的二维码生成插件
- ZeroLogon漏洞(CVE-2020-1472)防御性指南
- 原创 | 随机数大家都会用,但是你知道生成随机数的算法吗?
- 原创 | codeforces 1425E,一万种情况的简单题
- 原创 | codeforces 1417C,逆向思考的数据结构题
- 原创 | 操作失误不要慌,这个命令给你的Git一次反悔的机会
- 原创 | 想做推荐算法?先把FM模型搞懂再说
- 活见鬼,明明删除了数据,空间却没减少!
- 原创 | Git仓库的提交记录乱成一团,怎么办?
- 原创 | 平面内有N个点,如何快速求出距离最近的点对?
- 原创 | codeforces 1426F,初学者也能做,div3的最难题
- 安全研究 | YARA规则阻止Windows事件日志记录
- 研究人员如何使用Shhgit搜索GitHub中的敏感数据