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

<channel>
	<title>Aaron&#039;s Worthless Words &#187; diffserv</title>
	<atom:link href="http://aconaway.com/tag/diffserv/feed/" rel="self" type="application/rss+xml" />
	<link>http://aconaway.com</link>
	<description>Not something you want to hear</description>
	<lastBuildDate>Wed, 08 Sep 2010 14:39:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>ONT Notes &#8211; Queuing</title>
		<link>http://aconaway.com/2010/01/23/ont-notes-queuing/</link>
		<comments>http://aconaway.com/2010/01/23/ont-notes-queuing/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 04:22:06 +0000</pubDate>
		<dc:creator>Aaron Conaway</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[642-845]]></category>
		<category><![CDATA[cbwfq]]></category>
		<category><![CDATA[ccnp]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[classification]]></category>
		<category><![CDATA[diffserv]]></category>
		<category><![CDATA[fifo]]></category>
		<category><![CDATA[llq]]></category>
		<category><![CDATA[marking]]></category>
		<category><![CDATA[ont]]></category>
		<category><![CDATA[policing]]></category>
		<category><![CDATA[pq]]></category>
		<category><![CDATA[qos]]></category>
		<category><![CDATA[queueing]]></category>
		<category><![CDATA[queuing]]></category>
		<category><![CDATA[round robin]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[wfq]]></category>

		<guid isPermaLink="false">http://aconaway.com/?p=452</guid>
		<description><![CDATA[Here are some more notes from my studies.  Of course, no one cares about them but me, but it&#8217;s my blog.  I’m sure someone will find it useful.  Please help to correct dumbass mistakes. Congestion Speed mismatch &#8211; traffic leaves a lower-bandwidth interface than the one it came in on Aggregation problem &#8211; lots of [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some more notes from my studies.  Of course, no one cares about them but me, but it&#8217;s my blog.  I’m sure someone will find it useful.  Please help to correct dumbass mistakes.</p>
<ul>
<li>Congestion
<ul>
<li>Speed mismatch &#8211; traffic leaves a lower-bandwidth interface than the one it came in on</li>
<li>Aggregation problem &#8211; lots of links with one egress of equal bandwidth</li>
<li>Confluence problem &#8211; a bunch of traffic needs to egress out of the same interface</li>
</ul>
</li>
<li>Queuing
<ul>
<li>Transmit queue (TxQ) &#8211; hardware queue; there&#8217;s only one you can&#8217;t touch</li>
<li>Software queue &#8211; where packets wait to be sent; there are many queue-types that you modified to police traffic</li>
</ul>
</li>
<li>FIFO
<ul>
<li>If I beat you to the router, I leave the router first.</li>
<li>Possible long delays, jitter, and starvation</li>
</ul>
</li>
<li>Priority queuing (PQ)
<ul>
<li>Four queues
<ul>
<li>High-priority</li>
<li>Medium-priority</li>
<li>Normal-priority</li>
<li>Low-priority</li>
</ul>
</li>
<li>Scheduler starts from high and work to low</li>
<li>When the high queue is empty, it processes a packet from medium, then starts all over</li>
<li>Can you say starvation?</li>
</ul>
</li>
<li>Round robin queuing (RR)
<ul>
<li>One packet from this queue, one from the next, etc., then start over again</li>
</ul>
</li>
<li>Custom queuing (CQ)
<ul>
<li>Weighted round robin</li>
<li>Queues are given weights (bandwidth guarantees)</li>
</ul>
</li>
<li>Weighted Fair Queuing (WFQ)
<ul>
<li>Default queuing on slow links ( &lt; E1 )</li>
<li>Divides traffic into flows</li>
<li>Equal bandwidth is given to each flow</li>
<li>Provides faster scheduling to low-volume flows</li>
<li>Provides more bandwidth to higher-priority flows</li>
<li>Flows identified by a hash
<ul>
<li>Source IP</li>
<li>Destination IP</li>
<li>Protocol number</li>
<li>ToS</li>
<li>Source port</li>
<li>Destination port</li>
</ul>
</li>
<li>Each unique has is a new flow</li>
<li>No way to allocate bandwidth among the flows</li>
<li>By default, up to 256 queues are made, but that is changeable to a power of 2 between 16 and 4096</li>
<li>If the max number of flows is reached, queues are reused for other flows</li>
<li>If a queue is full, a packet may be dropped.</li>
<li>WFQ early dropping drops packets when the queue reaches the congestive discard threshold (CDT)</li>
<li>Advantages
<ul>
<li>Simple configuration</li>
<li>No starvation</li>
<li>Guarantee processing of all flows</li>
<li>Drops packets from big-hitter flows</li>
<li>Faster service no low-hitters (interactive) flows</li>
<li>Standard on (nearly) all IOS devices</li>
</ul>
</li>
<li>Disadvantages
<ul>
<li>Classification and scheduling are not configurable</li>
<li>Only on slow links</li>
<li>No guarantee of bandwidth or delay</li>
</ul>
</li>
</ul>
</li>
<li>Class-based Weighted Fair Queuing (CBWFQ)
<ul>
<li>User-defined queues for flexibility</li>
<li>Configured with class-maps via MQC</li>
<li>Weights are calculated based on values give in class-map
<ul>
<li>Bandwidth &#8211; guarantee this much bandwidth</li>
<li>Bandwidth percent &#8211; give me this much of the available bandwidth</li>
<li>Bandwidth remaining percent</li>
</ul>
</li>
<li>Advantages
<ul>
<li>User-defined traffic classes</li>
<li>Each queue gets its own bandwidth</li>
<li>Scalability</li>
</ul>
</li>
<li>Disadvantages
<ul>
<li>No delay guarantee (not good for real-time application like voice)</li>
</ul>
</li>
<li>Configuring
<ul>
<blockquote>
<pre>class-map TESTCM1
 match access-group 100
!
class-map TESTCM2
 match access-group 200
!
policy-map TESTPM
 class TESTCM1
  bandwidth 64
 class TESTCM2
  bandwidth 128</pre>
</blockquote>
</ul>
</li>
</ul>
</li>
<li>Low-latency Queuing
<ul>
<li>Includes strict priority queue for delay-sensitive data</li>
<li>Strict priority queue is policed to avoid starvation of other queues</li>
<li>Configured the same way as normal CBWFQ, but with the <em>priority</em> keyword</li>
<li>This configuration makes <em>TESTCM2</em> a priority queue</li>
<blockquote>
<pre>class-map TESTCM1
 match access-group 100
!
class-map TESTCM2
 match access-group 200
!
policy-map TESTPM
 class TESTCM1
  bandwidth 64
 class TESTCM2
  priority bandwidth 128</pre>
</blockquote>
</ul>
</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://aconaway.com/2010/01/23/ont-notes-queuing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ONT Notes – Classification, Marking, and NBAR</title>
		<link>http://aconaway.com/2010/01/22/ont-notes-classification-marking-and-nbar/</link>
		<comments>http://aconaway.com/2010/01/22/ont-notes-classification-marking-and-nbar/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 16:32:58 +0000</pubDate>
		<dc:creator>Aaron Conaway</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[642-845]]></category>
		<category><![CDATA[autoqos]]></category>
		<category><![CDATA[ccnp]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[classification]]></category>
		<category><![CDATA[diffserv]]></category>
		<category><![CDATA[dscp]]></category>
		<category><![CDATA[marking]]></category>
		<category><![CDATA[ont]]></category>
		<category><![CDATA[policing]]></category>
		<category><![CDATA[qos]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://aconaway.com/?p=441</guid>
		<description><![CDATA[Here&#8217;s another set of notes from my ONT studies.  I&#8217;m sure someone will find it useful.  Please help to correct dumbass mistakes. Classification is done with traffic desriptors Ingress interface CoS value on ISL or 802.1P frames Source/destination IP address IP Precedence or DSCP value MPLS EXP Application type Layer 3 QoS Type of Service [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s another set of notes from my ONT studies.  I&#8217;m sure someone will find it useful.  Please help to correct dumbass mistakes.</p>
<ul>
<li>Classification is done with traffic desriptors
<ul>
<li>Ingress interface</li>
<li>CoS value on ISL or 802.1P frames</li>
<li>Source/destination IP address</li>
<li>IP Precedence or DSCP value</li>
<li>MPLS EXP</li>
<li>Application type</li>
</ul>
</li>
<li>Layer 3 QoS
<ul>
<li>Type of Service (ToS) is 8-bit field.</li>
<li>First 3 bits of ToS are the IP precedence.</li>
<li>First 6 bits of ToS are the DSCP value.</li>
<li>Last 2 bits of ToS are explicit congestion notification (ECN).</li>
</ul>
</li>
<li>Layer 2 QoS
<ul>
<li>Ethernet
<ul>
<li>Class of Service (CoS)</li>
<li>On 802.1P frame</li>
<li>3-bit priority (PRI) field
<ul>
<li>000 &#8211; Routine &#8211; Best-effort</li>
<li>001 &#8211; Priority &#8211; Medium priority</li>
<li>010 &#8211; Immediate &#8211; High priority</li>
<li>011 &#8211; Flash &#8211; Call signaling</li>
<li>100 &#8211; Flash-Override &#8211; Video conferencing</li>
<li>101 &#8211; Critical &#8211; Voice bearer</li>
<li>110 &#8211; Internet &#8211; Reserved</li>
<li>111 &#8211; Network &#8211; Reserved</li>
</ul>
</li>
</ul>
</li>
<li>Frame Relay
<ul>
<li>1-bit discard eligible (DE) field</li>
</ul>
</li>
<li>ATM
<ul>
<li>1-bit cell loss priority (CLP) field</li>
</ul>
</li>
<li>MPLS (layer 2 1/2)
<ul>
<li>3-bit experimental (EXP) field</li>
<li>By default, the 3 most significant ToS bits (IP Precedence bits) are copied to EXP</li>
</ul>
</li>
</ul>
</li>
<li>Per-hop Behavior (PHB)
<ul>
<li>&#8220;an externally observable fowarding behavior of a network node toward a group of IP packets that have the same DSCP value&#8221;</li>
<li>In other words, treat packets with the same DSCP value in the same manner &#8211; scheduling, queuing, policing, etc.</li>
<li>Behavior aggregate (BA) is a group of packets with the same DSCP value</li>
</ul>
</li>
<li>DSCP
<ul>
<li>DSCP is chopped up into 4 PHBs
<ul>
<li>Class selector PHB &#8211; (000) old IP precedence compatibility</li>
<li>Default PHB &#8211; (000) best effort</li>
<li>Assured forwarding (AF) PHB &#8211; (001, 010, 011, 100) guarantee bandwidth
<ul>
<li>Provides 4 queues for 4 classes of traffic (AF1-4)</li>
<li>Also specifies drop preference (ex., AF41, A13) where second number is preference (higher is more probable to be dropped)</li>
<li>Each queue must have (W)RED to avoid drops</li>
<li>No queue is any better than the other</li>
<li>Backward compatible with IP precedence</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>
<ul>
<li>Expedited forwarding (EF) PHB &#8211; (101) low delay
<ul>
<li>Minimum delay</li>
<li>Bandwidth guarantee</li>
<li>Policing</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Trust boundaries
<ul>
<li>Establish DSCP values as close to the source as possible
<ul>
<li>On the device (IP phone), access switch, or distribution switch</li>
<li>The core should never assign DSCP values</li>
</ul>
</li>
<li>Only trust DSCP values from devices you trust</li>
<li>Examine and rewrite values from untrust sources</li>
</ul>
</li>
<li>Network-based Application Recognition (NBAR)
<ul>
<li>Protocol discovery &#8211; discovers what protocols you&#8217;re running on your network</li>
<li>Traffic statistics collection &#8211; keeps tracks of stats on each protocol</li>
<li>Traffic classification &#8211; NBAR protocols can be used in <em>class-maps</em> to define traffic to be services</li>
<li>Packet description language models (PDLMs) &#8211; table of what protocols NBAR recognizes</li>
<li>Limitations
<ul>
<li>Doesn&#8217;t work on EtherChannel interfaces</li>
<li>Only handles 24 URLs, hosts, or MIME types</li>
<li>Only analyzes first 400 bytes of the packets</li>
<li>Requires CEF</li>
<li>Doesn&#8217;t work on HTTPS, multicasts, or fragments</li>
<li>Ignored traffic destined for the router itself</li>
</ul>
</li>
<li>NBAR commands
<ul>
<li>Router(config)# <strong>ip nbar pdlm </strong><em>pdlm-name</em> : Update the PDLM table</li>
<li>Router(config)# <strong>ip nbar port-map </strong><em>protocol-name</em><em></em><strong> [tcp|udp] </strong><em>port-number</em> : Adds an entry to the PDLM table</li>
<li>Router# <strong>show ip nbar port-map</strong> <em>protocol-name</em> : Shows what&#8217;s in the PDLM table</li>
<li>Router# <strong>show ip nbar protocol-discovery</strong> : Shows what&#8217;s been discovered</li>
<li>Router(config-cmap)# <strong>match protocol</strong> <em>name </em>: a class-map match for an NBAR-discovered protocol</li>
</ul>
</li>
<li>Special protocol matching
<ul>
<li>Can match beyond the port number with deep packet inspection</li>
<li>Matches HTTP hostname, URL, or MIME type</li>
<li>Matches fast-track P2P</li>
<li>Matches RTP content</li>
</ul>
</li>
</ul>
</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://aconaway.com/2010/01/22/ont-notes-classification-marking-and-nbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ONT Notes &#8211; Intro to QoS</title>
		<link>http://aconaway.com/2010/01/20/ont-notes-intro-to-qos/</link>
		<comments>http://aconaway.com/2010/01/20/ont-notes-intro-to-qos/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 03:21:40 +0000</pubDate>
		<dc:creator>Aaron Conaway</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[642-845]]></category>
		<category><![CDATA[autoqos]]></category>
		<category><![CDATA[ccnp]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[diffserv]]></category>
		<category><![CDATA[intserv]]></category>
		<category><![CDATA[ont]]></category>
		<category><![CDATA[qos]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://aconaway.com/?p=436</guid>
		<description><![CDATA[I&#8217;ll try to keep it a little shorter this time. Major issues for converged enterprise networks Available bandwidth: competition among applications Fixes Increase bandwidth: More power! Properly queue based on classification and marking: QoS Compress: cRTP, TCP header compression, etc. Delay: Lead time to get a packet to the destination Types of delay Processing delay: [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll try to keep it a little shorter this time.</p>
<p><strong>Major issues for converged enterprise networks</strong></p>
<ul>
<li>Available bandwidth: competition among applications
<ul>
<li>Fixes
<ul>
<li>Increase bandwidth: More power!</li>
<li>Properly queue based on classification and marking: QoS</li>
<li>Compress: cRTP, TCP header compression, etc.</li>
</ul>
</li>
</ul>
</li>
<li>Delay: Lead time to get a packet to the destination
<ul>
<li>Types of delay
<ul>
<li>Processing delay: routing, switch delay</li>
<li>Queuing delay: how long a frame stays in an output queue</li>
<li>Serialization delay:  how long to put the frame on the wire</li>
<li>Propagation delay: the time to cross the physical medium</li>
</ul>
</li>
</ul>
</li>
<li>Jitter (delay variation): Variation is the delay
<ul>
<li>Different delays mean different arrival times</li>
<li>De-jitter buffers save up packets to reduce jitter (like the old CD writers)</li>
<li>Fixes
<ul>
<li>More bandwidth</li>
<li>Prioritize sensitive data and forward first</li>
<li>Remark (reclassify) packets based on sensitivity</li>
<li>Enable L2 payload compression: make sure compression delay isn&#8217;t worse than the jitter</li>
<li>Use header compression</li>
</ul>
</li>
</ul>
</li>
<li>Packet loss: Packets are lost in the network somewhere
<ul>
<li>Fixes
<ul>
<li>More bandwidth</li>
<li>Increase buffers space: more room for the queue on the interface</li>
<li>Provide guaranteed bandwidth: Queuing and QoS</li>
<li>Congestion avoidance
<ul>
<li>Random Early Detection (RED) and weighted RED (WRED) drop packets before the queue is full</li>
<li>Selective dropping is better than FIFO or LIFO dropping</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>QoS History</strong></p>
<ul>
<li>Priority queuing: gives certain data the right-of-way for transmission</li>
<li>Weighted Fair Queuing (WFQ): prevents small packets from waiting too long for big packets</li>
<li>RTP priority queuing: Gives voice packets the right-of-way</li>
<li>CAC: Makes sure we don&#8217;t fill up the queue or pipe with voice traffic</li>
</ul>
<p><strong>Implementing QoS</strong></p>
<ul>
<li>Step 1: Identify traffic types and requirements
<ul>
<li>Network audit</li>
<li>Business audit</li>
<li>Define bandwidth requirements for each class found</li>
</ul>
</li>
<li>Step 2: Classify the traffic
<ul>
<li>Common classes
<ul>
<li>VOIP</li>
<li>Mission-critical</li>
<li>Signal traffic: for VOIP</li>
<li>Transactional application: SAP, ERP</li>
<li>Best-effort: Everything else</li>
<li>Scavenger: Crap you don&#8217;t care about like P2P and your boss&#8217;s email</li>
</ul>
</li>
</ul>
</li>
<li>Step 3: Define policies for each class
<ul>
<li>Tasks for each class
<ul>
<li>Set max bandwidth</li>
<li>Set min bandwidth</li>
<li>Assign relative priorities</li>
<li>Apply congestion avoidance, congestion management, etc.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>QoS Models</strong></p>
<ul>
<li>Best-effort: no QoS
<ul>
<li>Scalable</li>
<li>Easy</li>
<li>No service guarantee: doesn&#8217;t care what you&#8217;re trying to do</li>
<li>No service differentiation: all traffic is equal</li>
</ul>
</li>
<li>Integrated Service (IntServ)
<ul>
<li>Hard-QoS</li>
<li>Uses RSVP to guarantee bandwidth through the entire path</li>
<li>Requires
<ul>
<li>Admission control</li>
<li>Classification</li>
<li>Polices the traffic (ceiling)</li>
<li>Queuing</li>
<li>Scheduling</li>
</ul>
</li>
<li>Advantages
<ul>
<li>End-to-end resource admission control</li>
<li>Per-request policy admission control</li>
<li>Signaling of dynamic ports</li>
</ul>
</li>
<li>Disadvantages
<ul>
<li>Continuous signaling</li>
<li>Not scalable</li>
</ul>
</li>
</ul>
</li>
<li>Differentiated Services (DiffServ)
<ul>
<li>Soft-QoS</li>
<li>Configured on each hop</li>
<li>Traffic is classified</li>
<li>Enforces different treatment on different classes</li>
<li>Defined based on business requirements</li>
<li>Benefits
<ul>
<li>Scalable</li>
<li>Supports lots of service levels</li>
</ul>
</li>
<li>Drawbacks
<ul>
<li>No absolute guarantee of service</li>
<li>Complex configuration throughout network</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>QoS Implementation Methods</strong></p>
<ul>
<li>CLI
<ul>
<li>Old school</li>
<li>Not used any more</li>
</ul>
</li>
<li>Modules QoS CLI (MQC)
<ul>
<li>Step 1: <em>class-map</em></li>
<li>Step 2: <em>policy-map</em></li>
<li>Step 3: <em>service-policy</em></li>
</ul>
</li>
<li>AutoQoS
<ul>
<li>Automatically generates classes and policies based on traffic it sees</li>
<li>Super-simple</li>
<li>Requires CEF, NBAR, and correct bandwidth statements</li>
</ul>
</li>
<li>SDM QoS Wizard
<ul>
<li>Next, next, next</li>
<li>Can be used to implement, monitor, or troubleshoot QoS</li>
</ul>
</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://aconaway.com/2010/01/20/ont-notes-intro-to-qos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
