<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Keeping It Classless</title>
	
	<link>http://keepingitclassless.net</link>
	<description>Perspectives on Datacenter, Internetworking, and Disruptive Tech</description>
	<lastBuildDate>Wed, 19 Jun 2013 00:20:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/KeepingItClassless" /><feedburner:info uri="keepingitclassless" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>KeepingItClassless</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Why We Want to Kill Spanning Tree</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/QdPCjzaGgtU/</link>
		<comments>http://keepingitclassless.net/2013/06/why-we-want-to-kill-spanning-tree/#comments</comments>
		<pubDate>Tue, 18 Jun 2013 14:30:18 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Route/Switch]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[fabricpath]]></category>
		<category><![CDATA[is-is]]></category>
		<category><![CDATA[ospf]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[routing protocol]]></category>
		<category><![CDATA[spanning tree]]></category>
		<category><![CDATA[stp]]></category>
		<category><![CDATA[switching]]></category>
		<category><![CDATA[trill]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3970</guid>
		<description><![CDATA[To say that Ethernet as a L2 protocol is well-known is an understatement &#8211; it&#8217;s in every PC network card, and every network closet. Back during the inception of Ethernet, the world needed an open, efficient, standardized method of communicating between nodes on a LAN. Widely regarded as the &#8220;mother of the Internet&#8221; for many [...]]]></description>
				<content:encoded><![CDATA[<p>To say that Ethernet as a L2 protocol is well-known is an understatement &#8211; it&#8217;s in every PC network card, and every network closet. Back during the inception of Ethernet, the world needed an open, efficient, standardized method of communicating between nodes on a LAN. Widely regarded as the &#8220;mother of the Internet&#8221; for many reasons &#8211; not the least of which is the invention of the Spanning Tree Protocol &#8211; Radia Perlman equated the wide proliferation of Ethernet to the same events that have made English such as popular language on Earth. It&#8217;s not necessarily the fact that English is by any means the &#8220;best&#8221; language, it&#8217;s the circumstances during the formative years that determine the future.</p>
<p><span id="more-3970"></span></p>
<p>I want to take a second to call out a very special resource that I encourage you to take the time and watch. It&#8217;s almost an hour long, but it&#8217;s worth it. Hearing about the history behind all of the protocols we now use and probably largely take for granted, in addition to the math behind it all, is a great way of getting perspective.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/N-25NoCOnP4?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>An Ethernet-based LAN is commonly referred to as a &#8220;broadcast&#8221; network. Any CCNA can tell you that a broadcast domain is the area in which a broadcast sent by a single node reaches all other nodes. This is a data-link layer concept, but easily most widely attributed to Ethernet. First off, if a unicast destination address of an Ethernet frame is not known to a switch, it will be flooded out all other ports by default. This is Ethernet&#8217;s way of giving the Ethernet frame the best chance at reaching it&#8217;s destination. Also, any frames addressed to FF:FF:FF:FF:FF:FF are forwarded out all ports.</p>
<p>Ethernet has one way of preventing loops, and that&#8217;s split horizon &#8211; meaning that broadcast frames entering a switchport are not re-sent out the same port that it came in on. However, if a loop is formed using more than 2 switches, (as is common) then this rule would not apply. As Radia pointed out, Ethernet was not originally meant to be forwarded &#8211; it was originally meant to provide link layer connectivity between two points. The Ethernet header has no hop count like a Layer 3 protocol does, so loops can get out of control with only slightly complicated topologies. So, Spanning Tree was born to serve as the other loop-prevention mechanism. Find the less preferred path(s) through the switched LAN and effectively disable them, which is the most barbaric way of creating a loop free topology.</p>
<p>The general consensus is &#8211; <span style="text-decoration: underline;"><strong>spanning tree sucks.</strong></span> Obviously Radia invented it for a reason &#8211; STP is actually very valuable, seeing as without it, our networks would loop out of control. However, therein lies &#8220;the beef&#8221; &#8211; we hate STP because it is necessary. Ethernet is inherently a broadcast-oriented protocol, and the very native functionality of switching is what&#8217;s responsible for causing loops. Using STP means that we have to kill valuable bandwidth that we as customers have purchased. Why can&#8217;t we use that port that&#8217;s been turned off?</p>
<p>Meanwhile, Layer 3 and the protocols used to build Layer 3 topologies (i.e. routing protocols) function ENTIRELY differently! The forwarding decision is different, loop prevention is handled much differently (more than just the addition of a hop count).</p>
<p>Thinking about all of this, I had an epiphany:</p>
<p class="note">Classical Ethernet is to a distance vector routing protocol as TRILL is to a link-state routing protocol.</p>
<p>As an Ethernet switch, you learn a MAC address on a port by looking at the source address on received frames. You know that traffic destined for that address needs to go out that port, but that&#8217;s it. You don&#8217;t have a holistic view of the network. An Ethernet switch&#8217;s perspective is completely locally significant.</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram11.png"><img class="aligncenter  wp-image-4009" alt="diagram11 Why We Want to Kill Spanning Tree" src="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram11.png" width="805" height="483" title="Why We Want to Kill Spanning Tree" /></a></p>
<p>This egress link may be the best way out, it may not be. I&#8217;ll tell you one thing &#8211; if STP decides that link needs to be blocked, it won&#8217;t matter anyways.</p>
<p>At the end of the day, this isn&#8217;t that great. Ethernet isn&#8217;t used for L3 connectivity for just this reason &#8211; suboptimal routing choices are made because of this limited perspective, and we&#8217;re not using IP to make these forwarding decisions because IP works on another level entirely &#8211; namely, to move packets from one Ethernet to another, or to other mediums. Distance Vector routing protocols in L3 function very similarly &#8211; they use metric math to figure out a loop-free topology, because they only know the small amount of information about each prefix that a neighboring router will tell it. There is no holistic viewpoint. This is the reason why distance vector is commonly referred to as &#8220;routing by rumor&#8221;.</p>
<p>So&#8230;we need to find a way to move frames through an Ethernet by using similar forwarding mechanisms to IP, but still look like an Ethernet. Enter TRILL, stage right.</p>
<p>TRILL takes the best parts of link-state routing protocols (neighbor relationships, full knowledge of topology for better forwarding decisions) and applies it to Layer 2. Now, we have bridges that have holistic views of the network, and are able to intelligently deliver frames along every path. We no longer need to kill a link to deliver a loop-free topology.</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram21.png"><img class="aligncenter  wp-image-4013" alt="diagram21 Why We Want to Kill Spanning Tree" src="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram21.png" width="699" height="617" title="Why We Want to Kill Spanning Tree" /></a></p>
<p class="note">Fun Fact: IS-IS was chosen over OSPF for a few reasons, but a notable one is the fact that OSPF is pretty much purpose built for IP/IPv6. IS-IS works directly on top of Layer 2 so there&#8217;s no need to mess with IP addresses in the configuration of TRILL.</p>
<p>Since TRILL operates by encapsulating the original Ethernet frame and &#8220;routing&#8221; it at Layer 2 intelligently, we don&#8217;t need to rewrite our host networking stacks. Even unknown unicast addresses don&#8217;t cause problems, because the TRILL LSDB has enough information to get the frame to where it needs to go. (we just care about getting to the last or egress rbridge). On top of a TRILL header, we have a completely new Ethernet frame on top of it all, where the addressing is done on a next-hop basis (sound a little like IP routing now?).</p>
<div class="wp-caption aligncenter" style="width: 592px"><a href="http://www.cisco.com/web/about/ac123/ac147/images/ipj/ipj_14-3/143_trill_fig08_lg.jpg"><img alt="143 trill fig08 lg Why We Want to Kill Spanning Tree" src="http://www.cisco.com/web/about/ac123/ac147/images/ipj/ipj_14-3/143_trill_fig08_lg.jpg" width="582" height="367" title="Why We Want to Kill Spanning Tree" /></a><p class="wp-caption-text">From <a href="http://www.cisco.com/web/about/ac123/ac147/images/ipj/ipj_14-3/143_trill_fig08_lg.jpg">Cisco</a></p></div>
<h2>Conclusion</h2>
<p>I didn&#8217;t go into detail on FabricPath specifically in this post, but I will mention <a href="http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_14-3/143_trill.html" target="_blank">this article</a> by Cisco on TRILL which is actually co-written by Radia Perlman. It&#8217;s a pretty good explanation of the reasons behind TRILL and how it works on the inside.</p>
<p>At the end of the day, TRILL is a step towards the original intent that we should have had for our LANs but because of the history were never able to achieve. Think of all the things we&#8217;ve learned about IPv6 now that it&#8217;s approaching higher adoption rates. It&#8217;s impossible to anticipate every little problem that a protocol may produce, but bandaids like STP and TRILL are necessary to continue to evolve the network, and overcome the scalability challenges that are being presented every single day.</p>
<p>&nbsp;</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3970" width="1" height="1" style="display: none;" title="Why We Want to Kill Spanning Tree" alt=" Why We Want to Kill Spanning Tree" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/QdPCjzaGgtU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/06/why-we-want-to-kill-spanning-tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/06/why-we-want-to-kill-spanning-tree/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=why-we-want-to-kill-spanning-tree</feedburner:origLink></item>
		<item>
		<title>Cisco UCS ASCII Art</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/XtHLzCQbMe0/</link>
		<comments>http://keepingitclassless.net/2013/06/cisco-ucs-ascii-art/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 16:33:51 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[fex]]></category>
		<category><![CDATA[iom]]></category>
		<category><![CDATA[ucs]]></category>
		<category><![CDATA[vic]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3997</guid>
		<description><![CDATA[A while back I wrote about the problems with using some of the newer 3rd generation blade hardware from Cisco with older generations of the chassis FEX/IOM. Because of the way that the VIC and the chassis IOM interact, certain combinations yield different amounts of aggregate bandwidth, and certain combinations don&#8217;t work at all, as [...]]]></description>
				<content:encoded><![CDATA[<p>A while back <a href="http://keepingitclassless.net/2012/10/cisco-ucs-b200-m3-invalid-adaptor-iocard/" target="_blank">I wrote about the problems</a> with using some of the newer 3rd generation blade hardware from Cisco with older generations of the chassis FEX/IOM. Because of the way that the VIC and the chassis IOM interact, certain combinations yield different amounts of aggregate bandwidth, and certain combinations don&#8217;t work at all, as was evidenced in that post.</p>
<p><span id="more-3997"></span></p>
<p>As a reminder, here are the valid combinations (these are still accurate to my knowledge, but may change in a few weeks if any new tech is announced at Cisco Live) of FEX and blade VIC:</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2012/10/compatibility-matrix.png"><img class="aligncenter  wp-image-2503" alt="compatibility matrix Cisco UCS ASCII Art" src="http://keepingitclassless.net/wp-content/uploads/2012/10/compatibility-matrix.png" width="703" height="436" title="Cisco UCS ASCII Art" /></a></p>
<p>&nbsp;</p>
<p>I was reminded by a TAC engineer of a command I&#8217;d heard of back when I first learned UCS but had totally forgotten.</p>
<p>Through the (heavily underestimated in my opinion) command line of the UCS Fabric Interconnects, you can log directly into the CLI of the FEX/IOM themselves, and run commands that give an <span style="text-decoration: underline;"><strong>ascii-based visual representation of the current connectivity between IOM and blades in a chassis</strong></span>.</p>
<pre class="brush: text; gutter: true">F340-31-16-UCS-2-B# connect iom 1
fex-1# show platform software redwood sts
Board Status Overview:
 legend:
        &#039; &#039;= no-connect
        X  = Failed
        -  = Disabled
        :  = Dn
        |  = Up
        ^  = SFP+ present
        v  = Blade Present
------------------------------

        +---+----+----+----+
        |[$]| [$]| [$]| [$]|
        +---+----+----+----+
          |    |    |    |
        +-+----+----+----+-+
        | 0    1    2    3 |
        | I    I    I    I |
        | N    N    N    N |
        |                  |
        |      ASIC 0      |
        |                  |
        | H H H H H H H H  |
        | I I I I I I I I  |
        | 0 1 2 3 4 5 6 7  |
        +-+-+-+-+-+-+-+-+--+
          - | | | | : | |
         +-+-+-+-+-+-+-+-+
         |-|v|v|v|v|v|v|v|
         +-+-+-+-+-+-+-+-+
Blade:    8 7 6 5 4 3 2 1</pre>
<p>Wild, right? Keep in mind that unless you have a 2104 IOM installed, this command won&#8217;t work, as &#8220;redwood&#8221; is the code name for that generation of FEX. If you want to do the same for the 220X series, use the keyword &#8220;woodside&#8221;:</p>
<pre class="brush: text; gutter: true">fex-1# show platform software woodside sts
Board Status Overview:
 legend:
        &#039;  &#039;= no-connect
        X   = Failed
        -   = Disabled
        :   = Dn
        |   = Up
        [$] = SFP present
        [ ] = SFP not present
        [X] = SFP validation failed
------------------------------

(FINAL POSITION TBD)     Uplink #:        1  2  3  4  5  6  7  8
                      Link status:        |  |  |  |  :  :  :  :
                                        +-+--+--+--+--+--+--+--+-+
                              SFP:       [$][$][$][$][ ][ ][ ][ ]
                                        +-+--+--+--+--+--+--+--+-+
                                        | N  N  N  N  N  N  N  N |
                                        | I  I  I  I  I  I  I  I |
                                        | 0  1  2  3  4  5  6  7 |
                                        |                        |
                                        |        NI (0-7)        |
                                        +------------+-----------+
                                                     |
             +-------------------------+-------------+-------------+---------------------------+
             |                         |                           |                           |
+------------+-----------+ +-----------+------------+ +------------+-----------+ +-------------+----------+
|        HI (0-7)        | |        HI (8-15)       | |       HI (16-23)       | |        HI (24-31)      |
|                        | |                        | |                        | |                        |
| H  H  H  H  H  H  H  H | | H  H  H  H  H  H  H  H | | H  H  H  H  H  H  H  H | | H  H  H  H  H  H  H  H |
| I  I  I  I  I  I  I  I | | I  I  I  I  I  I  I  I | | I  I  I  I  I  I  I  I | | I  I  I  I  I  I  I  I |
| 0  1  2  3  4  5  6  7 | | 8  9  1  1  1  1  1  1 | | 1  1  1  1  2  2  2  2 | | 2  2  2  2  2  2  3  3 |
|                        | |       0  1  2  3  4  5 | | 6  7  8  9  0  1  2  3 | | 4  5  6  7  8  9  0  1 |
+-+--+--+--+--+--+--+--+-+ +-+--+--+--+--+--+--+--+-+ +-+--+--+--+--+--+--+--+-+ +-+--+--+--+--+--+--+--+-+
 [ ][ ][ ][ ][ ][ ][ ][ ]   [ ][ ][ ][ ][ ][ ][ ][ ]   [ ][ ][ ][ ][ ][ ][ ][ ]   [ ][ ][ ][ ][ ][ ][ ][ ]
+-+--+--+--+--+--+--+--+-+ +-+--+--+--+--+--+--+--+-+ +-+--+--+--+--+--+--+--+-+ +-+--+--+--+--+--+--+--+-+
  -  -  -  -  |  |  |  |     -  -  -  :  |  |  |  |     -  -  -  :  -  -  -  :     |  |  |  |  -  |  -  |
  3  3  3  2  2  2  2  2     2  2  2  2  2  1  1  1     1  1  1  1  1  1  1  9     8  7  6  5  4  3  2  1
  2  1  0  9  8  7  6  5     4  3  2  1  0  9  8  7     6  5  4  3  2  1  0
  \__\__/__/  \__\__/__/     \__\__/__/  \__\__/__/     \__\__/__/  \__\__/__/     \__\__/__/  \__\__/__/  
    blade8      blade7         blade6      blade5         blade4      blade3         blade2      blade1</pre>
<p>This is generated in real-time when you run the command. As you can see, you can not only view the status of the physical ports where the FEX is connected to the FI, but also the backplane ports that typically are very misunderstood. The legend is there, you can see the connectivity provided to each blade.</p>
<p>I highly encourage you to visit <a href="http://www.reddit.com/r/Cisco/comments/1c8iz0/cisco_ucs_b200_m3_invalid_adapter_iocard_gotcha/" target="_blank">this subreddit</a>, the TAC engineer on that thread did a great job of explaining exactly the reason for all of this connectivity.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3997" width="1" height="1" style="display: none;" title="Cisco UCS ASCII Art" alt=" Cisco UCS ASCII Art" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/XtHLzCQbMe0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/06/cisco-ucs-ascii-art/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/06/cisco-ucs-ascii-art/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cisco-ucs-ascii-art</feedburner:origLink></item>
		<item>
		<title>[Code] Install Boot From SAN Policy – UCS PowerTool</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/b8V8iQhvBtc/</link>
		<comments>http://keepingitclassless.net/2013/06/code-install-boot-from-san-policy-ucs-powertool/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 05:23:07 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[bfs]]></category>
		<category><![CDATA[boot from san]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[powertool]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[ucs]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3994</guid>
		<description />
				<content:encoded><![CDATA[<p><script src="https://gist.github.com/Mierdin/5779629.js"></script></p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3994" width="1" height="1" style="display: none;" title="[Code] Install Boot From SAN Policy   UCS PowerTool" alt=" [Code] Install Boot From SAN Policy   UCS PowerTool" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/b8V8iQhvBtc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/06/code-install-boot-from-san-policy-ucs-powertool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/06/code-install-boot-from-san-policy-ucs-powertool/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=code-install-boot-from-san-policy-ucs-powertool</feedburner:origLink></item>
		<item>
		<title>Cisco VM-FEX and the Nexus 1000v</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/LP5AWPEqXzc/</link>
		<comments>http://keepingitclassless.net/2013/06/cisco-vm-fex-and-the-nexus-1000v/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 15:00:13 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[1000v]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[ucs]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vm-fex]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[vsphere]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3922</guid>
		<description><![CDATA[Many of those that have supported a vSphere-based virtualization infrastructure for any length of time have probably heard of the Cisco Nexus 1000v. I&#8217;ve written a few posts that mention it, and I&#8217;ve been deploying the product quite successfully for the past few years. Even cooler, the Nexus 1000v is now available for Hyper-V as well. [...]]]></description>
				<content:encoded><![CDATA[<p>Many of those that have supported a vSphere-based virtualization infrastructure for any length of time have probably heard of the Cisco Nexus 1000v. I&#8217;ve written a few posts that mention it, and I&#8217;ve been deploying the product quite successfully for the past few years. Even cooler, <a href="http://www.cisco.com/en/US/products/ps13056/index.html" target="_blank">the Nexus 1000v is now available for Hyper-V</a> as well.</p>
<p>For those that are not familiar with the idea of distributed switches in general, I&#8217;ll overview the concept briefly. Let&#8217;s assume you&#8217;ve got a virtual deployment that has quite a few hosts. Each host has one or more virtual switches, and each host maintains the control and forwarding functions locally inside the software switch of the hypervisor.</p>
<p style="text-align: center;"> <a href="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram1.png"><img class="aligncenter  wp-image-3929" alt="diagram1 Cisco VM FEX and the Nexus 1000v" src="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram1.png" width="657" height="308" title="Cisco VM FEX and the Nexus 1000v" /></a></p>
<p>Eventually you tire of administering the individual hosts&#8217; vSwitch configuration to make changes, so you decide to figure out out to do it centrally. Those that lean more towards a virtualization skillset tend to opt for the VMware Distributed Switch. Strictly speaking, and especially for the purposes of this post, the VDS is merely one type of distributed switch. The general idea is that the control and configuration functions of a vSwitch are abstracted, leaving only the software needed to actually move packets around (data plane). This allows for a centralized point of management and control.</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram2.png"><img class="aligncenter  wp-image-3933" alt="diagram2 Cisco VM FEX and the Nexus 1000v" src="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram2.png" width="656" height="496" title="Cisco VM FEX and the Nexus 1000v" /></a></p>
<p class="note">This is a logical diagram of course &#8211; the vast majority of deployments (for either VDS or Nexus 1000v) results in the control plane actually residing on a virtual machine in the environment being controlled. Does this sound dangerous? It is -unless you know what you&#8217;re doing and remember not to trip over your own virtual cables.</p>
<h2>Nexus 1000v</h2>
<p>I mentioned that the VDS is really one implementation; in this diagram, the function of &#8220;control&#8221; is fulfilled by vCenter. Let&#8217;s refer back to our scenario, and say that you&#8217;re either a Cisco-savvy virtualization administrator, or that someone else is, and you&#8217;d rather they manage the network switching functions in the hypervisor. This is a good use case for the Nexus 1000v, where the data plane is fulfilled by a Cisco Virtual Ethernet Module (VEM) and the control plane is fulfilled by the Virtual Supervisor Module (VSM). However, the architecture is the same &#8211; abstracted control plane, distributed forwarding plane.</p>
<p class="note">Want to know what it&#8217;s like when this whole architecture is creating using Open Source Software? Check out <a href="http://openvswitch.org/" target="_blank">Open vSwitch</a> &#8211; wicked cool stuff.</p>
<p>The Nexus 1000v VSM is run either as a virtual machine inside the environment, or inside a separate piece of gear called the <a href="http://www.cisco.com/en/US/products/ps12752/index.html" target="_blank">Nexus 1100 appliance</a>. (It&#8217;s basically a server with a locked-down hypervisor on it. By the way &#8211; it is not a friend of mine.) The benefits of the VDS in general are realized here, with some added benefits like the familiar NX-OS CLI for those that want it, plus a myriad of features that the VMware VDS still has yet to implement &#8211; most notably in my opinion: CoS tagging for virtual port groups.</p>
<p>The Nexus 1000v works by communicating directly with the virtual line cards inside each host using a Control VLAN, as well as direct communication with vCenter, for things like syncing configuration of port groups, etc.</p>
<h2>VM-FEX</h2>
<p>VM-FEX is actually not too different from the Nexus 1000v in terms of architecture. Both solutions utilize a Cisco-created software module for distributed forwarding functionality (VEM). However, the control plane is found in a different location than with the Nexus 1000v, and the reasons why you would use VM-FEX are quite different, in my opinion.</p>
<p>First off, if you haven&#8217;t seen the below video by <a href="https://twitter.com/UCSguru" target="_blank">UCSGuru</a>, take a moment to watch &#8211; it will be worth your while, and he does a far better explanation of VM-FEX (and FEX in general) than I could do here.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/8uCU9ghxJKg?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>As you can see, the purpose of VM-FEX is twofold: first off, we want the control plane to reside in some kind of central location, most likely the top of rack or end of row switch. This means fewer points of management while maintaining scalability. The other purpose is to push (or extend &#8211; see?) the fabric ever closer to our workloads/virtual machines so that this simplicity is realized within the hypervisor.</p>
<p>The Nexus 7000, 6000, and 5000 series switches, and the UCS Fabric Interconnects (remember that &#8220;VM&#8221; tab that no one ever touches?) are all able to serve as the control interface. This means that we can manage the remote &#8220;linecards&#8221; that represent each host through a central point, same as the Nexus 1000v.</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram3.png"><img class="aligncenter  wp-image-3967" alt="diagram3 Cisco VM FEX and the Nexus 1000v" src="http://keepingitclassless.net/wp-content/uploads/2013/06/diagram3.png" width="658" height="494" title="Cisco VM FEX and the Nexus 1000v" /></a></p>
<p>That&#8217;s not the only difference between VM-FEX and the Nexus 1000v &#8211; in my opinion, if it just came down to centralized management, the Nexus 1000v is a much better way to go, but we&#8217;ll get to that. VM-FEX goes a step further, allowing virtual machines to plug directly into the fabric being presented (Either a Nexus switch or Fabric Interconnect). Just like all FEX technology from Cisco, this is loosely based on <a href="http://www.ieee802.org/1/pages/802.1br.html" target="_blank">802.1br</a> (Cisco&#8217;s flavor is VN-TAG). As you saw in the video, a big reasons to run VM-FEX is indeed the centralized management component &#8211; it, like the 1000v, creates a VDS in vSphere, and allows you to administer the available network port groups from a centralized point. However, with VM-FEX being a hardware-based solution, you get to plug each virtual machine directly into the fabric (The limit with the M81KR is 116 virtual adapters per host).</p>
<p><a href="http://video.cisco.com/video/TechWiseTV/In-the-Lab/In-the-Lab-N1KV-and-VM-FEX/TechWiseTV/IntheLab/2180653168001/" target="_blank">Cisco says</a> that the 1000v is designed for configuration simplicity &#8211; offering a comfortable NX-OS CLI in the virtual space, designed for non-critical virtual machines only. Their recommendation for all &#8220;critical&#8221;, gotta-be-up-or-bust systems, you deploy VM-FEX.</p>
<p>By the way &#8211; VM-FEX can now also be deployed with Windows Server 2012 and Hyper-V. Since the Nexus 1000v and VM-FEX both use the Cisco VEM software module to allow the control plane to interact directly with the hypervisor, both products can now be used with Hyper-V .</p>
<h2>Pros and Cons</h2>
<p><span style="text-decoration: underline;"><strong>Hardware Requirements</strong></span> &#8211; A Cisco VIC (i.e. 1240, 1280 or m81KR &#8220;Palo&#8221;) is required to perform VM-FEX in hardware. There are ways to perform VM-FEX using software, when cards from QLogic or Emulex are present, but this defeats the purpose of VM-FEX in the first place, so the point is moot. Bottom line, if you really want to take advantage of this, you need a Cisco VIC, which means you need to be running Cisco UCS. The 1000v is a software solution, so the compatibility requirements are with the hypervisor and management software (like vCenter), not with the underlying hardware.</p>
<p><span style="text-decoration: underline;"><strong>Limitations and Maximums</strong></span> &#8211; If you choose to use VM-FEX in VMDirectPath mode, bypassing the hypervisor entirely, keep in mind that you&#8217;re still limited to the number of devices that ESXi can support per host for this function. The <a href="http://www.vmware.com/pdf/vsphere5/r51/vsphere-51-configuration-maximums.pdf" target="_blank">vSphere 5.1 documentation</a> points out that you&#8217;re limited to running only 8 VMDirectPath PCIe devices per host, and 16 per virtual machine. The <a href="http://www.cisco.com/en/US/docs/switches/datacenter/nexus1000/sw/4_2_1_s_v_2_1_1_a/release/notes/n1000v_relnotes.html#wp64826" target="_blank">1000v has limitations</a> but they are not very scary. Something like up to 64 hosts/VEMs, 1024 vEthernet interfaces per port profile, 32,000 MAC addresses per VEM, you get the point. And it&#8217;s not a hardware solution, so scaling it may not be better, but it is simpler.</p>
<p><span style="text-decoration: underline;"><strong>vMotion Support</strong></span> &#8211; Prior to vSphere 5, deploying VM-FEX in VMDirectPath mode meant preventing vMotion of all involved virtual machines, as there was no way to communicate this move to the fabric. Check out <a href="http://blog.ioshints.info/2012/03/cisco-vmware-merging-virtual-and.html" target="_blank">this good overview</a> by Ivan, the trick used here is pretty cool, and it solved a pretty big problem with VM-FEX. Virtual machines connected to the Nexus 1000v have and will be able to vMotion, as the 1000v is merely a replacement for the already software-based virtual switch per host.</p>
<h2>Conclusion</h2>
<p>I won&#8217;t lie &#8211; prior to conducting my research, I wasn&#8217;t optimistic about VM-FEX &#8211; I barely ever hear about it being deployed, and there&#8217;s still the glaring truth that should be acknowledged, which is that you have to have a pretty big Cisco investment to even think about it (Ivan calls VM-FEX <a href="http://blog.ioshints.info/2013/03/what-did-you-do-to-get-rid-of-manual.html" target="_blank">&#8220;the ultimate lock-in&#8221;</a>). However &#8211; for shops that don&#8217;t mind buying Cisco for a while, VM-FEX is not all that bad.</p>
<p>If I were to argue against the deployment of VM-FEX at this point, it would be for purely architectural and operational reasons, and those always depend on many factors. For instance, the Cisco 1000v is a software hypervisor switch, and east-west traffic has the potential to stay local to the host. Any FEX technology means that traffic MUST travel back north to the fabric device before being switched, so even two virtual machines on the same host must hairpin traffic up there in order to talk. The part that &#8220;depends&#8221; is the fact that this N-S traffic flow might not matter that much. It&#8217;s likely you won&#8217;t be running into bandwidth constraints, and the latency caused by such a hop is pretty negligible. Again &#8211; it depends on your applications.</p>
<p>The other big thing to consider here is administration. If you&#8217;re deploying VM-FEX in UCSM, that&#8217;s another pane of glass to touch &#8211; most shops will get into UCSM a fraction of the amount of time they spend in the switch CLIs or vSphere client. VM-FEX from a straight Nexus switch isn&#8217;t that bad, but it still means that someone familiar with a Nexus CLI (usually not a virtualization admin) will have to administer the virtual realm&#8217;s networking. Sometimes it&#8217;s a sharp learning curve, sometimes it&#8217;s not. Again, it depends.</p>
<p>Frankly, I don&#8217;t believe VM-FEX should be thought of as merely an alternative to the 1000v. While you can&#8217;t really run the two simultaneously on a host, I believe that if it was a question of management simplicity, the N1KV is more than an acceptable choice. Use VM-FEX if you not only want this centralized management but also the other features VM-FEX offers.</p>
<p>For instance, we haven&#8217;t each started talking about the performance gains VM-FEX claims to provide. (<a href="http://www.cisco.com/web/learning/le21/le34/downloads/689/vmworld/preso/VMDirectPath_with_vMotion_on_Cisco_UCS_VM-FEX.pdf" target="_blank">Read this slideshow</a> &#8211; in 2010 Cisco claimed 12-15% CPU performance improvement for standard mode and 30% improvement to I/O performance when using VMDirectPath) The arguments in this space have been going on for some time &#8211; some say that the performance is worse with VM-FEX because it means more north-south traffic. Others claim it&#8217;s faster because it&#8217;s done in hardware as opposed to software (VDS, 1000v), making the extra hop north to the fabric switch insignificant. My findings on this are best saved for another day.</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><strong>Other Links</strong></span></p>
<p><a href="http://www.cisco.com/en/US/solutions/collateral/ns224/ns945/ns1134/qa_c67-693220_ns1124_Networking_Solutions_Q_and_A.html">http://www.cisco.com/en/US/solutions/collateral/ns224/ns945/ns1134/qa_c67-693220_ns1124_Networking_Solutions_Q_and_A.html</a></p>
<p><a href="http://www.cisco.com/en/US/prod/collateral/modules/ps10277/ps10331/white_paper_c11-618838_ns1124_Networking_Solutions_White_Paper.html">http://www.cisco.com/en/US/prod/collateral/modules/ps10277/ps10331/white_paper_c11-618838_ns1124_Networking_Solutions_White_Paper.html</a></p>
<p><a href="http://www.cisco.com/en/US/prod/collateral/switches/ps9441/ps9902/whitepaper_c11-620065_ps10277_Products_White_Paper.html">http://www.cisco.com/en/US/prod/collateral/switches/ps9441/ps9902/whitepaper_c11-620065_ps10277_Products_White_Paper.html</a></p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3922" width="1" height="1" style="display: none;" title="Cisco VM FEX and the Nexus 1000v" alt=" Cisco VM FEX and the Nexus 1000v" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/LP5AWPEqXzc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/06/cisco-vm-fex-and-the-nexus-1000v/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/06/cisco-vm-fex-and-the-nexus-1000v/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cisco-vm-fex-and-the-nexus-1000v</feedburner:origLink></item>
		<item>
		<title>Service Profiles and Service Profile Templates in Cisco UCS PowerTool</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/WxlrxzLZvpk/</link>
		<comments>http://keepingitclassless.net/2013/06/service-profiles-and-service-profile-templates-in-cisco-ucs-powertool/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 15:00:04 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[powertool]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[ucs]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3972</guid>
		<description><![CDATA[I had a few scripts that were written WAY before PowerTool was out of beta, and the only way I knew how to generate a Service Profile Template was to use manual XML calls. For instance: $cmd = &#34;&#60;configConfMos inHierarchical=&#039;true&#039;&#62; &#60;inConfigs&#62; &#60;pair key=&#039;org-root/org-&#34; + $orgName + &#34;/ls-&#34; + $serviceProfileName + &#34;&#039; &#62; &#60;lsServer agentPolicyName=&#039;&#039; biosProfileName=&#039;&#039; [...]]]></description>
				<content:encoded><![CDATA[<p>I had a few scripts that were written WAY before PowerTool was out of beta, and the only way I knew how to generate a Service Profile Template was to use manual XML calls. For instance:</p>
<pre class="brush: powershell; gutter: true">    
$cmd = &quot;&lt;configConfMos inHierarchical=&#039;true&#039;&gt; 
      &lt;inConfigs&gt;
          &lt;pair key=&#039;org-root/org-&quot; + $orgName + &quot;/ls-&quot; + $serviceProfileName + &quot;&#039; &gt;    
              &lt;lsServer
                  agentPolicyName=&#039;&#039;
                  biosProfileName=&#039;&#039;
                  bootPolicyName=&#039;&quot; + $bootPolicyName + &quot;&#039;
                  descr=&#039;&#039; 
                  dn=&#039;org-root/org-&quot; + $orgName + &quot;/ls-&quot; + $serviceProfileName + &quot;&#039; 
                  dynamicConPolicyName=&#039;&#039;
                  extIPState=&#039;none&#039;
                  hostFwPolicyName=&#039;&#039;
                  identPoolName=&#039;&quot; + $UUID_POOL_NAME + &quot;&#039;
                	localDiskPolicyName=&#039;default&#039;
                	maintPolicyName=&#039;default&#039;
                	mgmtAccessPolicyName=&#039;&#039;
                	mgmtFwPolicyName=&#039;&#039;
                	name=&#039;&quot; + $serviceProfileName + &quot;&#039;
                	powerPolicyName=&#039;default&#039;
                	scrubPolicyName=&#039;&#039;
                	srcTemplName=&#039;&#039;
                	statsPolicyName=&#039;default&#039;
                	status=&#039;created&#039;
                	type=&#039;initial-template&#039;
                	usrLbl=&#039;&#039;
                	uuid=&#039;0&#039;
                	vconProfileName=&#039;&#039;&gt;
                	&lt;vnicEther
                		adaptorProfileName=&#039;VMWare&#039;
                		addr=&#039;derived&#039;
                		adminVcon=&#039;any&#039;
                		identPoolName=&#039;&#039;
                		mtu=&#039;1500&#039;
                		name=&#039;&quot; + $VNIC_A_NAME + &quot;&#039;
                		nwCtrlPolicyName=&#039;&#039;
                		nwTemplName=&#039;&quot; + $VNIC_TEMPLATE_A_NAME + &quot;&#039;
                		order=&#039;3&#039;
                		pinToGroupName=&#039;&#039;
                		qosPolicyName=&#039;&#039;
                		rn=&#039;ether-&quot; + $VNIC_A_NAME + &quot;&#039;
                		statsPolicyName=&#039;default&#039;
                		status=&#039;created&#039;
                		switchId=&#039;&quot; + $switchId + &quot;&#039;&gt;
                		&lt;/vnicEther&gt;
                		&lt;vnicEther
                			adaptorProfileName=&#039;VMWare&#039;
                			addr=&#039;derived&#039;
                			adminVcon=&#039;any&#039;
                			identPoolName=&#039;&#039;
                			mtu=&#039;1500&#039;
                			name=&#039;&quot; + $VNIC_B_NAME + &quot;&#039;
                			nwCtrlPolicyName=&#039;&#039;
                			nwTemplName=&#039;&quot; + $VNIC_TEMPLATE_B_NAME + &quot;&#039;
                			order=&#039;4&#039;
                			pinToGroupName=&#039;&#039;
                			qosPolicyName=&#039;&#039;
                			rn=&#039;ether-&quot; + $VNIC_B_NAME + &quot;&#039;
                			statsPolicyName=&#039;default&#039;
                			status=&#039;created&#039;
                			switchId=&#039;&quot; + $switchId + &quot;&#039;&gt;
                		&lt;/vnicEther&gt;
                		&lt;vnicFcNode
                			addr=&#039;pool-derived&#039;
                			identPoolName=&#039;&quot; + $WWNN_POOL_NAME + &quot;&#039;
                			rn=&#039;fc-node&#039; &gt;
                		&lt;/vnicFcNode&gt;
                		&lt;vnicFc
                			adaptorProfileName=&#039;VMWare&#039;
                			addr=&#039;derived&#039;
                			adminVcon=&#039;any&#039;
                			identPoolName=&#039;&#039;
                			maxDataFieldSize=&#039;2048&#039;
                			name=&#039;&quot; + $VHBA_A_NAME + &quot;&#039;
                			nwTemplName=&#039;&quot; + $VHBA_TEMPLATE_A_NAME + &quot;&#039;
                			order=&#039;1&#039;
                			persBind=&#039;disabled&#039;
                			persBindClear=&#039;no&#039;
                			pinToGroupName=&#039;&#039;
                			qosPolicyName=&#039;&#039;
                			rn=&#039;fc-&quot; + $VHBA_A_NAME + &quot;&#039;
                			statsPolicyName=&#039;default&#039;
                			status=&#039;created&#039;
                			switchId=&#039;&quot; + $switchId + &quot;&#039;&gt;
                		&lt;/vnicFc&gt;
                		&lt;vnicFc
                			adaptorProfileName=&#039;VMWare&#039;
                			addr=&#039;derived&#039;
                			adminVcon=&#039;any&#039;
                			identPoolName=&#039;&#039;
                			maxDataFieldSize=&#039;2048&#039;
                			name=&#039;&quot; + $VHBA_B_NAME + &quot;&#039;
                			nwTemplName=&#039;&quot; + $VHBA_TEMPLATE_B_NAME + &quot;&#039;
                			order=&#039;2&#039;
                			persBind=&#039;disabled&#039;
                			persBindClear=&#039;no&#039;
                			pinToGroupName=&#039;&#039;
                			qosPolicyName=&#039;&#039;
                			rn=&#039;fc-&quot; + $VHBA_B_NAME+ &quot;&#039;
                			statsPolicyName=&#039;default&#039;
                			status=&#039;created&#039;
                			switchId=&#039;&quot; + $switchId + &quot;&#039;&gt;
                		&lt;/vnicFc&gt;
                		&lt;lsRequirement
                			name=&#039;&quot; + $SERVER_POOL_NAME + &quot;&#039;
                			qualifier=&#039;&#039;
                			restrictMigration=&#039;no&#039;
                			rn=&#039;pn-req&#039; &gt;
                		&lt;/lsRequirement&gt;
                		&lt;lsPower
                			rn=&#039;power&#039;
                			state=&#039;down&#039; &gt;
                		&lt;/lsPower&gt;
                	&lt;/lsServer&gt;
              &lt;/pair&gt;
          &lt;/inConfigs&gt;
      &lt;/configConfMos&gt;&quot;

Invoke-UcsXml -XmlQuery $cmd</pre>
<p>If most of your script is composed of normal cmdlets, this looks pretty absurd &#8211; so if you can avoid calling direct XML, you should. Same thing if you&#8217;re trying to create your own PowerTool-esque library (say, with Python instead of bleh PowerShell), you would take these XML calls and hide them away in modular functions so that you can call them with a single command and a few arguments.</p>
<p>Most other templates (like vNIC and vHBA) have a dedicated cmdlet for creating those constructs. For instance:</p>
<pre class="brush: powershell; gutter: true">Add-UcsVhbaTemplate -Org $organization -Name &quot;BARE-NONP-B&quot; -Descr &quot;Non-Prod Baremetal Fabric B&quot; -IdentPoolName &quot;WWPN-BARE-NONP-B&quot; -SwitchId A -TemplType &quot;updating-template&quot;</pre>
<p>As I tab through the cmdlets that start with &#8220;Add-UcsServiceProfile&#8221; I noticed there was no &#8220;Add-UcsServiceProfileTemplate&#8221; as one would expect.</p>
<p>Poking around in the release notes for v1.0 of the PowerTool library, I noticed that one of the new features was the ability to filter Service Profiles based on type (aimed at being able to get all the Service Profiles in the system:</p>
<pre class="brush: powershell; gutter: true"># Get all Service Profile Templates.

Get-UcsServiceProfile -Filter &#039;Type -clike *-template&#039; | select Ucs,Dn,Name</pre>
<p>So I ran a Get-Help for this cmdlet:</p>
<pre class="brush: powershell; gutter: true">-Type &lt;string&gt;
    Specifies if service profile or service profile template needs to be created. Valid values are: initial-templat
    e, instance, updating-template

    Required?                    true
    Position?                    named
    Default value
    Accept pipeline input?
    Accept wildcard characters?</pre>
<p>So&#8230;.at least in this version of PowerTool, the same cmdlet is used to create SPs and SPTs, just need to set this &#8220;flag&#8221; to one of those three options.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3972" width="1" height="1" style="display: none;" title="Service Profiles and Service Profile Templates in Cisco UCS PowerTool" alt=" Service Profiles and Service Profile Templates in Cisco UCS PowerTool" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/WxlrxzLZvpk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/06/service-profiles-and-service-profile-templates-in-cisco-ucs-powertool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/06/service-profiles-and-service-profile-templates-in-cisco-ucs-powertool/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=service-profiles-and-service-profile-templates-in-cisco-ucs-powertool</feedburner:origLink></item>
		<item>
		<title>The Software Defined Datacenter Symposium 2013 – Tech Field Day</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/8u5DJx2e1vk/</link>
		<comments>http://keepingitclassless.net/2013/06/the-software-defined-datacenter-symposium-2013-tech-field-day/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 23:36:00 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[sddc]]></category>
		<category><![CDATA[sdn]]></category>
		<category><![CDATA[tech field day]]></category>
		<category><![CDATA[tfd]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3912</guid>
		<description><![CDATA[About a year and a half ago, arguably well before the biggest of all the SDN hype that we&#8217;ve come to know and love, Stephen Foskett and company organized a fantastic OpenFlow Symposium aimed at getting deep into the state of the protocol at that time and what was being done with it at some [...]]]></description>
				<content:encoded><![CDATA[<p>About a year and a half ago, arguably well before the biggest of all the SDN hype that we&#8217;ve come to know and love, Stephen Foskett and company organized a fantastic <a href="http://keepingitclassless.net/2011/10/review-openflow-symposium-2011-morning-session/" target="_blank">OpenFlow Symposium</a> aimed at getting deep into the state of the protocol at that time and what was being done with it at some of the leading tech companies like Google, Yahoo, Cisco, Brocade, and others.</p>
<p class="note">For those keeping track, Dave Meyer was on the panel at the time representing Cisco but is now CTO and Chief Scientist with Brocade and getting to do some <a href="http://searchsdn.techtarget.com/news/2240183332/Keeping-OpenDaylight-truly-open-QA-with-Brocades-Dave-Meyer" target="_blank">really cool stuff with OpenDaylight</a>.</p>
<p>They&#8217;re at it again &#8211; <a href="http://www.sdncentral.com/events/sddc-techfieldday-2013/" target="_blank">a post on SDN News</a> indicates that in September, a similar symposium will be held, but will encompass the entire Software Defined Datacenter, not just networking. Couple that with the fact that vendors have had quite a bit of time to put together SD* strategies (and even products for some), this should make for an excellent event. Per Tech Field Day MO, the day&#8217;s event will be live streamed over the web.</p>
<p>More details to come, I&#8217;m sure, but the page is definitely worth keeping an eye on. Check it out!<br />
<a href="http://www.sdncentral.com/events/sddc-techfieldday-2013/">http://www.sdncentral.com/events/sddc-techfieldday-2013/</a></p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3912" width="1" height="1" style="display: none;" title="The Software Defined Datacenter Symposium 2013   Tech Field Day" alt=" The Software Defined Datacenter Symposium 2013   Tech Field Day" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/8u5DJx2e1vk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/06/the-software-defined-datacenter-symposium-2013-tech-field-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/06/the-software-defined-datacenter-symposium-2013-tech-field-day/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-software-defined-datacenter-symposium-2013-tech-field-day</feedburner:origLink></item>
		<item>
		<title>When The World Runs As Software</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/2MHz1Ry47VA/</link>
		<comments>http://keepingitclassless.net/2013/06/when-the-world-runs-as-software/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 14:00:00 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[sdn]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3899</guid>
		<description><![CDATA[I have heard so many sweeping statements in the past few weeks like &#8220;network engineers&#8217; jobs are in danger&#8221; or &#8220;will my CCIE have any value when networking is run in the hypervisor&#8221;? Clearly the social media community is preaching &#8220;software or bust&#8221; these days, clearly leaving those that are not used to this kind [...]]]></description>
				<content:encoded><![CDATA[<p>I have heard so many sweeping statements in the past few weeks like &#8220;network engineers&#8217; jobs are in danger&#8221; or &#8220;will my CCIE have any value when networking is run in the hypervisor&#8221;? Clearly the social media community is preaching &#8220;software or bust&#8221; these days, clearly leaving those that are not used to this kind of talk, or have been doing infrastructure the same way for years, quite alienated. I want to make one thing extremely clear - <span style="text-decoration: underline;"><strong>It&#8217;s okay to be an infrastructure person</strong></span>. This skillset is not going anywhere, despite what some completely ill-informed articles might say.  It will simply evolve. It is <span style="text-decoration: underline;"><strong>not</strong> </span>okay to be an infrastructure person that is also not open to change. Infrastructure will have a physical presence, but it&#8217;s administration, it&#8217;s scaling properties, and even best practice design will change to address evolving business demands. Let me provide some perspective.</p>
<p>I&#8217;m close with someone who owns a small business that provides consulting services on products like SAP, where a customer demands a SME on how the software works, and Layer 7 stuff like data migrations from dev to prod. Neither party gives two craps how the infrastructure works. Neither party cares about the plumbing. They may have a few VMs in Rackspace, but they don&#8217;t know what Openstack is, nor should they. They just care about apps, because those are what they do, and that&#8217;s what brings home the bacon. As a fellow infrastructure person, I want to reiterate that it&#8217;s okay to not be this way; there&#8217;s plenty of room for people that care about the infrastructure  - that care about the technical differences betwen vBlock and Flexpod. However, at the end of the day, the infrastructure&#8217;s main purpose is to run applications, and if it can&#8217;t do that efficiently, or change with flexibility, then there&#8217;s a problem.</p>
<p>Hanging on to the old way of doing things is what&#8217;s going to keep perpetuating this &#8220;me vs. you&#8221; mentality, which is a dated, unproductive, and costly mentality to have. Right now the apps people are pretty pissed off that every change they need to make requires a request to the &#8220;evil infrastructure team&#8221;, which will undoubtedly cause some irate emails, work stoppages, and all manner of technical discussions that go nowhere because neither team knows how to communicate with each other.</p>
<p>When you see a blog post saying grand, strange statements like &#8220;the network of tomorrow will be configured in Eclipse&#8221;, you might get a little squeemish. I know I did at first. Keep in mind that there will always be a physical network. Sure, a lot of functions are moving into the hypervisor, but something will have to connect the hypervisors together.</p>
<p>The key here is to remember that the applications people are waiting for the network to catch up to demand. Not scalability or capacity so much, but <span style="text-decoration: underline;"><strong>flexibility</strong></span> (which is actually a superset of scalability and capacity anways). Flexibility in being able to provision a certain slice of infrastructure within minutes, seamlessly. Flexibility in being able to make a policy change across a massive global infrastructure immediately, and seamlessly. The application people don&#8217;t care about the plumbing. They don&#8217;t care about changing the oil in a car, just that the car is able to get them from point A to point B, or to point C if needed. The point is that the infrastructure needs to be smarter, and more agile, so that the apps people don&#8217;t have to worry about coming to us for a change request. It&#8217;s time to get out of the way &#8211; it&#8217;s time to stop this &#8220;us against them&#8221; mentality.</p>
<p>Stepping out of the philosophy and into reality, this is the driving factor behind wanting to do everything in software. It&#8217;s the reason why commodity hardware driven by open source software (or at the very least open standardized protocols) is so attractive to the bleeding edge technologists right now. These are all building blocks of the infrastructure of tomorrow, because they give us the tools to define exactly what our network needs to do, and change on a whim, when the applications demand it.</p>
<p>Where does this leave the average infrastructure-VAR out there? Most VARs out there that deploy network, compute, storage or even virtual infrastructure are composed mainly of really strong infrastructure folks that are usually very specialized in one particular area. There is a large part of this industry that has never written a script much less knows anything about full-on application development (yes there is a growing group that do). When the infrastructure of tomorrow demands that the infra people are able to take software development methodologies and apply them to network engineering, these folks will need to adapt, or lose their edge. Articles like <a href="http://www.theregister.co.uk/2013/05/24/network_configuration_automation/" target="_blank">this one</a>  are way off the mark by making statements like all network engineers will lose their jobs, which of course, is preposterous. However it is true that the times are changing, and those that don&#8217;t change with it will encounter some issues. How that change presents itself &#8211; or more specifically, how quickly &#8211; has yet to be seen, but with the rapid pace of development of cool new toys like OpenStack, OpenFlow, OpenDaylight, and Open vSwitch (see a trend there?), I would say it&#8217;s going to happen sooner rather than later.</p>
<p>The winds of change are blowing &#8211; be ready.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3899" width="1" height="1" style="display: none;" title="When The World Runs As Software" alt=" When The World Runs As Software" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/2MHz1Ry47VA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/06/when-the-world-runs-as-software/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/06/when-the-world-runs-as-software/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=when-the-world-runs-as-software</feedburner:origLink></item>
		<item>
		<title>[Code] PowerTool: PowerOnUCSBlades</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/oG6_dhEXdsk/</link>
		<comments>http://keepingitclassless.net/2013/05/code-powertool-poweronucsblades/#comments</comments>
		<pubDate>Wed, 29 May 2013 04:44:21 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[powertool]]></category>
		<category><![CDATA[ucs]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3872</guid>
		<description />
				<content:encoded><![CDATA[<p><script src="https://gist.github.com/Mierdin/5667886.js"></script></p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3872" width="1" height="1" style="display: none;" title="[Code] PowerTool: PowerOnUCSBlades" alt=" [Code] PowerTool: PowerOnUCSBlades" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/oG6_dhEXdsk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/code-powertool-poweronucsblades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/code-powertool-poweronucsblades/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=code-powertool-poweronucsblades</feedburner:origLink></item>
		<item>
		<title>Outgoing Interface Determination</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/ulHe77ROXgU/</link>
		<comments>http://keepingitclassless.net/2013/05/outgoing-interface-determination/#comments</comments>
		<pubDate>Mon, 27 May 2013 14:00:39 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Route/Switch]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[cef]]></category>
		<category><![CDATA[fib]]></category>
		<category><![CDATA[rib]]></category>
		<category><![CDATA[routing]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3859</guid>
		<description><![CDATA[I received a comment on an old post regarding the identification of outgoing interface for learned routes through BGP. In fact, it&#8217;s not the first time I&#8217;ve had a discussion in the comment section regarding the interaction between the control plane and the forwarding plane. So, let&#8217;s work backwards from the point where our packet leaves [...]]]></description>
				<content:encoded><![CDATA[<p>I received a <a href="http://keepingitclassless.net/2011/07/the-anatomy-of-show-ip-route/#comment-909366194" target="_blank">comment</a> on an old post regarding the identification of outgoing interface for learned routes through BGP. In fact, it&#8217;s not the first time I&#8217;ve had a discussion in the comment section regarding the interaction between the control plane and the forwarding plane.</p>
<p>So, let&#8217;s work backwards from the point where our packet leaves *some* interface on a router, which would be considered purely an act of the forwarding plane. In order to get to that point, we need to populate the RIB with some entries.</p>
<p><span id="more-3859"></span></p>
<p><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/bgp.png"><img class="aligncenter size-full wp-image-3860" alt="bgp Outgoing Interface Determination" src="http://keepingitclassless.net/wp-content/uploads/2013/05/bgp.png" width="615" height="233" title="Outgoing Interface Determination" /></a></p>
<p>&nbsp;</p>
<p>I established an eBGP neighbor relationship and advertised the 123.123.123.0/24 network to R2:</p>
<pre class="brush: text; gutter: true">R2#show ip bgp
BGP table version is 2, local router ID is 10.1.1.1
Status codes: s suppressed, d damped, h history, * valid, &gt; best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*&gt; 123.123.123.0/24 10.1.1.2                 0             0 321 i

R2#show ip route 123.123.123.0
Routing entry for 123.123.123.0/24
  Known via &quot;bgp 123&quot;, distance 20, metric 0
  Tag 321, type external
  Last update from 10.1.1.2 00:00:14 ago
  Routing Descriptor Blocks:
  * 10.1.1.2, from 10.1.1.2, 00:00:14 ago
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 321</pre>
<p>Ultimately, the role of a routing protocol, or the RIB, is to maintain topology information, to allow each router to make decisions about which path is best. That sentence is essentially the loose definition of the control plane. Routing protocols simply help the routers exchange this topology information.</p>
<p>Since the routing protocol doesn&#8217;t directly control the outgoing interface for a given router, the decision process is simply the identification of the best route, and the next-hop address is produced as a result of that selection. The next-hop address for a given route is usually in the same subnet as one of the router&#8217;s interfaces.**</p>
<p class="note">In the case of BGP routes, it is possible that the next-hop address is not a locally significant address, if an eBGP neighbor is not using the &#8220;next-hop-self&#8221; command. In this case, another routing method like an IGP would be used to get packets to where they need to go. This post will analyse the case where a directly connected next-hop address has been provided.</p>
<p> Once the next-hop address is known, then the forwarding plane takes over. In the case of Cisco routers, the FIB is powered by CEF, and is responsible for matching a particular flow with a next-hop adjacency to be forwarded to.</p>
<pre class="brush: text; gutter: true">R2#show ip cef 123.123.123.0
123.123.123.0/24, version 10, epoch 0, cached adjacency 10.1.1.2
0 packets, 0 bytes
  via 10.1.1.2, 0 dependencies, recursive
    next hop 10.1.1.2, FastEthernet0/0 via 10.1.1.2/32
    valid cached adjacency</pre>
<p>With an entry in the FIB, we can see that the outgoing interface for this particular route (learned through BGP as we saw before) is Fa0/0. All packets destined for this subnet will be forwarded out this interface, until a reconvergence of the control plane dictates otherwise.</p>
<p>&nbsp;</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3859" width="1" height="1" style="display: none;" title="Outgoing Interface Determination" alt=" Outgoing Interface Determination" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/ulHe77ROXgU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/outgoing-interface-determination/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/outgoing-interface-determination/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=outgoing-interface-determination</feedburner:origLink></item>
		<item>
		<title>Virtual Routing [Part 3 - The Use Case]</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/7QdPs7Z_FX8/</link>
		<comments>http://keepingitclassless.net/2013/05/virtual-routing-part-3-the-use-case/#comments</comments>
		<pubDate>Thu, 23 May 2013 14:00:16 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[csr]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[virtual routing]]></category>
		<category><![CDATA[vyatta]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3746</guid>
		<description><![CDATA[Moving along in my &#8220;Virtual Routing&#8221; series, I&#8217;d like to switch gears and talk a little more &#8220;big picture&#8221;. In the previous posts, we&#8217;ve discussed a few different things: Part 1 &#8211; A first look at the CSR 1000v from Cisco Part 1.9 &#8211; An examinations of using FHRPs in a virtual environment Part 2 [...]]]></description>
				<content:encoded><![CDATA[<p>Moving along in my &#8220;Virtual Routing&#8221; series, I&#8217;d like to switch gears and talk a little more &#8220;big picture&#8221;. In the previous posts, we&#8217;ve discussed a few different things:</p>
<ol>
<li><span style="line-height: 13px;"><a href="http://keepingitclassless.net/2013/04/virtual-routing-part-1-csr-1000v-first-glance/" target="_blank">Part 1</a> &#8211; A first look at the CSR 1000v from Cisco</span></li>
<li><a href="http://keepingitclassless.net/2013/04/virtual-routing-part-1-9-fhrp-issues-in-vmware-vsphere/" target="_blank">Part 1.9</a> &#8211; An examinations of using FHRPs in a virtual environment</li>
<li><a href="http://keepingitclassless.net/2013/05/virtual-routing-part-2-router-redundancy-in-vmware-vsphere-2/" target="_blank">Part 2</a> &#8211; A comparison of virtual routing redundancy options</li>
</ol>
<p>Seeing as these were all pretty technical configuration-oriented posts, I wanted to take a step back and think about some of the reasons why one would want to perform routing in a virtual environment. Clearly, the main focus is Data Center, where you get the most bang for your buck. While it&#8217;s true that companies like Vyatta can be offered in a physical form factor, the vast majority of those looking to perform x86-based routing will do so in the context of a hypervisor, where the virtual router can enjoy the reliability and mobility that comes with today&#8217;s virtual and cloud infrastructures.</p>
<p><span id="more-3746"></span></p>
<h2>Architectural Considerations</h2>
<p>First &#8211; as I&#8217;ve said before &#8211; the concept of performing virtual routing is done on a per-tenant basis. Each tenant gets their own routing instance (or pair of instances if you&#8217;re doing VRRP, etc). That instance can announce a prefix using an IGP or BGP, and voila &#8211; you have the ability to make the vast majority of the connectivity northbound of the hosts L3.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/04/CSRscreen2.png"><img class="aligncenter  wp-image-3475" alt="CSRscreen2 Virtual Routing [Part 3   The Use Case]" src="http://keepingitclassless.net/wp-content/uploads/2013/04/CSRscreen2.png" width="672" height="519" title="Virtual Routing [Part 3   The Use Case]" /></a></p>
<p>The big idea here is that north-south traffic that for so long has been hairpinned at the physical core switch no longer has to do so. The only traffic that needs to flow north-south is nonrouted traffic between hosts, or traffic leaving the hosts and going somewhere completely different, such as out of the data center. Traffic between tenants or between VLANs on the same tenant can be localized as much as possible.</p>
<p>Cloud providers can either integrate this into their product offerings, meaning that the customer provisioning process includes the provisioning of a device like this, and the connectivity offerings into the customer&#8217;s cloud are tightly integrated with the feature sets of the router provided. Users of Openstack could allow Quantum to interact with a virtual router so that the customer is not aware that the routing is being done virtually, and this extra virtual machine does not count against their purchased space.</p>
<h2>Connectivity</h2>
<p>As depicted in the above diagram, VPN can now be terminated directly into the virtual environment. Without it, we normally would terminate VPN connections to a large router or firewall near the DC edge, and interpret these to VLANs (and then likely some kind of overlay segment) to get into the tenant&#8217;s environment.</p>
<p>Vyatta is known to support IPSEC/SSL secure VPNs now. The CSR 1000v does have a few more options, ready to support MPLS and DMVPN (the latter of the two arguably is proprietary).</p>
<p>On Cisco&#8217;s FAQ page on the CSR 1000v, they specifically call out the idea of using the CSR as a customer edge device to terminate an MPLS VPN. This produces more control over this connectivity, and allows for some additional per-tenant flexibility. On the other hand, IPSEC and SSL based VPNs are much more widely accepted VPN solutions, and it&#8217;s hard to say if this will get any immediate traction.</p>
<p>I also want to remind folks that OTV is among the features included in the CSR. I don&#8217;t want to get into a feature set comparison in this post (especially since OTV is proprietary), but it warranted  a mention. I think we&#8217;re going to see some interesting OTV topologies if we can now do it directly out of the hypervisor.</p>
<h2>Security / SMT</h2>
<p>I&#8217;d like to differentiate Virtual Routing from Virtual Security. VMware&#8217;s vCloud Networking and Security (new version of vShield), Juniper&#8217;s vSG, Cisco&#8217;s VSG and now ASA 1000v &#8211; all completely different from virtual routing products like the CSR 1000v and Vyatta. It should be stated that Vyatta takes a more &#8220;swiss army knife&#8221; approach, providing firewall and VPN functionality using more of a L3 approach. Cisco would say that the CSR 1000v provides these features, which is true, but they&#8217;d also point out that the ASA 1000v is what would be proposed as more of a secure multi-tenant solution.</p>
<p>Now, the routing is recommended from both companies to be performed per-tenant, and the idea that VLANs (or VXLANs if you&#8217;re bigger) can be used to segment traffic is not a foreign concept to most.</p>
<h2>SDN</h2>
<p>Ah, yes &#8211; that acronym again. SDN is a powerful use case for this concept but let me be clear &#8211; the fact that these solutions run as virtual devices does not make it SDN, and all leading products in the virtual routing space do not currently offer control plane abstraction at present. Yes, they have APIs, so do other solutions. I&#8217;m looking for centralized control, and my point in bringing up SDN at all is that x86 based solutions have shown to provide a faster point of entry for SDN. (rephrase)</p>
<p>Cisco has yet to really push the big red SDN button with the CSR (not that I haven&#8217;t heard it thrown around a little bit) but it&#8217;s clear that Brocade intends to wield the great sword that is Vyatta into the SDN space. Because of the fact that Brocade has yet to announce what that really means, it has contributed to the notion that Vyatta itself is SDN, which of course is false.</p>
<p>I think right now Brocade is weighing it&#8217;s next move very carefully with Vyatta. They&#8217;re involved with OpenDaylight and have shown no hesitation in support of OpenFlow. Let us not forget that just prior to the acquisition, Vyatta was cooking up something in it&#8217;s evil lab called <a href="http://www.vyatta.com/technology/vplane" target="_blank">vPlane </a>- still not a shipping product yet, but it&#8217;s possible that Brocade is incubating this idea just a little more. Who knows what we&#8217;ll see, but I would expect something from Brocade soon, probably in tight integration with OpenDaylight. Again, performing networking and firewall functions in x86 is not SDN, just more conducive to SDN.</p>
<h2>More To Come</h2>
<p>I won&#8217;t get into features or performance in this post. I have just one more post to come in this series concerning an apples to apples comparison of the products that are out there, and I hope that this series continues to spark the conversation.</p>
<p>No doubt &#8211; those that have been doing x86 networking for a while will have no problem with this idea. Vyatta is not new like the CSR is, so there are shops out there that have been doing this, both in the hypervisor and in bare-metal applications. I&#8217;m reminded by this wave of activity of all the college kids that spent the last few years spinning up linux-based firewalls for their home or small office use for some time (that work really really well), and those geeks are now out in the industry (I&#8217;ll raise my own hand on this one).</p>
<p>Should ASIC-based networking go away? Of course not &#8211; there are different benefits to that approach. For now, we can agree that this concept is certainly gaining momentum because of the rapid adoption of cloud technologies, and the identification of virtual routing as a realistic need in the near future.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3746" width="1" height="1" style="display: none;" title="Virtual Routing [Part 3   The Use Case]" alt=" Virtual Routing [Part 3   The Use Case]" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/7QdPs7Z_FX8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/virtual-routing-part-3-the-use-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/virtual-routing-part-3-the-use-case/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=virtual-routing-part-3-the-use-case</feedburner:origLink></item>
		<item>
		<title>Moving Forward, Changing Focus</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/J7VtvHiQ1uo/</link>
		<comments>http://keepingitclassless.net/2013/05/moving-forward-changing-focus/#comments</comments>
		<pubDate>Wed, 22 May 2013 15:00:45 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[job change]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3775</guid>
		<description><![CDATA[The past two years have been nothing short of a whirlwind for me. I had the privilege of helping to create the Data Center practice for a technology startup in Cincinnati, and as a result, I&#8217;ve figuratively been drinking from a fire hydrant non stop. In the past two years I&#8217;ve learned more about technology [...]]]></description>
				<content:encoded><![CDATA[<p>The past two years have been nothing short of a whirlwind for me. I had the privilege of helping to create the Data Center practice for a technology startup in Cincinnati, and as a result, I&#8217;ve figuratively been drinking from a fire hydrant non stop. In the past two years I&#8217;ve learned more about technology than I could have ever imagined, part of which was the fact that what I <em>have</em> learned only scratches the surface of what&#8217;s likely in store for me in the rest of my career. I&#8217;ve learned that I love networking, blogging, daydreaming, building, and breaking. I&#8217;ve had the privilege of working with some really smart people, both at the day job, and on the interwebs with all of you. I know that I will never have enough time in my life to properly thank all those who I&#8217;ve been associated with in the past few years.</p>
<p>Because of my role, I had the luxury of learning a lot of different areas, and learning them fast. Unfortunately, goals like the CCIE (a fire that has been raging ever since that day in Washington, DC when I passed my CCNP TSHOOT exam) have had to take a backseat because of the fact that focusing on one area was just not possible.</p>
<p>Last week, I started a new position at a technology services company based out of Texas that, among other things, specializes in Data Center offerings from Cisco and EMC. This was ultimately a pretty tough decision to make, but I believe it will allow me to do a few things a little better.</p>
<p>My new role will allow me to focus specifically on data center networking. This means all the way down to the hypervisor, and all the way up through the core and into the WAN. Among many other things, the last two years have had a lot of virtualization and storage experience. While I will definitely be keeping those skillsets as current as possible, this focus will permit me the ability to more efficiently reach two immediate goals. I made a decision to pursue R/S until I accomplish the CCIE. I still strongly believe that having a Route/Switch skillset serves as the best foundation for nearly all other technical learning, and right now, R/S is the lowest hanging of all the fruit. I will move directly back into the DC track after finishing the CCIE R/S, making my second immediate goal the CCIE DC. I work with technology from both tracks so much, it just makes a lot of sense.</p>
<p>I will also be utilizing my existing knowledge to help promote a programmable way of doing data center networking. Whether or not this literally means a certain three-letter acronym that I&#8217;m sure we&#8217;re all pretty tired of hearing about, or a simple script to make life easier for a few people, I believe that this skillset is a big part of tomorrow&#8217;s network engineering staff.</p>
<p>In addition, I am planning on dedicating more consistent time to writing &#8211; I&#8217;ve learned to really truly love it over the past few years, and for some strange reason, you guys keep on reading. I consider myself honored to simply be listed in the same blogroll as some of these other folks, and I remind myself every day that the reason I do it is to pay forward all of the advice and help I&#8217;ve received from those who came before me.</p>
<p>I will not be attending Cisco Live this year. In addition to the simple fact that the move is too close to the date, my short term goals will require some pretty severe focus. Undoubtedly, I will tune in online, and I have already been lucky enough to participate in some pretty sweet NDA presentations concerning material I&#8217;m sure we&#8217;ll all be hearing about at Live this year. So, suffice it to say that I won&#8217;t be putting my head in the sand this year, but I do need to make sure my goals have everything they need to succeed.</p>
<p>I&#8217;m constantly reminded that the <a href="http://keepingitclassless.net/2013/01/the-unified-skillset/" target="_blank">Unified Skillset</a> is not a goal, or an end-state, but a constant, always changing, never ending journey. I was given some great advice not too long ago &#8211; &#8220;If you&#8217;re not getting better, you&#8217;re getting worse&#8221;. In some ways, my day-to-day will change, but in a big way, this is still pretty much business as usual. I still love technology, I still strive to be better than I was yesterday, and I still try hard to fill the room with people smarter than me.</p>
<p>Thanks to all who have made the past two years what it is for me.</p>
<p>-Matt</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3775" width="1" height="1" style="display: none;" title="Moving Forward, Changing Focus" alt=" Moving Forward, Changing Focus" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/J7VtvHiQ1uo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/moving-forward-changing-focus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/moving-forward-changing-focus/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=moving-forward-changing-focus</feedburner:origLink></item>
		<item>
		<title>How Taco Bell Taught Me About Converged Networks</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/arBz72g9WNM/</link>
		<comments>http://keepingitclassless.net/2013/05/how-taco-bell-taught-me-about-converged-networks/#comments</comments>
		<pubDate>Wed, 22 May 2013 14:00:46 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[converged]]></category>
		<category><![CDATA[FCoE]]></category>
		<category><![CDATA[networks]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3760</guid>
		<description><![CDATA[I would make the argument that the term &#8220;converged networks&#8221; is not really a buzzword the way it used to be, since the world now generally understands the concept. Rather than have isolated physical networks, lets make a very popular network topology more robust in terms of capacity, but also features. After all, the networks [...]]]></description>
				<content:encoded><![CDATA[<p>I would make the argument that the term &#8220;converged networks&#8221; is not really a buzzword the way it used to be, since the world now generally understands the concept. Rather than have isolated physical networks, lets make a very popular network topology more robust in terms of capacity, but also features. After all, the networks and protocols we&#8217;re combining have some pretty stringent requirements, and we want to make sure that this transition actually works.</p>
<p>When I first heard the term quite a few years ago, I found that fast food soda machines are a perfect analogy of this idea.</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/oldnozzles.png"><img class="aligncenter  wp-image-3800" alt="oldnozzles How Taco Bell Taught Me About Converged Networks" src="http://keepingitclassless.net/wp-content/uploads/2013/05/oldnozzles.png" width="626" height="294" title="How Taco Bell Taught Me About Converged Networks" /></a></p>
<p>For each type of soda being served in a restaurant, a completely separate dispenser assembly must be made. A new nozzle, a new lever, a new plastic housing. While is true that many of these dispenser assemblies are similar, especially in purpose, they are not the same. We have dedicated a slot for each type of soda. This is the unconverged network.</p>
<p>Move to that fateful day at Taco Bell when I went to grab a cold glass of Baja Blast and &#8211; voila!</p>
<div id="attachment_3763" class="wp-caption aligncenter" style="width: 581px"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/tacobell2.jpg"><img class=" wp-image-3763 " alt="tacobell2 How Taco Bell Taught Me About Converged Networks" src="http://keepingitclassless.net/wp-content/uploads/2013/05/tacobell2.jpg" width="571" height="322" title="How Taco Bell Taught Me About Converged Networks" /></a><p class="wp-caption-text">Pictured: FCoE</p></div>
<p style="text-align: left;"> The idea of using these dedicated nozzles was not good enough for Pepsi, and they moved towards a strategy of building &#8211; more complicated (and probably expensive) nozzles, yes, but far fewer of them. Simply provide an easy mechanism so that each soda flavor can utilize the same infrastructure, and you have yourself a soda machine that does not compromise on it&#8217;s ability to deliver soda, yet it does so in a more efficient way.</p>
<p style="text-align: left;">Moving out of analogy and into the real world; one of the first big examples of this in the technology realm (at least as long as I&#8217;ve been around) is the consolidation of hundreds, or even thousands of dedicated voice circuits at branch offices:</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/voipPreConverge.png"><img class="aligncenter  wp-image-3814" alt="voipPreConverge How Taco Bell Taught Me About Converged Networks" src="http://keepingitclassless.net/wp-content/uploads/2013/05/voipPreConverge.png" width="588" height="586" title="How Taco Bell Taught Me About Converged Networks" /></a></p>
<p style="text-align: left;">onto the WAN, where they&#8217;re carried via IP (VoIP):</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/voipPostConverge.png"><img class="aligncenter  wp-image-3813" alt="voipPostConverge How Taco Bell Taught Me About Converged Networks" src="http://keepingitclassless.net/wp-content/uploads/2013/05/voipPostConverge.png" width="589" height="592" title="How Taco Bell Taught Me About Converged Networks" /></a></p>
<p style="text-align: left;">No longer is there a need for dedicated connectivity at each remote site &#8211; a costly endeavour that&#8217;s been in place for so long we&#8217;ve forgotten what it was to spend money on anything else. Nonetheless, as WAN providers started to offer more features that gave the network and telephone admins the warm and fuzzies that the WAN could handle the convergence of VoIP, which is arguably one of the most sensitive traffic types out there, the convergence happened, and VoIP is enjoying widespread adoption in such a scenario, where before it was only accepted on the easily controlled environment that is the Campus LAN.</p>
<p style="text-align: left;">Focusing specifically on Data Center now, the same has happened but even more recently with storage networks. While there is still (and maybe always will be) a use case for the dedicated storage network, carrying nothing but transport for block storage:</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/DCPreConverge.png"><img class="aligncenter  wp-image-3812" alt="DCPreConverge How Taco Bell Taught Me About Converged Networks" src="http://keepingitclassless.net/wp-content/uploads/2013/05/DCPreConverge.png" width="670" height="354" title="How Taco Bell Taught Me About Converged Networks" /></a></p>
<p style="text-align: left;">&#8230;it&#8217;s starting to make a whole lot of sense to utilize the great advances made in technology like FCoE (and yes, even NFS and iSCSI) &#8211; no doubt given new life thanks to 10/40/100GbE &#8211; to create a single fabric that does not care whether the traffic is a write request for a disk somewhere in the fluffy clouds, or your ePayment for that latest eBay purchase.</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/DCPostConverge.png"><img class="aligncenter  wp-image-3811" alt="DCPostConverge How Taco Bell Taught Me About Converged Networks" src="http://keepingitclassless.net/wp-content/uploads/2013/05/DCPostConverge.png" width="594" height="501" title="How Taco Bell Taught Me About Converged Networks" /></a></p>
<p style="text-align: left;">Networks that are intelligent enough and sized well enough to handle the needs of today AND tomorrow is clearly where these last few years have created for us to operate.</p>
<p style="text-align: left;">For those that have been reading me long enough know this isn&#8217;t the first time I&#8217;ve brought up this topic, though my daydreams probably focus more on the &#8220;people&#8221; side of things. Network convergence is old news &#8211; I didn&#8217;t write this post to inform the world that this is around the corner, clearly it&#8217;s happening. I did write it to point out how it originally started clicking for me back then, as well as serve for a gentle reminder that the technology is moving in this direction, and those pursuing the <a href="http://keepingitclassless.net/2013/01/the-unified-skillset/" target="_blank">Unified Skillset</a> will no doubt be the network rockstars of tomorrow.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3760" width="1" height="1" style="display: none;" title="How Taco Bell Taught Me About Converged Networks" alt=" How Taco Bell Taught Me About Converged Networks" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/arBz72g9WNM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/how-taco-bell-taught-me-about-converged-networks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/how-taco-bell-taught-me-about-converged-networks/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-taco-bell-taught-me-about-converged-networks</feedburner:origLink></item>
		<item>
		<title>ESXi vSwitch Load Balancing Woes</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/EygkG7jrxGQ/</link>
		<comments>http://keepingitclassless.net/2013/05/esxi-vswitch-load-balancing-woes/#comments</comments>
		<pubDate>Tue, 21 May 2013 14:00:19 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[switching]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vswitch]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3766</guid>
		<description><![CDATA[There are a million articles out there on ESXi vSwitch Load Balancing, many of which correctly point out that the option for routing traffic based on IP Hash is probably the best option, if your upstream switch is running 802.3ad link aggregation to the ESXi hosts. It offers minimal complexity, while also providing the best [...]]]></description>
				<content:encoded><![CDATA[<p>There are a million articles out there on ESXi vSwitch Load Balancing, many of which correctly point out that the option for routing traffic based on IP Hash is probably the best option, if your upstream switch is running 802.3ad link aggregation to the ESXi hosts. It offers minimal complexity, while also providing the best load-balancing capabilities for network devices utilizing a vSwitch (Virtual Machine OR vmkernel). So&#8230;this article will be catered towards a very specific problem.</p>
<p><span id="more-3766"></span></p>
<h2>Symptoms</h2>
<p>Since this post was inspired by an experience of mine, I will briefly explain the problem symptoms that surfaced as a result of incorrect settings that will be explored later in the post. A customer was having problems getting vSphere HA to converge properly, and was also having intermittent connectivity between vCenter and the ESXi hosts.</p>
<p>It was pretty bad &#8211; the vSphere client was laggy, vCenter&#8217;s resource utilization was pretty high, and I was getting strange messages like:</p>
<blockquote><p>Vsphere has detected that this host is in a different network partition that the master to which vcenter server is connected, or the Vsphere HA Agent on the host is alive and has management network connectivity but the management network has been partitioned. This state is reported by a vSphere HA master agent that is in a partition other than the one containing the host.</p></blockquote>
<p>Duncan Epping has a <a href="http://www.yellow-bricks.com/vmware-high-availability-deepdiv/#HA-50isolated" target="_blank">great article</a> on Host Isolation, specifically with regards to this error message as well.</p>
<p>It seemed like vCenter was able to get to the hosts, but the client kept refreshing like it was losing connectivity several times a second. I SSH&#8217;d into each of the hosts and discovered that they could not ping each other over the management network, and they definitely should have been able to.</p>
<h2> Redundancy Design Options</h2>
<p>The myriad of blog posts concerning vSphere Standard vSwitch redundancy typically will show a topology like this:</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/vSwitch_Overview.png"><img class="aligncenter  wp-image-3780" alt="vSwitch Overview ESXi vSwitch Load Balancing Woes" src="http://keepingitclassless.net/wp-content/uploads/2013/05/vSwitch_Overview.png" width="428" height="413" title="ESXi vSwitch Load Balancing Woes" /></a></p>
<p>As mentioned before, you&#8217;ll have no trouble finding posts that explain the basics of how each vSwitch NIC Teaming policy works. If you prefer to hear it straight from the horse&#8217;s mouth, try VMware&#8217;s <a href="http://www.vmware.com/files/pdf/virtual_networking_concepts.pdf" target="_blank">Virtual Networking Concepts</a> whitepaper. If you prefer a more personal approach, <a href="http://kensvirtualreality.wordpress.com/2009/04/05/the-great-vswitch-debate%E2%80%93part-3/" target="_blank">this article by Ken Cline</a> is very popular with respect to this topic.</p>
<p>I&#8217;ll assume you&#8217;ve at least read those two links by now, so as a quick summary, the available load-balancing policies on a vSwitch are:</p>
<ol>
<li><span style="line-height: 13px;"> <span style="text-decoration: underline;"><strong>Route based on the originating virtual port ID</strong></span> &#8211; this selects an uplink when a virtual device (virtual machine or vmkernel) attaches to the vSwitch. Traffic leaving this vNIC destined outside the host will always leave on that pre-determined pNIC, unless that pNIC were to fail.</span></li>
<li><span style="text-decoration: underline;"><strong>Route based on IP Hash</strong></span> &#8211; this is nothing new to anyone familiar with 802.3ad; the idea is that a given packet has a hash made of it&#8217;s source and destination IP addresses, and the resulting math will determine which link is used to egress from the host. Traffic from the same IP address within the host to the same IP address outside the host will always leave on the same pNIC, but other traffic flows may fall on another NIC, even if the virtual source is the same.</li>
<li><span style="text-decoration: underline;"><strong>Route based on source MAC hash</strong></span> &#8211; this is another hash-based selection mechanism, but since it&#8217;s only source based, and will correspond to an actual vNIC, this produces much the same behavior as the very first policy.</li>
<li><span style="text-decoration: underline;"><strong>Use explicit failover order</strong></span> &#8211; not used very often. Suffice it to say it&#8217;s really <strong>not</strong> load balancing at all, it&#8217;s more of a hardcore deterministic method of placing traffic on the pNIC that you want. Should that pNIC fail, the next will be used.</li>
</ol>
<p>Now, with respect to the problem I was experiencing in the first section; I had seen this behavior before, and knew that in the network topologies I&#8217;d worked with (etherchannel to the hosts in at least some way), the first policy where traffic is routed based on the originating virtual port ID would produce problems. To sum up that story, the customer was indeed using port channels from a Cisco 3750 stack, and after reading a fairly helpful KB article from VMware (<a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1001938" target="_blank">ESXi Host Requirements for Link Aggregation</a>), I had the documentation I needed to confirm with the customer that the appropriate policy for this topology was &#8220;route based on IP hash&#8221;.</p>
<p>Now &#8211; many of you know that my roots are not in virtualization, but on the network side, and I refused to leave it at that. That KB article did mention that IP hash method was required if the upstream switching fabric was running link aggregation.</p>
<p class="note">Keep in mind that switch virtualization features like Cisco&#8217;s VSS or StackWise are included in this &#8211; those technologies are aimed at providing link aggregation without any specific host dependencies other than standardized 802.3ad</p>
<p>What that KB article failed to explain, however, is <strong>why</strong> this requirement was put into place. It&#8217;s clear that the first policy in our list does not work with link aggregation &#8211; the experience mentioned at the beginning made that very clear. What wasn&#8217;t clear was the technical reason for this. I wanted to know exactly why, when this policy is selected, pings between hosts management vmkernels did not succeed.</p>
<p>This deep-dive resulted in an exploration of exactly what&#8217;s happening within the vSwitch. When the &#8220;virtual port ID&#8221; policy is selected, each virtual NIC is more or less statically pinned to a given pNIC.</p>
<div id="attachment_3787" class="wp-caption aligncenter" style="width: 631px"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/vSwitch_VirtualPortID.png"><img class=" wp-image-3787    " alt="vSwitch VirtualPortID ESXi vSwitch Load Balancing Woes" src="http://keepingitclassless.net/wp-content/uploads/2013/05/vSwitch_VirtualPortID.png" width="621" height="401" title="ESXi vSwitch Load Balancing Woes" /></a><p class="wp-caption-text">Policy 1 &#8211; Route Based on Originating Virtual Port ID (Click for Details)</p></div>
<p>This allows us to have deterministic traffic flows, but just as important, it allows our upstream switching infrastructure to learn a given vNIC MAC address on a single physical switchport, rather than multiple.</p>
<p>Notice in the above diagram that no multi-chassis etherchannel is being attempted. The hosts are simply single homed to two completely separate upstream switches. Sure, those switches provide L2 connectivity for the whole thing using some kind of link between them, but that&#8217;s it. Any connection out of these hosts must go to one host or the other.</p>
<p>However, in today&#8217;s DC, this topology is becoming increasingly uncommon. Aside from the obvious single point of failure, this requires separate administration of each switch, and running link aggregation is a very common way to provide link redundancy. So, we want to use link aggregation, but how does this impact our virtual environment?</p>
<p>In smaller DCs, this is a fairly common topology:</p>
<div id="attachment_3791" class="wp-caption aligncenter" style="width: 646px"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/StackWise.png"><img class=" wp-image-3791 " alt="StackWise ESXi vSwitch Load Balancing Woes" src="http://keepingitclassless.net/wp-content/uploads/2013/05/StackWise.png" width="636" height="509" title="ESXi vSwitch Load Balancing Woes" /></a><p class="wp-caption-text">ESXi Host Networking Redundancy with 802.3ad and Cisco StackWise</p></div>
<p>Don&#8217;t use Catalyst 3750s? The same applies with the 6500&#8242;s VSS feature. Same end-result, just a different method. vPC is a different beast, since vPC requires LACP to function properly and as mentioned, LACP is not supported on the standard vSwitch (it should be, though).</p>
<p>As you can see in the above diagram, we&#8217;re utilizing etherchannels between the switch stack (logically a single switch so that&#8217;s okay) and each ESXi Host. However, our load balancing policy is still set to the default of &#8220;route based on originating virtual port&#8221;. Remember, this policy pins traffic from a virtual port to a physical port, and traffic from that virtual port can ONLY ever leave the host on the port it was assigned.</p>
<p>Here&#8217;s where I stumbled across some additional vSwitch behavior that most resources on the web (actually all that I could find) fail to mention. Not only does this policy restrict the pNIC that a certain virtual entity can use to <span style="text-decoration: underline;">send</span> traffic out of the host, but it also means that <span style="text-decoration: underline;"><strong>if traffic COMING IN to the host were to be received on another pNIC it is blocked by the vSwitch.</strong></span></p>
<p>Maybe a visualization will help:</p>
<p style="text-align: center;"><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/StackWisewFlows.png"><img class="aligncenter  wp-image-3793" alt="StackWisewFlows ESXi vSwitch Load Balancing Woes" src="http://keepingitclassless.net/wp-content/uploads/2013/05/StackWisewFlows.png" width="630" height="505" title="ESXi vSwitch Load Balancing Woes" /></a></p>
<p>Note that on the left host, the traffic for the management vmkernel port is leaving on VMNIC0 (shown in green). This means that all traffic leaving that vmkernel destined somewhere outside the host will always leave on that NIC. However, the vmkernel for the other host is pinned to VMNIC1 (shown in red). Since other traffic destined for these vmkernels is being sent in to the host on a pNIC other than what it is pinned to, then that traffic is dropped. As I mentioned, most articles speak in depth about traffic leaving the host, but not about traffic being received by the host while in this mode.</p>
<p>The question remains &#8211; why is traffic entering what is clearly a non-working NIC for this traffic type? The answer lies in how 802.3ad works. Keep in mind that the recommendation is to NOT use this &#8220;virtual port ID&#8221; policy when 802.3ad is present, and this is why. Whenever you&#8217;re using this policy in vSphere, it&#8217;s aimed at allowing the switches to learn a given MAC on a single port, and none others. However, if the switches are configured for a port channel, MACs are not learned on physical interfaces, but on the logical port channel interfaces they&#8217;re a member of.</p>
<pre class="brush: text; gutter: true">SwitchA#show mac address-table address 6c20.56be.a6c0
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  1    6c20.56be.a6c0    DYNAMIC     Po10</pre>
<p>When a frame enters the switch destined for the MAC address shown, the interface listed is a port channel interface. Because of this, the switch defers to whatever load balancing mechanism is configured on that switch &#8211; a common one is based off of source and destination IP address, just like the second vSwitch policy. Because of this, traffic heading towards the host may enter on a completely different link. The diagram shown above is more of a worst case scenario &#8211; it&#8217;s likely that certain traffic flows will work, and others will not. This was the case in my problem at the beginning of this post.</p>
<p>This is why you configure the second policy &#8211; &#8220;route based on IP hash&#8221;, rather than the default &#8220;virtual port ID&#8221; policy. The &#8220;ip hash&#8221; policy is the vSphere equivalent of standards-based 802.3ad. It knows the switch may send traffic on whatever link it chooses, so this policy allows such behavior.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3766" width="1" height="1" style="display: none;" title="ESXi vSwitch Load Balancing Woes" alt=" ESXi vSwitch Load Balancing Woes" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/EygkG7jrxGQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/esxi-vswitch-load-balancing-woes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/esxi-vswitch-load-balancing-woes/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=esxi-vswitch-load-balancing-woes</feedburner:origLink></item>
		<item>
		<title>[Humor] Virtual Routing Inception</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/2fxxZoOjz04/</link>
		<comments>http://keepingitclassless.net/2013/05/humor-virtual-routing-inception/#comments</comments>
		<pubDate>Fri, 10 May 2013 14:00:43 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[csr1000v]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[vyatta]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3748</guid>
		<description><![CDATA[Don&#8217;t ask me what kind of daydreaming it took to arrive at this, but&#8230;.I just realized that the following was possible: Which was ALREADY terrifying enough &#8211; but then my mind went here: Have a great weekend.]]></description>
				<content:encoded><![CDATA[<p>Don&#8217;t ask me what kind of daydreaming it took to arrive at this, but&#8230;.I just realized that the following was possible:</p>
<p><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/screen1.png"><img class="aligncenter size-full wp-image-3749" alt="screen1 [Humor] Virtual Routing Inception" src="http://keepingitclassless.net/wp-content/uploads/2013/05/screen1.png" width="670" height="461" title="[Humor] Virtual Routing Inception" /></a></p>
<p>Which was ALREADY terrifying enough &#8211; but then my mind went here:</p>
<p><a href="http://keepingitclassless.net/wp-content/uploads/2013/05/screen2.png"><img class="aligncenter size-full wp-image-3750" alt="screen2 [Humor] Virtual Routing Inception" src="http://keepingitclassless.net/wp-content/uploads/2013/05/screen2.png" width="660" height="455" title="[Humor] Virtual Routing Inception" /></a></p>
<p>Have a great weekend.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3748" width="1" height="1" style="display: none;" title="[Humor] Virtual Routing Inception" alt=" [Humor] Virtual Routing Inception" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/2fxxZoOjz04" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/humor-virtual-routing-inception/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/humor-virtual-routing-inception/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=humor-virtual-routing-inception</feedburner:origLink></item>
		<item>
		<title>Quality of Service [Part 3]: Nexus 1000v – The Servers are Doing QoS Now?!?</title>
		<link>http://feedproxy.google.com/~r/KeepingItClassless/~3/aK9RGvYRRbc/</link>
		<comments>http://keepingitclassless.net/2013/05/quality-of-service-part-3-nexus-1000v-the-servers-are-doing-qos-now-2/#comments</comments>
		<pubDate>Fri, 10 May 2013 14:00:01 +0000</pubDate>
		<dc:creator>Matt Oswalt</dc:creator>
				<category><![CDATA[Route/Switch]]></category>
		<category><![CDATA[1000v]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[qos]]></category>

		<guid isPermaLink="false">http://keepingitclassless.net/?p=3740</guid>
		<description><![CDATA[I&#8217;m going to talk a little bit about performing QoS functions from within the Nexus 1000v. Since it&#8217;s been awhile since I made the last post in this series, a recap is in order: In my first post, I explained what the different types of QoS policies were in the context of Cisco&#8217;s MQC In [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m going to talk a little bit about performing QoS functions from within the Nexus 1000v. Since it&#8217;s been awhile since I made the last post in this series, a recap is in order:</p>
<ol>
<li><span style="line-height: 13px;">In my <a href="http://keepingitclassless.net/2012/11/cisco-quality-of-service-part-1-types-of-qos-policies/" target="_blank">first post</a>, I explained what the different types of QoS policies were in the context of Cisco&#8217;s MQC</span></li>
<li>In my <a href="http://keepingitclassless.net/2012/11/qos-part-2-qos-and-jumbo-frames-on-nexus-ucs-and-vmware/" target="_blank">second post</a>, I went through the actual configuration on specific platforms like the Cisco Nexus and Unified Compute platforms, as well as a brief mention of vSphere&#8217;s participation, but less on the QoS aspects and more on MTU.</li>
<li>I also made a <a href="http://keepingitclassless.net/2013/04/the-importance-of-qos-in-a-converged-infrastructure/" target="_blank">QoS-related post</a> that explored why it&#8217;s important to have a proper QoS configuration, especially in a converged infrastructure like so many data centers are becoming.</li>
</ol>
<p><span id="more-3740"></span></p>
<p>In today&#8217;s converged environments, it&#8217;s no longer acceptable to simply group all traffic on a single interface into a QoS policy, if the end device is not performing marking of it&#8217;s own. While there are many ways to classify traffic, the most efficient way is to use L2 markings, otherwise known as Class of Service (CoS). Since this is in the Ethernet header, performing classification does not require deep inspection of the packet.</p>
<p>Take most VoIP phones out there on the market, Cisco included. The majority allow you to plug that phone into the wall jack, and on that phone, there&#8217;s another port that allows you to plug in your PC. The phone essentially serves the purpose of an extremely small switch, allowing both your PC as well as the phone itself to get network connectivity. Therefore, the phone will send both types of traffic upstream. However, it&#8217;s important to give the traffic that originated from the phone priority, while traffic that was simply passed through the phone from the PC should get less priority. This is done on the switch level, but the switch can easily figure out which frames are which if they&#8217;re marked appropriately.</p>
<p>With the dawn of virtualization, servers are now no different. We have so many applications converging into the data center, we need to make sure that our QoS trust boundary is close enough to the &#8220;packet generators&#8221; so that we&#8217;re classifying priority traffic specifically. There are two ways to do this.</p>
<ol>
<li><span style="line-height: 13px;">Use a server with a lot of NICs. Configure the hypervisor so that the VMs with high priority can only use some subset of physical links, and put all the other VMS on other links. Classifying the traffic is pretty simple in this case &#8211; merely treat traffic that arrives on that set of switchports differently than the other switchports. This is essentially physical classification.</span></li>
<li>Classify traffic within the hypervisor, based on the originating <em>virtual</em> switchport (or port group). Use this classification to tag relevant traffic with a CoS value so that the upstream switch can immediately identify the proper class to place the traffic in</li>
</ol>
<p>Most of the time, if QoS is absolutely needed, and no hypervisor solution is available, then number 1 works&#8230;.okay. With virtual networking solutions like Cisco UCS where vSphere NICs are no more physical than the virtual machines riding on top, then yeah it&#8217;s probably no big deal to rely on the separation of NICs to classify traffic. However, method number 2 isn&#8217;t that far-fetched.</p>
<p>By far, the most widely used solution on top of vSphere that allows us to use the second method is the Cisco Nexus 1000v. This product is not for everyone &#8211; I think the biggest users of the 1000v are the network people, and some organizations have not been built so that those two silos can interact well. Sad, but true.</p>
<p>This isn&#8217;t a sales pitch for the 1000v, but the fact is that right now it&#8217;s one of the only solutions that allow you to do this. Classification is fairly easy &#8211; just like anything else in MQC, you must define a policy-map in order to do anything:</p>
<pre class="brush: text; gutter: true">n1000v(config)# policy-map mark-silver
n1000v(config-pmap)# class class-silver
n1000v(config-pmap-c-qos)# set cos 3</pre>
<p>Pretty simple, right? Now we apply it to a vethernet port-profile (where VMs plug in):</p>
<pre class="brush: text; gutter: true">n1000v(config)# port-profile type vethernet SILVER_VMS
n1000v(config-if)# service-policy input mark-silver</pre>
<p>Traffic that egresses hosts on this port profile will now have a CoS tag of 3 in their Ethernet header, allowing you to easily classify traffic out of a single NIC if you wanted to.</p>
<p class="note">The 1000v is actually capable of some pretty advanced QoS features, considering what it is. Check out the <a href="http://www.cisco.com/en/US/docs/switches/datacenter/nexus1000/sw/4_2_1_s_v_1_4/qos/configuration/guide/n1000v_qos.html" target="_blank">QoS configuration guide</a> for info on  policing, classification, marking, and more.</p>
 <img src="http://keepingitclassless.net/?feed-stats-post-id=3740" width="1" height="1" style="display: none;" title=" Quality of Service [Part 3]: Nexus 1000v   The Servers are Doing QoS Now?!?" alt="  Quality of Service [Part 3]: Nexus 1000v   The Servers are Doing QoS Now?!?" /><img src="http://feeds.feedburner.com/~r/KeepingItClassless/~4/aK9RGvYRRbc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://keepingitclassless.net/2013/05/quality-of-service-part-3-nexus-1000v-the-servers-are-doing-qos-now-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://keepingitclassless.net/2013/05/quality-of-service-part-3-nexus-1000v-the-servers-are-doing-qos-now-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=quality-of-service-part-3-nexus-1000v-the-servers-are-doing-qos-now-2</feedburner:origLink></item>
	</channel>
</rss>
