T M B

SIMWARE 使用指南

SIMWARE 简介

Simware 是 Comware 运行在 Windows 下的仿真程序,可以在单机和多机分布式环境下模拟多台运行 Comware 的设备并实现相互间的组网互连,同时实现统一管理。基于 VC 环境直接开发调试,一定程度上极大的提高了项目开发的效率。利用 Simware 可以脱离设备运行 Comware 平台软件,在测试或者培训上可以降低成本和提高培训效率。事实上,各大设备制造商都有自己的网络操作系统模拟软件用于开发测试及培训工作,如 Juniper 的 Olive,Cisco 的 IOU 等(Cisco 的 Dynamips 用的多,但不是官方的)。

Simware 的体系结构与其他产品是一致的,VOS 屏蔽了操作的系统的差异。Simware 支持以太网接口(二、三层),串口,ATM,CPOS,E1 等几乎所有接口的驱动模拟。其中,以太网接口支持和 PC 真实物理网卡的通信,通过 Simware 的以太网接口可以实现 Simware 和其他设备的以太网接口的互连,因此 Simware 可以和真实设备互连组网。其他的接口都是通过 UDP 模拟点对点连接的链路,这些接口只能用于 Simware 之间的连接,不能和真实设备间的互通。

SIMWARE 运行环境

  • hardcfg.tcl 配置文件;
  • tcl82.dll,tcl 脚本解析库,用于解析配置文件,可放置在系统目录下或者与 Simware 可执行文件(.exe文件)在同一目录下;
  • dbghlp.dll,对于非 windows xp sp2 版本的操作系统需要安装此动态链接库,应放置在 Simware 可执行文件(.exe文件)同一目录下;
  • flash.dat 模拟设备以及单板上的 Flash Memory。
  • Simware 的可执行文件(.exe文件)集中式设备:simware_cen.exe 用于模拟集中式设备(即大家所看到的 cen.exe 文件);
  • Simware 对内存的要求比较大。如果你需要在一台PC上模拟6个路由器相互组网的话,建议使用 512M 以上的内存。
  • 系统安装 WinPcap3,高版本目前不支持。

目前网上流传的 Simware 最新版 5.2a 是需要在域环境中使用,即你的 PC 需要加入 h3c.com.cn 域,才能正常工作,虽有人找到了破解的方法,但是个人觉得不是很稳定,还是在虚拟机中架个 Windows 2003 的域控制器,把你的 PC 加入这个域吧。

SIMWARE 配置文件说明

在 hardcfg.tcl 中配置 Simware 选项,Simware 的基本配置项详见下表的说明:

参数名示例 含义
SetConsoleCom Com 设置Console口的Telnet端口号(注:2000≤参数≤3000),如果不设置则使用Simware窗口作为控制。
SetWinSockOffset Offset 这个值决定了WinSock偏移量,防止Simware板间通信SOCKET的UDP端口号冲突。对于分布式设备来说,主控板和相应接口板的的SetWinSockOffset必须相同;不同的主控板的SetWinSockOffset不能相同。
SetSelfSlot Slot 设置本单板的槽位号(集中式设备为0)。
SetMainSlot Slot 设置本单板所属Simware的主控板板号(集中式设备为0)。
SetBrdType Type [ MaxPort -slot slot] 设置本单板的板类型、最大端口数和子卡号(默认为4)。
SetMac Mac1 Mac2 设置交换机的MAC地址。对于分布式设备来说,主控板和相应接口板的MAC1、MAC2参数必须相同(否则会出现接口板拔出的问题);不同的主控板的参数不能相同。注意这个值并非交换机的完整MAC,只是对应其中的某几个字节。
SetMemorySize Size 设置虚拟的Simware内存大小。
AddLink -portnum Portnum -Localip Local -localport

LocalPort -dstip Dest -dstport DestPort

