发新话题
打印

[原创] 谈谈个人对Juniper(Junos)模拟器的理解

本主题由 小漏 于 2008-10-28 23:40 设置高亮

谈谈个人对Juniper(Junos)模拟器的理解

文档介绍:


  • 作者:张蒙
  • 电子邮箱:qdzhangmeng@163.com
  • MSNqdzhangmeng@163.com
  • QQ : 407-960-134
  • 博客地址:http://zmouc.cublog.cn
  • 建立日期:20081028
  • 版本: 1.0
  • 版权说明:本文基于创作共用约定,内容归作者版权所有,欢迎大家转载,但要请保留作者的完整信息和出处,谢谢!


有朋友写了一篇对cisco模拟器的理解(见附录),说的非常详细,也很透彻、明白。下面,我谈谈对juniperjunos)模拟器的个人理解。不当之处请指正。

对于ciscojuniper的交换机、路由器、防火墙而言,它们是一个完整的硬件及软件结合的平台。这个平台具有强大的功能,如juniper路由器的快速转发功能。但

是,它们的价格都非常昂贵,于是出于某种需求:节约成本、学习技术等,我们利用一些手段模拟实现一台物理的路由器或者防火墙。一般的计算机平台都是如

下架构:


Application


Operating System


Hardware





最底层是硬件,中间一层是操作系统,最上层是应用软件。

其中硬件部分可以是真实存在的一套硬件:包括CPU、主板、硬盘、内存、电源、网卡。可以是厂家生产的路由器硬件,也可以是自己组装的硬件。这个最底层的

硬件也可以是软件模拟出来的。如著名的VMwareqemuJqemu修改版的qemu,提供对i82559er网卡支持),还有微软的Virtual PC。这些模拟软件通过一些手

段模拟出来了一套CPU、主板、硬盘、内存、电源、网卡,类似于真实的物理设备。各种各样的操作系统就是运行在这个硬件平台上面的。

下面,再分析一个概念:Olive。什么是Olive呢?说白了,就是一台运行junosPC或者虚拟机。也就是说,一台Olive就是一个juniper路由器。只不过因为它的junos

运行在PC或虚拟机上,所以我们称呼它为Olive。除了一些功能上的差异(如olive效率肯定不如真实的路由器高效),你可以认为Olive就是一台Juniper路由器。

再次利用上面的计算机平台模型,我们来比较一下cisco模拟器、Olive(也就是junos模拟器),windows XPcisco call manager的差异:

cisco模拟器:


路由协议等应用

Cisco IOS

硬件平台




Olive(也就是junos模拟器)


Junos


FreeBSD


硬件平台





windows XP


Officepplive…

Windows XP

硬件平台




cisco call manager


cisco call manager


Linux


硬件平台




大家看见了吧,ciscoIOS其实就是一个操作系统,它的地位和unixlinuxwindows XPFreeBSD是平等的。路由协议、ACL过滤,DHCP等相当于应用软件,运行在

IOS这个操作系统上面。

那么对于Junos呢?它其实是一个应用软件,而绝非一个操作系统。通过上面的Olive模型,我们可以清晰地看到,junos运行在FreeBSD这个操作系统上面。Junos的地

位和windows XP下面的officepplive等应用软件的地位是一样的。


这一点通过junos的安装过程也可以看出来,我们都是先在硬件平台上安装FreeBSD这个类unix操作系统,然后才开始安装junos这个应用软件。但是呢,这个软件又

比较特殊,它在安装的过程中会对原来的操作系统FreeBSD进行一些大幅度的修改(甚至重新格式化分区),并设置自己为开机自动运行,但是junos始终是运行在

freebsd的核心之上,所以我们在打开Olive后直接进入到junos运行界面。当然我们也可以切换回FreeBSD进行操作(在junos的操作模式下输入start shell命令)。



下面我们来分析一下junos安装过程中的启动信息:

Hit [Enter] to boot immediately, or space bar for command prompt.
Booting [/boot/installer]...

ACPI autoload failed - no such file or directory
Olive CPU
#junos
安装程序检测到我们的硬件平台不是juniper路由器,而是PC,所以提示为Olive,看见了吧,Olive的称呼就是从这里来的。
GDB: debug ports: sio
GDB: current port: sio
KDB: debugger backends: ddb gdb
KDB: current backend: ddb
Copyright (c) 1996-2007, Juniper Networks, Inc.
All rights reserved.
Copyright (c) 1992-2006 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994

