加入收藏 设为首页 联系站长
首页 | 虚拟动态 | Cisco模拟 | Juniper仿真 | 虚拟机 | 网络仿真 | 软件路由 | 技术专题 | 相关软件 | 交流论坛
>首页 -> Juniper仿真

TOP

QEMU[成功运行两个QEMU进程,并且两个JUNOS的LR可以互相通信
[ 录入者:admin | 时间:2008-04-11 06:48:01 | 作者: | 来源: | 浏览:1598次 ]
先来说说安装部分,这部分可以参考ronson那位的PDF手册(不过这个安装非常简单,就是freebsd和junos的安装,注意一下qemu的启动命令就可以了)。不过在此说一下:
1/我使用jqemu.exe那个文件,并且修改为juniper.exe直接copy到qemu 0.9.0的安装目录中
2/我是直接安装的JUNOS 7.2版本,没有安装JUNOS 7.4 & 8.x 版本。个人觉得7.2完全够你用了,没有必要追求过高的版本!
3/另外需要安装kqemu加速模块
4/启动命令中没有加载tap,另外-L 指定的是pc-bios目录,因为我的bios.bin在pc-bios目录下
juniper.exe -L pc-bios -m 128 -hda d:\softs\network\juniper\qemu\olive\olive1.vmdk -cdrom d:\tools\4.8-RELEASE-i386-mini.iso -boot d -localtime -net nic,vlan=3,macaddr=00:d0:f8:33:33:33,model=i82559er -net nic,vlan=2,macaddr=00:d0:f8:22:22:22,model=i82559er -net nic,vlan=1,macaddr=00:d0:f8:11:11:11,model=i82559er
--以上命令是安装freebsd

juniper.exe -L pc-bios -m 256 -hda d:\softs\network\juniper\qemu\olive\olive1.vmdk -hdb d:\softs\network\juniper\qemu\olive\junos.vmdk -cdrom d:\softs\network\juniper\qemu\olive\junos.iso -boot c -localtime -net nic,vlan=3,macaddr=00:d0:f8:33:33:33 -net nic,vlan=2,macaddr=00:d0:f8:22:22:22 -net nic,vlan=1,macaddr=00:d0:f8:11:11:11
--以上命令是copy JUNOS到单独的一个vmdk磁盘中(如果你重新安装JUNOS则不必加载cdrom了,因为junos.vmdk已经存在了junos的软体了)并且开始安装junos,装完提示你reboot时请halt系
统,然后利用下面的脚本启动olive否则你就没有串口了

juniper.exe -L pc-bios -m 256 -hda d:\softs\network\juniper\qemu\olive\olive1.vmdk -boot c -localtime -net nic,vlan=3,macaddr=00:aa:00:00:01:00,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:01:01,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:01:02,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:01:03,model=i82559er -net socket,vlan=3,listen=:2008 -kernel-kqemu -serial telnet::1977,server,nowait
--以上命令是启动第一台olive1的命令。其注意我没有加载任何tap,但是利用socket方式实现两个qemu进程间通信

到此安装部分就基本结束了,本来我是想直接复制olive1.vmdk 到olive2.vmdk,然后用qemu启动,但是不知道为何就是can't open olive2.vmdk,无奈我就重新做了个olive2.vmdk

安装完毕后,利用上面的最后一个qemu启动olive1,然后等cpu和内存下来后,利用下面的qemu命令启动olive2
juniper.exe -L pc-bios -m 256 -hda d:\softs\network\juniper\qemu\olive\olive2.vmdk -boot c -localtime -net nic,vlan=3,macaddr=00:aa:00:00:02:00,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:02:01,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:02:02,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:02:03,model=i82559er -net socket,vlan=3,connect=127.0.0.1:2008 -kernel-kqemu -serial telnet::1978,server,nowait
--请注意-net socket,此刻是采用socket connecting,以便保证olive1发送的包可以被vlan 3的olive2收到

当两个olive都启动好后,我加载了我以前做过的试验脚本,里面包含了30台logical路由器的配置,全部测试通过:vlan-tagging (两台olive之间,一台olive以内均正常),rip,isis,bgp,ldp,mpls,rsvp,radius,icmp...但是UDP的traceroute还是有looping的小问题,但是你可以用extension ping来实现类似traceroute的路径检测功能。

由于考虑到系统的稳定性上,上述的qemu我全部没有加载tap,也就是说你无法和你的主机进行通信。如果需要通信的话,我是用如下脚本的
juniper.exe -L pc-bios -m 256 -hda d:\softs\network\juniper\qemu\olive\olive2.vmdk -boot c -localtime -net nic,vlan=3,macaddr=00:aa:00:00:02:00,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:02:01,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:02:02,model=i82559er -net nic,vlan=3,macaddr=00:aa:00:00:02:03,model=i82559er -net tap,vlan=3,ifname=tap10 -kernel-kqemu -serial telnet::1978,server,nowait
也就是说其实对于vlan3你只需要一个tap就可以了,如果你是多个vlan,那么就需要多个tap对应,因为我使用了logical router的vlan-tagging,所以一定是将所有的fxp放置到一个vlan中,所以就只用了一个vlan=3.请看附件图内容。

目前来看qemu稳定性还算可以,不过估计和真实的olive还是有一定距离,但唯一的好处就是可以随时练习juniper。哈哈

[ 本帖最后由 scott_china 于 2008-2-14 16:29 编辑 ]

附件

a.jpg (13.23 KB)

2008-2-14 13:50

communication of qemu

a.jpg

b.jpg (13.56 KB)

2008-2-14 13:50

communication of qemu

b.jpg

c.jpg (9.92 KB)

2008-2-14 13:50

communication of qemu

c.jpg

补充一点,今日下午再次启动两个qemu时,第一个作为listen:2008的可以正常启动,而且socket 127.0.0.1:2008处于正常的listening状态,但是当启动第二个qemu时提示connect: no error,但是can't initialize device "socket",很奇怪。此刻如果去除-net socket 参数可正常启动,但是这个不是想要的。反复测试了很多此,也尝试使用-net socket,vlan=3,mcast=224.1.1.1:2008启动(包括第一台olive),均失败--压根无法启动。后来想了想是不是由于当我第一台olive启动完毕后,127.0.0.1:2008会产生很多通信数据,导致第二台olive启动的时候接收到这些大量的数据后产生什么异常。所以我尝试先启动olive2(即负责connect),然后启动listening,结果可以正常启动,但是明显两个olive无法通信,因为socket 127.0.0.1:2008 之间通信只有在qemu启动的时候才会使用 tcp 连接上。说明的确是由于olive2接受到了数据导致无法初始化socket。最后我是这样做的:启动olive1(listening这台),然后立即启动olive2(connect这台)。虽然启动会非常非常慢,但是的确启动了,而且工作正常。

总之:我发现qemu还是不太稳定,需要进一步完善。例如今天的一次测试中,发现telnet 127.0.0.1 1977后竟然也出现了127.0.0.1:2008的数据包(即两台olive之间通信的数据,当然是乱骂喽)

另外,如果你想sniffor数据包,可以在olive1上加入-net tap,vlan=3,ifname=tap10,然后就可以利用ethereal在你的主机上针对tap10进行数据包截获了(此刻不需要在tap10上启用任何网络协议包括tcp/ip在内)

[上一篇]vmware [下一篇]Building a Juniper "Olive" runn..
※相关文章
 

评论

称  呼:
内  容:

相关栏目

最新文章

热门文章

推荐文章

赞助商链接