Dynamips设计与分析-Dynamips及相关教学软件研究与设计 第12页
其他NPE-150,NPE-175,NPE-200,NPE-225,NPE-300,NPE-400,NPE-G1的初始化与NPE-100的初始化基本相似,在此就不再分别进行分析。
2.端口适配器PA的实现
PC机上没有端口适配器,只有通过Dynamips来访真模拟实现。实现端口适配器至少要实现创建端口适配器、关闭端口适配器、实例化端口适配器。
(1)创建一个端口适配器
函数实现如下:
/* 创建一个端口适配器 */
int c7200_cmd_pa_create(c7200_t *router,char *str)
{
char *tokens[PA_DESC_MAX_TOKENS];
int i,count,res;
u_int pa_bay;
/* 一个端口适配器是这样描述的: "1:PA-FE-TX" */
if ((count = m_strsplit(str,':',tokens,PA_DESC_MAX_TOKENS)) != 2) {
vm_error(router->vm,"unable to parse PA description '%s'.\n",str);
return(-1);
}
/* 通过id解析此PA */
pa_bay = atoi(tokens[0]);
/* 在当前的PA列表中添加此新的PA */
res = c7200_pa_add_binding(router,tokens[1],pa_bay);
/* 完全列阵被strsplit清掉 */
for(i=0;i<PA_DESC_MAX_TOKENS;i++)
free(tokens[i]);
return(res);
}
(2)创建一个端口适配器
函数实现如下:
/* 关闭一个 PA */
int c7200_pa_shutdown(c7200_t *router,u_int pa_bay)
{
struct c7200_pa_bay *bay;
if (!(bay = c7200_pa_get_info(router,pa_bay)))
return(-1);
/* 检测设备类型是否专为此bay定义的 */
if (!bay->dev_type || !bay->pa_driver) {
vm_error(router->vm,"trying to shut down an empty bay %u.\n",pa_bay);
return(-1);
}
/* 卸掉所有的NIO */
c7200_pa_disable_all_nio(router,pa_bay);
/* 关闭 PA 驱动器 */
if (bay->drv_info && (bay->pa_driver->pa_shutdown(router,pa_bay) == -1)) {
vm_error(router->vm,"unable to shutdown PA %u.\n",pa_bay);
return(-1);
}
free(bay->dev_name);
bay->dev_name = NULL; /* 赋空值 */
bay->drv_info = NULL; /* 赋空值 */
return(0);
}
(3)实例化一个端口适配器
函数实现如下:
/* 实例化一个PA */
int c7200_pa_init(c7200_t *router,u_int pa_bay)
{
struct c7200_pa_bay *bay;
size_t len;
if (!(bay = c7200_pa_get_info(router,pa_bay)))
return(-1);
/* 检测设备类型是否专为此bay定义的 */
if (!bay->dev_type || !bay->pa_driver) {
vm_error(router->vm,"trying to init empty slot %u.\n",pa_bay);
return(-1);
}
/* 分配设备名称 */
len = strlen(bay->dev_type) + 10;
if (!(bay->dev_name = malloc(len))) {
vm_error(router->vm,"unable to allocate device name.\n");
return(-1);
}
snprintf(bay->dev_name,len,"%s(%u)",bay->dev_type,pa_bay);
/* 实例化PA驱动器 */
if (bay->pa_driver->pa_init(router,bay->dev_name,pa_bay) == 1) {
vm_error(router->vm,"unable to initialize PA %u.\n",pa_bay);
return(-1);
}
/* 启动所有的NIO */
c7200_pa_enable_all_nio(router,pa_bay);
return(0);
}
3.模拟启动7200路由器
(1)初始化7200缺省参量
对C7200路由器的缺省参量进行设置,7200的NPE默认类型为NPE-200。
(2)初始化7200平台
在这个过程中要初始化MIPS处理器,初始化NPE,初始化RAM,初始化ROM,初始化适配器端口,Remote仿真控制器,Boot引导,显示设备。
(3)启动IOS文件
IOS文件是做思科路由器必须的文件,Dynamips自带有7200的IOS文件,如果还需要其他的IOS则需要购买或者到网上搜索查找。
4.其它
(1)虚拟桥接
虚拟桥接被用来在模拟器之间模拟一个共享网络。例如:任何模拟器可以被当作一个虚拟的桥接。配置文件(-b命令可以列出)包括一个NETIO描述符列表,如下所示:
语法:netio_type[:netio_parameters]
例子:
# Connection to instance "I0" 连接I0
# Connection to instance "I2"
udp:10004:127.0.0.1:10005
I0将以下面的参数开始:
dynamips ios.bin -p 1:PA-FE-TX:udp:10001:127.0.0.1:10000
(2)虚拟ATM交换机
虚拟ATM交换机过去习惯被模拟成一个在模拟器设备之间的ATM骨干网。虚拟交换机的使用不是强制的,可以直接把模拟器直接成点对点的ATM连接。请注意,仅仅
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>
Dynamips设计与分析-Dynamips及相关教学软件研究与设计 第12页下载如图片无法显示或论文不完整,请联系qq752018766