Here's a NETMAP file that recreates the IPexpert CCIE R&S topology, and a wrapper script to start it. And as my special gift, a bash script to convert the config files provided by IPexpert to a format that (L2)IOU can work with.
I might do up some diagrams at some point, but for now you'll have to figure it out from these text files.
Enjoy!
IPExpert NETMAP topology:
#Wrapper script to start all the devices
# NETMAP File for IPexpert/ProctorLabs Topology
#
# Switch to Switch
11:4/3 14:4/3
11:5/0 14:5/0
11:5/1 13:5/1
11:5/2 13:5/2
11:5/3 12:5/3
11:6/0 12:6/0
12:4/3 13:4/3
12:5/0 13:5/0
12:5/1 14:5/1
12:5/2 14:5/2
13:5/3 14:5/3
13:6/0 14:6/0
11:6/1 12:6/1
#Switch to Router
11:0/1 1:0/0
11:0/2 2:0/0
11:1/0 4:0/0
11:1/1 5:0/0
12:0/1 1:0/1
12:0/2 2:0/1
12:1/2 6:0/0
12:1/3 7:0/0
12:2/0 8:0/0
12:2/1 9:0/0
13:1/0 4:0/1
13:1/1 5:0/1
14:1/2 6:0/1
14:1/3 7:0/1
14:2/0 8:0/1
14:2/1 9:0/1
#BackBone Routers
11:2/3 21:0/0
12:3/0 22:0/0
12:3/1 23:0/0
# Frame Relay
2:1/0 99:0/0
4:1/0 99:0/1
5:1/0 99:0/2
6:1/0 99:0/3
# Serial Links
2:1/1 5:1/1
6:1/1 9:1/1
6:1/2 9:1/2
7:1/0 8:1/0
#!/bin/bashAnd a bash script to convert the config files
#R1
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2001 -- -e 1 -s 1 1 &
sleep 1s
#R2
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2002 -- -e 1 -s 1 2 &
sleep 1s
#R4
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2004 -- -e 1 -s 1 4 &
sleep 1s
#R5
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2005 -- -e 1 -s 1 5 &
sleep 1s
#R6
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2006 -- -e 1 -s 1 6 &
sleep 1s
#R7
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2007 -- -e 1 -s 1 7 &
sleep 1s
#R8
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2008 -- -e 1 -s 1 8 &
sleep 1s
#R9
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2009 -- -e 1 -s 1 9 &
sleep 1s
#CAT1
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linuxl2-upk9-ms.M -p 2011 -- -e 7 -s 0 11 &
sleep 1s
#SW2
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linuxl2-upk9-ms.M -p 2012 -- -e 7 -s 0 12 &
sleep 1s
#SW3
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linuxl2-upk9-ms.M -p 2013 -- -e 6 -s 0 13 &
sleep 1s
#SW4
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linuxl2-upk9-ms.M -p 2014 -- -e 6 -s 0 14 &
sleep 1s
#BB1 frame switch
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2021 -- -e 1 -s 0 21 &
sleep 1s
#BB2
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2022 -- -e 1 -s 0 22 &
sleep 1s
#BB3
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2023 -- -e 1 -s 0 23 &
sleep 1s
# Frame Switch
~/ipex_iou/wrapper-linux -m ~/ipex_iou/i86bi_linux-adventerprisek9-ms -p 2099 -- -e 0 -s 1 99 &
sleep 1s
exit 0
#!/bin/bash
# Utility to convert IPexpert base config files to be (L2)IOU compatilbe
#
# Originally written by Jason D'Silva
#
# For any comments or bugs please send emails to brokennetwork@gmail.com
#
# This code is subject to the GPLv2 license.
# Start with the usage information
if [ ${#} -eq 0 ]; then
echo ""
echo "Usage: ipx2iou"
echo ""
echo " can be either a single file, or a directory containing multiple files."
echo ""
echo "ipx2iou is designed to take the device config files provided by IPexpert and"
echo "convert them to a format that IOU and L2IOU can use directly."
echo ""
exit 0
elif [ ${#} -gt 1 ]; then
echo ""
echo "Error: Too many arguments"
echo ""
exit 1
fi
mod_r_serial () # Function to modify router serial interfaces
{
#if there's a leading leading directory remove it
txt=${1#*/}
if [ ${txt} = 'R2.txt' ] || [ ${txt} = 'R5.txt' ]; then
sed 's/Serial0\/1\/0/Serial1\/0/' -i ${1}
sed 's/Serial0\/2\/0/Serial1\/1/' -i ${1}
elif [ ${txt} = 'R6.txt' ] || [ ${txt} = 'R9.txt' ]; then
sed 's/Serial0\/1\/0/Serial1\/0/' -i ${1}
sed 's/Serial0\/2\/0/Serial1\/1/' -i ${1}
sed 's/Serial0\/2\/1/Serial1\/2/' -i ${1}
elif [ ${txt} = 'R4.txt' ] || [ ${txt} = 'R7.txt' ] || [ ${txt} = 'R8.txt' ]; then
sed 's/Serial0\/0\/0/Serial1\/0/' -i ${1}
fi
}
mod_r_ether () # Function to modify router ethernet interfaces
{
#if there's a leading leading directory remove it
txt=${1#*/}
if [ ${txt} = 'R2.txt' ]; then
sed 's/GigabitEther/Ether/' -i ${1}
else
sed 's/FastEther/Ether/' -i ${1}
fi
}
mod_s_ether () # Function to modify switch ethernet interfaces
{
sed 's/FastEthernet0\/10/Ethernet2\/2/' -i ${1}
sed 's/FastEthernet0\/11/Ethernet2\/3/' -i ${1}
sed 's/FastEthernet0\/12/Ethernet3\/0/' -i ${1}
sed 's/FastEthernet0\/13/Ethernet3\/1/' -i ${1}
sed 's/FastEthernet0\/14/Ethernet3\/2/' -i ${1}
sed 's/FastEthernet0\/15/Ethernet3\/3/' -i ${1}
sed 's/FastEthernet0\/16/Ethernet4\/0/' -i ${1}
sed 's/FastEthernet0\/17/Ethernet4\/1/' -i ${1}
sed 's/FastEthernet0\/18/Ethernet4\/2/' -i ${1}
sed 's/FastEthernet0\/19/Ethernet4\/3/' -i ${1}
sed 's/FastEthernet0\/20/Ethernet5\/0/' -i ${1}
sed 's/FastEthernet0\/21/Ethernet5\/1/' -i ${1}
sed 's/FastEthernet0\/22/Ethernet5\/2/' -i ${1}
sed 's/FastEthernet0\/23/Ethernet5\/3/' -i ${1}
sed 's/FastEthernet0\/24/Ethernet6\/0/' -i ${1}
sed 's/FastEthernet0\/0/Ethernet0\/0/' -i ${1}
sed 's/FastEthernet0\/1/Ethernet0\/1/' -i ${1}
sed 's/FastEthernet0\/2/Ethernet0\/2/' -i ${1}
sed 's/FastEthernet0\/3/Ethernet0\/3/' -i ${1}
sed 's/FastEthernet0\/4/Ethernet1\/0/' -i ${1}
sed 's/FastEthernet0\/5/Ethernet1\/1/' -i ${1}
sed 's/FastEthernet0\/6/Ethernet1\/2/' -i ${1}
sed 's/FastEthernet0\/7/Ethernet1\/3/' -i ${1}
sed 's/FastEthernet0\/8/Ethernet2\/0/' -i ${1}
sed 's/FastEthernet0\/9/Ethernet2\/1/' -i ${1}
sed 's/GigabitEthernet0\/1/Ethernet6\/1/' -i ${1}
sed 's/GigabitEthernet0\/2/Ethernet6\/2/' -i ${1}
}
convert () # Main function to control what to apply to each config file
{
#if there's a leading leading directory remove it
txt=${1#*/}
case ${txt} in
R1.txt ) mod_r_ether ${1}; echo "${txt} Done";;
R2.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R4.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R5.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R6.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R7.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R8.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R9.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
Cat1.txt ) mod_s_ether ${1}; echo "${txt} Done";;
Cat2.txt ) mod_s_ether ${1}; echo "${txt} Done";;
Cat3.txt ) mod_s_ether ${1}; echo "${txt} Done";;
Cat4.txt ) mod_s_ether ${1}; echo "${txt} Done";;
BB1.txt ) echo "${txt} is already compatible. Skipping...";;
BB2.txt ) echo "${txt} is already compatible. Skipping...";;
BB3.txt ) echo "${txt} is already compatible. Skipping...";;
* ) echo "${txt} is not a valid config file. Skipping...";;
esac
}
# Logic to differentiate between user input of directory or file
if [ -d ${1} ]; then
echo "${1} is a directory."
echo "ipx2iou will now convert all valid config files in $1"
#If the user put the trailing / on the directory remove it.
dir=${1%/}
for file in $(ls -1 $1); do
echo "Converting file ${dir}/${file}"
convert ${dir}/${file}
done
exit 0
elif [ -f ${1} ]; then
echo "${1} is a file."
echo "ipx2iou will now convert ${1}..."
convert ${1}
exit 0
fi
A reader took an interest in the conversion script above and modified it to work with the INE Lab config files. If you're interested you can find the modified script at http://www.inetpro.org/wiki/INEonIOU
# Utility to convert IPexpert base config files to be (L2)IOU compatilbe
#
# Originally written by Jason D'Silva
#
# For any comments or bugs please send emails to brokennetwork@gmail.com
#
# This code is subject to the GPLv2 license.
# Start with the usage information
if [ ${#} -eq 0 ]; then
echo ""
echo "Usage: ipx2iou
echo ""
echo "
echo ""
echo "ipx2iou is designed to take the device config files provided by IPexpert and"
echo "convert them to a format that IOU and L2IOU can use directly."
echo ""
exit 0
elif [ ${#} -gt 1 ]; then
echo ""
echo "Error: Too many arguments"
echo ""
exit 1
fi
mod_r_serial () # Function to modify router serial interfaces
{
#if there's a leading leading directory remove it
txt=${1#*/}
if [ ${txt} = 'R2.txt' ] || [ ${txt} = 'R5.txt' ]; then
sed 's/Serial0\/1\/0/Serial1\/0/' -i ${1}
sed 's/Serial0\/2\/0/Serial1\/1/' -i ${1}
elif [ ${txt} = 'R6.txt' ] || [ ${txt} = 'R9.txt' ]; then
sed 's/Serial0\/1\/0/Serial1\/0/' -i ${1}
sed 's/Serial0\/2\/0/Serial1\/1/' -i ${1}
sed 's/Serial0\/2\/1/Serial1\/2/' -i ${1}
elif [ ${txt} = 'R4.txt' ] || [ ${txt} = 'R7.txt' ] || [ ${txt} = 'R8.txt' ]; then
sed 's/Serial0\/0\/0/Serial1\/0/' -i ${1}
fi
}
mod_r_ether () # Function to modify router ethernet interfaces
{
#if there's a leading leading directory remove it
txt=${1#*/}
if [ ${txt} = 'R2.txt' ]; then
sed 's/GigabitEther/Ether/' -i ${1}
else
sed 's/FastEther/Ether/' -i ${1}
fi
}
mod_s_ether () # Function to modify switch ethernet interfaces
{
sed 's/FastEthernet0\/10/Ethernet2\/2/' -i ${1}
sed 's/FastEthernet0\/11/Ethernet2\/3/' -i ${1}
sed 's/FastEthernet0\/12/Ethernet3\/0/' -i ${1}
sed 's/FastEthernet0\/13/Ethernet3\/1/' -i ${1}
sed 's/FastEthernet0\/14/Ethernet3\/2/' -i ${1}
sed 's/FastEthernet0\/15/Ethernet3\/3/' -i ${1}
sed 's/FastEthernet0\/16/Ethernet4\/0/' -i ${1}
sed 's/FastEthernet0\/17/Ethernet4\/1/' -i ${1}
sed 's/FastEthernet0\/18/Ethernet4\/2/' -i ${1}
sed 's/FastEthernet0\/19/Ethernet4\/3/' -i ${1}
sed 's/FastEthernet0\/20/Ethernet5\/0/' -i ${1}
sed 's/FastEthernet0\/21/Ethernet5\/1/' -i ${1}
sed 's/FastEthernet0\/22/Ethernet5\/2/' -i ${1}
sed 's/FastEthernet0\/23/Ethernet5\/3/' -i ${1}
sed 's/FastEthernet0\/24/Ethernet6\/0/' -i ${1}
sed 's/FastEthernet0\/0/Ethernet0\/0/' -i ${1}
sed 's/FastEthernet0\/1/Ethernet0\/1/' -i ${1}
sed 's/FastEthernet0\/2/Ethernet0\/2/' -i ${1}
sed 's/FastEthernet0\/3/Ethernet0\/3/' -i ${1}
sed 's/FastEthernet0\/4/Ethernet1\/0/' -i ${1}
sed 's/FastEthernet0\/5/Ethernet1\/1/' -i ${1}
sed 's/FastEthernet0\/6/Ethernet1\/2/' -i ${1}
sed 's/FastEthernet0\/7/Ethernet1\/3/' -i ${1}
sed 's/FastEthernet0\/8/Ethernet2\/0/' -i ${1}
sed 's/FastEthernet0\/9/Ethernet2\/1/' -i ${1}
sed 's/GigabitEthernet0\/1/Ethernet6\/1/' -i ${1}
sed 's/GigabitEthernet0\/2/Ethernet6\/2/' -i ${1}
}
convert () # Main function to control what to apply to each config file
{
#if there's a leading leading directory remove it
txt=${1#*/}
case ${txt} in
R1.txt ) mod_r_ether ${1}; echo "${txt} Done";;
R2.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R4.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R5.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R6.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R7.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R8.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
R9.txt ) mod_r_ether ${1}; mod_r_serial ${1}; echo "${txt} Done";;
Cat1.txt ) mod_s_ether ${1}; echo "${txt} Done";;
Cat2.txt ) mod_s_ether ${1}; echo "${txt} Done";;
Cat3.txt ) mod_s_ether ${1}; echo "${txt} Done";;
Cat4.txt ) mod_s_ether ${1}; echo "${txt} Done";;
BB1.txt ) echo "${txt} is already compatible. Skipping...";;
BB2.txt ) echo "${txt} is already compatible. Skipping...";;
BB3.txt ) echo "${txt} is already compatible. Skipping...";;
* ) echo "${txt} is not a valid config file. Skipping...";;
esac
}
# Logic to differentiate between user input of directory or file
if [ -d ${1} ]; then
echo "${1} is a directory."
echo "ipx2iou will now convert all valid config files in $1"
#If the user put the trailing / on the directory remove it.
dir=${1%/}
for file in $(ls -1 $1); do
echo "Converting file ${dir}/${file}"
convert ${dir}/${file}
done
exit 0
elif [ -f ${1} ]; then
echo "${1} is a file."
echo "ipx2iou will now convert ${1}..."
convert ${1}
exit 0
fi
***UPDATE***
I completely forgot to post up the frame switch config.
frame-relay switching
!
interface Serial0/0
no ip address
encapsulation frame-relay
logging event subif-link-status
logging event dlci-status-change
serial restart-delay 0
frame-relay intf-type dce
frame-relay route 204 interface Serial0/1 402
frame-relay route 205 interface Serial0/2 502
frame-relay route 206 interface Serial0/3 602
frame-relay route 214 interface Serial0/1 412
frame-relay route 215 interface Serial0/2 512
frame-relay route 216 interface Serial0/3 612
frame-relay route 224 interface Serial0/1 422
frame-relay route 225 interface Serial0/2 522
frame-relay route 226 interface Serial0/3 622
!
interface Serial0/1
no ip address
encapsulation frame-relay
logging event subif-link-status
logging event dlci-status-change
shutdown
serial restart-delay 0
frame-relay intf-type dce
frame-relay route 402 interface Serial0/0 204
frame-relay route 405 interface Serial0/2 504
frame-relay route 406 interface Serial0/3 604
frame-relay route 412 interface Serial0/0 214
frame-relay route 415 interface Serial0/2 514
frame-relay route 416 interface Serial0/3 614
frame-relay route 422 interface Serial0/0 224
frame-relay route 425 interface Serial0/2 524
frame-relay route 426 interface Serial0/3 624
!
interface Serial0/2
no ip address
encapsulation frame-relay
logging event subif-link-status
logging event dlci-status-change
serial restart-delay 0
frame-relay intf-type dce
frame-relay route 502 interface Serial0/0 205
frame-relay route 504 interface Serial0/1 405
frame-relay route 506 interface Serial0/3 605
frame-relay route 512 interface Serial0/0 215
frame-relay route 514 interface Serial0/1 415
frame-relay route 516 interface Serial0/3 615
frame-relay route 522 interface Serial0/0 225
frame-relay route 524 interface Serial0/1 425
frame-relay route 526 interface Serial0/3 625
!
interface Serial0/3
no ip address
encapsulation frame-relay
logging event subif-link-status
logging event dlci-status-change
serial restart-delay 0
frame-relay intf-type dce
frame-relay route 602 interface Serial0/0 206
frame-relay route 604 interface Serial0/1 406
frame-relay route 605 interface Serial0/2 506
frame-relay route 612 interface Serial0/0 216
frame-relay route 614 interface Serial0/1 416
frame-relay route 615 interface Serial0/2 516
frame-relay route 622 interface Serial0/0 226
frame-relay route 624 interface Serial0/1 426
frame-relay route 625 interface Serial0/2 526
!
***Update #2***
Great Job !!
ReplyDeleteWere you able to make Layer 2 Etherchannel work with L2IOU.
Thanks
I hadn't actually spent any real time labbing with this yet. So far it was just getting things set up. Now that you ask though I am having some issues.
ReplyDeleteI see what you mean about the etherchannels... I was able to get an LACP link up after about 15 minutes of fighting with it, but I couldn't ping between switches of the LAG. I brought up a couple routers and they cannot ping each other through the switches and over the LAG either. In fact, they can't ping the directly connected switch either. And at some point the LAG seems to have broken down since now I'm seeing CDP on both ports instead of just the po1 interface.
sh ether summ shows all is well though... But it's clearly lying.
This might take a little work... :(
Please let us if you are able to make it work.
ReplyDeleteThanks
Hello,
ReplyDeleteCannot make HSRP work either, I am trying the CCNP TSHOOT topology fron cisco's website. The standby switch cannot ping the virtual interface.
Manu people on cisco's website are also complaing about their switch virtual labs:
https://learningnetworkstore.cisco.com/market/prod/productView.se.work?/nxt/rcrs/proieidentity/=19434&/nxt/rcrs/aisidentity/=2559
Perhaps L2IOU is not very stable !
I'm seeing the same issues. I cannot ping between switches when I create a layer 3 interface. I also get a lot of Collisions (which is another common problem).
ReplyDeleteI don't think IOU is quite ready yet, for full on CCIE lab study. But its getting there, and I'm really looking forward to it. I think Cisco should support this application for PUBLIC use. Cisco is losing market share right now, and an application that makes their gear easier to learn could help them a lot. I think GNS3 alone has helped with that!
How have you overcome the issue with different licence values for L3 and L2 iou in single iourc file?
ReplyDeleteThe same license value work for both L2 and L3 IOU for me.
ReplyDeleteplease give details about this how to add these scripts to IOU and if you add complete IOU it would be awesome pls share i need hope u will help
ReplyDeleteIf you're asking me for IOU the answer is no. IOU is not freely available and I can't help you obtain it.
ReplyDeleteI have noticed that doing shut/no shut after every PHYSICAL configuration change on a switchport fixes most things... I wasn't getting CDP stuff until I did that. Then my ports didn't become trunks (the local IOS didn't even report that they were configured as trunks via the "show int trunk" command). Another shut/no shut resolved this. HSRP works fine for me. I am not seeing collisions either. I configured OSPF without issue.
ReplyDeleteI have been doing all of my testing with the base lab provided with the VM image. Anyone made progress with either the IPExpert or INE lab topologies?
ReplyDeleteYeah...never mind...I am experiencing all of the same problems in my setup. The INE NETMAP file, btw, is incorrect.
ReplyDeleteThere are certainly problems with the L2IOU. You can do a lot of the labs, but you will certainly have limitations when doing so.
ReplyDeleteI'm not sure what progress on the IPexpert or INE you're looking for. IPexpert is above, and INE can be found on InetPro via the link I included above.
I also did not create the INE topolog so I can't do anything about fixing any errors you've found. You'll have to take those to the author of that NETMAP file.
Thanks a million jd. Awesome job. Love it. Quick question, can you change the RAM from 128 to 256 and where/how would you do that?
ReplyDeleteThanks.
Hi. Thanks!
ReplyDeleteYou can change the RAM using the -m switch when starting IOU. If you run IOU without any arguements it'll print out the usage information.
Usage: [options]
: unix-js-m | unix-is-m | unix-i-m | ...
: instance identifier (0 < id <= 1024)
Options:
-e Number of Ethernet interfaces (default 2)
-s Number of Serial interfaces (default 2)
-n Size of nvram in Kb (default 16KB)
-b IOS debug string
-c Configuration file name
-d Generate debug information
-t Netio message trace
-q Suppress informational messages
-h Display this help
-C Turn off use of host clock
-m Megabytes of router memory (default 128MB)
-L Disable local console, use remote console
-u UDP port base for distributed networks
-R Ignore options from the IOURC file
-U Disable unix: file system location
-W Disable watchdog timer
-N Ignore the NETMAP file
Thanks! Any more write ups you can do on IOU would be great. I would especially enjoy more information on problems you have had with L2, L3 IOU. Things like your issues with etherchannel will be very helpful. Keep it up.
ReplyDeleteMy pleasure. I'm glad you found this useful.
ReplyDeleteEtherchannels just don't work, and SVI to SVI inter-L2IOU instance had trouble I think. I've only come across one or two things in IOU that have given me trouble, but I can't recall what they are right now. I want to say DHCP but I can't be sure.
I've mostly stopped using L2IOU at this point, and what I use IOU for seems to work well. I'm just over a month out on my first lab attempt so I likely won't be writing much more on IOU for some time. Maybe after the lab I'll put out a little more.
I'm with you, I've mostly stopped using L2IOU, it's definitely buggy. I'm working on building an IOU + 3550 lab similar to what people have done with GNS3. The recent version of iou2net.pl that Jeremy Gaddis put out actually works (including on VLAN-tagged interfaces of the Linux server) so I'm going to go the break-out switch method.
ReplyDeleteFor router stuff, though, I've found IOU to actually be quite good and much, much easier to use than GNS or Dynagen.
PS, your NETMAP has an invalid mapping for BB1.
ReplyDelete11:2/4 21:0/0
should be
11:2/3 21:0/0
Boy, that just caused me some troubleshooting headaches! ;-)
Nice catch. Thanks. I've updated the port with the correct interface.
ReplyDeleteHi jdsilva,
ReplyDeleteI've tried some simple configurations with L2IOU switches and I've noticed that if I connect 3 switches in a loop the spanning three protocol works as it should, blocking one port on a switch but as soon as I do a ping from one switch to another the CPU utilization goes very high and I can see a lot of traffic on the switches' interfaces.. I think that the ARP request loops through the "triangle topology" even if it shouldn't... Did you experience this? The NETMAP I've used is very simple:
401:0/2 402:0/1
401:0/3 403:0/1
402:0/3 403:0/2
I've tried the following changes, but any of them solved the problem:
- force the link-type to point-to-point instead of shared (since I can not set full-duplex on the interfaces, they are seen as shared interfaces)
- set rapid-pvstp
- force another switch to become the root bridge
Any idea or possible solution?
Hi Gianni,
ReplyDeleteAs I've said before I've stopped using L2IOU because of problems like these. I have not tried to figure out what the problem is simply because I do not think these are problems I can solve. If you want to use IOU for any reason you are on your own here.
I also have this setup and it seems to be working great so far, thanks.
ReplyDeleteI'm glad you found it useful! Thanks for the comment :)
ReplyDeleteDo you have the Topology Diagram
ReplyDeleteIt's the standard IPexpert topology. You should be able to find it on the IPexpert site.
ReplyDeleteThanks, but the the ports are not the same.
ReplyDeleteNo, the port numbers are not the exact same because IOU has different port numberings. I stated this at the top. However, the topology is exactly the same and with a little CDP you can figure out what matches what (or look at the conversion script I created).
ReplyDeleteHey Dinkum, if you'd like to do up a diagram I'll happily post it up here with the rest giving you full credit :)
ReplyDeleteHi jdsilva,
ReplyDeleteWhen I start an L2IOU instance. The ports are up even before starting the other instance. Is there any fix for it?
Hi,
ReplyDeleteI haven't used L2IOU in a very long time because there's too many issues with it. I'm not familiar with the specific problem that you're asking about, and I don't have any suggestions on how to resolve it.
I was unable to ping BB1 and R1 . I am having a tough time. CAn someone advise what could be the issue ?
ReplyDeleteThanks for the topology man. I just wanted to say thanks and tell you that I too had some issue with the L2IOU instance. But, after a bit of tweaking and help from my group, I was able to properly configure the ports.
ReplyDeleteRight on. Glad you have a use for it.
ReplyDeletehello,
ReplyDeletecan you tell us how we can change the topology.
plz.
If you want to change the topology you need to modify the NETMAP file accordingly.
ReplyDeleteI have issue with CDP between BB1 and Cat1. They dont show up as neighbors even though they are directly connected (BB1 0/0 --- 2/3 Cat1). Anyone else having this issue?
ReplyDeleteThanks,
RK
hi, how we can change the interface from ethernet to fastethernet or gigaethernet.
ReplyDeleteYou can't change it. And for the purposes of labbing it reall doesn't matter since they are all virtual interfaces anyway.
ReplyDeleteI have read from a certain forum that a solution for the arp problem and i have tested it and could confirm its working.. you just need to clear the arp to let the switches refresh its arp table
ReplyDeleteclass-map match-any ARP
match protocol arp
!
!
policy-map ARP-limit
class ARP
police rate 10 pps
conform-action transmit
exceed-action drop
violate-action drop
!
control-plane
service-policy output ARP-limit
That's actually pretty clever.
ReplyDeleteRight now i could ping SVI on each switches but the existing ether-channel bug still exist.
DeleteAmazing post. Thank you.
ReplyDeleteGood Post.When can i apply the bash script?
ReplyDeleteAnytime you like :)
DeleteFinally have them Working
ReplyDeleteie. L2 Etherchannel.
Topology is simple
Task: Port e3/0 - 3 on two switches are to be bundled into an ether-channel.
I first basically ensured that ports were switchports & enabled.
!
int range e0/0 - 3
switchport
no shut
!
!
int range e1/0 - 3
switchport
no shut
!
!
int range e2/0 - 3
switchport
no shut
!
!
int range e3/0 - 3
switchport
no shut
!
!
int range e4/0 - 3
switchport
no shut
!
!
int range e5/0 - 3
switchport
no shut
!
Then I created the trunks before creating the ether channel.
int e3/0 - 3
switchport trunk encapsulation dot1q
switchport mode trunk
channel-group 1 mode on
exact same on the other switch.
I noticed that interfaces went down
%EC-5-PORTDOWN: Shutting down Et3/0 as its port-channel is admin-down
All I did shut & then no shut and it worked
sw2#sh etherc
sw2#sh etherchannel
Channel-group listing:
-----------------------
Group: 1
----------
Group state = L2
Ports: 4 Maxports = 8
Port-channels: 1 Max Port-channels = 1
Protocol: -
Minimum Links: 0
sw2#sh etherchannel sum
sw2#sh etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use N - not in use, no aggregation
f - failed to allocate aggregator
M - not in use, no aggregation due to minimum links not met
m - not in use, port not aggregated due to minimum links not met
u - unsuitable for bundling
d - default port
w - waiting to be aggregated
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) - Et3/0(P) Et3/1(P) Et3/2(P)
Et3/3(P)
Very cool. What version of IOU are you running?
DeleteYou can build the Etherchannel but no communication goes through it. You can see that a trunk is built with Etherchannel...
ReplyDelete---
show int tru
Port Mode Encapsulation Status Native vlan
Po1 on 802.1q trunking 10
Port Vlans allowed on trunk
Po1 1-4094
Port Vlans allowed and active in management domain
Po1 1,10,21-22
Port Vlans in spanning tree forwarding state and not pruned
Po1 1,10,21-22
---
And then if you check the interface counters, no traffic is really going out... "Total output drops: 2473" and "0 packets output"
---
show int port-channel 1
Port-channel1 is up, line protocol is up (connected)
Hardware is EtherChannel, address is 0000.0000.0000 (bia 0200.0000.5310)
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Auto-duplex, Auto-speed, media type is RJ45
input flow-control is off, output flow-control is unsupported
Members in this channel: Et0/0 Et0/1
ARP type: ARPA, ARP Timeout 04:00:00
Last input never, output never, output hang never
Last clearing of "show interface" counters never
Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 2473
Queueing strategy: fifo
Output queue: 40/40 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
0 packets input, 0 bytes, 0 no buffer
Received 0 broadcasts (0 multicasts)
0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 watchdog, 0 multicast, 0 pause input
0 input packets with dribble condition detected
0 packets output, 0 bytes, 0 underruns
0 output errors, 0 collisions, 1 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier, 0 PAUSE output
0 output buffer failures, 0 output buffers swapped out
---
I have this L2IOU switch attached to another L2IOU switch, communication over trunks without etherchannel works fine.
hello,
ReplyDeletei really do appreciate this effort, but pls how can i execute the bash script when i have the initial config. not so really good with scripting.
prompt response will be appreciated
God bless
There's an example of how to run the script over at http://twopacket.zymichost.com/2011/07/04/gns3iou-topoloy-for-ipexpert-rs-workbook.html
DeleteINE Version 5: IOU NETMAP FILE:
ReplyDelete#####Router are devices 1,2,3,4,5,6#####
#####Switch are devices 11,22,33,44#####
#####Backbone are devices 51, 52,53#####
SW11 to SW22 Connection:
11:0/0 22:0/0
11:0/1 22:0/1
11:0/2 22:0/2
SW11 to SW33 Connection:
11:1/0 33:1/0
11:1/1 33:1/1
11:1/2 33:1/2
SW11 to SW44 Connection:
11:2/0 44:2/0
11:2/1 44:2/1
11:2/2 44:2/2
SW33 to SW44 Connection:
33:0/0 44:0/0
33:0/1 44:0/1
33:0/2 44:0/2
SW22 to SW44 Connection:
22:1/0 44:1/0
22:1/1 44:1/1
22:1/2 44:1/2
SW22 to SW33 Connection:
22:2/0 33:2/0
22:2/1 33:2/1
22:2/2 33:2/2
SW11 to Router Connection:
1:0/0 11:3/0
3:0/0 11:3/1
5:0/0 11:3/2
SW33 to Router Connection:
3:0/1 33:3/0
5:0/1 33:3/1
53:0/0 33:3/2
SW22 to Router Connection:
2:0/0 22:3/0
4:0/0 22:3/1
6:0/0 22:3/2
52:0/0 22:3/3
SW44 to Router Connection:
4:0/1 44:3/0
6:0/1 44:3/1
Frame Relay Switch to Router Connection:
1:1/0 60:0/0
2:1/0 60:0/1
3:1/0 60:0/2
3:1/1 60:0/3
4:1/0 60:1/0
5:1/0 60:1/1
6:1/0 60:1/2
51:1/1 60:1/3
Router to Router Connection:
1:1/1 3:1/2
2:1/1 3:1/3
4:1/1 5:1/1
51:1/0 53:1/0
L2 15.0: /opt/iou/bin/I86BI_LINUXL2-UPK9-M-15.0
L3 15.0: /opt/iou/bin/i86bi_linux-p-ms.251012_golden_spike
HTP
Cool, thanks for sharing.
DeleteI'm trying out your bash file but it keeps on skipping every config file saying its not vaild can you help me out?
ReplyDeletecan i know which commands that iou doesn't support ?
ReplyDeleteHello,
ReplyDeleteI am using web-iou but i cannot ping directly connected routers or switches..only getting Encapsulation failed or Incomplete arp. For Network adapter using "NAT" as web-iou not working on other Network like bridged or Host only.
Could anybody help me on this issue.?
Thanks,