<?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>SGT CCIE &#187; Featured</title>
	<atom:link href="http://www.sgtccie.com/blog/category/featured/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sgtccie.com/blog</link>
	<description>A man on a mission</description>
	<lastBuildDate>Sun, 02 Oct 2011 14:22:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How I went from a dropout to 100k</title>
		<link>http://www.sgtccie.com/blog/2011/08/how-i-went-from-a-dropout-to-100k/</link>
		<comments>http://www.sgtccie.com/blog/2011/08/how-i-went-from-a-dropout-to-100k/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 15:34:49 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Motivation]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=602</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2011/08/how-i-went-from-a-dropout-to-100k/" title="How I went from a dropout to 100k"></a>**Disclaimer: This is my story. These are my opinions. I feel strongly about them, since I have lived these words, and they&#8217;ve served me well. I&#8217;m telling my story not to boost my own ego up, but to help others &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2011/08/how-i-went-from-a-dropout-to-100k/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2011/08/how-i-went-from-a-dropout-to-100k/" title="How I went from a dropout to 100k"></a><p><span style="color: #ff6600;">**Disclaimer: This is my story. These are my opinions. I feel strongly about them, since I have lived these words, and they&#8217;ve served me well. I&#8217;m telling my story not to boost my own ego up, but to help others attain the same satisfaction as I&#8217;ve attained. Ultimately it comes down to this: I like helping people. So I&#8217;m trying to help. If you don&#8217;t need help, or don&#8217;t care to hear my story..read no further. Else&#8230;enjoy!**</span></p>
