Dynamips设计与分析-Dynamips及相关教学软件研究与设计 第11页
表2-2 思科7200路由器的端口适配器参数及说明
2.1.4 7200路由器的启动过程
加电之后,ROM运行加电自检程序(POST), 检查路由器的处理器、接口及内存等硬件设备。
执行路由器中的启动程序(Bootstrap),搜索CISCO的IOS。
装入IOS后,寻找配置文件。配置文件通常在NVRAM中。配置文件也可从TFTP服务器装入。
装入配置文件后,其中的信息将激活有关接口、协议和网络参数。
当找不到配置文件时,路由器进入配置模式。
2.1.5 模拟7200路由器的实现
1.网络处理引擎NPE的实现
PC机上没有真正的NPE,通过Dynamips进行仿真模拟实现NPE。
(1)定义CPU EEPROM
/* NPE-100 */
static m_uint16_t eeprom_cpu_npe100_data[16] = {
0x0135, 0x0203, 0xffff, 0xffff, 0x4906, 0x0004, 0x0000, 0x0000,
0x6000, 0x0000, 0x9901, 0x0600, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
/* NPE-150 */
static m_uint16_t eeprom_cpu_npe150_data[16] = {
0x0115, 0x0203, 0xffff, 0xffff, 0x4906, 0x0004, 0x0000, 0x0000,
0x6000, 0x0000, 0x9901, 0x0600, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
/* NPE-175 */
static m_uint16_t eeprom_cpu_npe175_data[16] = {
0x01C2, 0x0203, 0xffff, 0xffff, 0x4906, 0x0004, 0x0000, 0x0000,
0x6000, 0x0000, 0x9901, 0x0600, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
/* NPE-200 */
static m_uint16_t eeprom_cpu_npe200_data[16] = {
0x0169, 0x0200, 0xffff, 0xffff, 0x4909, 0x8902, 0x0000, 0x0000,
0x6800, 0x0000, 0x9710, 0x2200, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
/* NPE-225 (same as NPE-175) */
static m_uint16_t eeprom_cpu_npe225_data[16] = {
0x01C2, 0x0203, 0xffff, 0xffff, 0x4906, 0x0004, 0x0000, 0x0000,
0x6000, 0x0000, 0x9901, 0x0600, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
/* NPE-300 */
static m_uint16_t eeprom_cpu_npe300_data[16] = {
0x01AE, 0x0402, 0xffff, 0xffff, 0x490D, 0x5108, 0x0000, 0x0000,
0x5000, 0x0000, 0x0012, 0x1000, 0x0000, 0xFFFF, 0xFFFF, 0xFF00,
};
/* NPE-400 */
static m_uint16_t eeprom_cpu_npe400_data[64] = {
0x04FF, 0x4001, 0xF841, 0x0100, 0xC046, 0x0320, 0x001F, 0xC802,
0x8249, 0x14BC, 0x0242, 0x4230, 0xC18B, 0x3131, 0x3131, 0x3131,
0x3131, 0x0000, 0x0004, 0x0002, 0x0285, 0x1C0F, 0xF602, 0xCB87,
0x4E50, 0x452D, 0x3430, 0x3080, 0x0000, 0x0000, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
/* NPE-G1 */
static m_uint16_t eeprom_cpu_npeg1_data[64] = {
0x04FF, 0x4003, 0x5B41, 0x0200, 0xC046, 0x0320, 0x0049, 0xD00B,
0x8249, 0x1B4C, 0x0B42, 0x4130, 0xC18B, 0x3131, 0x3131, 0x3131,
0x3131, 0x0000, 0x0004, 0x0002, 0x0985, 0x1C13, 0xDA09, 0xCB86,
0x4E50, 0x452D, 0x4731, 0x8000, 0x0000, 0x00FF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
以上对NPE-100,NPE-150,NPE-175,NPE-200,NPE-200,NPE-225,NPE-300,NPE-400,NPE-G1进行了定义,给它们分别分配了地址。
(2)获取一个NPE驱动
函数原型为:
struct c7200_npe_driver *c7200_npe_get_driver(char *npe_type)
通过提供的参数NPE的类型(npe_type)匹配查找得到。
(3)设置NPE类型
函数原型为:
int c7200_npe_set_type(c7200_t *router,char *npe_type)
先定义一个c7200_npe_driver结构指针driver,先判断路由器虚拟机的标记status,如果正在运行中则出错显示运行中不能改变npe类型,否则利用参数npe_type检测driver是否存在,不存在的话则出错显示无法可知的npe类型。把driver赋给router->npe_driver,完成设置。
(4)显示可利用的NPE驱动列表
函数原型为:
void c7200_npe_show_drivers(void)
显示npe驱动列表的各种信息。
(5)初始化NPE-100
/* 初始化一个NPE-100 */
int c7200_init_npe100(c7200_t *router)
{ vm_instance_t *vm = router->vm;
int i;
/* 设备处理器类型 */
mips64_set_prid(vm->boot_cpu,MIPS_PRID_R4600);
/* 初始化Galileo GT-64010系统控制器 */
if (c7200_init_gt64010(router) == -1)
return(-1);
/* PCMCIA 控制器是在总线0 */
router->pcmcia_bus = vm->pci_bus[0];
/* 初始化端口适配器PCI总线 */
if (c7200_pa_create_pci_busses(router) == -1)
return(-1);
/* 为 PA Bays 1,3,5 和 PA Bays 2,4,6创建 PCI 总线 */
youerw.com
dev_dec21050_init(vm->pci_bus[0],2,vm->pci_bus_pool[24]);
dev_dec21050_init(vm->pci_bus[0],3,NULL);
dev_dec21050_init(vm->pci_bus[0],4,vm->pci_bus_pool[25]);
/* 映射 PA PCI 总线 */
router->pa_bay[0].pci_map = vm->pci_bus[0];
for(i=1;i<C7200_MAX_PA_BAYS;i++)
router->pa_bay[i].pci_map = vm->pci_bus_pool[i];
c7200_pa_init_pci_bridge(router,1,vm->pci_bus_pool[24],1);
c7200_pa_init_pci_bridge(router,3,vm->pci_bus_pool[24],2);
c7200_pa_init_pci_bridge(router,5,vm->pci_bus_pool[24],3);
c7200_pa_init_pci_bridge(router,2,vm->pci_bus_pool[25],1);
c7200_pa_init_pci_bridge(router,4,vm->pci_bus_pool[25],2);
c7200_pa_init_pci_bridge(router,6,vm->pci_bus_pool[25],3);
return(0);
}
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>
Dynamips设计与分析-Dynamips及相关教学软件研究与设计 第11页下载如图片无法显示或论文不完整,请联系qq752018766