没有合适的资源?快使用搜索试试~ 我知道了~
首页嵌入式RSTP STP 协议OPNET仿真
1.1 RSTP协议基于OPNET仿真需求 在数据网络中STP/RSTP(生成树协议)以及升级版本MSTP使用的非常广泛,用来实现局域网络环境的秒级网络保护以及网络环回检测控制。 STP/RSTP在数据设备中的实现方式为数据设备嵌入式系统中的一软件模块,能够支持多个实例,且实例基于宏定义在编译时决定,每个实例支持的最大端口数量也于编译时宏定义决定。 实现的STP/RSTP软件代码适用于嵌入式系统,但是为避免在数据设备中复杂调试过程,预先需要在主机PC上实现仿真,同时仿真能够模拟现实环境下的大量的案例情况。 OPNET为网络仿真提供了及其优秀的环境和性能,比NS2更具有界面化和操作方便的有点(NS2基于脚本配置网络以及灵活性比OPNET稍微逊色)。 1.2 RSTP协议基于OPNET仿真环境 OPNET本身已经提供STP/RSTP的仿真模块,但是提供给为嵌入式系统开发的STP/RSTP模块进行仿真不是很可行。笔者建立了一个简单的OPNET仿真RSTP/STP的仿真环境,提供简单的接口给STP/RSTP嵌入式模块(源代码)调用,效果非常优秀。
资源详情
资源评论
资源推荐

嵌入式 RSTP 协议 OPNET 仿真
作者:zenf E-Mail: zenf_zhao@163.com
版权所有:作者保留文档中的任何文字和图片的版权,任何转载或者商业用途必须获得作者
的许可和授权。(2008 年 12 月)
1.1 RSTP 协议基于 OPNET 仿真需求
在数据网络中 STP/RSTP(生成树协议)以及升级版本 MSTP 使用的非常广泛,用来实现局域网络环境的
秒级网络保护以及网络环回检测控制。
STP/RSTP 在数据设备中的实现方式为数据设备嵌入式系统中的一软件模块,能够支持多个实例,且实例
基于宏定义在编译时决定,每个实例支持的最大端口数量也于编译时宏定义决定。
实现的 STP/RSTP 软件代码适用于嵌入式系统,但是为避免在数据设备中复杂调试过程,预先需要在主机
PC 上实现仿真,同时仿真能够模拟现实环境下的大量的案例情况。
OPNET 为网络仿真提供了及其优秀的环境和性能,比 NS2 更具有界面化和操作方便的有点(NS2 基于脚
本配置网络以及灵活性比 OPNET 稍微逊色)。
1.2 RSTP 协议基于 OPNET 仿真环境
OPNET 本身已经提供 STP/RSTP 的仿真模块,但是提供给为嵌入式系统开发的 STP/RSTP 模块进行仿真不
是很可行。笔者建立了一个简单的 OPNET 仿真 RSTP/STP 的仿真环境,提供简单的接口给 STP/RSTP 嵌
入式模块(源代码)调用,效果非常优秀。
设计的网络节点如下:(为实现基本仿真,每个节点设计了 6 个接口,如需要扩展更多接口非常方便)

节点中核心的模块为 MAC 模块,笔者现实的最简单满足 STP/RSTP 仿真需要的 MAC 模型如下:
仿真环境 OPNET 模块可下载笔者实现打包文件,使用时确记不要编译,由于笔者不免费提供 STP/RSTP
模块部分的源代码。包裹的 obj 文件能够支持配置各种环境使用。
1.3 RSTP 协议嵌入式系统实现
STP/RSTP 协议嵌入式软件模块实现如下,采用封闭式状态机,其与外围提供接口联系。
本部分代码不提供免费公开,若有意愿购买或者移植支持可联系笔者(联系方式见本文开头信息)。