The Regents of the University of California. All rights reserved.

#######################################################################################################
##以上为freebad的系统信息
JUNOS 8.5R1.14 #0: 2007-12-08 07:29:51 UTC
#
开始安装junos

builder@rahu.juniper.net:/volume/build/junos/8.5/release/8.5R1.14/obj-i386/sys/compile/MFS

Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: AMD Athlon(tm) 64 X2 Dual Core Processor TK-57 (1379.41-MHz 686-class CPU)

Origin = "AuthenticAMD"
Id = 0x60f82
Stepping = 2
#
检测CPU

Features=0x78bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2>


Features2=0x2001<SSE3,CX16>


AMD Features=0xea500800<SYSCALL,NX,MMX+,FFXSR,RDTSCP,LM,3DNow+,3DNow>


AMD Features2=0x109<LAHF,<b3>,<b8>>

real memory
= 536870912 (512 MB)

avail memory = 512311296 (488 MB)
#
检测内存
cpu0 on motherboard
pcib0: <Intel 82443BX (440 BX) host to PCI bridge> pcibus 0 on motherboard
pir0: <PCI Interrupt Routing Table: 20 Entries> on motherboard
pci0: <PCI bus> on pcib0
pcib1: <PCI-PCI bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
isab0: <PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 UDMA33 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x1060-0x106f at device 7.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
smb0: <Intel 82371AB SMB controller> port 0x1040-0x104f at device 7.3 on pci0
smb0: controller initialization failed
pci cmd reg = 0x0001, SMB host conf = 0x00
pci0: <display, VGA> at device 15.0 (no driver attached)
pci0: <mass storage, SCSI> at device 16.0 (no driver attached)
pcib2: <PCI-PCI bridge> mem 0xe8801000-0xe8801fff at device 17.0 on pci0
pci2: <PCI bus> on pcib2
pci2: <network, ethernet> at device 0.0 (no driver attached)
pci2: <base peripheral> at device 3.0 (no driver attached)
orm0: <ISA Option ROMs> at iomem 0xc0000-0xc7fff,0xc8000-0xc8fff,0xdc000-0xdffff,0xe4000-0xe7fff on isa0
fdc0: <Enhanced floppy controller> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: [FAST]
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse, device ID 3
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x100>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x90 on isa0
sio0: type 16550A, console
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
sio2: configured irq 5 not in bitmap of probed irqs 0
sio2: port may not be enabled
sio3: configured irq 9 not in bitmap of probed irqs 0
sio3: port may not be enabled
Timecounter "TSC" frequency 1379406246 Hz quality 800
Timecounters tick every 1.000 msec
md0: Preloaded image </boot/modules/mdimg> 4980736 bytes at 0xc098b1c4
ad0: 8192MB <VMware Virtual IDE Hard Drive 00000001> at ata0-master UDMA33
Trying to mount root from cd9660:/dev/md0
Disabling watchdog
#######################################################################################################
#以上为检测CPU、内存、硬盘等硬件信息
=================== Bootstrap installer starting ===================
#开始正式安装Junos
Initialized the environment #初始化安装环境
Routing engine model is Olive #检测路由引擎为Olivejuniper路由器分为路由引擎和转发引擎两大部分,对于真实的juniper路由器,junos是运行在路由引擎上面的,所以我们这里的Olive说白了只模拟了juniper路由器的路由引擎,所以检测不到Forwarding engine)。
Discovered that flash disk =
, hard disk = ad0
#
检测硬盘为ad0
Disk to install is ad0
mfs: available=861136
Using 420Mb for /tmp
Setting ospackage=jboot-8.5R1.14.tgz, configpackage=configs-8.5R1.14.tgz
Setting packlist=jbundle-8.5R1.14-domestic.tgz
Packages and configurations copied to /tmp

Filesystem 1K-blocks
Used
Avail Capacity iused ifree %iused
Mounted on

/dev/md1
430454 152458 273692
36%
6
248
2%
/tmp

Cleaning up ad0...

bsdlabel: /dev/ad0: no valid label found
WARNING: Unable to read disklabel of ad0. Hence need to partition it
Partitioning ad0...
bsdlabel: /dev/ad0: no valid label found
Could not read disk label from ad0, creating new label.
******* Working on device /dev/ad0 *******
Could not read disklabel for ad0
Installing disk label on ad0
Running newfs on ad0s1a...
/dev/ad0s1a: 220.5MB (451584 sectors) block size 16384, fragment size 2048

