<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>I Can Has IPv6?</title>
	<atom:link href="http://www.icanhasipv6.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.icanhasipv6.com</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Wed, 01 Apr 2009 22:30:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Juniper Lab Using Olive</title>
		<link>http://www.icanhasipv6.com/2009/04/01/juniper-lab-using-olive/</link>
		<comments>http://www.icanhasipv6.com/2009/04/01/juniper-lab-using-olive/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 20:51:41 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Juniper]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[freebsd]]></category>

		<category><![CDATA[olive]]></category>

		<guid isPermaLink="false">http://www.icanhasipv6.com/?p=57</guid>
		<description><![CDATA[A few months ago, I got my JNCIA-M certification. I had built a small lab on my Dynamips server using Olive. What is Olive? Here is a quote from JuniperClue:
Olive is also the codename name given to JUNOS software running on an PC rather than a Juniper router. A common misconception is that Olive is [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I got my JNCIA-M certification. I had built a small lab on my Dynamips server using <a title="Olive" href="http://juniper.cluepon.net/index.php/Olive">Olive</a>. What is Olive? Here is a quote from <a title="JuniperClue" href="http://juniper.cluepon.net/index.php/Main_Page">JuniperClue</a>:</p>
<blockquote><p>Olive is also the codename name given to JUNOS software running on an PC rather than a Juniper router. A common misconception is that Olive is some sort of &#8220;special software&#8221;, but it is actually ordinary JUNOS software running on a PC of similar specifications to a Routing Engine, with no forwarding hardware (or PFE) attached. If you took a Routing Engine out of a Juniper router and booted it in a blade server chassis, it would effectively be an Olive.</p></blockquote>
<p>To get my lab up and running, I basically mashed together instructions both from the <a title="Olive" href="http://juniper.cluepon.net/index.php/Olive">Olive page</a> of the JuniperClue wiki, as well as nemith &amp; sartan&#8217;s <a title="InternetworkPro Olive Wiki Entry" href="http://www.internetworkpro.org/wiki/Using_QEMU_with_Olive_to_emulate_Juniper_Routers">combined effort</a> on the <a title="InternetworkPro Wiki" href="http://www.internetworkpro.org/wiki/Main_Page">Internetworkpro.org wiki</a>. I rewrote my version specifically to use FreeBSD as the host OS, as that is what I use on my Dynamips server. So, let&#8217;s get started&#8230;</p>
<p><span id="more-57"></span></p>
<h4>Dependancies</h4>
<p>First and foremost, it is assumed that your guest OS is up and running, with the ports and packages systems both installed and up to date. Setting up your host OS is beyond the scope of this post.</p>
<p>You will want to have <a title="ncurses man page" href="http://www.manpagez.com/man/3/ncurses/">ncurses</a> installed. This will essentially allow you to view the FreeBSD VM&#8217;s installation GUI through your CLI. Since we don&#8217;t need to compile it in any particular way with any special options, we simply install the binaries using FreeBSD&#8217;s packages system.</p>
<pre>pkg_add -r ncurses</pre>
<p>You also want to ensure you have a tap0 interface installed, configured, and turned up.</p>
<pre>ifconfig tap0 create
ifconfig tap0 192.168.0.1 netmask 255.255.255.0 up</pre>
<h4>Compiling and Installing</h4>
<p>As root, go to the qemu-devel port directory.</p>
<pre>cd /usr/ports/emulators/qemu-devel</pre>
<p>Download the FreeBSD&#8217;s adopted patch (big thanks to <a title="Nox" href="http://people.freebsd.org/~nox">nox</a>!). <strong>Note:</strong> Check to make sure the patch version matches the port version! Then, apply the patch, and make config. <strong>Note:</strong> Do not forget to select the JEMU option!  Finally, compile and install.</p>
<pre>fetch http://people.freebsd.org/~nox/qemu/qemu-devel-jemu-20080620_1.patch
make fetch
make extract
patch &lt; ./qemu-devel-jemu-20080620_1.patch
make config
make install clean</pre>
<h4>Installing FreeBSD as a Guest</h4>
<p>JUNOS is based on FreeBSD and installing FreeBSD is required when setting up an Olive box.</p>
<p>Download <a title="FreeBSD 4.11 mini iso" href="ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/i386/ISO-IMAGES/4.11/4.11-RELEASE-i386-miniinst.iso">FreeBSD 4.11 mini .iso</a> from the FreeBSD FTP site.</p>
<p>Create a new qcow2 disk image to use for our Olive hard drive:</p>
<pre>qemu-img create olive-base.img -f qcow2 4G</pre>
<p>This creates a new image 4GB in size, which seems to be enough to install and run Olive just fine.</p>
<p>Now we need to start our modified QEMU and boot from the .iso we downloaded. We&#8217;ll bind a NIC to our tap0 interface. This will allow us to scp the jinstall image later on.</p>
<pre>qemu -m 256 -hda olive-base.img -cdrom 4.11-RELEASE-i386-miniinst.iso -boot d \
-curses -localtime -net nic,macaddr=00:aa:00:00:01:01,vlan=0,model=i82559er \
-net tap,vlan=0,ifname=tap0,script=no</pre>
<p>You will now see QEMU come up in curses mode, which doesn&#8217;t require X.</p>
<p>Install FreeBSD as you normally would (just install a standard &#8216;User&#8217; base, and skip installing any services or ports). When you get to partitioning, use the following values:</p>
<pre>ad0s1a    /               512M
ad0s1b    swap            1024M
ad0s1e    /config         12M
ad0s1f    /var            &lt;rest&gt;</pre>
<p>After the base is installed, it will ask you if you want to use DHCP to configure your NIC. Select NO, and enter:</p>
<pre>Hostname: olive
Domain:
Gateway: 192.168.0.1
IP: 192.168.0.2
Mask: 255.255.255.0</pre>
<p>Do this now to allow us to scp your jinstall after we reboot. After the installer completes, your guest OS will reboot. <strong>Note:</strong> Right after it reboots, close or kill your QEMU process or it will boot into the installer CD again.</p>
<h4>Installing JUNOS</h4>
<p>Now we are ready to install Olive into our QEMU host. You will need to obtain a jinstall version. Use something less than 8.5 to get it to properly work. (8.5 is based on FreeBSD 6 and not FreeBSD 4.11).</p>
<p>Now we need to boot our guest again but this time boot from the image. Again we will attach one nic to the &#8216;user&#8217; proccess.</p>
<pre>qemu -m 256 -hda olive-base.img -boot c -localtime -curses \
-net nic,vlan=0,macaddr=00:aa:00:00:01:01,model=i82559er \
-net tap,vlan=0,ifname=tap0,script=no</pre>
<p>After FreeBSD fully boots, login as root and scp the jinstall package onto your guest.</p>
<pre>scp 192.168.0.1:/home/ipv6freely/jinstall-8.3R1.5-domestic-signed.tgz /var/tmp</pre>
<h5>Modify jinstall</h5>
<p>JunOS image after 7.4 version has a binary called checkpic. This binary will fail and the image cannot be installed. Replacing this binary with /usr/bin/true fixes the issue.</p>
<pre>cd /var/tmp
mkdir jinst-signed
cd jinst-signed
tar zxvf ../jinstall-8.3R1.5-domestic-signed.tgz

mkdir jinst
cd jinst
tar zxvf ../jinstall-8.3R1.5-domestic.tgz

mkdir pkgtools
cd pkgtools
tar zxvf ../pkgtools.tgz
cd bin
cp /usr/bin/true ./checkpic
cd ..

tar zcvf ../pkgtools.tgz *
cd ..
rm -rf pkgtools

tar zcfv /var/tmp/jinstall-8.3R1.5-domestic-olive.tgz *</pre>
<h5>Installing Olive</h5>
<p>Install your new modified jinstall package.</p>
<pre>pkg_add -f /var/tmp/jinstall-8.3R1.5-domestic-olive.tgz</pre>
<p>After this finishes issue the halt command and kill your QEMU session window once olive has finished its shutdown process.</p>
<h5>First Boot</h5>
<p>The jinstall above really just installed a bootstrap enviroment so you need to boot up the guest OS one more time to finish the installation (depending on your version). If you just restarted your guest above you will notice that you will get no output on your screen. This is because a real Juniper router has no VGA out and redirects everything to the serial port. No worries for us since QEMU will redirect the serial port to either stdio or a telnet port.</p>
<p>Start up our guest one more time this time getting rid of the GUI and redirecting the console to a telnet port. Please leave the memory at 256 for this process. After this first boot you can get by with a lot less memory, but we need it now.</p>
<pre>qemu -m 256 -hda olive-base.img -boot c -localtime -nographic \
-serial stdio</pre>
<p>Now wait while the bootstrap process completes. The virtual olive will reboot itself automatically and nothing is needed. At the end of this process we will be sitting at a login prompt. Login as root and issue the halt command and kill your QEMU proccess, as before.</p>
<p>Now you have a base olive hard drive image. QEMU allows you to use this as a base for other harddrive issues and only writing the changes to your &#8217;slave&#8217; images saving on disk space!</p>
<h4>Running Your Olive Router</h4>
<h5>Creating a router instance</h5>
<p>Now we will create a new hard drive image off of your base image above. Repeat for all your routers you want to emulate</p>
<pre>qemu-img create -b olive-base.img -f qcow2 r1.img</pre>
<p>Now you can start your router with the following</p>
<pre>qemu r1.img -m 96 -nographic -daemonize -serial telnet::2001,server,nowait -localtime \
-net nic,macaddr=00:aa:00:60:00:01,model=i82559er \
-net socket,listen=:6000</pre>
<p>Telnet to localhost port 2001 to connect to your new router and start configuring!</p>
<h5>Networking your routers</h5>
<p>Socket mode creates a tcp stream between two qemu instances with one a client and the other a server.</p>
<pre>qemu R1.img -m 96 -nographic -daemonize -serial telnet::2001,server,nowait -localtime \
-net nic,vlan=1,macaddr=00:aa:00:60:00:01,model=i82559er \
-net socket,vlan=1,listen=:6000 

qemu R2.img -m 96 -nographic -daemonize -serial telnet::2002,server,nowait -localtime \
-net nic,vlan=1,macaddr=00:aa:00:60:00:01,model=i82559er \
-net socket,vlan=1,connect=127.0.0.1:6000</pre>
<p>You should then be able to telnet to both R1 and R2, and configure them to speak to each other.</p>
<h4>Building a Lab</h4>
<p>Now that we have Olive working, we should make use of it by building a full lab.</p>
<h5>Lab Diagram</h5>
<div class="wp-caption aligncenter" style="width: 577px"><img title="Lab Topology" src="http://img9.imageshack.us/img9/3612/juniperlab.png" alt="Lab Topology" width="567" height="272" /><p class="wp-caption-text">Lab Topology</p></div>
<h5>Router Configuration File</h5>
<p>First, we make a file named <strong>router_conf</strong> that contains the parameters for each instance of QEMU, including the socket information to ensure our routers are properly connected together. This handy config file was given to me by nemith, and heavily edited to suit my lab:</p>
<pre>
#
# Custom varibles here
#
PIDDIR=./run
IMGDIR=./images

#QEMU execuable path
QEMU=qemu

#
# List of routers (must exist!)
#
ROUTERS="r1 r2 r3 r4 r5 r6 r7"

#
# r1
#
function run_r1 {
	nice -19 \
	$QEMU \
	$IMGDIR/r1.img \
	-pidfile $PIDDIR/r1.pid \
	-m 96 -nographic -daemonize -localtime \
	-serial telnet::5001,server,nowait \
	-net nic,vlan=0,macaddr=00:aa:60:00:01:00,model=i82559er \
	-net socket,vlan=0,mcast=239.194.06.1:6000 \
	-net nic,vlan=1,macaddr=00:aa:60:01:01:01,model=i82559er \
	-net socket,vlan=1,listen=:6001 \
	-net nic,vlan=2,macaddr=00:aa:60:02:01:02,model=i82559er \
	-net socket,vlan=2,listen=:6002 \
	-net nic,vlan=3,macaddr=00:aa:60:03:01:03,model=i82559er \
	-net socket,vlan=3,listen=:6003 \
	&#038;
}

function stop_r1 {
	killpidfile $PIDDIR/r1.pid
}

#
# r2
#
function run_r2 {
 	nice -19 \
	$QEMU \
	$IMGDIR/r2.img \
	-pidfile $PIDDIR/r2.pid \
	-m 96 -nographic -daemonize -localtime \
	-serial telnet::2002,server,nowait \
    	-net nic,vlan=0,macaddr=00:aa:60:00:02:00,model=i82559er \
	-net socket,vlan=0,mcast=239.194.06.1:6000 \
    	-net nic,vlan=1,macaddr=00:aa:60:01:02:01,model=i82559er \
	-net socket,vlan=1,connect=127.0.0.1:6001 \
    	-net nic,vlan=2,macaddr=00:aa:60:04:02:02,model=i82559er \
	-net socket,vlan=2,listen=:6004 \
    	-net nic,vlan=3,macaddr=00:aa:60:05:02:03,model=i82559er \
	-net socket,vlan=3,listen=:6005 \
    	-net nic,vlan=4,macaddr=00:aa:60:03:02:04,model=i82559er \
	-net socket,vlan=4,connect=127.0.0.1:6003 \
	&#038;
}

function stop_r2 {
	killpidfile $PIDDIR/r2.pid
}

#
# r3
#
function run_r3 {
	nice -19 \
	$QEMU \
	$IMGDIR/r3.img \
	-pidfile $PIDDIR/r3.pid \
	-m 96 -nographic -daemonize -localtime \
	-serial telnet::2003,server,nowait \
    	-net nic,vlan=0,macaddr=00:aa:60:00:03:00,model=i82559er \
	-net socket,vlan=0,mcast=239.194.06.1:6000 \
    	-net nic,vlan=1,macaddr=00:aa:60:02:03:01,model=i82559er \
	-net socket,vlan=1,connect=127.0.0.1:6002 \
    	-net nic,vlan=2,macaddr=00:aa:60:05:03:02,model=i82559er \
	-net socket,vlan=2,connect=127.0.0.1:6005 \
   	-net nic,vlan=3,macaddr=00:aa:60:06:03:03,model=i82559er \
	-net socket,vlan=3,listen=:6006 \
    	-net nic,vlan=4,macaddr=00:aa:60:07:03:04,model=i82559er \
	-net socket,vlan=4,listen=:6007 \
 	&#038;
}

function stop_r3 {
	killpidfile $PIDDIR/r3.pid
}

#
# r4
#
function run_r4 {
	nice -19 \
	$QEMU \
	$IMGDIR/r4.img \
	-pidfile $PIDDIR/r4.pid \
	-m 96 -nographic -daemonize -localtime \
	-serial telnet::2004,server,nowait \
    	-net nic,vlan=0,macaddr=00:aa:60:00:04:00,model=i82559er \
	-net socket,vlan=0,mcast=239.194.06.1:6000 \
    	-net nic,vlan=1,macaddr=00:aa:60:04:04:01,model=i82559er \
	-net socket,vlan=1,connect=127.0.0.1:6004 \
   	-net nic,vlan=2,macaddr=00:aa:60:07:04:02,model=i82559er \
	-net socket,vlan=2,connect=127.0.0.1:6007 \
    	-net nic,vlan=3,macaddr=00:aa:60:08:04:03,model=i82559er \
	-net socket,vlan=3,listen=:6008 \
	&#038;
}

function stop_r4 {
	killpidfile $PIDDIR/r4.pid
}

#
# r5
#
function run_r5 {
	nice -19 \
	$QEMU \
	$IMGDIR/r5.img \
	-pidfile $PIDDIR/r5.pid \
	-m 96 -nographic -daemonize -localtime \
	-serial telnet::2005,server,nowait \
    	-net nic,vlan=0,macaddr=00:aa:60:00:05:00,model=i82559er \
	-net socket,vlan=0,mcast=239.194.06.1:6000 \
    	-net nic,vlan=1,macaddr=00:aa:60:09:05:01,model=i82559er \
	-net socket,vlan=1,listen=:6009 \
    	-net nic,vlan=2,macaddr=00:aa:60:10:05:02,model=i82559er \
	-net socket,vlan=2,listen=:6010 \
    	-net nic,vlan=3,macaddr=00:aa:60:08:05:03,model=i82559er \
	-net socket,vlan=3,connect=127.0.0.1:6008 \
    	-net nic,vlan=4,macaddr=00:aa:60:06:05:04,model=i82559er \
	-net socket,vlan=4,connect=127.0.0.1:6006 \
	&#038;
}

function stop_r5 {
	killpidfile $PIDDIR/r5.pid
}

#
# r6
#
function run_r6 {
	nice -19 \
	$QEMU \
	$IMGDIR/r6.img \
	-pidfile $PIDDIR/r6.pid \
	-m 96 -nographic -daemonize -localtime \
	-serial telnet::2006,server,nowait \
    	-net nic,vlan=0,macaddr=00:aa:60:00:06:00,model=i82559er \
	-net socket,vlan=0,mcast=239.194.06.1:6000 \
    	-net nic,vlan=1,macaddr=00:aa:60:09:06:01,model=i82559er \
	-net socket,vlan=1,connect=127.0.0.1:6009 \
    	-net nic,vlan=2,macaddr=00:aa:60:10:06:02,model=i82559er \
	-net socket,vlan=2,listen=:6011 \
	&#038;
}

function stop_r6 {
	killpidfile $PIDDIR/r6.pid
}

#
# r7
#
function run_r7 {
	nice -19 \
	$QEMU \
	$IMGDIR/r7.img \
	-pidfile $PIDDIR/r7.pid \
	-m 96 -nographic -daemonize -localtime \
	-serial telnet::2007,server,nowait \
	-net nic,vlan=0,macaddr=00:aa:60:00:07:00,model=i82559er \
	-net socket,vlan=0,mcast=239.194.06.1:6000 \
	-net nic,vlan=1,macaddr=00:aa:60:09:07:01,model=i82559er \
	-net socket,vlan=1,connect=127.0.0.1:6011 \
	-net nic,vlan=2,macaddr=00:aa:60:10:07:02,model=i82559er \
	-net socket,vlan=2,connect=127.0.0.1:6010 \
	&#038;
}   

function stop_r7 {
    killpidfile $PIDDIR/r7.pid
}

function stop_r7 {
    killpidfile $PIDDIR/r7.pid
}</pre>
<h5>Startup Script</h5>
<p>We then add a script to read from the configuration file, and start up the routers. In it&#8217;s original form, the script ran so fast that it would throw errors and not start all the routers. I&#8217;ve added a <em>sleep</em> command into the script to slow it down a bit.</p>
<pre>#!/usr/local/bin/bash

source router_conf

function start_router {
        echo "Starting router $1"
        run_$1 || echo "ERROR: No start configuration found for $1"
}

function stop_router {
        echo "Stoping router $1"
        stop_$1 || echo "ERROR: No stop configuration found for $1"
}

function start_all_routers {
        for router in `echo $ROUTERS`; do
                start_router $router
                echo "waiting 2 seconds"
                sleep 2
    done
}

function stop_all_routers {
    for router in `echo $ROUTERS`; do
                stop_router $router
        done
}

function killpidfile {
        if [ -e $1 ]; then
                kill `cat $1`
                rm $1
        else
                echo "Pidfile $1 not found"
        fi
}

function print_help {
        echo "$0 [start|stop|restart] [|all]"
}

case "$1"  in
        'start')
                if [ "$2" == "all" ]; then
                        start_all_routers
                else
                        start_router $2
                fi
                ;;
        'stop')
                if [ "$2" == "all" ]; then
                        stop_all_routers
                else
                        stop_router $2
                fi
                ;;
        'restart')
                if ["$2" == "all" ]; then
                        stop_all_routers
                        start_all_routers
                else
                        stop_router $2
                        start_router $2
                fi
                ;;
        *)
                print_help
                ;;
esac</pre>
<p>Now, simply run the startup script, telnet to your routers, and voila!</p>
<pre>host# ./labctl.sh start all
Starting router r1
waiting 2 seconds
(qemu) Starting router r2
waiting 2 seconds
(qemu) Starting router r3
waiting 2 seconds
(qemu) Starting router r4
waiting 2 seconds
(qemu) Starting router r5
waiting 2 seconds
(qemu) Starting router r6
waiting 2 seconds
(qemu) Starting router r7
waiting 2 seconds

host# telnet localhost 2001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
&lt;blah blah blah&gt;
fxp0: Ethernet address 00:aa:60:00:01:00
fxp1: Ethernet address 00:aa:60:01:01:01
fxp2: Ethernet address 00:aa:60:02:01:02
fxp3: Ethernet address 00:aa:60:03:01:03
&lt;more blah blah blah&gt;
R1 (ttyd0)

login: root
Password:

--- JUNOS 8.3R1.5 built 2007-04-13 22:23:02 UTC

root@R1% cli
root@R1&gt; show version
Hostname: R1
Model: olive
JUNOS Base OS boot [8.3R1.5]
JUNOS Base OS Software Suite [8.3R1.5]
JUNOS Kernel Software Suite [8.3R1.5]
JUNOS Crypto Software Suite [8.3R1.5]
JUNOS Packet Forwarding Engine Support (M/T Common) [8.3R1.5]
JUNOS Packet Forwarding Engine Support (M20/M40) [8.3R1.5]
JUNOS Online Documentation [8.3R1.5]
JUNOS Routing Software Suite [8.3R1.5]

root@R1>
</pre>
<p>Now, get labbing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icanhasipv6.com/2009/04/01/juniper-lab-using-olive/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Kron to Roll Back Configurations</title>
		<link>http://www.icanhasipv6.com/2009/02/21/using-kron-to-roll-back-configurations/</link>
		<comments>http://www.icanhasipv6.com/2009/02/21/using-kron-to-roll-back-configurations/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 02:10:35 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Cisco]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[configuration]]></category>

		<category><![CDATA[kron]]></category>

		<category><![CDATA[reload]]></category>

		<guid isPermaLink="false">http://www.icanhasipv6.com/?p=42</guid>
		<description><![CDATA[Today I was chatting on IRC with some colleagues, and we were trying to come up with the best way to roll back to the startup-config without a reboot. This would be useful in situations where you are working remotely and may potentially lose access to the device you are configuring.
The best method I came [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was chatting on IRC with some colleagues, and we were trying to come up with the best way to roll back to the startup-config without a reboot. This would be useful in situations where you are working remotely and may potentially lose access to the device you are configuring.</p>
<p>The best method I came up with was to use the Kron command:</p>
<blockquote><pre>
kron occurrence RELOAD-CONFIG in x oneshot
policy-list RELOAD-CONFIG
!
kron policy-list RELOAD-CONFIG
cli configure replace nvram:startup-config force
!
</pre>
</blockquote>
<p>Where <strong>x</strong> is the number of minutes before the configuration refresh.</p>
<p>Very nice when you can&#8217;t afford the downtime of having your device reboot, especially a device like a 6500 that just seems to take for ever to come back up fully.</p>
<p><strong>Edit: </strong></p>
<p>I decided to try to see if I could run it using one command. TCL could be used, but honestly&#8230; TCL for 4 lines? That&#8217;s just&#8230; silly. So instead I used a combination of macros and aliases:</p>
<blockquote>
<pre>switch#
switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
switch(config)#macro name refresh_config
Enter macro commands one per line. End with the character '@'.
kron occ CFG in 2 oneshot
policy-list CFG
kron policy-list CFG
cli configure replace nvram:startup-config force
@
switch(config)#alias configure ref macro global apply refresh_config
switch(config)#do sh run | i ipv6
switch(config)#ref
Kron: Policy Accepted, Policy CFG needs to be configured
switch(config)#ipv6 unicast-routing
switch(config)#end
switch#sh
00:40:26: %SYS-5-CONFIG_I: Configured from console by conso
switch#sh run | i ipv6
ipv6 unicast-routing
switch#sh kron sch
Kron Occurrence Schedule
CFG inactive, will run once in 0 days 00:01:22

switch#sh kron sch
Kron Occurrence Schedule
CFG inactive, will run once in 0 days 00:00:58

switch#sh kron sch
Kron Occurrence Schedule
CFG inactive, will run once in 0 days 00:00:24

switch#sh kron sch
Kron Occurrence Schedule
CFG inactive, will run once in 0 days 00:00:05

switch#
00:42:16: Rollback:Acquired Configuration lock.
switch#sh kron sch
Kron Occurrence Schedule

switch#sh run | i ipv6
switch#
</pre>
</blockquote>
<p>Just as convoluted, and just as pointless. But it IS do-able. But again, for 4 lines, it&#8217;s not worth the effort.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icanhasipv6.com/2009/02/21/using-kron-to-roll-back-configurations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Still Alive!</title>
		<link>http://www.icanhasipv6.com/2009/01/30/still-alive/</link>
		<comments>http://www.icanhasipv6.com/2009/01/30/still-alive/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 21:29:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Certifications]]></category>

		<category><![CDATA[Cisco]]></category>

		<category><![CDATA[ccie]]></category>

		<category><![CDATA[iewb]]></category>

		<category><![CDATA[lab]]></category>

		<guid isPermaLink="false">http://www.icanhasipv6.com/?p=40</guid>
		<description><![CDATA[I&#8217;m still alive and kicking&#8230; working on IEWB vol. 1 labs at the moment. CCIE Lab is in 5 months today, and I&#8217;m really not so sure I&#8217;m where I need to be. Can I do it in 5 months? I still have 2 months to decide whether I need to reschedule, so I suppose [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m still alive and kicking&#8230; working on IEWB vol. 1 labs at the moment. CCIE Lab is in 5 months today, and I&#8217;m really not so sure I&#8217;m where I need to be. Can I do it in 5 months? I still have 2 months to decide whether I need to reschedule, so I suppose I&#8217;ll do one of the mock labs in a month and a half and see how I do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icanhasipv6.com/2009/01/30/still-alive/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Results Are In&#8230;</title>
		<link>http://www.icanhasipv6.com/2008/09/03/the-results-are-in/</link>
		<comments>http://www.icanhasipv6.com/2008/09/03/the-results-are-in/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 21:34:02 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Certifications]]></category>

		<category><![CDATA[Cisco]]></category>

		<category><![CDATA[ccie]]></category>

		<category><![CDATA[exam]]></category>

		<category><![CDATA[pass]]></category>

		<guid isPermaLink="false">http://www.icanhasipv6.com/?p=35</guid>
		<description><![CDATA[Today at 2:00pm, I took the CCIE Routing &#38; Switching Written exam. I PASSED!
Here are the results:


General Networking Theory - 100%
Bridging and LAN Switching - 83%
IP - 77%
IP Routing - 72%
QoS - 100%
WAN - 100%
IP Multicast - 62%
Security - 100%
MPLS - 100%
IPv6 - 83%

Overall score: 83/100
Oddly enough, on the score report was the following, which [...]]]></description>
			<content:encoded><![CDATA[<p>Today at 2:00pm, I took the CCIE Routing &amp; Switching Written exam. <strong>I PASSED!</strong></p>
<p>Here are the results:</p>
<p><span id="more-35"></span></p>
<ul>
<li>General Networking Theory - <strong>100%</strong></li>
<li>Bridging and LAN Switching - <strong>83%</strong></li>
<li>IP - <strong>77%</strong></li>
<li>IP Routing - <strong>72%</strong></li>
<li>QoS - <strong>100%</strong></li>
<li>WAN - <strong>100%</strong></li>
<li>IP Multicast - <strong>62%</strong></li>
<li>Security - <strong>100%</strong></li>
<li>MPLS - <strong>100%</strong></li>
<li>IPv6 - <strong>83%</strong></li>
</ul>
<p>Overall score: <strong>83/100</strong></p>
<p>Oddly enough, on the score report was the following, which I had not seen on any Cisco exam score report before:</p>
<blockquote><p>The score information displayed on this report is preliminary and does not constitute an official score report. Cisco seeks to assure the validity of exam scores by analyzing exam responses for consistency. Your score may be classified as indeterminate if it is at or above the passing level and Cisco cannot certify that it represents a valid measure of your ability as sampled by the exam. After review and analysis, your score will either be:</p>
<ul>
<li>a) Classified as &#8220;valid&#8221; and your offical exam result will be reported at http://www.pearsonvue.com/authenticate. You can view exam results by using the registration and numbers diplayed in the left column within 72 hours of your exam session.</li>
<li>b) Classified as indeterminate and you will be advised of the options for retaking the examination.</li>
</ul>
</blockquote>
<p>I wonder if this is new, and one of Cisco&#8217;s new anti-cheating measures. Can anyone confirm that this is a new thing? There was no photo taken or any of the other &#8220;new procedures&#8221;, so I&#8217;m not sure.</p>
<p>Oh well, finally I can relax for a week or two!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icanhasipv6.com/2008/09/03/the-results-are-in/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CCIE Written: T-31 hours and counting</title>
		<link>http://www.icanhasipv6.com/2008/09/02/ccie-written-t-31-hours-and-counting/</link>
		<comments>http://www.icanhasipv6.com/2008/09/02/ccie-written-t-31-hours-and-counting/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 13:53:05 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Certifications]]></category>

		<category><![CDATA[Cisco]]></category>

		<category><![CDATA[blueprint]]></category>

		<category><![CDATA[ccie]]></category>

		<category><![CDATA[exam]]></category>

		<category><![CDATA[written]]></category>

		<guid isPermaLink="false">http://www.icanhasipv6.com/?p=32</guid>
		<description><![CDATA[Tomorrow at 3pm is my CCIE written exam. Am I ready? I&#8217;m not sure. I&#8217;m nervous and I&#8217;m really worried about it. I did a lot of the practice questions from the CD, and I got many of them wrong. However, in my experience, those questions are often far more nit-picky than the real thing.
Looking [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow at 3pm is my CCIE written exam. Am I ready? I&#8217;m not sure. I&#8217;m nervous and I&#8217;m really worried about it. I did a lot of the practice questions from the CD, and I got many of them wrong. However, in my experience, those questions are often far more nit-picky than the real thing.</p>
<p>Looking at the blueprint, I&#8217;m not sure I&#8217;m ready:</p>
<p><span id="more-32"></span></p>
<ol type="I">
<li class="last-li"><strong>General Networking Theory</strong>
<ol type="A">
<li class="last-li">General Routing Concepts
<ol type="1">
<li class="last-li"><span style="color: #008000;">Link State and Distance Vector Protocols</span></li>
<li class="last-li"><span style="color: #008000;">Split Horizon</span></li>
<li class="last-li"><span style="color: #008000;">Summarization</span></li>
<li class="last-li"><span style="color: #008000;">Classful and a Classless routing protocol</span></li>
<li class="last-li"><span style="color: #008000;">Routing decision criteria</span></li>
</ol>
</li>
<li class="last-li">Routing Information Base (RIB) and Routing Protocols Interaction
<ol type="1">
<li class="last-li"><span style="color: #008000;">Administrative Distance</span></li>
<li class="last-li"><span style="color: #008000;">Routing Table</span></li>
<li class="last-li"><span style="color: #ff9900;">RIB and Forwarding Information Base interaction</span></li>
</ol>
</li>
<li class="last-li">Redistribution
<ol type="1">
<li class="last-li"><span style="color: #ff9900;">Redistribution between routing</span></li>
<li class="last-li"><span style="color: #ff0000;">Troubleshooting routing loop</span></li>
</ol>
</li>
</ol>
</li>
<li class="last-li"><strong>Bridging and LAN Switching</strong>
<ol type="A">
<li class="last-li">Spanning Tree Protocol (STP)
<ol type="1">
<li class="last-li"><span style="color: #008000;">802.1d</span></li>
<li class="last-li"><span style="color: #008000;">802.1w</span></li>
<li class="last-li"><span style="color: #ff9900;">802.1s</span></li>
<li class="last-li"><span style="color: #008000;">Loopguard</span></li>
<li class="last-li"><span style="color: #ff9900;">Rootguard</span></li>
<li class="last-li"><span style="color: #008000;">Bridge Protocol Data Unit (BPDU) Guard</span></li>
<li class="last-li"><span style="color: #ff9900;">Storm Control</span></li>
<li class="last-li"><span style="color: #008000;">Rapid Spanning Tree  Protocol (RSTP) </span></li>
<li class="last-li"><span style="color: #008000;">Unicast flooding</span></li>
<li class="last-li"><span style="color: #ff9900;">STP port roles, failure propagation and loopguard operation</span></li>
</ol>
</li>
<li class="last-li">LAN Switching
<ol type="1">
<li class="last-li"><span style="color: #008000;">Trunks </span></li>
<li class="last-li"><span style="color: #008000;">VLAN Trunking Protocol (VTP) administrative functions </span></li>
</ol>
</li>
<li class="last-li">Ethernet
<ol type="1">
<li class="last-li"><span style="color: #008000;">Speed </span></li>
<li class="last-li"><span style="color: #008000;">Duplex </span></li>
<li class="last-li"><span style="color: #008000;">Ethernet</span></li>
<li class="last-li"><span style="color: #008000;">Fast Ethernet </span></li>
<li class="last-li"><span style="color: #008000;">Gigabit Ethernet </span></li>
</ol>
</li>
</ol>
</li>
<li class="last-li"><strong>IP</strong>
<ol type="A">
<li class="last-li">Addressing
<ol type="1">
<li class="last-li"><span style="color: #008000;">Subnetting</span></li>
<li class="last-li"><span style="color: #ff9900;">Hot Standby Routing Protocol (HSRP) </span></li>
<li class="last-li"><span style="color: #ff9900;">Gateway Load Balancing Protocol (GLBP) </span></li>
<li class="last-li"><span style="color: #ff9900;">Virtual Router Redundancy Protocol (VRRP) </span></li>
<li class="last-li"><span style="color: #ff9900;">Network Address Translation (NAT) </span></li>
</ol>
</li>
<li class="last-li">Services
<ol type="1">
<li class="last-li"><span style="color: #008000;">Network Time Protocol (NTP)</span></li>
<li class="last-li"><span style="color: #008000;">Dynamic Host Control Protocol (DHCP)</span></li>
<li class="last-li"><span style="color: #ff0000;">Web Cache Communication Protocol (WCCP)</span></li>
</ol>
</li>
<li class="last-li">Network Management
<ol type="1">
<li class="last-li"><span style="color: #008000;">Logging and Syslog</span></li>
</ol>
</li>
</ol>
</li>
<li class="last-li"><strong>IP Routing</strong>
<ol type="A">
<li class="last-li">OSPF
<ol type="1">
<li class="last-li"><span style="color: #008000;">Standard OSPF area</span></li>
<li class="last-li"><span style="color: #008000;">Stub area</span></li>
<li class="last-li"><span style="color: #008000;">Totally stub area</span></li>
<li class="last-li"><span style="color: #ff9900;">Not-so-stubby-area (NSSA)</span></li>
<li class="last-li"><span style="color: #ff9900;">Totally NSSA</span></li>
<li class="last-li"><span style="color: #ff9900;">Link State Advertisement (LSA) types</span></li>
<li class="last-li"><span style="color: #008000;">Adjacency on a point-to-point and on a multi-access (broadcast) </span></li>
<li class="last-li"><span style="color: #ff9900;">OSPF graceful restart</span></li>
<li class="last-li"><span style="color: #ff9900;">Troubleshooting failing adjacency formation to fail</span></li>
<li class="last-li"><span style="color: #ff9900;">Troubleshooting of external route installation in the RIB</span></li>
</ol>
</li>
<li class="last-li">BGP
<ol type="1">
<li class="last-li"><span style="color: #008000;">Protocol on which BGP peers communicate</span></li>
<li class="last-li"><span style="color: #008000;">Next Hop</span></li>
<li class="last-li"><span style="color: #008000;">Peering</span></li>
<li class="last-li"><span style="color: #008000;">Troubleshooting of BGP route that will not install in the routing table</span></li>
</ol>
</li>
<li class="last-li">EIGRP
<ol type="1">
<li class="last-li"><span style="color: #ff9900;">Best </span><span style="color: #ff9900;">path</span></li>
<li class="last-li"><span style="color: #008000;">Loop free paths</span></li>
<li class="last-li"><span style="color: #008000;">EIGRP operations when alternate loop free paths are available and when it is not available</span></li>
<li class="last-li"><span style="color: #008000;">EIGRP queries</span></li>
<li class="last-li"><span style="color: #008000;">Manual summarization</span></li>
<li class="last-li"><span style="color: #ff9900;">Auto-summarization</span></li>
<li class="last-li"><span style="color: #ff9900;">EIGRP Stubs</span></li>
<li class="last-li"><span style="color: #008000;">Troubleshooting of EIGRP neighbor adjacencies</span></li>
</ol>
</li>
<li class="last-li">Policy Routing
<ol type="1">
<li class="last-li"><span style="color: #008000;">Concept of policy routing</span></li>
</ol>
</li>
</ol>
</li>
<li class="last-li"><strong>QoS</strong>
<ol type="A">
<li class="last-li">Modular QoS command-line (MQC) applied to:
<ol type="1">
<li class="last-li"><span style="color: #008000;">Network-Based Application Recognition (NBAR)</span></li>
<li class="last-li"><span style="color: #008000;">Class-based weighted fair queueing (CBWFQ) / Modified Deficit Round Robin (MDRR) </span></li>
<li class="last-li"><span style="color: #008000;">Policing</span></li>
<li class="last-li"><span style="color: #ff9900;">Shaping</span></li>
<li class="last-li"><span style="color: #008000;">Marking </span></li>
<li class="last-li"><span style="color: #ff9900;">Random Early Detection (RED)</span></li>
</ol>
</li>
</ol>
</li>
<li class="last-li"><strong>WAN</strong>
<ol type="A">
<li class="last-li">Frame Relay
<ol type="1">
<li class="last-li"><span style="color: #008000;">Local Management Interface (LMI)</span></li>
<li class="last-li"><span style="color: #ff0000;">Traffic Shaping</span></li>
<li class="last-li"><span style="color: #ff9900;">HUB and Spoke routers</span></li>
<li class="last-li"><span style="color: #ff0000;">Dynamic Multipoint VPN (DMVPN) </span></li>
<li class="last-li"><span style="color: #ff9900;">DE</span></li>
</ol>
</li>
</ol>
</li>
<li class="last-li"><strong>IP Multicast</strong>
<ol type="A">
<li class="last-li"><span style="color: #ff9900;">Internet Group Management Protocol (IGMP) v2</span></li>
<li class="last-li"><span style="color: #008000;"> Group addresses</span></li>
<li class="last-li"><span style="color: #008000;">Shared Trees</span></li>
<li class="last-li"><span style="color: #008000;">Source Trees</span></li>
<li class="last-li"><span style="color: #ff9900;">Protocol Independent Multicast (PIM) Mechanic</span></li>
<li class="last-li"><span style="color: #ff9900;">PIM Sparse Mode</span></li>
<li class="last-li"><span style="color: #ff9900;">Auto-RP</span></li>
<li class="last-li"><span style="color: #ff0000;">Anycast RP</span></li>
</ol>
</li>
<li class="last-li"><strong>Security</strong>
<ol type="A">
<li class="last-li"><span style="color: #008000;">Extended IP access lists</span></li>
<li class="last-li"><span style="color: #ff9900;">Unicast Reverse Path Forwarding (uRPF) </span></li>
<li class="last-li"><span style="color: #ff9900;">IP Source Guard</span></li>
<li class="last-li"><span style="color: #ff9900;">Context Based Access Control (CBAC)</span></li>
</ol>
</li>
<li class="last-li"><strong>MPLS (New)</strong>
<ol type="A">
<li class="last-li"><span style="color: #008000;">Label Switching Router (LSR)</span></li>
<li class="last-li"><span style="color: #008000;">Label Switched Path (LSP)</span></li>
<li class="last-li"><span style="color: #ff9900;">Route Descriptor</span></li>
<li class="last-li"><span style="color: #008000;">Label Format</span></li>
<li class="last-li"><span style="color: #008000;">Label imposition/disposition</span></li>
<li class="last-li"><span style="color: #008000;">Label Distribution</span></li>
</ol>
</li>
<li class="last-li"><strong>IPv6 (New)</strong>
<ol type="A">
<li class="last-li"><span style="color: #008000;">IPv6 Addressing and types</span></li>
<li class="last-li"><span style="color: #008000;">IPv6 Neighbor Discovery</span></li>
<li class="last-li"><span style="color: #008000;">Basic IPv6 functionality protocols</span></li>
<li class="last-li"><span style="color: #ff9900;">IPv6 Multicast and related Multicast protocols</span></li>
<li class="last-li"><span style="color: #ff9900;">Tunneling Techniques</span></li>
<li class="last-li"><span style="color: #ff9900;">OSPFv3</span></li>
<li class="last-li"><span style="color: #ff0000;">EIGRPv6</span></li>
</ol>
</li>
</ol>
<p>Yikes!!! Theres a lot of orange and red on that list. I guess we&#8217;ll see what I can cram in the last day. Wish me luck!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icanhasipv6.com/2008/09/02/ccie-written-t-31-hours-and-counting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Congrats, Heather!</title>
		<link>http://www.icanhasipv6.com/2008/08/03/congrats-heather/</link>
		<comments>http://www.icanhasipv6.com/2008/08/03/congrats-heather/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 18:32:11 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Certifications]]></category>

		<category><![CDATA[ccna]]></category>

		<guid isPermaLink="false">http://www.icanhasipv6.com/?p=30</guid>
		<description><![CDATA[I just wanted to give a shout out to my buddy Heather, who passed her CCNA exam on July 31, 2008. She sure seemed to have all the topics nailed down, as she could answer just about anything I&#8217;d quiz her on. I knew she could do it!
]]></description>
			<content:encoded><![CDATA[<p>I just wanted to give a shout out to my buddy Heather, who passed her CCNA exam on July 31, 2008. She sure seemed to have all the topics nailed down, as she could answer just about anything I&#8217;d quiz her on. I knew she could do it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icanhasipv6.com/2008/08/03/congrats-heather/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Yes, another CCIE blog&#8230;</title>
		<link>http://www.icanhasipv6.com/2008/08/03/hello-world/</link>
		<comments>http://www.icanhasipv6.com/2008/08/03/hello-world/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 07:37:55 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Website]]></category>

		<category><![CDATA[welcome]]></category>

		<guid isPermaLink="false">http://cathartik.com/icanhasipv6.com/?p=1</guid>
		<description><![CDATA[Welcome to my website. Yes, I know I&#8217;m just adding to the unnecessary pile of CCIE blogs out there, but at the same time, I realize the usefulness of collecting my thoughts, study notes, etc. and keeping it all in one place.
This isnt a blog meant to draw a ton of traffic, by any means. [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to my website. Yes, I know I&#8217;m just adding to the unnecessary pile of CCIE blogs out there, but at the same time, I realize the usefulness of collecting my thoughts, study notes, etc. and keeping it all in one place.</p>
<p>This isnt a blog meant to draw a ton of traffic, by any means. It&#8217;s more for me, than you. If you find something useful here, leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icanhasipv6.com/2008/08/03/hello-world/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