为二层以太网接口增加socket连接,创建交换机虚拟口,并与其他交换机的虚拟口连接起来。-portnum指定要增加连接的端口,1表示第一个端口,对应EthernetX/Y/0,2对应EthernetX/Y/1,依此类推;Y是SetBrdType –slot中指定的子卡号,-portnum 不能大于SetBrdType中指定的最大端口数量。 -localip和-localport是虚拟口的IP和TCP端口;-dstip和-dstport决定了希望连接的交换机虚拟口。
BindPortWithAdaptor -port PortNumber -adaptor AdaptorID 为二层以太网接口增加网卡绑定。-port是需绑定的交换机端口,含义同AddLink的-portnum;-adaptor是网卡序号,1代表PC上的第一块网卡,以此类推。
AddEthernet –index index [-vnet Vnet –slot slot] 增加一个三层以太网接口,后两个参数可选。-index指定绑定的计算机网卡编号,从1开始;-vnet指定以太网接口mac地址的前三个字节,默认为5E,使用十进制参数;指定接口子卡号,默认是1。
AddSerial -local Local -lport LocalPort -dest Dest –dport DestPort [-slot Slot] 增加一个同步串口,前4个参数必须设置;-slot指定子卡号,可选,默认为2。
AddATM –local Local –lport LocalPort –dest Dest –dport DestPort [-slot Slot] 增加一个ATM口,前4个参数必须设置;-slot指定子卡号,可选,默认为3。
AddE1Port? –local Local –lport LocalPort –dest Dest –dport DestPort [-slot Slot] 增加一个E1口,前4个参数必须设置;-slot指定子卡号,可选,默认为4。

SIMWARE 之间的互连举例
下面以一个例子来说明具体配置和启动方法,这个例子是模拟两台交换机并将它们的第一个端口 Ethernet0/4/0 连接起来。拓扑图如下:

实现方法如下:

创建三个文件夹“SW1”、“SW2”和“CEN”,将执行文件(cen.exe、Dbghelp.dll、tcl82.dll) )拷贝进CEN文件夹,分别在 SW1 和 SW2 文件夹中创建文本格式文件“hardcfg.tcl“和批处理文件”xxx.bat“。

xxx.bat 中的内容:
C:H3CCENcen.exe(路径改正确)
hardcfg.tcl 中的内容:
SW1:
SetSelfSlot 0
SetMainSlot 0
SetBrdType 0 24
SetConsoleCom 2000
SetMemorySize 128
SetWinSockOffset 0
SetMac 0 21
AddLink -portnum 1 -localip 127.0.0.1 -localport 111102 -dstip 127.0.0.1 -dstport 111201

SW2:
SetSelfSlot 0
SetMainSlot 0
SetBrdType 0 24
SetConsoleCom 2001
SetMemorySize 128
SetWinSockOffset 100
SetMac 0 22
AddLink -portnum 1 -localip 127.0.0.1 -localport 111201 -dstip 127.0.0.1 -dstport 111102

然后运行 Telnet 终端软件分别 telnet 127.0.0.1 2000 和 telnet 127.0.0.1 2001 就可以控制两台设备了。

SIMWARE 配置详解

Simware 可以用图形界面,也可以用 TCL 的脚本来实现。其实用图界面时,也是生成 tcl 脚本的,下面就是对 tcl 脚本的使用说明,熟悉了这个,也可以像写 Dynamips 的 bat 文件一样来生成拓扑了。

说明:

1. 本说明将配置命令分为两部分分别说明
A. V3 直接继承过来的配置命令,使用方法基本和V3一致;
B. V5 接口管理融合项目系统测试阶段新增加的添加各种接口类型的配置命令。
这一部分为 V5 新增加部分,V3 上不适用。由于主要目的是提供接口管理系统测试时使用,接口驱动模拟不是很全面,功能并不完善。凡下面描述中提到的旧驱动,指的是 A 部分的代码实现,新驱动指 B 部分的代码实现。

2. hardcfg.tcl 实际上就是一个 TCL 脚本,完全遵循 TCL 脚本语言的语法规则,支持所有 TCL 脚本语言的内嵌命令,如:set, for, if 等

3. 特别说明,TCL 语言语法中注释必须是以“#”开头的行,而不是从“#”到行结束,也就是说在有效命令同一行后面用“#”注释说明是不合法的。

4. 关于设备板间通讯占用 socket 端口说明:
分布式 WVRP 同一台设备间的板间通讯和状态同步是使用 UDP socket 完成的,每个 WVRP 会按照下面的算法占用 4 个端口,其中offset是 SetWinSockOffset 设置值,没有设置的时候为0,slot 为 SetSelfSlot 设置值
2000 + offset + slot
3000 + offset + slot
3120 + offset + slot
4000 + offset + slot
另外还会产生一个 (2000 + offset)%100 为名字的信号量,供主控板和备用板使用所以设置 offset 时候必须特别小心,不能让不同设备占用相同的端口和信号量,建议设置值在 100-900,间隔 100。

5. 默认配置情况下,WVRP启动的时候旧驱动部分会自动添加一个 Console 接口,和 8 个子卡号为 4 的二层不可切换的FE接口(如 Ethernet0/4/0),旧驱动模拟了二层接口的芯片转发的功能,涉及到VLAN,协议等请使用这些接口。

6. WVRP 之间接口的链接通过 UDP socket 模拟完成,配置链接的时候必须指定 socket 参数。使用 AddLink 的时候参数略有不同(括号内的参数),但意义相同:
-local(-localip) X.X.X.X  本设备接口 socket 使用的 IP 地址
-lport(-localport) XXXX 本设备接口 socket 使用的端口号
-dest(-dstip) X.X.X.X 对端设备接口 socket 使用的 IP 地址
-dport(-dstport) XXXX 对端设备接口 socket 使用的端口号
上面四个参数必须同时设置才有效。两台设备接口链接 IP:PORT 本地和对端的配置必须一一对应。由于 2000-5000 之间的端口容易被 WVRP 内部通讯端口占用,建议绑定接口的时候使用 6000 以上的端口

PART A:继承 V3 WVRP 配置命令部分
设备内存
SetMemorySize 128

本板的板号,分布式 WVRP 必须
SetSelfSlot 0

主控板板号,分布式 WVRP 必须
SetMainSlot 0

备用板板号,分布式 WVRP 必须
SetSlaveSlot 1

板间通讯使用的 socket 偏移,使用多台分布式 WVRP 时必须。同一 WVRP 设置值必须一致,不同 WVRP 需设置不同的值,建议值在 100-900,间隔 100。
SetWinSockOffset 200

桥 MAC,多台 WVRP 互通的时候必须,参数是两个十进制整数
SetMac 00 52

WVRP 窗口标题名称
SetWVRPInstanceName XXX

Console 接口绑定的 telnet 端口号,有效范围 [2000, 3000),不设置时使用 windows 控制台输入
SetConsoleCom 2022

增加一个三层以太网接口,所有参数可选
-index 指定绑定的计算机网卡编号,从 1 开始
-vnet 指定以太网接口 mac 地址的第三个字节,默认为 5E, 使用十进制参数
-slot 指定接口子卡号,默认是 1
AddEthernet -index 2 -vnet 1 -slot 1

增加一个同步串口,前 4 个参数必须;-slot指定子卡号,可选,默认 2
AddSerial -local 127.0.0.1 -lport 6010 -dest 127.0.0.1 -dport 6020 -slot 2

增加一个 ATM 接口,前 4 个参数必须;-slot指定子卡号,可选,默认 3,本接口实现不完整,建议不要使用,可以使用新驱动
AddATM -local 127.0.0.1 -lport 6011 -dest 127.0.0.1 -dport 6021 -slot 3

增加一个 E1 控制器,前 4 个参数必须;-slot 指定子卡号,可选,默认 4,本接口实现不完整,建议不要使用,可以使用新驱动
AddE1Port -local 127.0.0.1 -lport 6013 -dest 127.0.0.1 -dport 6023 -slot 4

设置板类型,V5 上用来设置旧驱动二层以太网接口数量和子卡号。设置时第一二个参数必须,第三个参数可选。第一个参数目前无意义。第二个参数指定板上创建的二层以太网接口数量有效值为 8,16,24,默认 8。-slot 指定以太网接口子卡号,默认是 4
SetBrdType 0 24 -slot 4

为旧驱动二层以太网接口增加 socket 连接,-portnum 指定要增加连接的端口,1 表示第一个端口,对应 EthernetX/Y/0,2 对应 EthernetX/Y/1,依次类推。Y 是在 SetBrdType -slot 中指定的子卡号,-portnum 不能大于 SetBrdType 中指定的最大端口数量。
AddLink -portnum 2 -localip 127.0.0.1 -localport 7012 -dstip 127.0.0.1 -dstport 7022

为旧驱动二层以太网接口增加网卡绑定,-port指定绑定端口,含义同 AddLink 的 -portnum,-adaptor 指定以太网索引,从 1 开始
BindPortWithAdaptor -port 3 -adaptor 2
-port 3 表示的是 0/4/2 口,最后的 adaptor 2 表示与编号 2 的网卡相连。

PART B: V5 新增 WVRP 配置命令部分

注意:
1. 由于新驱动可以自由指定接口物理槽号和子卡号,但不能指定最后一维,同一个物理槽 & 子卡上的接口偏移从 0 开始递增。添加的接口时不要与旧驱动增加的接口冲突。

2. 所有参数由“-”开头,部分参数后面会要求具体的值,不同的参数之间没有顺序要求。

3. 新驱动二层以太网接口没有模拟芯片转发,而是收到的报文不做任何处理直接上送给平台。不要使用它测试二层特性。建议使用旧驱动接口。

4. 部分参数所有新驱动接口通用,各个接口通用的 option 有:
-slot x 接口物理槽号,一般和 SetSelfSlot 一致(光板时例外),必须
-subslot x 接口子卡号,必须
-local x.x.x.x 接口本地 ip
-lport xxxx 接口本地端口号
-dest x.x.x.x 对端接口 ip
-dport xxxx 对端接口端口号
-backup 当前接口所在的光板或子卡,在系统启动的时候不在位(用于光板或子卡的热插拔模拟)

下面的参数在以太网接口中通用
-level2/-level3 二三层属性,默认是三层接口,不能同时使用
-canswitch 接口可做二三层切换
-management 接口是管理以太口,不能和 -level2 -canswitch -speed 10000 同时使用
-speed {10|100|1000|10000} 指定接口速率
10, 100 时接口名为 Ethernet,有 -management 时 M-Ethernet
1000 时接口名为 GigabitEthernet,有 -management 时 M-GigabitEthernet
10000 时接口名为 Ten-GigabitEthernet
-combo {21|22|31} 接口是 combo 口
21 二层单 Combo 端口
31 三层单 Combo 端口
22 二层双 Combo 端口,一次会增加偏移量相邻的两个接口,互为 combo-bindadaptor x 绑定网卡,不完善,需要有旧驱动接口绑定网卡后方能使用。

Example:

