Image of Cortney & Jeremy

iou2net.pl, an IOUlive replacement

by Jeremy L. Gaddis on September 22, 2011 · 10 comments

in Networking

In the months since Cisco IOU leaked out, many people have began using it for study purposes instead of or in addition to dynamips. One advantage that dynamips has over IOU is the ability to communicate with a physical network which comes in handy sometimes, like when you want to do pointless things like dumping full BGP routing tables into dynamips.

Cisco IOU has similar functionality, although it requires another binary executable called IOUlive. Unfortunately, like IOU itself, it’s not available to the general public and getting ahold of it isn’t easy. I did manage to acquire a Solaris version which I used to create an example IOU topology but I haven’t yet gotten my hands on an official Linux version.

Fortunately, I don’t need to.

Others have reverse engineered IOU and figured out how to achieve the same result. iou2net.pl is a Perl script that provides the same functionality as IOUlive. I’ve been using it while writing some lab exercises for Free CCNA Labs and it works wonderfully.

I did have problems with it at first, as it wasn’t correctly computing the MAC address of my IOU router’s Ethernet interface (due, I believe, to the fact that I’m using an IOU 15.1(4) image instead of the 12.4 version that everyone else seems to use). I hacked around on the Perl script and added the ability to explicitly specify the MAC address as a command-line parameter and then it worked great. That functionality has now been added into version 0.5 of the iou2net.pl script itself, in case you run into that same issue.

For those interested, you can check out the topology that I’m using on the Free CCNA Labs Topology page. The corresponding NETMAP file, including the instance for iou2net.pl, looks like this:

/* http://freeccnalabs.com/resources/topology/ */

/* Router to frame-relay switch links */
101:1/0 199:1/3
102:1/0 199:0/2
103:1/0 199:0/3
104:1/0 199:0/0
105:1/0 199:0/1

/* Router to router serial links */
101:1/1 102:1/1
102:1/2 103:1/2
104:1/1 105:1/1
104:1/2 105:1/2

/* Router to switch ethernet links */
101:0/2 111:0/2
102:0/1 111:0/1
102:0/2 112:0/2
103:0/1 112:0/1
104:0/3 111:0/3
105:0/3 112:0/3

/* Switch to switch ethernet link */
111:0/0 112:0/0

/* Used by iou2net.pl to bridge PHOENIX e0/0 to physical network */
101:0/0@chaos 100:0/0@chaos

Not shown in the topology diagram is the connection to the physical network, which uses the Ethernet 0/0 interface on the PHOENIX router. You’ll need to change the hostname on the last line of the NETMAP file (“chaos”, in my case) to accurately reflect the hostname of the machine you’re running IOU on.

In addition, I have a shell script that I use to start up the IOU instances and the iou2net.pl script:

#!/bin/sh

IOURC=/home/jlgaddis/.iourc
IOU2NET=/home/jlgaddis/iou/iou2net.pl
IOU2NET_ID=100
IOU2NET_IF=eth0
L2IOU=/home/jlgaddis/iou/i86bi_linuxl2-upk9-ms.M
L3IOU=/home/jlgaddis/iou/i86bi_linux-adventerprisek9_ivs-ms.151-4.M
NETMAP=/home/jlgaddis/iou/freeccnalabs/NETMAP
WRAPPER=/home/jlgaddis/iou/wrapper

# Start the frame-relay switch

$WRAPPER -m $L3IOU -p 50199 -- -e0 -s2 199 -c $NETMAP & # FRSW
sleep 2

# Start the routers

$WRAPPER -m $L3IOU -p 50101 -- -e1 -s1 101 -c $NETMAP & # PHOENIX
sleep 2
$WRAPPER -m $L3IOU -p 50102 -- -e1 -s1 102 -c $NETMAP & # DALLAS
sleep 2
$WRAPPER -m $L3IOU -p 50103 -- -e1 -s1 103 -c $NETMAP & # MIAMI
sleep 2
$WRAPPER -m $L3IOU -p 50104 -- -e1 -s1 104 -c $NETMAP & # CHICAGO
sleep 2
$WRAPPER -m $L3IOU -p 50105 -- -e1 -s1 105 -c $NETMAP & # NEW YORK
sleep 2

# Start the switches

$WRAPPER -m $L2IOU -p 50111 -- -e1 -s0 111 -c $NETMAP & # SW1
sleep 2
$WRAPPER -m $L2IOU -p 50112 -- -e1 -s0 112 -c $NETMAP & # SW2
sleep 2

# Start iou2net.pl instance
sudo $IOU2NET -i $IOU2NET_IF -n $NETMAP -p $IOU2NET_ID -v -m 02:03:e8:00:65:00

Obviously, you’ll want to change the variables at the beginning of the script as appropriate. You’ll probably also need to modify (or remove) the MAC address that’s passed to the iou2net.pl script.

{ 9 comments… read them below or add one }

Shaidur September 26, 2011 at 1:33 pm

would u please share latest solaris version IOU

Reply

Grim Reaper September 26, 2011 at 2:52 pm

Anybody wishing to play with a true IOUlive clone for Linux can download it here:

http://204.11.120.212/ioulive.zip

Enjoy!

Reply

Shaidur October 4, 2011 at 2:19 pm

what is this file type? what i suppose to do with this file??please reply

Reply

Grim Reaper October 4, 2011 at 3:38 pm

1. Copy it to your Linux machine where you have your IOU files.
2. Unzip it.
3. Change file attribs to make it executable:  chmod a+rx ioulive
4. Run it to see how it’s used:  ./ioulive
5. Have fun!

Reply

bzzjh November 18, 2011 at 10:35 am

Hi,Grim
Could you please share the source code of ioulive.

Reply

Grim Reaper November 25, 2011 at 5:47 pm

Hey bzzjh,

I found my source code and have already sent it to Jeremy to make available, but Mr. Gaddis is busier than a one-legged man in an ass-kicking competition! I’m sure he’ll post it when he gets some free time.

Grimm

Reply

Anonymous November 27, 2011 at 9:01 pm

Hi,Grim
My e-mail address is [bzzjh at hotmail dot com],could you sent it to me ,thanks very much.
I found the ioulive of cisco version can not bridge to network card(IOU interface only get ip address from DHCP server,no ping,on telnet,etc.),I test your ioulive version on linux box,it work well.I want to compile on my solaris(Sparc) host.Thanks a lot.

BR,
Bzzjh

Reply

Bob McCouch October 4, 2011 at 10:20 pm

Very cool! I fired iou2net up with an IOU router and the router immediately started barking about a CDP duplex mismatch with the switch the host is attached to. Thanks!

Reply

M2007 April 14, 2012 at 5:54 am

Hey how to make it work ? because when i try to run L3 an L3 image i have an issue with licence key even i have both licence key in iourc file .

Reply

Leave a Comment

{ 1 trackback }

Previous post:

Next post: