<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aaron&#039;s Worthless Words &#187; gre</title>
	<atom:link href="http://aconaway.com/tag/gre/feed/" rel="self" type="application/rss+xml" />
	<link>http://aconaway.com</link>
	<description>Not something you want to hear</description>
	<lastBuildDate>Wed, 08 Sep 2010 14:39:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>QoS Pre-classify and Class-map Order</title>
		<link>http://aconaway.com/2010/03/06/qos-pre-classify-and-class-map-order/</link>
		<comments>http://aconaway.com/2010/03/06/qos-pre-classify-and-class-map-order/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 05:18:20 +0000</pubDate>
		<dc:creator>Aaron Conaway</dc:creator>
				<category><![CDATA[ont]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[gre]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[pre-classify]]></category>
		<category><![CDATA[qos]]></category>
		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://aconaway.com/?p=539</guid>
		<description><![CDATA[I’m still studying for the ONT test, so I did some labs tonight.&#160; One of them was to demonstrate the qos pre-classify command for tunnel interfaces.&#160; When you have a packet sent over a GRE tunnel, the ToS field gets copied to the GRE packet, but there’s no way to see the original packet’s higher-level [...]]]></description>
			<content:encoded><![CDATA[<p>I’m still studying for the ONT test, so I did some labs tonight.&#160; One of them was to demonstrate the <strong>qos pre-classify</strong> command for tunnel interfaces.&#160; When you have a packet sent over a GRE tunnel, the ToS field gets copied to the GRE packet, but there’s no way to see the original packet’s higher-level headers on the way out the interface.&#160; This can be a problem if your service policy needs to see protocol, port, IPs, etc.&#160; The fix for that is to enable qos pre-classify on the tunnel interface and cyrpto map; doing so will provide a copy of the original packet to the physical interface to classify the packet thoroughly.</p>
<p>Here’s the lab.&#160; I was testing from TestHost1 to TestHost2 and configuring R1 to do the pre-classification.&#160; Both R1 and R2 are 3640s running IOS 12.4(25b) and have a GRE tunnel between them.</p>
<p><a href="http://aconaway.com/wp-content/uploads/2010/03/qospre11.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="qospre1" border="0" alt="qospre1" src="http://aconaway.com/wp-content/uploads/2010/03/qospre1_thumb1.png" width="244" height="127" /></a> </p>
<p>I created a policy map that simply acknowledges the existence of ICMP packets; the router doesn’t do anything except match them in a class-map and smile at them on the way through.&#160; Here’s the snippet.</p>
<blockquote><pre>class-map ICMP
 match protocol icmp
!
policy-map PM-S1/0-OUT
 class ICMP
!
interface S1/0
 service-policy output PM-S1/0-OUT
!
interface tunnel 0
 qos pre-classify</pre>
</blockquote>
<p>Not much going on there.&#160; We match ICMP using NBAR’s built-in protocols and do absolutely nothing.&#160; I did a few pings and noticed that there were no matches to the ICMP class and that all the packets were classified as class-default .&#160; I thought that the pre-classify wasn’t working, so I cursed for a while after making no progress at all.&#160; I had no idea what was wrong.</p>
<blockquote>
<pre>R1#sh policy-map int s1/0
 Serial1/0

  Service-policy output: PM-S1/0-OUT

    Class-map: ICMP (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps
      Match: protocol icmp
        0 packets, 0 bytes
        5 minute rate 0 bps

    Class-map: class-default (match-any)
      467 packets, 39832 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any</pre>
</blockquote>
<p><em>I need to stop here so people don’t get confused.&#160; The configuration that you see is correct; the problem was actually with the NBAR protocols in the class-map.&#160; As Jeremy Stretch notes at the bottom of </em><a href="http://www.packetlife.net/blog/2009/jun/17/qos-pre-classification/"><em>this article</em></a><em>, there’s some issue with matching NBAR protocols.&#160; I later used an extended ACL to match ICMP which worked.&#160; The same is true for the SSH stuff later.&#160; Back to the show.</em></p>
<p>Here’s what I wound up with after cursing a lot and making random configuration changes to get the blasted thing to work.&#160; Notice the order of the classes.</p>
<blockquote>
<pre>class-map match-any TUNNEL
 match protocol gre
!
policy-map PM-S1/0-OUT
 class TUNNEL
 class ICMP</pre>
</blockquote>
<p>I know that order is going to be important, but these are matching two totally different things, so it shouldn’t matter, right?&#160; I checked out the policy-map again and saw that every packet was matching the TUNNEL class-map, and none were matching the ICMP class-map.</p>
<blockquote>
<pre>R1#sh policy-map int s1/0
 Serial1/0

  Service-policy output: PM-S1/0-OUT

    Class-map: TUNNEL (match-any)
      441 packets, 49392 bytes
      5 minute offered rate 2000 bps
      Match: protocol gre
        441 packets, 49392 bytes
        5 minute rate 2000 bps

    Class-map: ICMP (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps
      Match: access-group name ICMP
        0 packets, 0 bytes
        5 minute rate 0 bps

    Class-map: class-default (match-any)
      467 packets, 39832 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any</pre>
</blockquote>
<p>I finally went downstairs, talked it over with my wife who is my <a href="http://etherealmind.com/network-dictionary-rubber-duck-debugging/">rubber duck</a>, and finally figured it wouldn’t hurt to change the order of the classes.&#160; Once I put ICMP before TUNNEL, it started matching.&#160; I thought that was odd, so I left ICMP and added an SSH class and put it after the TUNNEL class.&#160; I saw the ICMP match and the tunnel match, but I didn’t see a single match on SSH even though I was SSHed through (not to) the router.&#160; </p>
<blockquote>
<pre>R1#sh policy-map int s1/0
 Serial1/0

  Service-policy output: PM-S1/0-OUT

    Class-map: ICMP (match-any)
      252 packets, 28224 bytes
      5 minute offered rate 0 bps
      Match: access-group name ICMP
        252 packets, 28224 bytes
        5 minute rate 0 bps

    Class-map: TUNNEL (match-any)
      5 packets, 440 bytes
      5 minute offered rate 0 bps
      Match: protocol gre
        5 packets, 440 bytes
        5 minute rate 0 bps

    Class-map: SSH (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps
      Match: access-group name SSH
        0 packets, 0 bytes
        5 minute rate 0 bps

    Class-map: class-default (match-any)
      547 packets, 46588 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any</pre>
</blockquote>
<p>When I moved SSH above TUNNEL, it started incrementing as it should.&#160; The best that I can tell is that both the original packet and the GRE packet are being evaluated when pre-classification is enabled.&#160; Since all the packets in the lab are going over a GRE tunnel, GRE will always be matched if you assess before everything else.</p>
<p>For the record, I did this lab twice – once with the GRE tunnel encrypted and once without encryption.&#160; The results of the pre-classification were the same in both attempts; GRE matches every time.</p>
<p>Send any <strike>ROUTE class vouchers</strike> questions my way.</p>
]]></content:encoded>
			<wfw:commentRss>http://aconaway.com/2010/03/06/qos-pre-classify-and-class-map-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GRE Tunnels and Encryption</title>
		<link>http://aconaway.com/2008/03/18/gre-tunnels-and-encryption/</link>
		<comments>http://aconaway.com/2008/03/18/gre-tunnels-and-encryption/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 15:38:40 +0000</pubDate>
		<dc:creator>Aaron Conaway</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gre]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://aconaway.com/2008/03/18/gre-tunnels-and-encryption/</guid>
		<description><![CDATA[GRE tunnels rock.  They are interfaces on a router that are used to &#8220;connect&#8221; to another router somewhere on your LAN, your WAN, the Internet, wherever.  The most popular use for them is for router-to-router VPNs. I&#8217;ll let my friend Josh from blindhog.net show you how to do it.  He&#8217;s got a video on how [...]]]></description>
			<content:encoded><![CDATA[<p>GRE tunnels rock.  They are interfaces on a router that are used to &#8220;connect&#8221; to another router somewhere on your LAN, your WAN, the Internet, wherever.  The most popular use for them is for router-to-router VPNs.</p>
<p>I&#8217;ll let my friend Josh from <a title="Blindhog.net -- Main Page" href="http://blindhog.net">blindhog.net</a> show you how to do it.  He&#8217;s got <a title="Blindhog.net -- How to configure a GRE/IPSec VPN - Part 1" href="http://www.blindhog.net/how-to-configure-a-greipsec-vpn-part-1/">a video on how to configure the tunnels</a>, and <a title="Blindhog.net -- How to configure a GRE/IPSec VPN - Part 2" href="http://www.blindhog.net/how-to-configure-a-greipsec-vpn-part-2/">another on how to set it up for VPN</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://aconaway.com/2008/03/18/gre-tunnels-and-encryption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