using 4 cylinder groups of 55.14MB, 3529 blks, 7168 inodes.

super-block backups (for fsck -b #) at:

32, 112960, 225888, 338816

Running newfs on ad0s1e...
/dev/ad0s1e: 24.5MB (50176 sectors) block size 16384, fragment size 2048

using 4 cylinder groups of 6.14MB, 393 blks, 896 inodes.

super-block backups (for fsck -b #) at:

32, 12608, 25184, 37760

Running newfs on ad0s1f...
/dev/ad0s1f: 6922.7MB (14177608 sectors) block size 16384, fragment size 2048

using 38 cylinder groups of 183.69MB, 11756 blks, 23552 inodes.

super-block backups (for fsck -b #) at:

32, 376224, 752416, 1128608, 1504800, 1880992, 2257184, 2633376, 3009568,


3385760, 3761952, 4138144, 4514336, 4890528, 5266720, 5642912, 6019104,


6395296, 6771488, 7147680, 7523872, 7900064, 8276256, 8652448, 9028640,


9404832, 9781024, 10157216, 10533408, 10909600, 11285792, 11661984, 12038176,


12414368, 12790560, 13166752, 13542944, 13919136

#######################################################################################################
上面的一部分信息为junos对硬盘ad0重新格式化分区,但是将freebsd核心和我们的安装文件jinstall-8.5R1.14-domestic-signed.tgz都拷贝到特定分区。以后还是要靠这

freebad操作系统内核做最底层的软件支撑。

Installing JUNOS on ad0...

#
重新格式化分区后,开始安装junos组件
Adding jbase...
Mounted jbase on /mnt/packages/mnt/jbase (/dev/md2)
Adding jbundle-8.5R1.14-domestic.tgz...
Checking package integrity...
Verified SHA1 checksum of jbase-8.5R1.14.tgz
Verified SHA1 checksum of jboot-8.5R1.14.tgz
Verified SHA1 checksum of jcrypto-8.5R1.14.tgz
Verified SHA1 checksum of jdocs-8.5R1.14.tgz
Verified SHA1 checksum of jkernel-8.5R1.14.tgz
Verified SHA1 checksum of jpfe-8.5R1.14.tgz
Verified SHA1 checksum of jroute-8.5R1.14.tgz
Verified SHA1 checksum of pkgtools.tgz
Running requirements check first for jbundle-8.5R1.14-domestic...
Running pre-install for jbundle-8.5R1.14-domestic...
Installing jbundle-8.5R1.14-domestic in /var/tmp/pa1685.34/jbundle-8.5R1.14-domestic.x1685...
Running post-install for jbundle-8.5R1.14-domestic...
Adding jkernel...
Adding jcrypto...
Adding jpfe...
WARNING: hw.product.model='unknown' using jpfe-M40
Adding jdocs...
Adding jroute...
Restoring backed up configurations...
Unmounted /mnt/packages/mnt/jbase
machdep.bootsuccess: 0 -> 0

-> Waiting (max 60 seconds) for system process `vnlru' to stop...done

Waiting (max 60 seconds) for system process `bufdaemon' to stop...done
Waiting (max 60 seconds) for system process `syncer' to stop...
Syncing disks, vnodes remaining...0 0 done

#到这里,junos就全部安装完成了。


花了一天的时间整理了一下,以上是个人对Olive的一点理解,欢迎朋友们一起交流。

张蒙


2008-10-28




【附录:抛砖引玉:谈自己对模拟器的理解,以求对Juniper模拟实现的介绍
(附录链接: http://wandering.blog.51cto.com/467932/106419 )
我刚刚接触Olive,还没有自己搭建过Juniper模拟环境,原来只做过 dynamips 模拟的 Cisco 路由器环境。
看了NetEmu论坛内和其它网上的一些文章,收获不少,增加了对 Olive 安装使用方面的认识。
不过,在阅读这些文章的过程中,有些问题却一直没有得到解决,反而越来越成为我心中的最大疑问。
下面,我就要把这个疑问和自己的理解阐述一下,请朋友们确认有哪些问题,并帮忙修正、指教,希望通过这个过程,可以使诸如我等新手朋友能更好地理解和学习相关技术。   

问题:Olive到底是什么?各类文章中介绍的JunOSQemuJQemu等等是什么概念,以及它们之间的关系?
我的理解:
先说搭建 Juniper 模拟环境的原理和框架吧,其实任何一种模拟环境实现的基本原理都是相似的。

+--------------------+
|    Application     |
+--------------------+
|  Operating System  |
+--------------------+
|     Hardware       |
+--------------------+

Hardware:
这一层可以有2种实现方法,一种是用真实的物理设备,如PC;第二种方法是用模拟软件,如QemuVMWareDynamips等,都是模拟硬件平台的软件。它们实现了在真实主机中虚拟出其它的主机环境,这些虚拟主机从功能上非常接近真实主机。

Operating System:
运行在虚拟主机上的操作系统,如FreeBSDLinuxWindowsCisco IOSJunOS等,都属于此类。

Application:
运行的虚拟系统平台上的应用软件,如ApacheMySQLIISISA等。这里要强调的是,我认为Cisco IOSJunOSOperating SystemApplication的集成,从用户的角度看是不可分割的,因此这类厂商的软件属于上面框架的23层结合。

OK
,以上是我对模拟环境的基础原理的理解。
由于对 Dynamips 比较熟悉,因此我再谈谈对它的理解,希望能有朋友用同样的方式介绍一下 Olive (Juniper)

Dynamips
是专为模拟Cisco路由器硬件平台设计的软件,换句话说只有满足了这个要求Cisco IOS才能够正确地被安装并运行。
有些朋友一直奇怪、要求模拟交换机,从模拟器的实现原理看,这个是不太可能的。为什么?因为路由器和JuniperF5、其它防火墙产品很相似,都是主机性质产品,也就是说主要功能是可以由CPU完成的。而交换机的功能实现主要是基于硬件(专用芯片,非进程处理),因此,除非能模拟出交换机的硬件环境,否则仅靠模拟一个基础的系统运行平台,装载IOS/COS,是不可能真正实现交换功能的。
因此,dynamips是模拟了一些接口模块,让IOS以为并识别这些模块,而接口基本上就是个纯物理层设备,对于路由器来说,主要还是要靠CPU处理各类工作,所以才能够实现模拟。
最后,再简单地介绍一下 Dynamips 的周边概念.
dynamips      Cisco Router
模拟器,模拟Cisco Router硬件环境,通过加载有限的IOS来模拟不同的路由器。
dynagen       dynamips
的字符界面前端,即通过dynagen可以更高效地使用dynamips管理模拟器,其配置文件的扩展名为net
DynamipsGUI   
国人开发的一款dynamips的图形界面前端,其基理是通过图形选配生成dos批命令,再通过批命令运行模拟器。
GNS3         
外国人开发的一款dynamips的图形界面前端,道理相似,功能多一些。不过DynamipsGUI更符合一些国人的思维习惯。
VMWare        
著名的虚拟主机平台软件,商业软件,基理是模拟主机的硬件环境,之后就可以在其上安装各类操作系统。把它当作软件PC用就行了。
VirtualBox   
VMWare是同类产品,免费软件,Sun在维护,我一直在使用它。
Qemu         
VMWare是同类产品,免费软件,目前还发展在命令行阶段。
好了,我知道的就这么多了,希望对 Juniper 模拟比较了解的朋友介绍一下自己的体会。


[ 本帖最后由 zmouc 于 2008-10-28 23:56 编辑 ]
坚持就是胜利!

TOP

感谢楼主原创文章,大家也可以在这里查阅相关junos文章
http://netemu.cn/bbs/thread-8389-1-1.html
Netemu@gmail.com
QQ:247656
Netemu提问技巧
http://netemu.cn/bbs/thread-8031-1-1.html

TOP

谢谢楼主经验分享!

TOP

还没有涉足这个领域,不过楼主的这种精神还是令人钦佩的!

TOP

谢谢楼主共享!
对于JUNOS,俺感觉它更像是一个操作系统(修改了FREEBSD内核后的Juniper系统)。

TOP

谢谢楼主的无私奉献!!

TOP

支持楼主.
If you want to contact with me.
Please Enter My Web Site.
Http://Www.Ice-Man.Cn          Http://Www.CiscoVista.Cn

TOP

支持支持!
CCNP
勇往直前
zhj@live.nl

TOP

不是一般的精彩,感谢共享

TOP

我也来顶。

TOP

谢谢楼主经验分享! 学习中!

TOP

学习了。。。。谢谢
他朝我笑了那么一下,在我幼小的心灵上留下了个碗大的疤

TOP

刚刚学习。谢谢了啊!!!!!

TOP

谢谢楼主分享这么好的文章给我们,向楼主致敬。

TOP

谢谢楼主的分享!!

TOP

发新话题