PosX/X/X
AddPos -slot 0 -subslot 0
BriX/X/X
AddBri -slot 0 -subslot 0
AuxX/X/X
AddAux -slot 0 -subslot 0
EncryptX/X/X
AddIpsec -slot 0 -subslot 0
Subscriber-LineX/X/X
AddVoice -slot 0 -subslot 0
AsyncX/X/X
AddAsync -slot 0 -subslot 0
AnalogmodemX/X/X
AddAsync -analogmodem -slot 0 -subslot 0
ATMX/X/X,通过-phytype指定接口具体物理类型
-phytype PHY_ATM_25M
PHY_ATM_155M
PHY_ATM_622M
PHY_ATM_ADSL
PHY_ATM_SHDSL
PHY_ATM_E1
PHY_ATM_E3
PHY_ATM_T1
PHY_ATM_T3
PHY_ATM_ADSL_2PLUS
PHY_ATM_SHDSL_4WIRE
AddATMNew -phytype PHY_ATM_25M -slot 0 -subslot 0
SerialX/X/X 普通同异步串口
AddSerialNew -slot 0 -subslot 0
SerialX/X/X FE1接口
AddE1 -fe1 -slot 0 -subslot 0
SerialX/X/X FT1接口
AddT1 -ft1 -slot 0 -subslot 0
E1 X/X/X
AddE1 -e1 -slot 0 -subslot 0
T1 X/X/X
AddT1 -t1 -slot 0 -subslot 0
E3 X/X/X
-e3 不可通道化E3控制器
-ce3 可通道化E3控制器
AddE3 -e3 -slot 0 -subslot 0
AddE3 -ce3 -slot 0 -subslot 0
T3 X/X/X
-t3 不可通道化T3控制器
-ct3 可通道化T3控制器
AddT3 -t3 -slot 0 -subslot 0
AddT3 -ct3 -slot 0 -subslot 0
CposX/X/X
-ce1 可通道化出CE1接口的CPOS控制器
-ct1 可通道化出CT1接口的CPOS控制器
-e1 可通道化出E1接口的CPOS控制器
-e3 可通道化出E3接口的CPOS控制器
-t1 可通道化出T1接口的CPOS控制器
-t3 可通道化出T1接口的CPOS控制器
AddCpos -ce1 -slot 0 -subslot 0
AddCpos -ct1 -slot 0 -subslot 0
AddCpos -e1 -slot 0 -subslot 0
AddCpos -e3 -slot 0 -subslot 0
AddCpos -t1 -slot 0 -subslot 0
AddCpos -t3 -slot 0 -subslot 0
M-EthernetX/X/X 100M管理以太网接口
AddEthNew -management -speed 10 -slot 0 -subslot 0
AddEthNew -management -speed 100 -slot 0 -subslot 0
M-GigabitEthernetX/X/X
AddEthNew -management -speed 1000 -slot 0 -subslot 0
EthernetX/X/X
三层不可切换
AddEthNew -speed 10 -slot 0 -subslot 0
AddEthNew -speed 100 -slot 0 -subslot 0
三层可切换
AddEthNew -speed 10 -canswitch -slot 0 -subslot 0
AddEthNew -speed 100 -canswitch -slot 0 -subslot 0
二层不可切换
AddEthNew -speed 10 -level2 -slot 0 -subslot 0
AddEthNew -speed 100 -level2 -slot 0 -subslot 0
二层可切换
AddEthNew -speed 10 -level2 -canswitch -slot 0 -subslot 0
AddEthNew -speed 100 -level2 -canswitch -slot 0 -subslot 0
GigabitEthernetX/X/X
AddEthNew -speed 1000 -slot 0 -subslot 0
AddEthNew -speed 1000 -canswitch -slot 0 -subslot 0
AddEthNew -speed 1000 -level2 -slot 0 -subslot 0
AddEthNew -speed 1000 -level2 -canswitch -slot 0 -subslot 0
Ten-GigabitEthernetX/X/X
AddEthNew -speed 10000 -slot 0 -subslot 0
AddEthNew -speed 10000 -canswitch -slot 0 -subslot 0
AddEthNew -speed 10000 -level2 -slot 0 -subslot 0
AddEthNew -speed 10000 -level2 -canswitch -slot 0 -subslot 0
NATX/X/X
AddNat -slot 0 -subslot 0
EACLX/X/X
AddEacl -slot 0 -subslot 0
Net-StreamX/X/X
AddNetStream -slot 0 -subslot 0
URPFX/X/X
AddUrpf -slot 0 -subslot 0
MPLS-VPLSX/X/X
AddMplsVpls -slot 0 -subslot 0
MPLS-VLLX/X/X
AddMplsVll -slot 0 -subslot 0
MPLS-L3VPNX/X/X
AddMplsL3vpn -slot 0 -subslot 0
MPLSX/X/X
AddMpls -slot 0 -subslot 0

Tags: , , , , , ,

3 Responses to “SIMWARE 使用指南”

  1. kevin Zhang Says:

    hi,请问你尝试过Simware运行非Serial、Ethernet接口么?
    我尝试过,但是dis bri interface可以看到接口,但是却不能够配置啊?
    请回复下,谢谢

  2. flyxj Says:

    @kevin Zhang
    是不可以,毕竟我们使用的Simware是内部流出来的不完整版

    在Simware的图形设置里面不知道你还注意过另外两个选项:
    “主控板”和“接口板”,个人觉得和这两个有关系。

  3. amor Says:

    感谢许老师的辛勤劳动,非常受益。

Leave a Reply