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

<channel>
	<title>I-R-Coops Blog</title>
	<atom:link href="http://cooperlees.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://cooperlees.com/blog</link>
	<description>The world of tech and life of Cooper ...</description>
	<lastBuildDate>Sat, 12 May 2012 04:50:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>SRX Branch Chassis Cluster Ports</title>
		<link>http://cooperlees.com/blog/?p=592</link>
		<comments>http://cooperlees.com/blog/?p=592#comments</comments>
		<pubDate>Sat, 12 May 2012 04:50:02 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[branch]]></category>
		<category><![CDATA[chassis]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[fxp]]></category>
		<category><![CDATA[fxp0]]></category>
		<category><![CDATA[fxp1]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[srx]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=592</guid>
		<description><![CDATA[Here is a table of the ports that are used for chassis cluster control link and management ports on Branch SRX devices. The quoted ports are the &#8216;stand alone&#8217; non clustered port names (not node1&#8242;s port names once clustered). In a SRX cluster the PIM slots on node1 start at the last PIM slot of [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a table of the ports that are used for chassis cluster control link and management ports on Branch SRX devices.</p>
<p>The quoted ports are the &#8216;stand alone&#8217; non clustered port names (not node1&#8242;s port names once clustered). In a SRX cluster the PIM slots on node1 start at the last PIM slot of node0 + 1. For example, a SRX240 cluster&#8217;s node1 starts at PIM 5. It&#8217;s control link port is effectively ge-5/0/1).</p>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top"><strong>Model</strong></td>
<td valign="top"><strong>FXP0 (Management)</strong></td>
<td valign="top"><strong>FXP1 (Control Link)</strong></td>
</tr>
<tr>
<td valign="top">SRX100</td>
<td valign="top">fe-0/0/6</td>
<td valign="top">fe-0/0/7</td>
</tr>
<tr>
<td valign="top">SRX210</td>
<td valign="top">fe-0/0/6</td>
<td valign="top">fe-0/0/7</td>
</tr>
<tr>
<td valign="top">SRX220</td>
<td valign="top">ge-0/0/6 (&gt; 11.0)</td>
<td valign="top">ge-0/0/7</td>
</tr>
<tr>
<td valign="top">SRX240</td>
<td valign="top">ge-0/0/0</td>
<td valign="top">ge-0/0/1</td>
</tr>
<tr>
<td valign="top">SRX550</td>
<td valign="top">ge-0/0/0</td>
<td valign="top">ge-0/0/1</td>
</tr>
<tr>
<td valign="top">SRX650</td>
<td valign="top">ge-0/0/0</td>
<td valign="top">ge-0/0/1</td>
</tr>
</tbody>
</table>
<p style="text-align: left;"> <span style="text-align: center;">*fab0 and fab1 interfaces (Data Link) are always configurable, e.g.:</span></p>
<ul>
<li>set interfaces fab0 fabric-options member-interfaces ge-0/0/2</li>
<li>set interfaces fab1 fabric-options member-interfaces ge-5/0/2</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=592</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup your Junos configs TODAY !</title>
		<link>http://cooperlees.com/blog/?p=584</link>
		<comments>http://cooperlees.com/blog/?p=584#comments</comments>
		<pubDate>Tue, 08 May 2012 10:01:44 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[archival]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[sftp]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=584</guid>
		<description><![CDATA[Cooper&#8217;s tip of the moment, ALWAYS backup your Junos configurations. Hate when a customer does not, your router does not have raid (unless it has redundant REs, VC or is in a Chassis Cluster ). It&#8217;s a built in feature of Junos so use it! It even allows multiple sites, so if you have DR [...]]]></description>
			<content:encoded><![CDATA[<p>Cooper&#8217;s tip of the moment, ALWAYS backup your Junos configurations. Hate when a customer does not, your router does not have raid (unless it has redundant REs, VC or is in a Chassis Cluster <img src='http://cooperlees.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). <em>It&#8217;s a built in feature of Junos so use it!</em> It even allows multiple sites, so if you have DR site with storage &#8211; Push it there too!</p>
<p><strong>Here is the conf:</strong></p>
<pre class="brush: plain; title: ; notranslate">
set system archival configuration transfer-on-commit
set system archival configuration archive-sites &quot;scp://junos@x.x.x.x/data/configs/DEVICE&quot; password &quot;bla&quot;
set system archival configuration archive-sites &quot;scp://junos@y.y.y.y/data/configs/DEVICE&quot; password &quot;bla&quot;
</pre>
<p>More info: <a href="http://www.juniper.net/techpubs/en_US/junos9.5/information-products/topic-collections/swconfig-system-basics/junos-software-system-management-router-configuration-archiving.html">http://www.juniper.net/techpubs/en_US/junos9.5/information-products/topic-collections/swconfig-system-basics/junos-software-system-management-router-configuration-archiving.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=584</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QFabric Part 2 &#8211; Lets get Down and Dirty Deploying and Configuring &#8230;</title>
		<link>http://cooperlees.com/blog/?p=554</link>
		<comments>http://cooperlees.com/blog/?p=554#comments</comments>
		<pubDate>Fri, 20 Apr 2012 15:03:12 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[configure]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[director]]></category>
		<category><![CDATA[interconnect]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[procedure]]></category>
		<category><![CDATA[qfabric]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[steps]]></category>
		<category><![CDATA[tasks]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=554</guid>
		<description><![CDATA[Juniper is selling QFabric as a bundle. Due to this the install has been templated and will be similar in regards to the control plane and getting the fabric up and ready to be configured for each target environment. Every QFabric bundle today must include Juniper Professional Services. Hopefully in the future I (and other [...]]]></description>
			<content:encoded><![CDATA[<div>Juniper is selling QFabric as a bundle. Due to this the install has been templated and will be similar in regards to the control plane and getting the fabric up and ready to be configured for each target environment. Every QFabric bundle today must include Juniper Professional Services. Hopefully in the future I (and other partner engineers) will be seen as smart enough to do a QFabric install without Juniper&#8217;s assistance. I think I could manage it <img src='http://cooperlees.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Here is the procedure that you and your friendly Juniper Professional Service engineer will complete to get QFabric up and running.</div>
<div></div>
<div><strong>Building the EX4200 VCs for Control Plane</strong></div>
<div>Juniper have extensive configuration documentation with example configurations for the Control Plane for the QFabric components. Please read Juniper&#8217;s article &#8220;<a href="http://www.juniper.net/techpubs/en_US/junos11.3/topics/example/qfabric-control-plane-virtual-chassis-configuring.html" target="_blank">Configuring the Virtual Chassis for the QFabric Switch Control Plane</a>&#8221; for instructions on building the control plane infrastructure. I will not go into specifics in this blog post for the control plane.</div>
<div style="text-align: center;"><img class="alignnone" title="QFabric Control Plane" src="http://cooperlees.com/images/blog/qfabric/qfabric_control_plane.gif" alt="" width="550" height="413" /></div>
<div><strong>Initial QFabric Components Deployment</strong></div>
<div>This is my recollection and notes taken during the demonstration and explanation from Juniper&#8217;s current most experienced QFabric installer in APAC of the basic process of getting your QFabric up and running.</div>
<div></div>
<div>
<ol>
<li>Check BOM against what&#8217;s been received and power all equipment and test for hardware issues</li>
<ol>
<li>Also ensure directors and interconnects are the same version (should not be a problem yet but as &#8216;newer&#8217; builds come old stock might pop up)</li>
</ol>
<li>Build and power ex4200 VCs for control plane</li>
<ol>
<li>I would recommended to upgrade to the JTAC recommended version of Junos on your 4200s</li>
</ol>
<li>Patch Up directors into control plane VCs and boot the desired &#8216;master director&#8217;</li>
<li>Complete the console initialisation and then after ~60 seconds boot the slave and complete it&#8217;s initial configuration</li>
<li>Patch directors into correct control ports and boot</li>
<li>Turn each node into &#8216;fabric mode&#8217;</li>
<li>Patch into each interconnect and boot each node</li>
<ol>
<li>The directors will adjust the version of Junos if required on the QFX3500 node</li>
</ol>
<li>You now have a functional QFabric and can now beging to alias nodes and add them to network/server groups</li>
</ol>
<div></div>
</div>
<p><strong>Configuration (all centrally from the Director)</strong></p>
<p>To build a new Fabric you need to</p>
<p>Create aliases for nodes</p>
<ul>
<li>set fabric aliases node-device SERIAL ALIAS_NAME</li>
</ul>
<div>Create node groups</div>
<div>Always have 1 network-domain and 1 server group (max 2 nodes per server group making it a redundant server group)</div>
<div>
<ul>
<li>set fabric resources node-group NW-NG-0 network-domain</li>
<li>set fabric resources node-group NW-NG-0 node-device ALIAS_NAME_X</li>
<li>set fabric resources node-group PRON-NG node-device PRON_SW1</li>
</ul>
<div>Further configuration is &#8216;like&#8217; a normal EX style configuration, but using the new interface names, for example:</div>
<div>Interface: NODE_ALIAS:xe-0/0/1.0<br />
Aggregated Interface: NODE_GROUP:ae0.0</div>
<div></div>
<div>
<div><strong>Handy Debug Commands</strong></div>
<div>
<ul>
<li>show fabric administration inventory director-group status all</li>
<ul>
<li>See the directors status and who is master</li>
</ul>
<li>show fabric administration inventory [terse]</li>
<ul>
<li>Shows all the hardware the directors have found and are including in the QFabric</li>
</ul>
</ul>
<ul>
<li>show chassis fabric connectivity</li>
<ul>
<li>Shows the connectivity through the interconnects to each nodes</li>
</ul>
<li>show fabric aliases</li>
<ul>
<li>See the serial to alias mappings</li>
</ul>
<li>show fabric inventory</li>
</ul>
</div>
</div>
<div style="text-align: center;">Checking VLANS, the ethernet-switching table etc. commands are all identical to the Juniper EX Switch family.</div>
<div></div>
<div>
<div><strong>Power On Sequence</strong></div>
<div>
<ol>
<li>ex4200 Control Plane VCs</li>
<li>QFabric Interconnects</li>
<li>Director Master</li>
<ol>
<li>Election of master is based on uptime. Wait for ~60 to boot secondary director node</li>
</ol>
<li>Nodes</li>
<ol>
<li>I have not tested this, but I would power the network group first, with the members I would prefer to be the masters of the &#8216;vc&#8217; first (remember each group with multiple members is an incarnation of VC &#8211; same rules apply)</li>
</ol>
</ol>
</div>
</div>
<div></div>
<div><strong>Extra Functions</strong></div>
</div>
<p><span style="text-decoration: underline;">Node Replacement</span></p>
<p>Replacing a node, and keeping the configuration is EXTREMELY easy due to the &#8216;replace pattern&#8217; feature of Junos.</p>
<ul>
<li>Repatch cables</li>
<li>replace pattern OLD_SERIAL with NEW_SERIAL</li>
<li>commit</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=554</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QFabric Part 1 &#8211; Explained and Explored First Hand</title>
		<link>http://cooperlees.com/blog/?p=525</link>
		<comments>http://cooperlees.com/blog/?p=525#comments</comments>
		<pubDate>Thu, 19 Apr 2012 13:12:26 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[groups]]></category>
		<category><![CDATA[independent]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[qfabric]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=525</guid>
		<description><![CDATA[I was lucky enough to be one of the first APAC partner engineers to get my hands on Juniper&#8217;s new QFabric gigantic scalable switch technology. I have even beat some of Juniper&#8217;s own SEs. In general, it rocks, but does have some features and fine tuning, this will come. This post is an introduction to [...]]]></description>
			<content:encoded><![CDATA[<p>I was lucky enough to be one of the first APAC partner engineers to get my hands on Juniper&#8217;s new QFabric gigantic scalable switch technology. I have even beat some of Juniper&#8217;s own SEs. In general, it rocks, but does have some features and fine tuning, this will come. This post is an introduction to QFabric, with my likes, dislikes and feature wish-list.</p>
<p>I would like to thanks Juniper APAC and Yeu Kuang Bin for this excellent opportunity and very knowledgable training.</p>
<p style="text-align: center;"><img class="aligncenter" title="Cooper with QFabric" src="http://cooperlees.com/images/blog/qfabric/c00p-with-qfabric.JPG" alt="Cooper with a working QFabric" width="400" height="535" /></p>
<p><strong>What is QFabric?</strong></p>
<p>The most simple explanation of QFabric I can explain is that it is basically a <a href="http://www.juniper.net/us/en/products-services/switching/ex-series/" target="_blank">Juniper EX Virtual Chassis</a> on steroids. The internal workings of the switch have been broken apart to be MUCH MORE scalable and Juniper have insured that there are no single points of failure, only selling the design with fully redundant components.</p>
<p>The QFabric components are:</p>
<ul>
<li>Director Group &#8211; 2 x QFX3100 (Control Plane)</li>
</ul>
<p style="text-align: center;"><img title="QFX3100" src="http://cooperlees.com/images/blog/qfabric/qfx3100.jpg" alt="" width="600" height="179" /></p>
<ul>
<li>Interconnects &#8211; 2 x QFX3008-I (Backplane / Fabric)</li>
<ul>
<li>2 REs per Interconnect</li>
</ul>
</ul>
<p style="text-align: center;"><img class="alignnone" title="QFX3008" src="http://cooperlees.com/images/blog/qfabric/qfx3008.jpg" alt="" width="365" height="600" /></p>
<ul>
<li>Nodes (Data Plane)</li>
<ul>
<li>Server Groups &#8211; 1 &#8211; 2 per group</li>
</ul>
</ul>
<p style="text-align: center;"><img class="alignnone" title="QFX3500" src="http://cooperlees.com/images/blog/qfabric/qfx3500.jpg" alt="" width="400" height="80" /></p>
<p style="text-align: center;"><img class="alignnone" title="QFX3500 Rear" src="http://cooperlees.com/images/blog/qfabric/qfx3500-rear.jpg" alt="" width="400" height="299" /></p>
<p>40GE DAC cable (1m,3m,5m lengths)<br />
40GB &#8211; QSFP+ (quad small form-factor pluggable plus) &#8211; 40 gig uses MTP connector</p>
<p style="text-align: center;"><img class="alignnone" title="QSFP+ Top" src="http://cooperlees.com/images/blog/qfabric/juniper_qsfp_top.jpg" alt="" width="300" height="111" /></p>
<p style="text-align: center;"><img class="alignnone" title="QSFP+ Port" src="http://cooperlees.com/images/blog/qfabric/juniper_qsfp_port.jpg" alt="" width="300" height="218" /></p>
<p><strong>QFabric Node Discovery</strong></p>
<p><span style="text-decoration: underline;">Control Plane</span></p>
<p>The control plane is discovered automatically, it depends on being configured with a pre-defined Juniper configuration in order to discover the nodes via a pre-defined method when you turn the QFX3500 into fabric mode.</p>
<p><span style="text-decoration: underline;">Data/Fabric Plane</span></p>
<p>The fabric plan is what makes QFabric as scalable as it is. Once again a predefined HA design is supplied and the directors perform the following tasks:</p>
<ol>
<li>Discovers, builds &amp; Maintains Topology of the Fabric</li>
<li>Assembles the entire topology</li>
<li>Propagates path information to all entities</li>
</ol>
<div>NOTE: Interconnects DO NOT interconnect to each other</div>
<div></div>
<div><strong>Node Aliasing</strong></div>
<div>Node aliasing allows administrators to give nodes a meaningful name and is used when talking about specific interfaces for specific nodes or node groups</div>
<div>
<ul>
<li>Id the nodes via beaconing (the LCD screen) or serial number on chassis.</li>
<li>e.g. set fabric aliases node-device P6969-C NODE-0</li>
<ul>
<li>This name is used to reference ports and assign the node to a group (discussed next)</li>
</ul>
</ul>
</div>
<div><strong><strong>Logical </strong>Node Groups</strong></div>
<div>Node groups are used to allow the infrastructure to be divided up and allow the director to know what type of cofiguration to push to a nodes routing-engine. The local routing engine still performs some tasks, predominately to allow scale. A group can contain a maximum of 2 nodes. A group with 2 nodes is know as a redundant server group (It is a 2 node virtual chassis under the covers). Due to this, a redundant server group can have multi-chassis ae (aggregated ethernet) interfaces. There is one other type of group known as the Network node group. This group looks after all routing and l2 loop information, such as OSPF and spanning tree. All vlan routing etc. is done by these nodes.</div>
<div><span style="text-decoration: underline;">Group Summary</span></div>
<div>
<ol>
<li>Network Node Group (1 per QFabric &#8211; Max 8 nodes)</li>
<li>Server Group (Redundant Server Group optional &#8211; 2 nodes)</li>
<ol>
<li>Qfabric automatically creates a redundant server group if two nodes exist in a server group (via a form of virtual chassis).</li>
</ol>
</ol>
</div>
<div><strong>Port Referencing</strong></div>
<div>Now cause each node has an &#8216;alias&#8217; (discussed above) to reference a port in configuration you now use:</div>
<div>
<ul>
<li>NODE_ALIAS:INT_TYPE-x/x/x.x</li>
<li>e.g. NODE-0:xe-0/0/1.0</li>
</ul>
<p>Aggregated interfaces can be deployed &#8211; Across chassis in a redundant server group or on one chassis in a server group:</p>
<ul>
<li>GROUP_NAME:ae0.0</li>
<li>e.g. RACK-42-1:ae0.0</li>
</ul>
</div>
<div>QFabric can also function with port in FC and FCoE mode. There are some limitations to this feature today, but can provide an excellent mechanism to create redundant paths back through the Fabric to the SAN FC based network. This will be discussed in a dedicated post in my QFabric series.</div>
<div></div>
<div><strong>Summary</strong></div>
<div>QFabric, for a Data Center is ready today and works extremely well. It can allow a HUGE number of 10gb (and soon to be 40gb) ports to allow huge data movement around a DC at low latency. It is also effectively one single point of management for all your nodes, unless something goes wrong of course. For a campus, with end users, QFabric does not have many key features that we use today either with the MX or EX range. It could be used for large campuses as the aggregation or core (especially when more IPv4 and IPv6 routing is supported) and feed 10gb out to EX switches to provide the &#8216;edge&#8217;. The coming &#8216;micro&#8217; fabric is also interesting, which will allow for a more compelling footprint within a smaller data center.</div>
<div></div>
<div><strong>Key Likes</strong></div>
<div>
<ul>
<li>Single switch in regards to management and functionalty</li>
<ul>
<li>No TRILL or other L2 bridging redundancy protocols required</li>
</ul>
<li>Ultra redundant design &#8211; Enforced by Juniper</li>
<ul>
<li>No half way deployment, people can&#8217;t go in half assed !</li>
</ul>
<li>The simple well thought out HA deployment/design &#8211; Common install = easier to debug for JTAC / Engineers like myself</li>
<li>Scalability &#8211; Can see how big DCs could benefit from having 1 gigantic switch</li>
<li>Road map looks good &#8211; Key features and hardware are coming</li>
</ul>
</div>
<div><strong>Key Dislikes</strong></div>
<div>
<ul>
<li>AFL (Advanced Feature License) required for <strong>IPv6</strong> (when it arrives)</li>
<ul>
<li><em><strong>PLEASE Juniper &#8211; Can we have IPv6 for free or I will never get customers to deploy it</strong></em></li>
<li><span style="color: #000000;"><em>This really frustrates me &#8230; You may be able to tell <img src='http://cooperlees.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></span></li>
</ul>
<li>Limitation of 1 unit per interface</li>
<ul>
<li>No vlan tagging and multiple units in Network Groups</li>
<li>Can work around by turning port into trunk and assigning multiple L3 interfaces</li>
</ul>
<li>The need for legacy SAN infrastructure in order to use FC/FCoE (discussed in part 3)</li>
<li>No ability to have a full 48 Copper SFP 1gb interfaces in a node for legacy non 10gig equipment</li>
<ul>
<li>The QFX3500 can not fit physically the SFPs in top and bottom rows</li>
<li>This could be handy to keep legacy equipment and as it&#8217;s replaced change the SFP to a 10g SFP+</li>
</ul>
</ul>
</div>
<div><strong>Wish List</strong></div>
<div>
<ul>
<li>The Micro Fabric &#8211; will allow more use cases</li>
<li>Full SNMP interface statistics for all nodes through the director</li>
<ul>
<li>Currently testing this with Zenoss in the Juniper Lab &#8211; Has not worked so far</li>
<li>The ability to ensure node&#8217;s RE&#8217;s and PSU etc. are also a plus (have not tested / read the MIBs yet &#8211; so could be possible)</li>
</ul>
<li>Be able to downgrade and system wide request system rollback from the director</li>
<li>Full Q-in-Q Support</li>
<li>Fully self contained FC/FCoE support</li>
</ul>
</div>
<div><em>To Come in this series:</em></div>
<div>Part 2 &#8211; Deploying and Configuring</div>
<div>Part 3 &#8211; FCoE and SAN with QFabric</div>
<div>Part 4 &#8211; QFabric eratta (possibly &#8211; not sure yet &#8230;)</div>
<div></div>
<p>Please note: <em>The information presented here is from my own point of view. It is no way associated with the firm beliefs of Juniper Networks (TM) or ICT Networks (TM).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=525</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Junos Aggregated Ethernet w/LACP and Cisco Nexus Virtual Port Channel</title>
		<link>http://cooperlees.com/blog/?p=516</link>
		<comments>http://cooperlees.com/blog/?p=516#comments</comments>
		<pubDate>Tue, 17 Apr 2012 10:54:08 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[cisco]]></category>
		<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[11.4R1]]></category>
		<category><![CDATA[channel]]></category>
		<category><![CDATA[chassis]]></category>
		<category><![CDATA[ex]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[lacp]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[nx-os]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[port-channel]]></category>
		<category><![CDATA[vc]]></category>
		<category><![CDATA[vcp]]></category>
		<category><![CDATA[virtual]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=516</guid>
		<description><![CDATA[So when I was googiling around looking for working configurations of Junos (EX in this case) AE working with a Cisco vPC (Virtual Port Channel) I could not find any examples &#8230; So I said that I would post one. I will not be covering how to set up a VPC, if you&#8217;re interested in [...]]]></description>
			<content:encoded><![CDATA[<p>So when I was googiling around looking for working configurations of Junos (EX in this case) AE working with a Cisco vPC (Virtual Port Channel) I could not find any examples &#8230; So I said that I would post one. I will not be covering how to set up a VPC, if you&#8217;re interested in that side visit Cisco&#8217;s guide <a title="vPC" href="http://www.cisco.com/en/US/docs/switches/datacenter/sw/4_2/nx-os/interfaces/configuration/guide/if_vPC.html" target="_blank">here</a>. I will also not discuss how to configure a Juniper Virtual Chassis (more info <a href="http://www.juniper.net/techpubs/en_US/release-independent/junos/topics/reference/requirements/virtual-chassis-ex4200-ex4500-hardware-planning.html" target="_blank">here</a>). The devices used in this example are 2 x Cisco 7k (running NX-OS 4) and 2 x Juniper EX4500 switches (running Junos 11.4R1) in a Mixed Mode virtual chassis with 2 x ex4200s.</p>
<p>The goal, as network engineers is to use all bandwidth when it&#8217;s available (if feasible) and avoid legacy protocols to stop layer 2 loops such as Spanning-Tree. vPC from Cisco and VC technologies allow LACP (Link Control Aggregation Protocol) links to span physical chassis, allow the network engineer to avoid single points of failure and harness all available bandwidth. If a physical chassis was lost, you would still be operation in a degraded fashion, e.g. 1/2 the available bandwidth until the second chassis returned.</p>
<p>To configure the Cisco Nexus side you would require the following configuration on each vPC configured chassis. I found that VLAN pruning can be happily done and a Natvie VLAN1 is not needed if CDP is not mandatory (I did not test making CDP able to traverse the trunk through the Juniper &#8211; Would love to hear if someone does!).</p>
<pre class="brush: plain; title: ; notranslate">
conf t

interface port-channel69
  description Good practice
  switchport mode trunk
  vpc 69
  mtu 9216
  switchport trunk allowed vlan 69

interface Ethernetx/x
  channel-group 69 mode active
</pre>
<p><strong>Handy Cisco Debug Commands:</strong></p>
<ul>
<li>show vpc</li>
<li>show run interface port-channel69 member</li>
<li>show vpc consistency-parameters int port-channel 69</li>
<li>show port-channel summary</li>
</ul>
<p>The Juniper side would only require the following, this configuration is identical (you just choose different member interfaces) even if you don&#8217;t have a Virtual Chassis configuration.</p>
<pre class="brush: plain; title: ; notranslate">
set interfaces xe-0/0/39 ether-options 802.3ad ae0
set interfaces xe-1/0/39 ether-options 802.3ad ae0
set interfaces ae0 description &quot;Good Practice&quot;
set interfaces ae0 mtu 9216
set interfaces ae0 aggregated-ether-options lacp active
set interfaces ae0 unit 0 family ethernet-switching port-mode trunk
set interfaces ae0 unit 0 family ethernet-switching vlan members pr0nNet

set vlans pr0nNet vlan-id 69
set vlans pr0nNet l3-interface vlan.69 #If a L3 RVI is required
</pre>
<p>Handy Juniper Debug Commands:</p>
<ul>
<li>show interface terse ae0</li>
<li>show lacp interfaces (you want your interfaces to be collecting and distributing)</li>
<li>show interface ae0 extensive</li>
</ul>
<p>Please let me know if I have done anything that is not optimal &#8211; always eager to learn, I am definitely not (and proud of it) a Cisco expert.</p>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=516</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Juniper SRX Screens + Dynamic VPNs</title>
		<link>http://cooperlees.com/blog/?p=511</link>
		<comments>http://cooperlees.com/blog/?p=511#comments</comments>
		<pubDate>Sat, 03 Mar 2012 10:23:51 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[all]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[spoofing]]></category>
		<category><![CDATA[srx]]></category>
		<category><![CDATA[traffic]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=511</guid>
		<description><![CDATA[Little tip with SRX Dynamic VPNs and &#8216;security screens&#8217; on the VPN&#8217;s ingress zone I stumbled across during my JNCIE-SEC study. UPDATE (20120401): Seems Juniper has addressed and fixed this bug &#8230; More info: http://kb.juniper.net/InfoCenter/index?page=content&#38;id=KB21713&#38;actp=RSS  It seems you can not have the &#8216;IP Spoofing&#8217; screen enabled when sending IPSec Dynamic VPN traffic ingressing into the zone with [...]]]></description>
			<content:encoded><![CDATA[<p>Little tip with SRX Dynamic VPNs and &#8216;security screens&#8217; on the VPN&#8217;s ingress zone I stumbled across during my JNCIE-SEC study.</p>
<p><strong>UPDATE (20120401):</strong> Seems Juniper has addressed and fixed this bug &#8230;<br />
More info:<br />
<a href="http://kb.juniper.net/InfoCenter/index?page=content&amp;id=KB21713&amp;actp=RSS" target="_blank">http://kb.juniper.net/InfoCenter/index?page=content&amp;id=KB21713&amp;actp=RSS </a></p>
<p>It seems you can not have the &#8216;IP Spoofing&#8217; screen enabled when sending IPSec Dynamic VPN traffic ingressing into the zone with the screen set. This traffic is dropped by the screen which can be seen via a &#8216;security flow traceoption flag basic-datapath&#8217;:</p>
<ul>
<li>&#8216;packet dropped, drop by spoofing check.&#8217;</li>
</ul>
<p>So removing (or deactivating) the ip spoofing check solved the problem:</p>
<ul>
<li>deactivate security screen ids-option from-Internet ip spoofing</li>
</ul>
<p>Kind of lame, the spoofing screen sounds a good idea on your Internet facing interfaces, but seems a no no if you want dynamic VPNs. That is all. Hopefully eventually Juniper make this check smarter.</p>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=511</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Valentines &#8211; Junos Style !</title>
		<link>http://cooperlees.com/blog/?p=508</link>
		<comments>http://cooperlees.com/blog/?p=508#comments</comments>
		<pubDate>Wed, 15 Feb 2012 03:42:17 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[day]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[valentines]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=508</guid>
		<description><![CDATA[Awesome &#8211; This would get the chicks &#8230;]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">Awesome &#8211; This would get the chicks &#8230;</p>
<p style="text-align: center;"><img class="alignnone" title="Junos Valentines" src="http://cooperlees.com/images/blog/junos-valentine-conf.jpg" alt="Junos Valentines" width="639" height="505" /></p>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=508</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Juniper 5 in 5 &#8211; QFrabric</title>
		<link>http://cooperlees.com/blog/?p=505</link>
		<comments>http://cooperlees.com/blog/?p=505#comments</comments>
		<pubDate>Sat, 28 Jan 2012 22:54:52 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[5]]></category>
		<category><![CDATA[5 in 5]]></category>
		<category><![CDATA[cooperlees]]></category>
		<category><![CDATA[in]]></category>
		<category><![CDATA[qfabric]]></category>
		<category><![CDATA[question]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=505</guid>
		<description><![CDATA[@cooperlees is yours truely]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">@cooperlees is yours truely</p>
<p style="text-align: center;"><iframe src="http://www.youtube.com/embed/al71G4Isunc" frameborder="0" width="560" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=505</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Juniper EX Virtual Chassis Specific Member Config</title>
		<link>http://cooperlees.com/blog/?p=503</link>
		<comments>http://cooperlees.com/blog/?p=503#comments</comments>
		<pubDate>Fri, 13 Jan 2012 12:38:51 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[apply-group]]></category>
		<category><![CDATA[chassis]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[vc]]></category>
		<category><![CDATA[virtual]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=503</guid>
		<description><![CDATA[EX VC tip of the moment: Use apply-groups to add specific config to each node. For example:]]></description>
			<content:encoded><![CDATA[<p>EX VC tip of the moment: Use apply-groups to add specific config to each node.<br />
For example:</p>
<pre class="brush: plain; title: ; notranslate">
set groups member0 system host-name member0
set groups member1 system host-name member1
set groups member2 system host-name member2
set apply-groups member0
set apply-groups member1
set apply-groups member2
</pre>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=503</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPERF CSV Data Summary Script</title>
		<link>http://cooperlees.com/blog/?p=497</link>
		<comments>http://cooperlees.com/blog/?p=497#comments</comments>
		<pubDate>Fri, 13 Jan 2012 12:32:31 +0000</pubDate>
		<dc:creator>cooper</dc:creator>
				<category><![CDATA[g33k]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[average]]></category>
		<category><![CDATA[averages]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[iperf]]></category>
		<category><![CDATA[max]]></category>
		<category><![CDATA[maximum]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[summary]]></category>

		<guid isPermaLink="false">http://cooperlees.com/blog/?p=497</guid>
		<description><![CDATA[Recently I was required to do a network performance test between a Head Office and a WAN site. I knocked up this quick python script to parse the data collect to see the results. Thought it could be handy for others so here it is to download / share. Download Script Sample Output: Code: Cron [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was required to do a network performance test between a Head Office and a WAN site. I knocked up this quick python script to parse the data collect to see the results. Thought it could be handy for others so here it is to download / share.</p>
<p style="text-align: center;"><a title="Download Script" href="http://cooperlees.com/sac/download.php?FNAME=iperf-summary.py.bz2&amp;ID=5">Download Script</a></p>
<p style="text-align: left;">Sample Output:</p>
<p style="text-align: left;">
<pre class="brush: plain; title: ; notranslate">
cooper@dfbit:~/scripts/iperf-parse$ ./iperf-summary.py
------------------------------------
   --   IPERF CSV Summariser   --
-- Cooper Lees &lt;me@cooperlees.com --
------------------------------------
-- SUMMARY --
- 20111212103043 to 20120103090052
- 1004 runs of IPERF
- Averages:
-	Average Sent			= 2.64M
-	Average Received		= 2.28M
-	Average Send Bandwidth		= 985.75K
-	Average Receive Bandwidth	= 805.12K
-	Max Send Bandwidth		= 1.08M (at 20111230183021)
-	Max Receive Bandwidth		= 837.16K (at 20120102113052)
------------------------------------
</pre>
</p>
<p style="text-align: left;">Code:</p>
<p style="text-align: left;">
<pre class="brush: python; title: ; notranslate">
#!/usr/bin/python

# date,sender-ip,sender-port,receiver-ip,receiver-port,id,interval,transfer,bandwidth
# 20111212103043,10.120.15.8,45020,10.120.13.120,5001,5,0.0-21.4,2490368,931080
# 20111212103109,10.120.15.8,5001,10.120.13.120,57022,4,0.0-24.2,2228224,736145

FILENAME = 'client-iperf.log'

RUNS = 1

MAX_BANDWIDTH_SENT = 0
MAX_BANDWIDTH_SENT_DATE = 0
MAX_BANDWIDTH_RECEIVED = 0
MAX_BANDWIDTH_RECEIVED_DATE = 0

TOTAL_BANDWIDTH_SENT = 0
TOTAL_BANDWIDTH_RECEIVED = 0

TOTAL_SENT = 0
TOTAL_RECEIVED = 0

def convert_bytes(bytes):
	bytes = float(bytes)
	if bytes &gt;= 1099511627776:
		terabytes = bytes / 1099511627776
		size = '%.2fT' % terabytes
	elif bytes &gt;= 1073741824:
		gigabytes = bytes / 1073741824
		size = '%.2fG' % gigabytes
	elif bytes &gt;= 1048576:
		megabytes = bytes / 1048576
		size = '%.2fM' % megabytes
	elif bytes &gt;= 1024:
		kilobytes = bytes / 1024
		size = '%.2fK' % kilobytes
	else:
		size = '%.2fb' % bytes
	return size

f = open(FILENAME)
l1 = f.readline().strip().split(',')
l2 = f.readline().strip().split(',')
while l2 and l2[0] != '':
	if RUNS == 1:
		START = l1[0]

	BW_SENT = int(l1[8])
	BW_RECEIVED = int(l2[8])

	TOTAL_SENT = TOTAL_SENT + int(l1[7])
	TOTAL_RECEIVED = TOTAL_RECEIVED + int(l2[7])

	TOTAL_BANDWIDTH_SENT = TOTAL_BANDWIDTH_SENT + int(l1[8])
	TOTAL_BANDWIDTH_RECEIVED = TOTAL_BANDWIDTH_RECEIVED + int(l2[8])

	if BW_SENT &gt; MAX_BANDWIDTH_SENT:
		MAX_BANDWIDTH_SENT = BW_SENT
		MAX_BANDWIDTH_SENT_DATE = l1[0]

	if BW_RECEIVED &gt; MAX_BANDWIDTH_RECEIVED:
		MAX_BANDWIDTH_RECEIVED = BW_RECEIVED
		MAX_BANDWIDTH_RECEIVED_DATE = l2[0]

	END = l2[0]
	RUNS = RUNS + 1
	l1 = f.readline().strip().split(',')
	l2 = f.readline().strip().split(',')

f.close()

print &quot;------------------------------------&quot;
print &quot;   --   IPERF CSV Summariser   --   &quot;
print &quot;-- Cooper Lees &lt;me@cooperlees.com --&quot;
print &quot;------------------------------------&quot;
print &quot;-- SUMMARY --&quot;
print &quot;- %s to %s&quot; % ( START, END )
print &quot;- %d runs of IPERF&quot; % RUNS
print &quot;- Averages:&quot;
print &quot;-\tAverage Sent\t\t\t= %s&quot; % convert_bytes((TOTAL_SENT / RUNS))
print &quot;-\tAverage Received\t\t= %s&quot; % convert_bytes((TOTAL_RECEIVED / RUNS))
print &quot;-\tAverage Send Bandwidth\t\t= %s&quot; % convert_bytes((TOTAL_BANDWIDTH_SENT / RUNS))
print &quot;-\tAverage Receive Bandwidth\t= %s&quot; % convert_bytes((TOTAL_BANDWIDTH_RECEIVED / RUNS))
print &quot;-\tMax Send Bandwidth\t\t= %s (at %s)&quot; % (convert_bytes((MAX_BANDWIDTH_SENT)), MAX_BANDWIDTH_SENT_DATE)
print &quot;-\tMax Receive Bandwidth\t\t= %s (at %s)&quot; % (convert_bytes((MAX_BANDWIDTH_RECEIVED)), MAX_BANDWIDTH_RECEIVED_DATE)
print &quot;------------------------------------&quot;
</pre>
</p>
<p style="text-align: left;">Cron Job Script to Collect Data:</p>
<p style="text-align: left;">
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash

SERVER=&quot;x.x.x.x&quot;
LOG=&quot;client-iperf.log&quot;
TIME=&quot;5&quot;

echo &quot;--&gt; Starting iperf client @ $(date) ...&quot; | tee -a $LOG

if [ &quot;$1&quot; == &quot;-v&quot; ]; then
        iperf -t $TIME -c $SERVER -r -y C | tee -a $LOG
else
        iperf -t $TIME -c $SERVER -r -y C &gt;&gt; $LOG
fi

echo &quot;--&gt; Finished iperf client @ $(date)&quot; | tee -a $LOG
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://cooperlees.com/blog/?feed=rss2&#038;p=497</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

