4th
2008,03
The Olive (Olea europaea) is a species of small tree in the family Oleaceae, native to coastal areas of the eastern Mediterranean region.
http://juniper.cluepon.net/index.php/Olive
The natural wild Olive is a small tree or shrub to 8 m tall with rather straggling growth and thorny branches. The leaves are opposite, oblong pointed, 4-10 cm long and 1-3 cm broad, dark greyish-green above and, in the young state, hoary beneath with whitish scales. The small white flowers, with four-cleft calyx and corolla, two stamens and bifid stigma, are borne generally on the last year’s wood, in racemes springing from the axils of the leaves. The fruit in the wild plant is small drupe 1-2 cm long, and the fleshy pericarp, which gives the cultivated olive its economic value, is comparatively thin.
No really, what is it?
Ok, Olive is also the name given to JunOS running on a PC, nothing more, nothing less.
A common misconception is that there is some “special software”, or “secret code” which you can download. This doesn’t exist, Olive is simply JunOS running on a PC which happens to not be installed inside a router. Olive is the natural state of a PC running JunOS when there is no PFE attached.
Juniper originally developed “Olive” functionality for software testing, before the hardware was fully implemented. It is not intended as a “router simulator”, and has never been a supported product intended for use by the general public. At one point it was used internally for lab work, but has largely been phased out of this role since the availability of the low-cost M5.
Ok so why the secrecy?
Juniper’s offical position is that Olive does not exist. This is a reasonable offical position, since it doesn’t make sense to have people trying to deploy an unsupported and unsupportable service using “free” (aka illegally used) software, instead of purchasing actual routers. Given the large amount of interest in Olive from inexperienced students who want to learn JunOS with a “free” system, this is a very real consideration. It also has the potential for a very high support load.
That said, Olive does exist. However, a key point to remember is that it exists because Juniper allows it to exist. Olive should only be used by knowledgable engineers, and if you can’t figure it out you probably shouldn’t be using it. If Olive became widely abused, Juniper could easily add additional software checks which would make everyone’s life harder.
Please do not abuse their trust by doing things stupid things, such as contacting JTAC for support on an Olive, or selling illegal copies of the software as a “router simulator”. This is the kind of activity which is likely to have serious legal consequences and/or provoke a justified response from Juniper. Don’t do it.
Installation instructions
Beware: There Are No Olives!
“True” Olive : Hardware requirements
You need a generic PC with at least one Intel EtherExpress Pro/100B network card, an IDE hard disk and at least 128MB memory. JunOS 5.x and 6.x install fine on a Pentium. JunOS 7.x seems to require a Pentium II and a minimum 196MB to install (All together now…Somebody please give me some more memory! - aborting the memoryhungry installation means you’ll have to start the FreeBSD install all over again). Following installation though, will run fine with just 48MB.
Network Cards
You must have the right network cards!
It’s crucially important to have the right network cards. You can’t just use any old one.
Network cards that do work:
-
Intel EtherExpress Pro/100 and Pro/100B (82558 / 82558B chipset)
-
Intel EtherExpress Pro/100+ Management Adapter (82559 chipset)
-
Intel Pro/1000MT Desktop Gigabit Adapter
-
Intel Pro/1000MT Dual Port Server Adapter (FW82546EB chipset)
-
Intel ICH3 Onboard Controller (82801CAM)
-
Compaq NC3120 (82258 chipset)
-
Compaq NC3121 (82558B chipset)
-
Matrox QS-NIC Quad FE NIC (8255x chipset)
JunOS 4.x had support for DEC 21×40 network cards so you could install it under VMware.
Network cards that don’t work:
-
Intel 82557 chipset based cards (detected as fxp interfaces, but link won’t come up)
-
3Com 905B-TX
Tip: If you get an error similar to “fxp0: Multicast addr command failed”, and find your network cards don’t actually pass traffic, try enabling “PCI Bus Mastering” in the BIOS. Some machines have this disabled by default.
Virtual Olive : JEMU
Why JEMU ? Because we use Qemu to emulate JUNOS and the emulation of the PIX (which use Qemu too) is called PEMU –> JEMU ;-)
VMware
Allthough some people say you can’t, you actually can run JunOS on VMware:
-
Create a new virtual machine
-
Edit your *.vmx file and add ethernet0.virtualDev = “e1000″. With this line, VMware will emulate an Intel network card, and FreeBSD/JunOS will detect it as em interface.
-
Go to your VM settings -> hardware and add a serial port
-
Install it as usual.
/* Unfortunately Multicast doesn’t work with the virtual Intel driver of VMware. So it is not possible to use neatly protocols like OSPF, IS-IS, …
-
/
rwayan has written a patch for Olive in VMWare. http://www.netemu.cn/bbs/thread-7417-1-1.html if you don’t know the detail learn chinese please…
0. ungrade your olive into JunOS 8.5 R1.14
1. download the attachment in chick it,look post
2. put it into olive’s /boot/modules
3. boot Olive with single mode
input <space> than input 'boot -s' at bootloader
4. load the patch
input 'kldload syscall' or 'kldload ./syscall.ko'
in single mode shell where you put the patch
5. back to multiuser mode
input "Ctrl+D" in shell
6. login and active the patch
input 'sysctl dev.em.0.fix_em_multicast=1' after login
if you have more network card active them all
'sysctl dev.em.1.fix_em_multicast=1'
'sysctl dev.em.2.fix_em_multicast=1' .....
7. Play with it.
ospf tesed isis should work but not test rip should work but not test
P.S.
Olive doesn't drive em very well,
this patch add some multicast MAC address to the em 's receive REG list.
and Olive doesn't drive em to support VLAN ,
so logicial router is not yet supported.
And Sorry For my poor English.
Qemu
What is working :
| YES | NO | |
|---|---|---|
| RIP | X | |
| OSPF | X | |
| IS-IS | X | |
| BGP | X | |
| MPLS | X | |
| LDP | X | |
| RSVP | X |
Procedure of installation :
-
Download last version of Qemu for Windows (~VMWare) on this site : [1]
-
Download OpenVPN to create TAP interface : [2]
-
Download FreeBSD 4.4 mini : [3]
-
Download a version of JUNOS < 7.4
-
Download modify version of qemu (version with the good Intel driver : i82559er) = JQEMU : [4] (it’s necessary to subscribe to the forum to download the file). Take the second one.
Unzip official package of Qemu and copy in this directory the JQEMU executable (jqemu.exe).
Use the tool : “qemu-img.exe” to create an image.
qemu-img.exe create olive.img 2G
jqemu.exe -L . -m 256 -hda olive.img -cdrom FreeBSD4.4-mini.iso -boot
d -localtime
Install FreeBSD and JUNOS like it is explain below.
Creation of the TAP interface :
Install OpenVPN. During the installation install only “TAP-Win32 Virtual Ethernet Adapter” and “Add Shortcuts to Start Menu”. To create an interface click on the menu : “Add a new TAP-Win32 virtual ethernet adapter”. Rename the TAP interface on this way : “tap1″, “tap2″, …
Example with 2 interfaces:
jqemu.exe -L . -m 48 -hda Olive.img -serial telnet::1001,server
-localtime
-net nic,vlan=0,macaddr=00:aa:00:00:01:01,model=i82559er
-net tap,vlan=0,ifname=tap1
-net nic,vlan=0,macaddr=00:aa:00:00:01:02,model=i82559er
-net tap,vlan=0,ifname=tap2
JEMU will start when you do a telnet : “telnet 127.0.0.1 1001″
To install JEMU on Linux, there is some interesting information here :
Installation instructions
You need a copy of the jinstall tgz package for the version you want to install. It’s often rumoured that the Olive jinstall is a “special” jinstall file, but no, it’s the same jinstall as you’d load on your M&T series routers. Obviously, installing this somewhere else than in a Juniper router you have a support contract for is not allowed.
Install FreeBSD 4.x on it according to the instructions below.
Partition layout
ad0a / ad0b swap ad0e /config ad0f /var
After installation
rm /dev/wd0c ; ln -s /dev/ad0c /dev/wd0c mkdir
/var/etc touch /var/etc/master.passwd;
touch /var/etc/inetd.conf; touch
/var/etc/group pkg_add jinstall-xxx.tgz reboot
Configure from console (serial line) as a normal Juniper. Once your IP is up and running, you can manage the router remotely using telnet or SSH.
Dual Booting JunOS and FreeBSD
Create at least two separate partitions, or use two separate hard drives. The first partition should be labeled with the layout above — this will be the JunOS installation target. The second partition can be laid out however you wish and will be the installation target for FreeBSD. Install a fresh installation of FreeBSD on both partitions. After this is complete, boot the instance of FreeBSD that is on the second partition. Keep the FreeBSD install CD handy, as you’ll need it again later.
Edit /etc/fstab and add the following entries to allow you to access the JunOS partitions from the FreeBSD instance:
/dev/ad0s1a /JunOS ufs rw 2 2
/dev/ad0s1e /JunOS/config ufs rw 2 2
/dev/ad0s1f
/JunOS/var ufs rw 2 2
Compile or install the GNU GRUB boot manager. Install the GRUB stage-1 and stage-2 boot loader images int /JunOS/boot/grub. Install the below snippet (edit as needed) as menu.list in /JunOS/boot/grub. This instace has JunOS installed on the first hard drive, and FreeBSD on the second.
# Boot automatically after 10 secs. timeout 10 # By default, boot the first entry.
default 0 # Fallback to the second entry.
fallback 1 # JUNOS ( bootloader ) title JunOS root (hd0,0,a)
kernel /boot/loader # FREEBSD title FreeBSD root (hd1,0,a) kernel /boot/loader
Install grub to the main boot sector.
# grub grub> find /boot/grub/stage2 grub> root (hd0,0,a) grub> setup (hd0)
Once Grub has successfully installed, ensure you can boot from both instances. Save the contents of /JunOS/boot/grub in a tar file for later.
tar cvzpf /root/Grub-backup.tar.gz /JunOS/boot/grub
Install the GNU GRUB boot manager from source or the ports collection. Install the jinstall package as above, and allow the Olive instance to fully boot. Once this is working, re-insert the FreeBSD install CD. As the FreeBSD install CD is loading the FreeBSD kernel, hit the spacebar repeatedly to bring up the boot loader from the CD. You should be at the OK prompt at this point. Enter lsdev to find the disk and partition that still has FreeBSD on it. Enter
set currdev=[boot disk and partition]
to boot back into your FreeBSD install. From the root directory, untar your Grub backup, and then go through the Grub install process again. At this point you should have a dual booting Olive/FreeBSD machine.
Issues with JunOS post release 7.4
Versions of JunOS newer than 7.4 will fail using the above method with an “ELF binary type “0″ not known” error. This is due to a binary in the distribution called checkpic which will not run and will cause the pkg_add to bomb out. In order to allow newer versions to install you can replace the checkpic binary with /usr/bin/true. checkpic is located in the pkgtools.tgz archive inside the jinstall archive. If you untar the jinstall archive, do the the same to the pkgtools archive and replace the file then tar them all back up again you will be able to complete the installation following the steps above with your modified jinstall package.
Another alternative is to install JunOS 7.4 or prior on your olive and then upgrade to a post release 7.4 installation from the CLI using request system software add <package name>.
Tested and working
-
Versions:
-
5.1R4.3 (install)
-
5.2R1.4 (install)
-
5.2R3.4 (as upgraded from 5.2R1.4)
-
5.4R1.3 (install)
-
7.2R1.7 (install)
-
7.2R2.4 (install)
-
7.2R3.3 (install)
-
7.3R2.9 (upgraded)
-
7.6R1.9 (install)
-
8.0R1.9 (install)
-
8.1R1.5 (install)
-
8.4R1.13 (upgraded)
-
8.5R1.13 (upgraded/install)
-
8.5R1.14 (upgraded)
-
8.5R2.10 (upgraded)
-
9.0R1.10 (upgraded from 8.5R2.10) Note: The 9.0 JunOS kernel hangs on VMWare
-
-
IPv6
-
Telnet, FTP, SSH
-
Syslog
-
NTP
-
RIP
-
OSPF (on fxp0.0 too)
-
IS-IS
-
BGP
-
MP-BGP
-
MPLS L3-VPN (seems to require “vrf-table-label” configured to actually pass traffic)
-
IGMP (v1, v2, v3)
-
DVMRP
-
PIM (Dense, Sparse, Sparse-Dense)
-
PIM RPs (Static, Auto-RP, Bootstrap)
-
PIM Encapsulator (and Decapsulator) - i.e. no Tunnel Services PIC required
-
MSDP
-
SAP
-
SNMP
-
GRE tunnels
-
GRE tunnels with MTU requiring fragmentation and reassembly
-
VLAN tagging (fxp0 interfaces support unit 0 only though…)
-
Routing between tunnels
-
Routing between VLANs
-
Routing through fxp0
-
Firewall filters
-
Filter Based Forwarding
-
Multiple fxp interfaces (tested with up to 4 single, 4 dual and a quad etherexpress pro 100 — note you need a pci bridge and as many ethernet controllers as there are ports; if you have 2 ports but only one controlling chip they won’t work)
-
em (intel pro 1000) interfaces (tested with up to 6 e1000 on 7.5. 7.2R2.4 works as well, but only for one NIC I found so far, described as “Intel Pro/1000MT Desktop Gigabit Adapter”)
Tested and apparently not working
-
Policer Filters (fxp interfaces don’t measure realtime traffic rates)
-
Modifying MTU (missing commands)
-
MTU larger than 1500 on fxp0 (including any additional headers like 802.1q, MPLS etc.).
-
Rumours say that reason for this is that The Vendor’s fxp0 driver is from the time of first-generation eepro cards which had issues with oversized frames, and there has been no need for an update.
-
VLANs on em0
-
Multiple VLANs on em interfaces (only unit 0 supported)
-
“show chassis” commands. Returns error: “Unrecognized command”
-
Aggregated Ethernet (missing commands)
-
Traffic sampling on fxp interfaces (Doesn’t generate any errors, simply doesn’t work)
-
Port mirroring (requires traffic to transit a PFE).
-
When issuing “set forwarding-options sampling output interface fxp0″, returns: “error: interface: ‘fxp0′: Must be a monitoring or service interface”
-
MPLS L2 VPN and L2 Circuits (Draft Kompella and Draft Martini) - cannot set the required physical encapsulation type on an fxp interface (e.g. “set interfaces fxp0 encapsulation vlan-ccc” command missing)
-
Class of Service (CoS) configuration on fxp interfaces.
-
Adding any configuration under the “class-of-service interfaces” stanza for fxp interfaces gives the error:
-
COSD_PARSE_ERROR: [edit class-of-service interfaces fxp0]
-
interfaces fxp0
-
Cannot configure class-of-service on interface fxp0.
-
05 11th, 2008 at 10:46 pm
lol