1.4 RSTP 协议基于 OPNET 仿真结果
笔者选择 IEEE802.1D-2004 RSTP 协议标准中的网络拓扑做一仿真案例如下,选取标准中第 142 页,Figure
17-5 Backup Port Example 建立网络仿真拓扑,仿真时间设定为 2 分钟(笔者配置电脑运行时间 15s,仿真
性能非常好),获取的各节点状态结果如后文:
选择节点 8 的仿真结果作为说明:
============ STP Debug Global Index=8 Varialbes ===========
Bridge Info: begin=0 init=1 minPort=1 maxport=6 myMac=00:00:00:00:00:88 bWarm=0
(节点 8 的 MAC 地址,以及端口范围 1-6,共 6 个端口)
BridgeIdt=ff00-0000000000ffffff88 (节点 8 的桥标记 Bridge_Idenditifer)
BridgePriority=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000 (节点 8 的桥优先级向量)
BridgeTimes=2, 15, 20, 0 (节点 8 的各 times 配置数据,目前均为协议默认值)
root_port_id=8001 Hello=2
BridgeRootPriority=ff00-000000000011, 9c54, ff00-000000000033, 8003
(节点 8 的根优先级向量,显然协议运行后,根桥为节点 1,即 mac 地址为“00-00-00-00-00-11”)
BridgeRootTimes=2, 15, 20, 4
说明:节点 8 的 MAC 地址 myMac=00:00:00:00:00:88,在向量中被转化为 BridgeIdt=ff00-0000000000ffffff88,
以及 ff00-0000000000ff,是由于 VC6 编译情况下的符号扩展所致(转化成字符串时扩展),笔者正在调整该 BUG,但
是不影响仿真使用的效果。(嵌入式软件一般基于 PowerPC 的 CPU 以及编译器,与 PC 中的 Intel CPU 字节模式以及编
译器的不同是一个经常造成故障的经典问题)
解决 BUG 后的结果如下:

――――――――――――――――――――――――――――――――――――――――――――
============ STP Debug Global Index=8 Varialbes ===========
Bridge Info: begin=0 init=1 minPort=1 maxport=6 myMac=00:00:00:00:00:88 bWarm=0
BridgeIdt=8000-000000000088 BridgePriority=8000-000000000088,0000,8000-000000000088,0000
BridgeTimes=2, 15, 20, 0 root_port_id=8001 Hello=2
BridgeRootPriority=8000-000000000011,9c54,8000-000000000033,8003
BridgeRootTimes=2, 15, 20, 4
――――――――――――――――――――――――――――――――――――――――――――――――――――
============ Port Infomation ===========(节点 8 的各端口的信息,调试时使用,这里不做解释)
Port enb en role infoIs synd txCnt lnkStu PortIdt rcvMsg hello txFlg agree infoSt
1 1 1 0 3 1 0 1 8001 2 1 1 0 3
2 1 1 2 3 1 0 1 8002 2 1 0 0 3
3 0 0 -1 0 1 0 0 8003 0 0 0 0 0
4 0 0 -1 0 1 0 0 8004 0 0 0 0 0
5 1 1 1 1 1 0 1 8005 0 1 0 0 3
6 1 1 3 3 1 0 1 8006 2 1 0 0 3
Port=1
(端口 1 的端口优先级向量,message 优先级向量,designated 优先级向量,root 优先级向量,以及各 timer 的值)
PortPri=ff00-000000000011, 4e2a, ff00-000000000033, 8003 MsgPri=ff00-000000000011, 4e2a,
ff00-000000000033, 8003 DesgPri=ff00-000000000011, 9c54, ff00-0000000000ff, 8001
RootPri=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000
PortTimes=2, 15, 20, 2 MsgTimes=2, 15, 20, 2 DesgTimes=2, 15, 20, 4
PortRole=Port_Root(端口 1 的状态)
Port=2 PortPri=ff00-000000000011, 4e2a, ff00-000000000044, 8003 MsgPri=ff00-000000000011,
4e2a, ff00-000000000044, 8003 DesgPri=ff00-000000000011, 9c54, ff00-0000000000ff, 8002
RootPri=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000
PortTimes=2, 15, 20, 2 MsgTimes=2, 15, 20, 2 DesgTimes=2, 15, 20, 4
PortRole=Port_Alternate
Port=3 PortPri=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000 MsgPri=0000-000000000000,
0000, 0000-000000000000, 0000 DesgPri=ff00-000000000011, 9c54, ff00-0000000000ff, 8003
RootPri=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000
PortTimes=2, 15, 20, 0 MsgTimes=0, 0, 0, 0 DesgTimes=2, 15, 20, 4
PortRole=Port_Disabled
Port=4 PortPri=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000 MsgPri=0000-000000000000,
0000, 0000-000000000000, 0000 DesgPri=ff00-000000000011, 9c54, ff00-0000000000ff, 8004
RootPri=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000
PortTimes=2, 15, 20, 0 MsgTimes=0, 0, 0, 0 DesgTimes=2, 15, 20, 4
PortRole=Port_Disabled
Port=5 PortPri=ff00-000000000011, 9c54, ff00-0000000000ff, 8005 MsgPri=ff00-000000000011,
9c54, ff00-0000000000ff, 8006 DesgPri=ff00-000000000011, 9c54, ff00-0000000000ff, 8005
RootPri=ff00-0000000000ff, 0000, ff00-0000000000ff, 0000
PortTimes=2, 15, 20, 4 MsgTimes=2, 15, 20, 4 DesgTimes=2, 15, 20, 4
PortRole=Port_Designated
剩余15页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0