<p>At 16, I had my first job. KFC. It is the only job I can think of where I didn&#8217;t learn <span style="text-decoration: underline;">anything</span>. I was only there three months until my family moved.</p>
<p>Shortly after leaving KFC, I got hired at Pizza Hut as a cook. Within 6 months, at 16 years old, I was a shift manager. Right after turning 17, I was promoted to assistant store manager. I learned a lot of valuable lessons here. Most important, <strong>hard work does pay off sooner or later</strong>. If I hadn&#8217;t been a hard worker, there&#8217;s no way as a 16 year old I would have been promoted to shift manager. Sure, it&#8217;s only Pizza Hut, but it&#8217;s more than that. I gained the trust of senior management, because I delivered. They could see past my age, and look at the results I delivered. <em>Unfortunately, not all employers are like this, but the good ones are.</em></p>
<p>Right before I became the Asst. Store manager, I dropped out of high school to get my GED. Long story short, I homeschooled for one year, and the school board refused to give me credit, It was either GED, or extra year in high school. I got my GED 2 weeks later, and began thinking of college. While being the Asst. Store manager was great at 17, I needed to go to school. I was already into networking as a hobby, but had no experience. All the job postings for entry level positions required experience. One day, I drove an hour to register at a technical college. I was ecstatic. I then met with the financial aid counselor, and learned they would not provide enough money for me to afford going to school there. I left the college devastated, rethinking every decision I made up until this point.</p>
<p>On the way back home from the college, I stopped to use the restroom at a gas station. On the way out, a yellow flier fell off the wall, and gently landed right at my feet (cliche..but it really happened). I picked it up, and it was a U.S. Army Reserves flier. They could pay for my school, and I could work on getting a networking job. GREAT! I called the recruiter, and scheduled for him to come over. A few days later, he showed up. We talked, and after he left, I thought about it for 2 months before making a decision. I gave my notice at Pizza Hut, and left for the Army shortly after.</p>
<p>I won&#8217;t go into the details of joining the Army, because it&#8217;s not really relevant. I worked hard there, just like I did at Pizza Hut. I strived to learn new things each day, and to help others along the way.Fast forward a few years in the Army, I was on active duty, a 25B (Information Systems Analyst), but pretty much stuck to networking, because I got my CCNA while deployed to Iraq. Once I got my CCNA, my peers (and leadership) instantly recognized me as &#8220;the network guy,&#8221; which helped me immensely. At this point in my life (about 22 years old), I learned that sacrifice is a key part to success. Whether I was studying for promotion, or more certifications, or just to learn- I sacrificed free-time for the greater purpose (my future). For example, I&#8217;d have friends begging me to go partying, and I&#8217;d pass, to study OSPF. I didn&#8217;t WANT to study OSPF, but I didn&#8217;t WANT to be a failure even more. So, the fear of failure overpowered everything. I studied, studied, drank a little, studied some more.</p>
<p>Don&#8217;t get me wrong, I had a life. But the point is, I made select sacrifices in order to hopefully one day make it to the life I imagined for myself.</p>
<p>I then got assigned to Tampa, FL, in what basically amounts to a NOC Manager job. It could have sucked bad. Initially, it did suck. A lot. I was spending my time reporting to leadership on network events, doing trend reporting, and pretty much acting like a manager instead of an engineer. I then re-evaluated my situation. I had never had this view of a network before. I then realized, the ball was in my court. So, I got my CCNP. When I got my CCNP, I then became the guy the network folks would turn to for advice..essentially getting myself more experience. Additionally, I realized one day: most engineers cannot relate complex concepts to customers and/or leadership. So, I made it a point EVERY DAY to get better at this. By the time I left this job, I could explain anything to anyone.</p>
<p>It was during the previous job, I was preparing to get out of the Army. I knew I needed to make at least 65k to survive, preferably 75k to be in good shape, and ideally, 80-85k/yr. I got a lot of hits on my applications, and I attribute most of that to my resume writing skills. Eventually, I picked a job with a large service provider who basically makes mobile data work between telecom carriers. The pay was 70k/yr, but I could work from home, and I got a lot of perks. I jumped at it. There&#8217;s a few points I&#8217;ve learned up until this point:</p>
<ul>
<li><span style="font-size: small;">Take all the advantages you can get. A good resume, dressing sharply, knowing how to speak well, understanding business objectives..these are ALL free (well, minus the clothes if you don&#8217;t own them)..why not take every advantage you can get when seeking employment in the IT field?</span></li>
<li><span style="font-size: small;">Do what you say. If you tell a potential employer you&#8217;ll get back with them tomorrow, get back with them. If you don&#8217;t, this says &#8220;I&#8217;m unreliable, and you haven&#8217;t even hired me yet&#8221;</span></li>
<li><span style="font-size: small;">Learn how to translate previous experiences into resume candy. For example, if you have experience running cable, don&#8217;t leave it at &#8220;ran cable for X company&#8221;- instead, something like: &#8220;Experience performing Layer 1 installation/troubleshooting for customers, ensuring the availability of key IT services&#8221;..some crap like that at least. The point is, speak like management. If you speak like you&#8217;re a minimum waige worker, why should they hire you for this 65k/yr job?</span></li>
<li><span style="font-size: small;">If you don&#8217;t have experience, don&#8217;t lie. But don&#8217;t just say &#8220;no experience&#8221; either. If you&#8217;re a new CCNA, with no job experience, get some equipment if you don&#8217;t have it. Setup a network at home with domain and all if you have to. Volunteer. Do what you have to do. Articulate all of this very well on your resume, and stress that &#8220;although I don&#8217;t have production experience, I have done everything I can to gain experience on my own, including working in my home lab, and volunteering to provide IT services to so-and-so&#8217;s small business. Given the opportunity, I will absolutely learn everything I can, and excel at it&#8221;</span></li>
<li><span style="font-size: small;">Ask questions in your interview. By saying &#8220;nope, no questions at all,&#8221; it&#8217;s easy to come across as uninterested. You want them to realize you&#8217;re just as interested in the company as they are in you. There should be a mutual interest.</span></li>
</ul>
<p>So moving forward, I&#8217;m at this great service provider job, and I hit a major roadblock with management. Long story short, they expected me to be on-call 24&#215;7 365 days a year (not agreed to prior to hiring), and have articulated several times to me, that family should come AFTER work. No thanks. As soon as my manager said these words (roughly), I started looking elsewhere. <span style="color: #ff6600;">The days are gone of &#8220;get a great job stay at the same company for 20 yrs</span>&#8220;, the market is too unstable for that. Now, it&#8217;s &#8220;get the best opportunity you have, add to your resume, and keep your eyes open.&#8221;</p>
<p>So I found a position that seemed to fit, so I submitted my resume. The next day, a phone call. I ended up not showing up to the interview, because I had cold feet about leaving a brand new employer. Once I came to my senses, I called them back, and went for the interview. After nailing the interview, I was offered the job on the spot. I accepted, for a <strong>40% raise</strong>, which put me just shy of making 100k/yr.</p>
<p>So if anyone is keeping track, I went from making 48k/yr in the Army, to 70k 2 weeks later, to almost 100k onemonth later. Was it luck? Partially. Was it skill? Arguably. Could I have gotten the same position if I had not worked hard for the 6 years that built up to it? Possibly..but the bottom line is, I will never know. All I know, is I did everything I could, and the end result is this amazing opportunity.</p>
<p>It should be noted, that I do not have the mindset of &#8220;I&#8217;ve made it,&#8221; on the contrary- I have a LOT of work to do now. I&#8217;m stepping up the CCIE studies, and setting my sights on two, hopefully. I once heard successful people are generally pessimists by nature, because they never think they&#8217;re doing good enough. I tend to believe this.</p>
<p>Only one day after I landed this new position, I have the urge to do more, because I don&#8217;t want to become obsolete- so to speak. So that&#8217;s it. There&#8217;s a lot of details left out, but I&#8217;ve included the pertinent details/lessons I could think of at the time I wrote this. I hope someone else gets something out of this, and does well for themselves.</p>
<p>Regardless of the state of the economy, the state of IT, whatever..there will always be jobs for the right candidate. Make yourself that candidate. Be the solution to that companies issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2011/08/how-i-went-from-a-dropout-to-100k/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Review: Errdisable port state</title>
		<link>http://www.sgtccie.com/blog/2009/11/review-errdisable-port-state/</link>
		<comments>http://www.sgtccie.com/blog/2009/11/review-errdisable-port-state/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 15:49:11 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Routing & Switching]]></category>
		<category><![CDATA[errdisable]]></category>
		<category><![CDATA[port-security]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=425</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2009/11/review-errdisable-port-state/" title="Review: Errdisable port state"></a>Those of you &#8220;new&#8221; to the Cisco world, or those who simply don&#8217;t have experience in the layer 2 world may not have heard of errdisable (or simply might refer to it as the proper term, error-disable)- but any seasoned &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2009/11/review-errdisable-port-state/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2009/11/review-errdisable-port-state/" title="Review: Errdisable port state"></a><p>Those of you &#8220;new&#8221; to the Cisco world, or those who simply don&#8217;t have experience in the layer 2 world may not have heard of errdisable (or simply might refer to it as the proper term, error-disable)- but any seasoned tech knows what a pain it is to check your port and see errdisable. Back when I was a network technician for the Air Force, I remember going to a building on a trouble ticket, only to find a couple of cisco 4500 (if I recall correctly), with no less than 200 cables running to them..you literally could not see the ports themselves, or the RJ-45 connectors. After digging around, I did indeed find a switch hidden back there. After seeing the dreaded <strong>orange light on the port LED (signaling errdisable)</strong>, I consoled into the switch. At the time, I knew errdisable was bad, but that&#8217;s about it. This article would have helped tremendously if I had seen it already. Hopefully someone out there reads it in time!</p>
<p><br class="spacer_" /></p>
<p><span style="font-size: x-large;">What IS errdisable?</span></p>
<p>Errdisable, or error-disable, is a feature that allows the switch to detect certain error conditions on interfaces and disable them before the particular condition has a chance to affect the rest of the network. Basically, Errdisable says &#8220;Wait, something isn&#8217;t right..I&#8217;m going to shut this down so it doesn&#8217;t break anything else.&#8221; An example of some of the errdisable conditions(but not a comprehensive list) can be found below. For a more thorough list, check out cisco.com, and search for errdisable.</p>
<ul>
<li>Port-security violation</li>
<li>Etherchannel flapping</li>
<li>Invalid GBIC</li>
<li>DTP flapping (trunk negotiation)</li>
</ul>
<p>As I said, there&#8217;s more reasons, but those are some of the more common violations. In my experience, Port-security has been the largest- although you can configure error-disable to do what you want after noticing the &#8220;error condition&#8221;, this action it takes AFTER the error condition is known as the method of recovery. There are two types- manual, and automatic. <strong>Manual requires a shut/no shut on the interface</strong>; automatic recovery can recover the port itself after a specified interval.</p>
<p><br class="spacer_" /></p>
<p><span style="font-size: large;"><span style="font-size: x-large;">How to tell if a port is in errdisable:</span><br />
</span></p>
<p><span style="font-size: large;"><span style="font-size: small;">To tell if a port is in errdisable or not, do a show int status, or you can do a &#8220;show int fx/x status&#8221;. You should see &#8220;err-disable&#8221; if it is indeed, disabled. From here, depending on your recovery method, you either enable it with a shut/no shut, or let it recover automatically.</span></span></p>
<p><br class="spacer_" /></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;">ErrDisable key commands:</span></span></span></p>
<p><br class="spacer_" /></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">Enable errdisable (already enabled by default for UDLD/Port-security): </span></span></span></span></p>
<p><!--noadsense--></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;">Switch(config)#errdisable detect cause {all | arp-inspection | dhcp-rate-limit | dtp-flap | gbic-invalid | l2ptguard | link-flap | pagp-flap}</span></span></span></span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><br />
</span></span></span></span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><span style="color: #000000;">Configure automatic recovery from errdisable:</span></span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">Switch(config)# errdisable recovery cause {all | arp-inspection | bpduguard | channel-misconfig | dhcp-rate-limit | dtp-flap | gbic-invalid | l2ptguard | link-flap | pagp-flap | pesecure-violation | security-violation | storm-control | udld | unicastflood | wmps}</span></span></span></span></span></p>
<p><br class="spacer_" /></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><span style="color: #000000;">Configure recovery interval (only applies to conditions for which automatic recovery is enabled):</span></span></span></span></span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><span style="color: #000000;"><span style="color: #808080;">Switch(config)#errdisable recovery interval 120 (seconds)</span></span></span></span></span></span></span></p>
<p><br class="spacer_" /></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><span style="color: #000000;">To check Errdisable config:</span></span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">Switch(config)#Show errdisable detect</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">ErrDisable Reason              Detection Status</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;                &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">udld                                          Enabled</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">bpduguard                              Enabled</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">security-violation                 Enabled</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">psecure-violation                 Enabled</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">&#8230;and so on</span></span></span></span></span></p>
<p><br class="spacer_" /></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">Switch(config)#Show errdisable recovery</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">ErrDisable Reason               Timer status</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;                &#8212;&#8212;&#8212;&#8212;&#8212;</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">udld                                          Enabled</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">bpduguard                              Enabled</span></span></span></span></span></p>
<p><br class="spacer_" /></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">&#8230;&#8230;&#8230;&#8230;&#8230;..</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">Timer interval: 120 seconds<br />
</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">Interfaces that will be enabled at the next timeout:<br />
</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">Interface        ErrDisable reason          Time left(sec)</span></span></span></span></span></p>
<p><span style="color: #808080;"><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;">&#8212;&#8212;&#8212;-        &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;          &#8212;&#8212;&#8212;&#8212;&#8212;</span></span></span></span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><span style="color: #000000;"><span style="color: #808080;">f1/1                  security-violation                   34</span></span></span></span></span></span></span></p>
<p><br class="spacer_" /></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><span style="color: #000000;"><span style="color: #808080;"><span style="color: #000000;"><span style="font-size: x-large;">Final point</span></span></span></span></span></span></span></span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><span style="font-size: small;"><span style="color: #888888;"><span style="color: #000000;"><span style="color: #808080;"><span style="color: #000000;"><span style="font-size: x-large;"><span style="font-size: small;">ErrDisable is a good mechanism to help you find problems in your network- and to protect it- however, you should ultimately search for the root cause if you experience recurring errdisable conditions on certain ports. This is key, or your network will certainly not be operating efficiently. </span></span></span></span></span></span></span></span></span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: x-large;"><br />
</span></span></span></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2009/11/review-errdisable-port-state/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QoS: Essentials, Part III</title>
		<link>http://www.sgtccie.com/blog/2009/05/qos-essentials-part-iii/</link>
		<comments>http://www.sgtccie.com/blog/2009/05/qos-essentials-part-iii/#comments</comments>
		<pubDate>Sun, 24 May 2009 06:41:09 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[CCIE]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[QoS]]></category>
		<category><![CDATA[ccip]]></category>
		<category><![CDATA[ccna]]></category>
		<category><![CDATA[ccnp]]></category>
		<category><![CDATA[congestion]]></category>
		<category><![CDATA[farva]]></category>
		<category><![CDATA[fragmentation]]></category>
		<category><![CDATA[FRF.12]]></category>
		<category><![CDATA[interleaving]]></category>
		<category><![CDATA[link efficiency]]></category>
		<category><![CDATA[multilink ppp]]></category>
		<category><![CDATA[nbar]]></category>
		<category><![CDATA[policing]]></category>
		<category><![CDATA[quality of service]]></category>
		<category><![CDATA[RED]]></category>
		<category><![CDATA[RTP]]></category>
		<category><![CDATA[super troopers]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[traffic-shaping]]></category>
		<category><![CDATA[WRED]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=328</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2009/05/qos-essentials-part-iii/" title="QoS: Essentials, Part III"></a>In the previous installment of this series (QoS: Essentials, Part II), we discussed types of marking, NBAR,  and Congestion management/queuing techniques. With part III, I intend on discussing Traffic shaping /policing, Congestion avoidance, and link efficiency mechanisms. Because of the sheer amount of information &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2009/05/qos-essentials-part-iii/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2009/05/qos-essentials-part-iii/" title="QoS: Essentials, Part III"></a><p>In the previous installment of this series (<a href="http://www.sgtccie.com/blog/2009/03/qos-essentials-part-ii/">QoS: Essentials, Part II</a>), we discussed types of marking, NBAR,  and Congestion management/queuing techniques. With part III, I intend on discussing Traffic shaping /policing, Congestion avoidance, and link efficiency mechanisms. Because of the sheer amount of information in QoS, I cannot cover all of the QoS spectrum, but I hope to instill the foundational information that QoS is built upon. As usual, without further ado, let&#8217;s get to it!</p>
<p><br class="spacer_" /></p>
<h3><span style="font-size: small;">Traffic Shaping</span></h3>
<p>Let me paint a picture for you. Here in Florida, we have a lot of toll plaza&#8217;s. You know, you drive up, pay some absurd amount, then continue on your journey. Now let&#8217;s picture that there is a toll plaza, and 2 miles down the road there has been an accident. Thankfully, the accident did not block all 4 lanes of traffic, but instead only 3. Traffic is moving along but very slowly. As a result, there is heavy congestion at the scene of the accident. The city, having some foresight, doesn&#8217;t want the congestion at the scene to get any worse&#8230;and decides to only send one car through the toll plaza every 30 seconds. Since they are putting slowing the rate of traffic at the booth, it allows things to clear up a bit at the end, and traffic to flow smoothly again- although at a slower rate.</p>
<p>So how does that apply to shaping in a network? Well, in a nutshell, shaping will enqueue excess packets (above the configured rate), and &#8216;release&#8217; them onto the wire at the configured shaping rate. As a result, you can slow your transmit rate without just cutting off any traffic above a certain rate. Let&#8217;s say you administer a spoke that heads into a frame relay cloud- Your negogiate a CIR (committed information rate- the rate you wish to send under stable conditions) of 64k. Let&#8217;s assume your access rate, or AR, is 192k. You want to configure shaping at 64k, so that you don&#8217;t send more data then the distant end can handle..which may result in delay, jitter, or even loss of packets due to policing. Speaking of policing&#8230;</p>
<h3><span style="font-size: small;">Policing (&#8220;Oh S!)%!! Not another ticket..&#8221;</span></h3>
<p><span style="font-size: small;">How many of you reading this have seen speed traps setup by the local law enforcement officers? I&#8217;m sure anyone who has driven a car once or twice in their lifetime has. Let&#8217;s imagine we have a rookie right out of the academy, a little bit hot headed and power hungry. For the sake of this article (and to plug a hilarious movie), we&#8217;ll call the rookie &#8220;Farva&#8221;. Farva decides he wants to hit the roads and setup a speed trap. Since the speed limit is 55 Mph, he decides to not only ticket, but arrest <strong><em>anybody</em></strong> going over 55 Mph<em>. <strong>This means 56 Mph gets you a cell next to a fellow named &#8220;Tiny&#8221; with a propensity for middle-aged caucasian males.</strong></em></span></p>
<p><span style="font-size: small;">Once again, how does this apply to our network? Well, remember how we shaped the traffic leaving the spoke towards the frame relay network to 64k? Let&#8217;s imagine that we hadn&#8217;t shaped it at all. The service provider said &#8220;you get 64k to us, that&#8217;s it&#8221;. Well, in the event we start sending what our actual AR (access rate, remember? the line rate..) is, 192k in this case&#8230;then the service provider is going to implement policing and drop any traffic above the configured CIR. Obviously they could drop traffic at whatever rate they chose to, but in our example, it&#8217;s anything above the agreed upon CIR. In summation, policing enforces the CIR, making sure that nothing extra gets sent through. It is worth a brief mention that policing can be configured to mark down a packets IP Precedence or DSCP value so that it will get through, but later stands a better chance at being dropped then other packets. In times of network congestion, this will ensure the marked down packets are dropped first, but still allow them through if traffic is not heavy.</span></p>
<h3><span style="font-size: x-small;"><span style="font-size: small;">Bc&#8230;just a little info..</span></span></h3>
<p><span style="font-size: x-small;"><strong></strong></span></p>
<p><span style="font-size: small;">This is generally the place where I would discuss different shaping terminology, but I already described some of them here: </span><a href="http://www.sgtccie.com/blog/2009/05/frame-relay-traffic-shaping-frts/"><span style="font-size: small;">FRTS</span></a><span style="font-size: small;">, so check that out if you feel the need. I will, however give you this:</span></p>
<p><span style="font-size: small;">To calculate Bc, there&#8217;s a couple of ways to do it. For the sake of the following conversation, lets say our CIR is 64Kbps, and we are using the default Tc values of 125ms (over 8 intervals). What&#8217;s our Bc? There&#8217;s a few ways to do it:</span></p>
<p><span style="font-size: small;">Bc = Tc (125ms) x CIR (64) = 8000 bits per interval</span></p>
<p><span style="font-size: small;">OR</span></p>
<p><span style="font-size: small;">Bc = CIR (64000) / 8 (amount of intervals) = 8000 bits per interval</span></p>
<p><span style="font-size: small;">As you can see, both are correct. Whichever one you use is really up to you. Either way, our Bc will be the amount of data sent per time interval in order to conform to our shaping rate.</span></p>
<p><br class="spacer_" /></p>
<h3><span style="font-size: medium;"><strong><span style="font-family: mceinline;">Congestion Avoidance</span></strong></span></h3>
<p><span style="font-size: small;">When the queues on an interface fill, by default, the next packets that try to be added to that queue will be tail dropped. In order to solve the problem of tail drop, you can either configure the queues to be larger, or use congestion avoidance. Here&#8217;s the idea: When tail drop is employed, all packets are treated as equals..not good! This means that delay-sensitive traffic such as VoIP/Video is no different then say Limewire, or HTTP traffic.  This means that several TCP segments can be dropped at once, causing those hosts to reduce their send window, then raise each of their transmit rates at the same time..resulting in bandwidth utilization that looks like a very sharp wave of high utilization and very low utilization. Congestion avoidance techniques such as WRED will help us avoid these issues. We&#8217;ll discuss those later, but first, let&#8217;s go over exactly why the default behavior of tail drop is bad.<br />
</span></p>
<p><span style="font-size: small;"><br />
</span></p>
<h3><strong><span style="font-size: small;">Tail drop, and why it&#8217;s bad</span><br />
</strong></h3>
<p>Tail drop has several downfalls. The first one that comes to mind is that tail drop treats all packets as equals (as mentioned above). The second, is that with tail drop you are open to TCP synchronization and not efficiently using your links. TCP Synchronization, is cause by the natural behavior of TCP segments. A TCP segment will begin opening it&#8217;s window, gradually increasing it&#8217;s transmit rate, until it drops segments, then reduce the window by 50%.  The TCP hosts will build their transmit rate (open their window) slowly again, and upon reaching the maximum utilization, it will repeat this process. Now once you throw in multiple TCP sessions, you encounter <strong>TCP synchronization. </strong>The downfall to this is that when all of the sessions cut their window by 50%, you have a period of relative quiet in the network where very little traffic is being sent, followed by bursts of TCP traffic. The final issue with tail drop is that the more aggressive traffic (say, HTTP or limewire traffic, as mentioned above) will fill the queues quickly, leaving the less aggressive flows to be tail dropped.</p>
<p><br class="spacer_" /></p>
<h3><span style="font-size: small;"><strong>Weighted Random Early Detection (RED/WRED)</strong></span></h3>
<p>WRED is based on RED. The basic idea behind RED is this- as the router&#8217;s queue&#8217;s fill, RED randomly selects TCP packets to be dropped, thus preventing synchronization as described above, and preventing congestion and eventually tail drop. What WRED does differently then RED, however, is allow you to be a more precise when dropping traffic. WRED joins with the powers of IP Precedence/DSCP to allow you to drop the lower precedence packets first, while allowing the higher precedence traffic to pass. In essence, WRED &#8216;predicts&#8217; congestion, and gives you some decision on what can be dropped if the network is experiencing congestion. Based on statistics, WRED will drop traffic more often from a high volume sender then a low. What this means is, the more &#8216;offending&#8217; TCP hosts will have their traffic lost as they cross the threshold (more on that in a minute), as opposed to the low volume sender. Now, it is important to remember that we are dealing with TCP packets here. If the bulk of the traffic is UDP, WRED will not be effective.</p>
<p>Now, it&#8217;s important to note that the &#8216;core&#8217; of WRED is no different then RED. The only difference is that WRED is more selective about <strong>what</strong> is dropped, not <strong>how</strong>. Here&#8217;s a rough framework of how these techniques operate:</p>
<ul>
<li>Packet is received, and the average queue depth is checked. If it&#8217;s below the minimum threshold, it is queued and sent out the proper interface. If it&#8217;s above the minimum threshold, it is either queued or dropped on a percentage based on the MPD (Mark probablity denominator). The MPD simply put, is the maximum percentage of packets that WRED will discard. If MPD is 16, using the forumlua of 1/MPD (1/16 in our example), the max discard rate would be 6%. If we made the MPD 10, it would be 10% (1 divided by 10). </li>
</ul>
<p>Here is a collection of random notes I have thrown together as it relates to RED/WRED:</p>
<ul>
<li>RED/WRED use an exponential weighting constant to determine the average queue depth. The lower this is, the more quickly the average queue depth will change, and by raising it it will react slower. By default it is 9, and can be changed with the <strong>random-detect exponential-weighting-constant X</strong> command</li>
<li>RED differs from tail drop in the sense that tail drop occurs when the queue is full- RED may begin dropping all incoming packets even if the queue is not full&#8230;if you set the max threshold low, it will discard them even if the queue isn&#8217;t full.</li>
<li>RED drops above the min threshold at a linear rate, based on the MPD (1/MPD is the formula, so default MPD of 10 means 1/10, or 10% max discard rate)</li>
<li>WRED cannot operate with other queuing techniques at the physical interface. If you configure CBWFQ/LLQ, you must configure WRED within each individual class. When WRED is enabled on the physical interface, only FIFO queuing is used. This can be seen with a <strong>show queueing interface s1/0</strong></li>
<li>WRED weights packets on the following: Average queue depth (found using the exponential weighting constant, default of 9), Min &amp; Max threshold (dependent upon the DSCP/Precedence value), MPD (see two bullets above)</li>
<li>Enabling WRED (random-detect) disables WFQ</li>
<li>WRED defaults to being IP Precedence based, but you can specify it to work on DSCP instead with <strong>random-detect dscp-based</strong></li>
<li>If using DSCP based WRED, you use the following command to alter the thresholds per DSCP value: <strong>random-detect dscp af21 40 50. </strong>This command would make the DSCP value AF21&#8242;s minimum threshold at 40, and maximum at 50. You can see the effect of this command by doing a <strong>show queueing interface s1/0</strong> again.</li>
</ul>
<p>Below you&#8217;ll find a graph that I created to demonstrate RED&#8217;s behavior. You can see that when traffic crosses the minimum threshold, RED begins dropping traffic at a linear rate, up to the maximum discard rate, or MPD, which is by default, 10%. After that, it will cross the max threshold, and drop all traffic. <br class="spacer_" /></p>
<p><img class="aligncenter size-full wp-image-371" title="wred" src="http://www.sgtccie.com/blog/wp-content/uploads/2009/05/wred.jpg" alt="wred" width="728" height="359" /><br class="spacer_" /></p>
<p><br class="clear" /></p>
<p><br class="spacer_" /></p>
<h3><strong>Link Efficiency Mechanisms</strong></h3>
<ul>
<li><strong>Multilink PPP (MLP)</strong></li>
<li><strong>Frame Relay Fragmentation (End to End FRF.12)</strong></li>
<li><strong>Header Compression (RTP Header compression, TCP header compression)</strong></li>
</ul>
<p><br class="spacer_" /></p>
<h3><strong>Link Efficiency</strong></h3>
<p>Link efficiency may not strike you as an important feature of QoS, however it is when you are the one paying for the bandwidth! In these days of the rough economy and financial uncertainty- getting the most out of our money is key..especially when it comes to business. Bandwidth costs money, after all. Link efficiency can be broken down into a couple of categories, Compression, and link fragmentation/interleaving tools. Compression is the act of compressing the packet (or the number of bytes in the packet), so there is fewer bytes to transmit across the link. Fragmentation is essentially chopping up the larger packets into smaller ones. To understand interleaving, let&#8217;s say we have a large packet waiting to transmit, with a small packet that is delay-sensitive (such as voice) waiting behind it. If the small packet waits for the large packet to serialize (be put onto the wire), it may wait too long and exceed the acceptable delay/jitter. By fragmentation and interleaving, we are chopping the large packets into smaller pieces, and inserting parts of the voice packet in between the large one. Let&#8217;s first discuss compression..</p>
<p><strong>C</strong>ompression is not difficult to understand..well, the concept at least- agreed? There are a couple types of compression I&#8217;d like to discuss, Payload compression, and Header compression. Here&#8217;s a quick rundown:</p>
<p><strong>Payload compression: </strong><em>Compresses the headers and user data. Uses more CPU cycles.  Here I am mostly referring to Layer 2 compression such as &#8216;Stacker&#8217; or &#8216;Predictor&#8217;. Stacker is more CPU intensive but uses less memory. Use &#8220;compress stac&#8221; at the interface to use stacker. Predictor is more memory intensive. Use &#8220;compress predictor&#8221; to use Predictor. It is worth mentioning that predictor only supports PPP and LAPB, whereas Stacker supports most Point-to-point layer 2 protocols.</em></p>
<p><strong>Header Compression: </strong>If you were to examine packets, you&#8217;d see that the headers are very similar..header compression is based on this..and as a result uses very little CPU. The two common types of header compression are <em>TCP and RTP header compression</em>. TCP is best used with relatively small TCP packets, since it reduces the header from 40 bytes to anywhere from 3 to 5 bytes. The best way to see why TCP header compression is not so great with larger packets, is to consider that we saved about 35 bytes in our header compression of say a 56 byte packet (40 bytes being in the header)..but what if our packet was 1300 byes? We&#8217;d compress about the same amount of bytes, and it would be a relatively small savings byte-wise..almost not worth it. RTP header compression is best with voice traffic, and will generally compress the headers a little bit more then TCP (2-4 bytes down from 40). An interesting note, if fast switching or CEF is not enabled on an interface, and then you enable RTP header compression, the interface will process-switch the traffic. NOT good!</p>
<p><strong>Multilink PPP</strong></p>
<p>Out of the few link efficiency mechanisms listed above, this is the one many people have heard of- usually before the others. Let&#8217;s say you have two slow serial links, both running PPP to the same location..Multilink PPP allows you to bundle them and treats them as one link. This provides layer 2 redundancy as one of those links can drop and traffic will still flow- although at the much slower speed of the single link. There&#8217;s several other benefits that multilink provides which we&#8217;ll go over..</p>
<p><span style="color: #0000ff;">Multilink interleaving-</span> Interleaving simply takes two separate streams of data, and &#8216;interleaves&#8217; them, sending (in our case) delay-sensitive traffic in between the large datagrams. As you may have guessed, this is especially helpful with delay sensitive applications.</p>
<p><span style="color: #0000ff;">Multilink fragmentation-</span> Multilink <span style="color: #000000;">Fragmentation is &#8216;chopping up&#8217; large datagrams into several smaller ones, but using multilink headers on each of the smaller datagrams. </span></p>
<p><span style="color: #000000;">As a side note, me being a frame relay nut, love things like MLP over Frame relay (MLPoFR). If you&#8217;re interested in that stuff too, check out what cisco.com has to say. I could probably dedicate a whole article to MLP, so I would look for that in the future..<br />
</span></p>
<p><span style="color: #000000;"><a href="http://www.cisco.com/en/US/tech/tk1077/technologies_tech_note09186a00800b6098.shtml#topic6">Designing and Deploying Multilink PPP over Frame Relay and ATM</a></span></p>
<p><span style="color: #000000;">That is all for now, folks. I was going to go into FRF.12 and MLP LFI into detail, but I ran out of steam to be quite honest. More to come at another time most likely! Enjoy&#8230;</span></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2009/05/qos-essentials-part-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frame Relay Traffic Shaping (FRTS)</title>
		<link>http://www.sgtccie.com/blog/2009/05/frame-relay-traffic-shaping-frts/</link>
		<comments>http://www.sgtccie.com/blog/2009/05/frame-relay-traffic-shaping-frts/#comments</comments>
		<pubDate>Wed, 13 May 2009 14:00:53 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[CCIE]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Routing & Switching]]></category>
		<category><![CDATA[frame relay]]></category>
		<category><![CDATA[frame relay traffic shaping]]></category>
		<category><![CDATA[FRTS]]></category>
		<category><![CDATA[traffic-shaping]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=243</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2009/05/frame-relay-traffic-shaping-frts/" title="Frame Relay Traffic Shaping (FRTS)"></a>While at a first glance, Frame Relay Traffic Shaping (or FRTS) seems daunting..it&#8217;s really not bad. For those of you unfamiliar with FRTS, I&#8217;ll present a couple of scenarios where you may need to configure it. High speed interface &#8211;&#62; &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2009/05/frame-relay-traffic-shaping-frts/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2009/05/frame-relay-traffic-shaping-frts/" title="Frame Relay Traffic Shaping (FRTS)"></a><p>While at a first glance, Frame Relay Traffic Shaping (or FRTS) seems daunting..it&#8217;s really not bad. For those of you unfamiliar with FRTS, I&#8217;ll present a couple of scenarios where you may need to configure it.</p>
<p><br class="spacer_" /></p>
<ol>
<li>High speed interface &#8211;&gt; Low speed interface:  Picture you have one node connecting to the frame relay cloud at 1.544 Mbps, and the router at the far end connecting to the cloud at only 54Kbps. You are essentially creating a bottleneck in this scenario, and will surely experience congestion due to the downstream router having a lower access rate. Shaping the traffic ensures you are sending the data at a speed the other end can handle. </li>
<li>Oversubscription: Let&#8217;s say your access rate (the max rate that you can send to the provider) is 128Kbps, but your CIR is only 32Kbps. You can burst above the CIR, but if congestion occurs drop back to your CIR. This ensures that bandwidth is not sitting idle and going unused..the idea is that not all users will require 100% of their bandwidth all of the time. </li>
</ol>
<p><br class="spacer_" /></p>
<p>The information I&#8217;m going to present is mostly aimed at the first scenario. Let&#8217;s say we have a topology as such:</p>
<p><span style="font-size: large;"><img class="size-full wp-image-249 alignleft" title="frts_drawing1" src="http://www.sgtccie.com/blog/wp-content/uploads/2009/05/frts_drawing1.jpg" alt="frts_drawing1" width="741" height="118" /><br />
 </span></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p>In such a scenario, the Access rate- or the maximum rate that the user can send data, is found on the serial links above. R1 can access the FR cloud at 256K, however R2 can only access it at 128K. Because of this mismatch, it would experience congestion at the interface leaving the FR cloud onto R2&#8242;s serial link. Let&#8217;s get some terminology out of the way that we must take care of.</p>
<p><strong>AR</strong>- Access-rate- The maximum rate the user can inject data into the FR network</p>
<p><strong>CIR</strong>- Committed Information Rate- The rate you would like to send under regular conditions to the service provider</p>
<p><strong>Mincir</strong>- The actual guaranteed rate by the service provider. Sending less then this means you are not getting the bandwidth you have paid for. We can use mincir to &#8220;fall back&#8221; in times of congestion, and when things clear up bring our rate back to the CIR.</p>
<p><strong>Tc</strong>- Time interval- By default, the service provider will divide one second into 8 parts, of 125ms in each &#8220;section&#8221;.</p>
<p><strong>Bc</strong>- Committed Burst- CIR/Tc. What&#8217;s this mean? Say we have a CIR of 56000, then we divide that by the number of Tc intervals..by default 8. That means our Bc is 56000/8 = 7000 bits per <strong>timing interval</strong>. This means that every timing interval will send 7000 bits, 8 times to make up our CIR of 56000. Of course, we don&#8217;t have to send at that rate..if we don&#8217;t, the unused bandwidth can go to your token bucket filter..which allows you to burst above your Bc&#8230;this burst above Bc is called Be, or Excess burst.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-283" title="frts_drawing_good3" src="http://www.sgtccie.com/blog/wp-content/uploads/2009/05/frts_drawing_good3.jpg" alt="frts_drawing_good3" width="738" height="475" /></p>
<p style="text-align: left;"><strong>Be</strong>- Excess Burst- Data sent above the Bc (Committed burst) per Tc (Timing interval).</p>
<p><br class="spacer_" /></p>
<p><strong>Be (Excess Burst) Breakdown:</strong> If you are sending below your CIR, you can accrue &#8220;tokens&#8221; in your token bucket, to use at a time you need to burst above your Bc. It is important to note that you should only configure a Be value (the amount you want to burst above Bc..provided you have the credit available in your token bucket) if your CIR is LESS then your AR. This makes sense, if your AR (access rate) is 56k, and your CIR is 56k..you don&#8217;t want to try to burst above that. It will not work!</p>
<p><strong><em>Case study:</em></strong> Without going into the configuration yet, the above example uses the adaptive shaping becn command. This causes the router to react to becn&#8217;s and adjust it&#8217;s throughput on the fly. Using the diagram above, let&#8217;s review what exactly is going on. In the first interval (0-125ms), we use our token bucket credit, and send our Bc plus our Be, with our total throughput for that interval being 24k..for that <em>ONE</em> interval. After the first time interval, we start sending at our CIR, which is 128k divided by the amount of time intervals- by default this is 8. That means we are sending 16000 bits per interval. <em>The best way to think about this is that CIR is your regular throughput- over the period of 1 second.</em> Your Bc is simply your CIR but broken up into time intervals.</p>
<p>Now, you&#8217;ll see at 500ms that we receive a BECN. FRTS throttles the transmit rate 25% once per interval, upon each BECN received until it reaches the Min CIR value, which in our case is 56k, or 7000 bits per interval. After throttling down to Min CIR, the router must allow 16 time intervals (2 seconds by default) to pass with no BECN&#8217;s being received, before ramping the transmit rate back up to the normal CIR. The amount it will increase by is called the byte limit, and can be seen with a show frame pvc X.</p>
<p><strong>Interesting notes regarding FRTS:</strong></p>
<ul>
<li>If you configure &#8220;frame-relay traffic-shaping&#8221; under the interface but with no map-class configured/specified, the default CIR value will be 56000 bps. </li>
<li>By default, Min CIR is 1/2 of CIR (although in the above example we did it a little bit different)</li>
<li>You cannot configure the interval (Tc). The router calculates Tc based on CIR/Bc values..so although you can&#8217;t explicitly configure Tc, you can influence it by CIR/Bc values..although this also has other implications.</li>
<li>Bc = CIR/8 (by default), ie: 56000/8 = 7000 (Bc)</li>
<li>After fully configuring FRTS, if you do a &#8220;<strong>show frame pvc x</strong>&#8220;, it will show &#8220;traffic shaping inactive&#8221;. It will not show active until traffic passes that fall within the scope of the shaping.</li>
<li>Shaping activates upon the following events: BECN&#8217;s received and the DLCI is configured for adaptive shaping (BECN), FRF.12 fragmentation is configured with packets waiting to be fragmented, the number of bytes waiting to leave the interface is more then the byte limit (available credit)</li>
<li>FRTS allows you to control per-VC shaping/traffic</li>
<li>Can use WFQ/CQ/PQ or FIFO (FIFO by default)</li>
<li>In addition to configuring adaptive shaping on BECN receipt, you can configure the interface to react to interface congestion</li>
</ul>
<p>That&#8217;s all I really have for now. There&#8217;s a lot of little details for FRTS that can be kind of tricky, but as a whole it&#8217;s fairly straightforward. I hope to post several configuration examples in the next post, although I personally feel the difficulty in FRTS lies in the terminology/concepts. Once you get those the rest is cake. Take care!</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2009/05/frame-relay-traffic-shaping-frts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Command of the week: Switchport protected</title>
		<link>http://www.sgtccie.com/blog/2009/04/command-of-the-week-switchport-protected/</link>
		<comments>http://www.sgtccie.com/blog/2009/04/command-of-the-week-switchport-protected/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 00:12:26 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[CCIE]]></category>
		<category><![CDATA[Command of the week]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Routing & Switching]]></category>
		<category><![CDATA[3550]]></category>
		<category><![CDATA[3560]]></category>
		<category><![CDATA[ACL]]></category>
		<category><![CDATA[ccna]]></category>
		<category><![CDATA[ccnp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[layer 2]]></category>
		<category><![CDATA[PVLAN]]></category>
		<category><![CDATA[switching]]></category>
		<category><![CDATA[switchport protected]]></category>
		<category><![CDATA[VLAN]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=183</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2009/04/command-of-the-week-switchport-protected/" title="Command of the week: Switchport protected"></a>I have done my share of work in the networking field, and had never heard of this command. I have also not been exposed to a wide variety of layer 2 technologies, but I must say, that this is a very &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2009/04/command-of-the-week-switchport-protected/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2009/04/command-of-the-week-switchport-protected/" title="Command of the week: Switchport protected"></a><p>I have done my share of work in the networking field, and had <strong>never</strong> heard of this command. I have also not been exposed to a wide variety of layer 2 technologies, but I must say, that this is a very cool command. Granted, it could be considered old- or not on par with private VLAN&#8217;s (which take the same idea of isolating particular ports a little bit further), but I like it&#8217;s simplicity. However, it IS available in older catalyst switches that may not support Private VLAN&#8217;s, so that is a bonus. Last but not least,  knowing how to configure PVLAN&#8217;s and protected ports, you can accomplish- to some degree- the same thing in two different ways- which is always a plus. This article will primarily function as a basic overview of the command, although I will briefly flyby the configuration as it is fairly straightforward. Let&#8217;s get to it. First, I&#8217;ll present you a scenario that will demonstrate what switchport protected does.</p>
<p>Let&#8217;s say you have a Cisco 3550 in a closet somewhere, and for whatever reason want two hosts coming off of that 3550 to have no traffic pass between them. <strong><em>Switchport protected</em></strong> will enable you to do just that. The idea is simple: Any protected port can not talk to any other protected port, but can talk with any unprotected port. The idea here is the same as private VLAN&#8217;s somewhat..just a more basic method. There&#8217;s a few caveats worth mentioning regarding protected ports:</p>
<ul>
<li>The protection is <em>only</em> local to that switch. If you have User A on SW1, and User B on SW1, both on VLAN 100, configured with switchport protected..they will <strong>not</strong> talk. However, if you split the two users up on two switches that are trunking, but still within VLAN 100&#8230;they WILL talk. The protection does not span multiple switches!</li>
<li>The protection is limited to Layer 2. Once the frame becomes a packet at Layer 3, it will allow the two hosts to communicate. </li>
<li>To block traffic at Layer 3 also, you would need to look at ACL&#8217;s, or Vlan Access-lists, or other methods of access control. </li>
</ul>
<p>So how do we configure a port to be protected? It&#8217;s cake. See below:</p>
<p><span style="font-size: x-small;"><em>Switch(config)# interface fa0/1</em></span></p>
<p><span style="font-size: x-small;"><em>Switch(config-if)# switchport protected</em></span></p>
<p><span style="font-size: small;">That is it! I know, almost a letdown, right? Well, the plus is, there&#8217;s more! Commonly when implementing protected ports, you will want to also block unknown unicast/multicast traffic. Why? Think about the basic nature of a switch when it receives an unknown unicast frame..it will flood it out all ports except the one it was received. This could introduce a possible avenue for attack. To mitigate this risk, we can block unknown unicast/multicasts on these ports by using the following configuration.</span></p>
<p><span style="font-size: x-small;"><em>Switch(config-if)#switchport block {multicast | unicast}</em></span></p>
<p>That&#8217;s all there really is to it. I hope this short article has at least given you a small insight into small lesser-known features the Cisco IOS has to offer. I look forward to finding the next one to share with all of you!<br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2009/04/command-of-the-week-switchport-protected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unicasting RIP updates without the neighbor statement</title>
		<link>http://www.sgtccie.com/blog/2009/04/unicasting-rip-updates-without-the-neighbor-statement/</link>
		<comments>http://www.sgtccie.com/blog/2009/04/unicasting-rip-updates-without-the-neighbor-statement/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 22:00:46 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[CCIE]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Routing & Switching]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[RIP]]></category>
		<category><![CDATA[RIPv2]]></category>
		<category><![CDATA[unicast]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=161</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2009/04/unicasting-rip-updates-without-the-neighbor-statement/" title="Unicasting RIP updates without the neighbor statement"></a>While reading through my Cisco Press CCIE lab workbook, I came upon a section of the configs that kind of threw me off. The lab asked you to configure RIP to unicast updates without using the neighbor/passive-interface command. For those &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2009/04/unicasting-rip-updates-without-the-neighbor-statement/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2009/04/unicasting-rip-updates-without-the-neighbor-statement/" title="Unicasting RIP updates without the neighbor statement"></a><p>While reading through my Cisco Press CCIE lab workbook, I came upon a section of the configs that kind of threw me off. The lab asked you to configure RIP to unicast updates without using the neighbor/passive-interface command. For those of you unfamiliar with the &#8220;<strong>neighbor</strong>&#8221; way of doing things, here&#8217;s how it goes. You configure &#8220;<strong>neighbor x.x.x.x</strong>&#8221; as the neighbors address (obviously). This will unicast updates, however, it will also broadcast (for RIPv1) or multicast (for RIPv2) updates regardless. See below.</p>
<p>The following shows</p>
<p>Apr  9 17:29:42.815: RIP: sending v2 update to 224.0.0.9 via Serial1/0 (10.25.1.1)</p>
<p><em>R1(config-router)#neighbor 10.25.1.2 (added the neighbors IP here)</em></p>
<p>*Apr  9 17:31:04.575: RIP: sending v2 update to 224.0.0.9 via Serial1/0 (10.25.1.1)<br />
 *Apr  9 17:31:04.583: RIP: sending v2 update to 10.25.1.2 via Serial1/0 (10.25.1.1)</p>
<p>As you can see,  unicast RIP updates are being sent, but the multicast updates are still going out. How do we stop them? Using the <strong>passive-interface</strong> command.</p>
<p><em>R1(config-router)#passive-interface s1/0</em></p>
<p>*Apr  9 17:34:50.887: RIP: sending v2 update to 10.25.1.2 via Serial1/0 (10.25.1.1)</p>
<p>As you can see, RIP updates are no longer being multicasted now, however the unicast ones are still exiting the interface..success! That&#8217;s fine and dandy, but let&#8217;s see another tricky way to pull this off. What happens if the lab says you cannot use the neighbor statement?&#8230;</p>
<p>Enter NAT.  I won&#8217;t lie, NAT is one of my least favorite subjects due to the unfamiliarity, but I&#8217;m sure after reading the following text, you&#8217;ll be impressed. I found this to be a sneaky way of unicasting RIP updates. Here&#8217;s the idea, since the neighbor statement is out of the question, we&#8217;ll use NAT to translate any outgoing traffic on UDP port 520 (RIP updates) to multicast address 224.0.0.9 into our neighbors interface address..in this case 10.25.1.2. Here is the configuration.</p>
<p><em>R1(config)#int s1/0</em></p>
<p><em>R1(config-if)#ip nat outside</em></p>
<p>Above, we simply identified our s1/0 as the outside interface for NAT purposes. Next, we&#8217;ll create our NAT statement which will do the magic.</p>
<p><em>R1(config)#ip nat outside source static udp 10.25.1.2 520 224.0.0.9 520</em></p>
<p>Here&#8217;s the catch. If we look at R1&#8242;s <strong>debug ip packet detail</strong> output:</p>
<p>*Apr  9 17:49:04.739: IP: s=10.25.1.2 (Serial1/0), d=224.0.0.9, len 52, rcvd 2<br />
 *Apr  9 17:49:04.743:     UDP src=520, dst=520</p>
<p>My first impression was: &#8220;damn, not working&#8221;. Then I checked R2&#8242;s debug ip packet detail output..low and behold..</p>
<p>*Apr  9 17:51:13.915: IP: s=10.25.1.1 (Serial1/0), d=10.25.1.2 (Serial1/0), len52, rcvd 3<br />
 *Apr  9 17:51:13.915:     UDP src=520, dst=520</p>
<p>Ah ha! The RIP updates sourced from R1 (10.25.1.1) are being sent to 10.25.1.2..or unicasted. We can verify this is unicast only, because without the NAT configuration, you will see the destination as the RIP multicast address, or 224.0.0.9. Pretty sneaky! Now, why can&#8217;t we see this NAT solution in R1 through <strong>debug ip rip</strong>, or <strong>debug ip packet det</strong>? It all comes down to the <a title="NAT Order of Operation" href="http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080133ddd.shtml" target="_blank">NAT order of operation</a>. When performing NAT inside-to-outside translation, routing is done before NAT (with good reason)..therefore your RIP output shows that it is addressed to the 224.0.0.9 address, but by looking at <strong>debug ip nat detail</strong> on R1, we could see the NAT translation taking place.</p>
<p>*Apr  9 17:56:45.843: NAT: i: udp (10.25.1.1, 520) -&gt; (224.0.0.9, 520) [0]</p>
<p>*Apr  9 17:56:17.815: NAT: s=10.25.1.1, d=224.0.0.9-&gt;10.25.1.2 [0]</p>
<p>There you have it! The lesson learned here is to 1) use 100% of the debug commands available, and 2) sometimes debugging from a neighboring router will help troubleshoot the node with an issue.</p>
<p>Edit:  Although I used RIPv2 in the example above, you can do the same with RIPv1, but instead of putting the RIPv2 multicast address in the NAT statement, use the broadcast address. It is key to note that you have to specify UDP port 520, or else you will translate all broadcast traffic that leaves the router instead of just RIP updates!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2009/04/unicasting-rip-updates-without-the-neighbor-statement/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>QoS: Essentials, Part II</title>
		<link>http://www.sgtccie.com/blog/2009/03/qos-essentials-part-ii/</link>
		<comments>http://www.sgtccie.com/blog/2009/03/qos-essentials-part-ii/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 20:56:09 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[QoS]]></category>
		<category><![CDATA[atm]]></category>
		<category><![CDATA[CCIE]]></category>
		<category><![CDATA[ccna]]></category>
		<category><![CDATA[ccnp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[classification]]></category>
		<category><![CDATA[congestion]]></category>
		<category><![CDATA[DSCP]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[frame relay]]></category>
		<category><![CDATA[marking]]></category>
		<category><![CDATA[mpls]]></category>
		<category><![CDATA[nbar]]></category>
		<category><![CDATA[quality of service]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=47</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2009/03/qos-essentials-part-ii/" title="QoS: Essentials, Part II"></a>In QoS: Essentials, Part I, we discussed what QoS is, classifying/marking traffic, and trust boundaries. In Part II, we will get into the actual types of marking, do an overview of NBAR, and finally get into Congestion management/Queuing. Ready? Types &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2009/03/qos-essentials-part-ii/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2009/03/qos-essentials-part-ii/" title="QoS: Essentials, Part II"></a><p>In QoS: Essentials, Part I, we discussed what QoS is, classifying/marking traffic, and trust boundaries. In Part II, we will get into the actual types of marking, do an overview of NBAR, and finally get into Congestion management/Queuing. Ready?</p>
<p><strong>Types of Marking</strong>:</p>
<p>There are several different ways to mark, and each one is suited for a special situation. For example, if you&#8217;re running QoS over frame relay, you&#8217;d use the Frame Relay DE (discard elgibility) bit, whereas if you&#8217;re using ATM, you&#8217;d opt for the CLP (Cell loss priority) bit, etc. For now, we are going to simply discuss the different types. First, it is important to note ahead of time that we are going to be discussing markings that are used on layer 2, and some that are used on layer 3. Here are the breakdowns:</p>
<p><br class="spacer_" /></p>
<div><img class="aligncenter size-full wp-image-50" title="markings" src="http://www.sgtccie.com/blog/wp-content/uploads/2009/03/markings.jpg" alt="markings" width="325" height="148" /></div>
<p><br class="spacer_" /></p>
<div style="text-align: left;">
<ul style="text-align: left;">
<li>CoS (Class of Service): CoS is very common in a LAN environment, as it is marked at Layer 2. In the graphic below, we have an 802.1Q frame, with the PRI field (used for CoS) inside a 4 byte tag, where you find the Type ID (TPID), will always be <span class="content">0&#215;8100 in order to identify the frame as an IEEE 802.1Q frame. Next we have the PRI field, which is 3 bits long (8 total values, 0-7), then the CFI, and VLAN ID. The key part here is to remember the PRI field is 3 bits, and can have 8 possible values. Thus our CoS values can be anywhere from zero up to seven. To give you some perspective on this, most Cisco IP phones will tag their traffic with a CoS of 5 by default, putting it into the critical category. This makes sense, since VoIP traffic is very sensitive to delay/jitter. </span></li>
</ul>
<p><img class="aligncenter size-full wp-image-52" title="8021q_p_frame_cos" src="http://www.sgtccie.com/blog/wp-content/uploads/2009/03/8021q_p_frame_cos.jpg" alt="8021q_p_frame_cos" width="690" height="218" /></p>
<p><br class="space_" /><br class="space_" /><br class="space_" /><br class="space_" /><br class="space_" /><br />
 <br class="space_" /><br class="space_" /><br class="space_" /><br class="space_" /></p>
<ul style="text-align: left;">
<p><br class="space_" /></p>
<li><strong>DE bit:</strong> The Discard Elgibility bit is used in Frame relay environments. Here&#8217;s the concept. The USPS mail guy does his usual mail run, and heads back to the office to pick up more mail. Upon arriving, he realizes he has entirely too much to take, so he takes only the unmarked pieces of mail, and leaves the ones with a red marking behind..or drops them. Essentially all that happens with the DE bit is that you are telling nodes along the path that this packet *can* be dropped before others do <em>in times of network congestion- </em>or when the router cannot handle all of the traffic. The other end does not have to act on this bit at all, however. If it does choose to, however, the packets with the DE bit set will be dropped before those with no bit set. </li>
<p><br class="spacer_" /></p>
<li><strong>CLP (Cell Loss Priority):</strong> The CLP bit works the same as the DE bit in concept, except will be used in ATM cells.</li>
<p><br class="spacer_" /></p>
</ul>
</div>
<div style="text-align: left;">
<ul>
<li><strong>IP Precedence:</strong> Now we&#8217;re talking about Layer 3. In 1981, the ToS byte was used to set a certain level of service for that packet. Inside the byte was IP precedence (3 bits, the same as CoS), a ToS field (yes, a ToS field within a ToS byte, which was 4 bits), then the remaining 7 bits were unused. IP Precedence is fine, but DiffServ is quickly becoming standard, with engineers opting for DSCP marking, as it can be more grainular. Instead of 0-5 IP Precedence levels, you have from 0-63 with DSCP. That being said, DSCP is backward compatible with IP Precedence..there are 8 DSCP values that map to IP Precedence values. If a network running IP Precedence receives a packet marked with DSCP, it will simply read the first 3 bits of the DSCP, which it thinks is just a regular IP Precedence mark. That&#8217;s another time and place, however! </li>
<p><br class="spacer_" /></p>
<li><strong>DSCP (Differentiated Services Code Point):</strong> The ToS byte has been redefined as the DSCP field, with the 6 most signifigant bytes making up the DSCP value, and the last two bits being the ECN, or Explicit Congestion Notification bits. As I said, DSCP is backward compatible with IP Precedence, so if a system receives an IP packet with a DSCP value, remember that it will only read the most signifigant 3 bits, and treat it as IP Precedence. With DSCP, you set the DSCP value, which in turn causes a DiffServ node to act in a certain way towards that packet..this is called <em>Per-Hop Behavior</em>. In a nutshell, the node reads the DSCP, and realizes it is part of a group (or behavior aggregate..BA for short), and treats it the same way for the rest of the packets belonging to that BA.</li>
<p><br class="spacer_" /></p>
<li><strong>MPLS EXP:</strong> Ok, this one is kind of odd. Without diving into MPLS too deep, here is a breakdown. MPLS packets can be thought of as a regular IP packet with a 4 byte (or more) MPLS header inside it. The IP packet (with MPLS header inside..) is then encapsulated in a Layer 2 protocol, such as ethernet. It is then sent. Because of the fact that it is technically in a layer 3 packet, but encapsulated by layer 2, the MPLS header can almost be considered Layer 2 1/2. The MPLS header consists of only 4 fields, the label (which is basically like a color that is marked on the packet), the EXP bits (3 bits to be exact), BS bit (bottom-of-stack), and TTL. Inside the EXP bits, you have the same values as you do for CoS, or IP Precedence.</li>
<p><br class="spacer_" /></p>
</ul>
</div>
<p><strong>NBAR: Digging deep&#8230;</strong></p>
<p>Prepare to be amazed! NBAR, also known as Network Based Application Recognition..is incredible. NBAR is a feature found in Cisco IOS, which can allow you to check traffic statistics, protocol discovery, and classify your traffic&#8230;for you! Let&#8217;s say you decide you want to implement QoS on your network. The first step is to identify traffic and requirements, right? Well, with NBAR, you can simply issue the following on the interface you wish to monitor:</p>
<p><code>SGTccie(config-if)#ip nbar protocol-discovery</code></p>
<p>In order to actually see the traffic statistics, we&#8217;d then issue the following command from enable mode:</p>
<p><br class="spacer_" /></p>
<div><code>SGTccie#show ip nbar protocol-discovery</code></div>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p>It is worth mentioning CEF is required to run NBAR. Also, when using the &#8220;<em>show ip nbar protocol-discovery</em>&#8221; command, it will show you all interfaces unless you add &#8220;interface X&#8221; after it. NBAR can also save you a lot of time. Once we get to QoS configuration, you will see. The old way of doing things was to configure extended ACL&#8217;s listing port numbers and IP&#8217;s, and etc. Instead of &#8220;access-list 101 permit ip any host 192.168.1.1 eq www&#8221;, we now use &#8220;match protocol http&#8221;. Nice!</p>
<p><br class="spacer_" /></p>
<p><strong>Congestion Management/Queuing&#8230;waiting in line&#8230;</strong></p>
<p>Ahh, congestion management. Running fiber everywhere along with 1GB ethernet everywhere is great..but congestion still happens. Why? Many reasons, really..poor QoS implementation (or none!), poorly designed networks, outdated equipment, etc..the list goes on and on. Generally, however, the point of congestion is almost always where traffic from multiple sources aggregate onto a single link. Picture 10 access-layer switches connecting to one distribution-layer switch, which only has a 100MB link to the core. You could easily have 400 users&#8217; traffic flowing to the core on that one link. Another scenario would be where you have a slow WAN link (pretty common!). Another way you could think of it is: Congestion occurs when the rate of input for incoming traffic exceeds the rate of output. In english? When going from high speed interfaces down to low speed interfaces you are prone to congestion. It&#8217;s no different then a theatre filled with people trying to get out of two doors at once..they can only move so fast!</p>
<p>Queuing is a temporary form of congestion management. It will ease some issues with congestion, but the long-term fix is fairly obvious- getting more capacity. This is not always feasible, unfortunately. So what can we do? We can alter the order that traffic leaves the node, so the low-priority traffic will be dropped first, and not the high priority (VoIP, critical applications, etc) traffic. By default, however, you will experience FIFO (First In, First Out) on interfaces that are faster then 2.048Mbps. Weighted Fair Queuing is used on interfaces slower then 2.048Mbps by default..but we&#8217;ll get into that in a bit. Depicted below is the way FIFO software queuing works. It is key to mention that there is only one hardware queue..and it uses FIFO. When we discuss creating new queues, and assigning traffic to certain queues, we are discussing the software queue only. As you can see below, FIFO treats all traffic equally, meaning the sensitive VoIP traffic will have to wait in line behind the web traffic. Not ideal!</p>
<p><br class="spacer_" /></p>
<div><img class="aligncenter size-full wp-image-348" title="fifo_queue2" src="http://www.sgtccie.com/blog/wp-content/uploads/2009/03/fifo_queue2.jpg" alt="fifo_queue2" width="558" height="108" />
</div>
<p><br class="spacer_" /></p>
<p><strong>Priority Queuing </strong></p>
<p>Priority Queuing, or PQ, consists of four queues: high, medium, normal, and low. By default, all packets will be assigned to the normal queue when using PQ. PQ is a pretty harsh Queuing method, which generally leaves lower-priority queues starved. PQ works by always giving the high priority queue the right of way, so to speak. If there is something in the high queue, it is sent before any other traffic. If the high queue is empty, it will check the medium queue..send one packet from there, then move down to the low, and start the cycle over. What you get is the possibility of the queues below high not getting enough bandwidth, since the high queue is taking it all. The idea is almost right (treating the high priority traffic as such), but the implementation is a little off. Let&#8217;s look at some better options.</p>
<p><strong>Round Robin (RR)</strong></p>
<p>Round robin contrasts heavily in comparison to Priority Queuing. The Round Robin process passes one packet from one queue at a time, effectively (almost) dividing the bandwidth almost equally. This is assuming the packet sizes are almost the same size, however. If one queue consistently has packet sizes much larger then the rest, it will take more bandwidth then the rest. RR does a good job of dealing with queue starvation, but does not prioritize at all. It can also be somewhat unpredictable as to actual queue usage.</p>
<p><strong>Weighted Round Robin (WRR)</strong></p>
<p>WRR is a modification of RR, where each queue receives a weight, and as a result of the weight, receives that portion of the bandwidth. WRR allows you to prioritize to some degree, but can also be somewhat unpredictable as some queues may use more bandwidth then planned.</p>
<p><strong>Weighted Fair Queuing (WFQ)</strong></p>
<p>As I mentioned before, WFQ is the default queuing method used on interfaces that are slower then 2.048Mbps. WFQ is important to know because as we&#8217;ll find later, it is implemented in both LLQ and CBWFQ..which are popular methods of queuing these days. WFQ is flow-based, meaning that once it receives a flow, it is assigned to a FIFO queue. A flow consists of packets that have the same source IP, destination IP, Layer 4 protocol (TCP/UDP), IP Precedence, TCP/UDP source and destination ports. WFQ creates queues on the fly for each flow, so the number of queues can vary greatly.</p>
<p><strong>Class-Based Weighted Fair Queueing (CBWFQ)</strong></p>
<p>CBWFQ divides traffic into classes (that are configured by the user), which are assigned their own respective queue. Although each queue can use more bandwidth then configured for, they can have a minimum bandwidth guarantee, so that even in times of congestion, they will get that amount of bandwidth. CBWFQ can create up to 64 queues, with each one being a FIFO queue. It is worth noting that you can configure the class-default queue to be a WFQ. The class-default queue is used for all undefined traffic. Bear in mind that while the CBWFQ functions with WFQ as a whole, once the traffic has been divided up into it&#8217;s respective queue, they are FIFO. Think of it like this, you are sending traffic into separate lines based on preference, but once in that line, they are considered equal. CBWFQ is a big improvement over previous queuing methods, however it still falls short as it relates to voice or video applications. You&#8217;ll note that CBWFQ provides no method of identifying a priority queue..this can hurt applications sensitive to delay. To solve these issues we move on to LLQ!</p>
<p><strong>Low Latency Queuing (LLQ)</strong></p>
<p>At this point we can agree what we need is a queuing method that will give priority to delay-sensitive traffic, but at the same time not leave all other queues starved for bandwidth. Do you remember the issue with priority queuing? PQ gives priority to one queue- which is great, but leaves the other queues starved in times of congestion. WFQ is good, as it doesn&#8217;t leave flows starved, but it also provides no guarantee to any particular queues. LLQ solves these issues. LLQ is essentially a CBWFQ with at least one strict-priority queue. What does this mean? It means one queue receives priority, however that queue is <em>policed</em>, meaning in times of congestion it cannot use more bandwidth than is configured.</p>
<p><br class="spacer_" /></p>
<p><strong>Ahhh..sigh of relief!</strong></p>
<p>Here we are, at the end of Part II! As you have noticed by now, QoS can definitely be daunting, but if you take the time to tackle the theory behind it, it really isn&#8217;t that difficult. The difficulty (for me at least), has always been in the theory as opposed to the implementation! In Part III we will discuss Traffic shaping/policing, link efficiency, and congestion avoidance. Look forward to seeing you!</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2009/03/qos-essentials-part-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QoS: Essentials, Part I</title>
		<link>http://www.sgtccie.com/blog/2009/03/qos-essentials-part-i/</link>
		<comments>http://www.sgtccie.com/blog/2009/03/qos-essentials-part-i/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 01:51:11 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[QoS]]></category>
		<category><![CDATA[CCIE]]></category>
		<category><![CDATA[ccip]]></category>
		<category><![CDATA[ccna]]></category>
		<category><![CDATA[ccnp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[CLP]]></category>
		<category><![CDATA[DE]]></category>
		<category><![CDATA[DSCP]]></category>
		<category><![CDATA[frame relay]]></category>
		<category><![CDATA[marking]]></category>
		<category><![CDATA[MPLS EXP]]></category>
		<category><![CDATA[quality of service]]></category>

		<guid isPermaLink="false">http://www.sgtccie.com/blog/?p=14</guid>
		<description><![CDATA[<a href="http://www.sgtccie.com/blog/2009/03/qos-essentials-part-i/" title="QoS: Essentials, Part I"></a>Many of you reading this have been mystifyed by terms like WFQ, WRED, Jitter, or DiffServ. My aim in Part I of QoS: Essentials, is to take some of the mystique surrounding Quality of Service away. Let&#8217;s get to it! &#8230;<p class="read-more"><a href="http://www.sgtccie.com/blog/2009/03/qos-essentials-part-i/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://www.sgtccie.com/blog/2009/03/qos-essentials-part-i/" title="QoS: Essentials, Part I"></a><p style="text-align: left;">Many of you reading this have been mystifyed by terms like WFQ, WRED, Jitter, or DiffServ. My aim in Part I of QoS: Essentials, is to take some of the mystique surrounding Quality of Service away. Let&#8217;s get to it!</p>
<p style="text-align: left;"><strong>What is QoS?</strong><br />
While in Iraq, we stayed in tiny trailers with 2 soldiers sharing a room. It wasn&#8217;t horrible, but let&#8217;s just say you got to know your roommate a little bit more then you wanted to due to the close proximity. Two people was OK, compared to what some people had to do! Our commander was given his own trailer, because well, he was more important then the &#8220;foot soldiers&#8221; or &#8220;average joes&#8221;. If something happened to most people in my unit, the position can be filled. If something happens to the commander, it&#8217;s not quite as easy. Moving on, the commander receives his own room, thus putting a soldier out, and forcing him to move in with two guys already occupying a trailer. Their beds were nearly touching&#8230;for 15 months. What happened? QoS&#8230;sort of. Here&#8217;s what cisco has to say about QoS:</p>
<p style="text-align: left;"><em>&#8220;QoS is the ability of the network to provide better or special service to a set of users or applications or both <strong>to the detriment of other users or applications or both</strong>.</em>&#8220;</p>
<p style="text-align: left;">Based on that statement, we can agree that Quality of Service is essentially improving service for one service, while limiting the service of other users/applications. Think about it, you run a network with 1,000+ systems, and run a special application we&#8217;ll call AppX that the companies employee&#8217;s practically live on. You also have employee&#8217;s who are running P2P file transfer programs such as Gnutella, Kazaa, or Limewire. Without a QoS policy in place, heavy P2P use will prove to be detrimental to AppX, and thus decrease company productivity, resulting in less earnings, and ultimately hurt everyone! In the above scenario, using QoS, it would be completely possible to limit the P2P users to only using a percentage of the available bandwidth, and simultaneously guarantee a percentage of bandwidth to AppX..even in times of network congestion. Pretty outstanding!</p>
<p style="text-align: left;">Before we get into the options QoS provides you with, we must first understand the basic QoS models available to you as the network engineer.</p>
<ul style="text-align: left;">
<li>Best Effort: No QoS policy is implemented. All packets receive the same level of service.</li>
</ul>
<ul style="text-align: left;">
<li>Integrated Services Model (IntServ): the first real end-to-end QoS solution. IntServ is based on a per-flow basis, where a &#8220;flow&#8221; is defined as a stream of packets with a common source, destination, and port number. Does not scale well, as each router using IntServ is required to maintain per flow state information.</li>
</ul>
<ul style="text-align: left;">
<li>Differentiated Services (DiffServ): Not a guaranteed service model. Flows are combined into &#8220;classes&#8221;, and are treated on a per class basis. DiffServ is very scalable, and flexible. Packet classification, marking, and conditioning is done at the edge, where the core handles QoS on a Per-Hop Behavior (PHB) based on the packet&#8217;s class. DiffServ is highly scalable</li>
</ul>
<p style="text-align: left;"><strong>QoS: Steps to implementation</strong></p>
<p style="text-align: left;">There are three broad steps required to implement QoS. While the methods of implementation vary, the idea behind each is the same. They are as follows:</p>
<ol style="text-align: left;">
<li><strong>Identify traffic types and requirements</strong></li>
</ol>
<p style="text-align: left;">The first step consists of evaluating business requirements, and the applications/services currently in use on the network- then determining the requirements of each one. The idea behind this step is to later place apps/services with similar requirements into the same class, and then apply policies to each class. For example, if you have VoIP traffic, and have several other important, but not critical applications, you would give priority to the VoIP traffic (therefore getting it&#8217;s own class), and give the lower-priority traffic it&#8217;s own class.</p>
<p style="text-align: left;"><strong></strong>2.<strong> Classifying traffic based on the requirements</strong></p>
<p style="text-align: left;">Classifying traffic is essentially taking a group of applications and placing them into several classes. Marking is also usually done after classifying. Why should you mark? If you don&#8217;t, each device in your network that handles QoS will have to perform a deep-packet inspection along each hop. If you mark at the edge, each device that sees that marking (or &#8220;color&#8221;) after that will know what treatment it should receive already. Classification can be based on the incoming interface, Class of Service (CoS, Layer 2 marking) value, source or destination IP address, IP Precedence/DSCP value, MPLS EXP, or by the application type.</p>
<p style="text-align: left;">3. <strong>Define Policies for each class</strong></p>
<p style="text-align: left;">Now that you&#8217;ve identified business/network requirements, we&#8217;ve classified and marked (you did mark your traffic, didn&#8217;t you?) our traffic..we must do something with all of it! This is where the action happens. This is where you can set a maximum/minimum bandwidth for a class to use, define a priority, or apply congestion management/avoidance (in other words, how to act when there is congestion present..which traffic should be dropped first, etc).</p>
<p style="text-align: left;"><strong>Trust Boundaries</strong></p>
<p style="text-align: left;">So you know the steps to implementing QoS, and classifying/marking..but where do we start? The point at which traffic is marked in our network is defined as the &#8220;trust boundary&#8221;, or where the QoS markings are &#8220;trusted&#8221;. You should always try to mark closest to the source if possible. A common scenario I hear is network admins installing Cisco VoIP phones, with a PC connected to the 3-port switch on the phone. Most Cisco phones will provide a CoS (Layer 2 marking)/IP Precedence (Layer 3 marking) of 5 by default. If you &#8220;trust&#8221; the incoming values at the access switch, your trust boundary is at the IP phone/access switch.  This is ideal. This type of configuration ensures that all of your core/distribution nodes do nothing more then quickly read the markings, and act on the necessary policy for that class instead of deep packet inspection. In the diagram below, we see three different possibilities for trust boundaries:</p>
<p style="text-align: left;"><img class="size-full wp-image-18 alignnone" title="trustboundary" src="http://www.sgtccie.com/blog/wp-content/uploads/2009/03/trustboundary.jpg" alt="trustboundary" width="732" height="111" /></p>
<p style="text-align: left;">A) In this scenario, the IP phone marks it&#8217;s own traffic. This is ideal, however not all IP phones can mark.</p>
<p style="text-align: left;">B) This option is still good, and is a pretty common place to mark- at the access layer. This is generally where you would mark if you just had a regular PC attached, or a phone not capable of marking it&#8217;s own traffic.</p>
<p style="text-align: left;">C) This one is OK. Generally the congestion in networks occur at the WAN links, so as long as you mark before it hits the WAN link, you should still be OK. This is why you generally want to mark as close to the source as possible.</p>
<p style="text-align: left;">
<p style="text-align: left;">Although this has not been a complete overview of QoS, I hope it&#8217;s cleared some things up for those new to QoS. In Part II we&#8217;ll discuss QoS policy, Congestion avoidance/management, and Queueing.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtccie.com/blog/2009/03/qos-essentials-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

