<?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>SoftLayer Blog &#187; troubleshooting</title>
	<atom:link href="http://blog.softlayer.com/tag/troubleshooting/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.softlayer.com</link>
	<description>A Behind the Scenes Look at the Best Hosting Provider in the World</description>
	<lastBuildDate>Wed, 15 May 2013 15:33:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>iptables Tips and Tricks &#8211; Not Locking Yourself Out</title>
		<link>http://blog.softlayer.com/2012/iptables-tips-and-tricks-not-locking-yourself-out/</link>
		<comments>http://blog.softlayer.com/2012/iptables-tips-and-tricks-not-locking-yourself-out/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 16:41:30 +0000</pubDate>
		<dc:creator>Mark Ridlen</dc:creator>
				<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[ports]]></category>
		<category><![CDATA[protect]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=7401</guid>
		<description><![CDATA[The iptables tool is one of the simplest, most powerful tools you can use to protect your server. We&#8217;ve covered port redirection, rule processing and troubleshooting in previous installments to this &#8220;Tips and Tricks&#8221; series, but what happens when iptables turns against you and locks you out of your own system? Getting locked out of [...]]]></description>
			<content:encoded><![CDATA[<p>The <code>iptables</code> tool is one of the simplest, most powerful tools you can use to protect your server. We&#8217;ve covered <a href="http://blog.softlayer.com/2011/iptables-tips-and-tricks-port-redirection/">port redirection</a>, <a href="http://blog.softlayer.com/2012/iptables-tips-and-tricks-rule-processing/">rule processing</a> and <a href="http://blog.softlayer.com/2012/iptables-tips-and-tricks-rule-processing/">troubleshooting</a> in previous installments to this &#8220;Tips and Tricks&#8221; series, but what happens when iptables turns against you and locks you out of your own system? </p>
<p>Getting locked out of a production server can cost both time and money, so it&#8217;s worth your time to avoid this. If you follow the correct procedures, you can safeguard yourself from being firewalled off of your server. Here are seven helpful tips to help you keep your sanity and prevent you from locking yourself out.</p>
<p style="margin-bottom:0;padding-bottom:0;"><strong>Tip 1: Keep a safe ruleset handy.</strong></p>
<p style="margin-top:0;padding-top:0;">If you are starting with a working ruleset, or even if you are trying to troubleshoot an existing ruleset, take a backup of your iptables configuration before you ever start working on it.</p>
<p><code>iptables-save > /root/iptables-safe</code></p>
<p>Then if you do something that prevents your website from working, you can quickly restore it.</p>
<p><code>iptables-restore < /root/iptables-safe</code></p>
<p style="margin-bottom:0;padding-bottom:0;"><strong>Tip 2: Create a cron script that will reload to your safe ruleset every minute during testing.</strong></p>
<p style="margin-top:0;padding-top:0;">This was pointed out to my by a friend who swears by this method. Just write a quick bash script and set a cron entry that will reload it back to the safe set every minute. You'll have to test quickly, but it will keep you from getting locked out.</p>
<p style="margin-bottom:0;padding-bottom:0;"><strong>Tip 3: Have the IPMI KVM ready.</strong></p>
<p style="margin-top:0;padding-top:0;">SoftLayer-pod servers* are equipped with some sort of remote access device. Most of them have a KVM console. You will want to have your VPN connection set up, connected and the KVM window up. You can't paste to and from the KVM, so SSH is typically easier to work with, but it will definitely cut down on the downtime if something does go wrong.</p>
<p><em>*This may not apply to servers that were originally provisioned under another company name.</em></p>
<p style="margin-bottom:0;padding-bottom:0;"><strong>Tip 4: Try to avoid generic rules.</strong></p>
<p style="margin-top:0;padding-top:0;">The more criteria you specify in the rule, the less chance you will have of locking yourself out. I would liken this to a pie. A specific rule is a very thin slice of the pie.</p>
<p><code>iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -d 123.123.123.123 -j DROP</code></p>
<p>But if you block port 22 from any to any, it's a very large slice.</p>
<p><code>iptables -A INPUT -p tcp --dport 22 -j DROP</code></p>
<p>There are plenty of ways that you can be more specific. For example, using "<code>-i eth0</code>" will limit the processing to a single NIC in your server. This way, it will not apply the rule to <code>eth1</code>.</p>
<p style="margin-bottom:0;padding-bottom:0;"><strong>Tip 5: Whitelist your IP address at the top of your ruleset.</strong></p>
<p style="margin-top:0;padding-top:0;">This may make testing more difficult unless you have a secondary offsite test server, but this is a very effective method of not getting locked out.</p>
<p><code>iptables -I INPUT -s &lt;your IP&gt; -j ACCEPT</code></p>
<p>You need to put this as the FIRST rule in order for it to work properly ("<code>-I</code>" inserts it as the first rule, whereas "<code>-A</code>" appends it to the end of the list).</p>
<p style="margin-bottom:0;padding-bottom:0;"><strong>Tip 6: Know and understand all of the rules in your current configuration.</strong></p>
<p style="margin-top:0;padding-top:0;">Not making the mistake in the first place is half the battle. If you understand the inner workings behind your iptables ruleset, it will make your life easier. Draw a flow chart if you must.</p>
<p style="margin-bottom:0;padding-bottom:0;"><strong>Tip 7: Understand the way that iptables processes rules.</strong></p>
<p style="margin-top:0;padding-top:0;">Remember, the rules start at the top of the chain and go down, unless specified otherwise. Crack open the <a href="http://linux.die.net/man/8/iptables">iptables man page</a> and learn about the options you are using.</p>
<p>-Mark</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/iptables-tips-and-tricks-not-locking-yourself-out/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>iptables Tips and Tricks – Troubleshooting Rulesets</title>
		<link>http://blog.softlayer.com/2012/iptables-tips-and-tricks-%e2%80%93-troubleshooting-rulesets/</link>
		<comments>http://blog.softlayer.com/2012/iptables-tips-and-tricks-%e2%80%93-troubleshooting-rulesets/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 17:34:58 +0000</pubDate>
		<dc:creator>Mark Ridlen</dc:creator>
				<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[chain]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[packets]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[ports]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[traffic]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=6831</guid>
		<description><![CDATA[One of the most time consuming tasks with iptables is troubleshooting a problematic ruleset. That will not change no matter how much experience you have with it. However, with the right mindset, this task becomes considerably easier. If you missed my last installment about iptables rule processing, here&#8217;s a crash course: The rules start at [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most time consuming tasks with iptables is troubleshooting a problematic ruleset. That will not change no matter how much experience you have with it. However, with the right mindset, this task becomes considerably easier.</p>
<p style="margin-bottom:0; padding-bottom:0;">If you missed my last installment about <a href="http://blog.softlayer.com/2012/iptables-tips-and-tricks-rule-processing/">iptables rule processing</a>, here&#8217;s a crash course:</p>
<ol style="margin-top:0; padding-top:0;">
<li>The rules start at the top, and proceed down, one by one unless otherwise directed.</li>
<li>A rule must match exactly.</li>
<li>Once iptables has accepted, rejected, or dropped a packet, it will not process any further rules on it.</li>
</ol>
<p>There are essentially two things that you will be troubleshooting with iptables &#8230; Either <strong>it&#8217;s not accepting traffic and it should be</strong> OR <strong>it&#8217;s accepting traffic and it shouldn&#8217;t be</strong>. If the server is intermittently blocking or accepting traffic, that may take some additional troubleshooting, and it may not even be related to iptables.</p>
<p>Keep in mind what you are looking for, and don&#8217;t jump to any conclusions. Troubleshooting iptables takes patience and time, and there shouldn&#8217;t be any guesswork involved. If you have a configuration of 800 rules, you should expect to need to look through every single rule until you find the rule that is causing your problems. </p>
<p style="margin-bottom:0; padding-bottom:0;">Before you begin troubleshooting, you first need to know some information about the traffic:</p>
<ol style="margin-top:0; padding-top:0;">
<li>What is the source IP address or range that is having difficulty connecting?</li>
<li>What is the destination IP address or website IP?</li>
<li>What is the port or port range affected, or what type of traffic is it (TCP, ICMP, etc.)?</li>
<li>Is it supposed to be accepted or blocked?</li>
</ol>
<p>Those bits of information should be all you need to begin troubleshooting a buggy ruleset, except in some rare cases that are outside the scope of this article.</p>
<p style="margin-bottom:0; padding-bottom:0;">Here are some things to keep in mind (especially if you did not program every rule by hand):</p>
<ul>
<li>iptables has three built in chains. These are for <code>INPUT</code> &ndash; the traffic coming in to the server, <code>OUTPUT</code> &ndash; the traffic coming out of the server, and <code>FORWARD</code> &ndash; traffic that is not destined to or coming from the server (usually only used when iptable is acting as a firewall for other servers). You will start your troubleshooting at the top of one of these three chains, depending on the type of traffic.</li>
<li>The &#8220;<code>target</code>&#8221; is the action that is taken when the rule matches. This may be another custom chain, so if you see a rule with another chain as the <code>target</code> that matches exactly, be sure to step through every rule in that chain as well. In the following example, you will see the <code>BLACKLIST2</code> sub-chain that applies to traffic on port 80. If traffic comes through on port 80, it will be diverted to this other chain.</li>
<li>The <code>RETURN</code> target indicates that you should return to the parent chain. If you see a rule that matches with a <code>RETURN</code> target, stop all your troubleshooting on the current chain, and return the rule directly after the rule that referenced the custom chain.</li>
<li>If there are no matching rules, the chain policy is applied.</li>
<li>There may be rules in the &#8220;<code>nat</code>,&#8221; &#8220;<code>mangle</code>&#8221; or &#8220;<code>raw</code>&#8221; tables that are blocking or diverting your traffic. Typically, all the rules will be in the &#8220;<code>filter</code>&#8221; table, but you might run into situations where this is not the case. Try running this to check: <code>iptables -t mangle -nL ; iptables -t nat -nL ; iptables -t raw -nL</code></li>
<li>Be cognisant of the policy. If the policy is <code>ACCEPT</code>, all traffic that does not match a rule will be accepted. Conversely, if the policy is <code>DROP</code> or <code>REJECT</code>, all traffic that does not match a rule will be blocked.</li>
<li>My goal with this article is to introduce you to the algorithm by which you can troubleshoot a more complex ruleset. It is intentionally left simple, but you should still follow through even when the answer may be obvious.</li>
</ul>
<p>Here is an example ruleset that I will be using for an example:</p>
<p><code>Chain INPUT (policy DROP)<br />
target     prot opt source               destination<br />
BLACKLIST2 tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:50<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1010</p>
<p>Chain BLACKLIST2 (1 references)<br />
target     prot opt source               destination<br />
REJECT     *    --  123.123.123.123      0.0.0.0/0<br />
REJECT     *    --  45.34.234.234        0.0.0.0/0<br />
ACCEPT     *    --  0.0.0.0/0            0.0.0.0/0</code></p>
<p>Here is the problem: Your server is accepting SSH traffic to anyone, and you wish to only allow SSH to your IP &ndash; 111.111.111.111. We know that this is inbound traffic, so this will affect the <code>INPUT</code> chain.</p>
<p style="margin-bottom:0; padding-bottom:0;">We are looking for:</p>
<div style="margin-left: 20px; margin-top:0; padding-top:0;">source IP: any<br />
destination IP: any<br />
protocol: tcp<br />
port: 22</div>
<p><strong>Step 1:</strong> The first rule denotes any source IP and and destination IP on destination port 80. Since this is regarding port 22, this rule does not match, so we&#8217;ll continue to the next rule. If the traffic here was on port 80, it would invoke the <code>BLACKLIST2</code> sub chain.<br />
<strong>Step 2:</strong> The second rule denotes any source IP and any destination IP on destination port 50. Since this is regarding port 22, this rule does not match, so let&#8217;s continue on.<br />
<strong>Step 3:</strong> The third rule denotes any source IP and any destination IP on destination port 53. Since this is regarding port 22, this rule does not match, so let&#8217;s continue on.<br />
<strong>Step 4:</strong> The fourth rule denotes any source IP and any destination IP on destination port 22. Since this is regarding port 22, this rule matches exactly. The target <code>ACCEPT</code> is applied to the traffic. We found the problem, and now we need to construct a solution. I will be showing you the Redhat method of doing this.</p>
<p>Do this to save the running ruleset as a file:</p>
<p><code>iptables-save > current-iptables-rules</code></p>
<p>Then edit the <code>current-iptables-rules</code> file in your favorite editor, and find the rule that looks like this:</p>
<p><code>-A INPUT -p tcp --dport 22 -j ACCEPT</code></p>
<p>Then you can modify this to only apply to your IP address (the source, or &#8220;<code>-s</code>&#8220;, IP address).</p>
<p><code>-A INPUT -p tcp -s 111.111.111.111 --dport 22 -j ACCEPT</code></p>
<p>Once you have this line, you will need to load the iptables configuration from this file for testing. </p>
<p><code>iptables-restore &lt; current-iptables-rules</code></p>
<p>Don&#8217;t directly edit the <code>/etc/sysconfig/iptables</code> file as this might lock you out of your server. It is good practice to test a configuration before saving to the system configuration files. This way, if you do get locked out, you can reboot your server and it will be working. The ruleset should look like this now:</p>
<p><code>Chain INPUT (policy DROP)<br />
target     prot opt source               destination<br />
BLACKLIST2 tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:50<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53<br />
ACCEPT     tcp  --  111.111.111.111      0.0.0.0/0           tcp dpt:22<br />
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1010</p>
<p>Chain BLACKLIST2 (1 references)<br />
target     prot opt source               destination<br />
REJECT     *    --  123.123.123.123      0.0.0.0/0<br />
REJECT     *    --  45.34.234.234        0.0.0.0/0<br />
ACCEPT     *    --  0.0.0.0/0            0.0.0.0/0</code></p>
<p>The policy of &#8220;<code>DROP</code>&#8221; will now block any other connection on port 22. Remember, the rule must match exactly, so the rule on port 22 now *ONLY* applies if the IP address is 111.111.111.111.</p>
<p>Once you have confirmed that the rule is behaving properly (be sure to test from another IP address to confirm that you are not able to connect), you can write the system configuration:</p>
<p><code>service iptables save</code></p>
<p>If this troubleshooting sounds boring and repetitive, you are right. However, this is the secret to solid iptables troubleshooting. As I said earlier, there is no guesswork involved. Just take it step by step, make sure the rule matches exactly, and follow it through till you find the rule that is causing the problem. This method may not be fast, but it&#8217;s reliable. You&#8217;ll look like an expert in no time.</p>
<p>-Mark</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/iptables-tips-and-tricks-%e2%80%93-troubleshooting-rulesets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using iPerf to Troubleshoot Speed/Throughput Issues</title>
		<link>http://blog.softlayer.com/2011/using-iperf-to-troubleshoot-speedthroughput-issues/</link>
		<comments>http://blog.softlayer.com/2011/using-iperf-to-troubleshoot-speedthroughput-issues/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 15:45:17 +0000</pubDate>
		<dc:creator>Andrew Tyler</dc:creator>
				<category><![CDATA[Customer Service]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[engineer]]></category>
		<category><![CDATA[iPerf]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[NOC]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[throughput]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=6751</guid>
		<description><![CDATA[Two of the most common network characteristics we look at when investigating network-related concerns in the NOC are speed and throughput. You may have experienced the following scenario yourself: You just provisioned a new bad-boy server with a gigabit connection in a data center on the opposite side of the globe. You begin to upload [...]]]></description>
			<content:encoded><![CDATA[<p>Two of the most common network characteristics we look at when investigating network-related concerns in the NOC are speed and throughput. You may have experienced the following scenario yourself: You just provisioned a new bad-boy server with a gigabit connection in a data center on the opposite side of the globe. You begin to upload your data and to your shock, you see &#8220;Time Remaining: 10 Hours.&#8221; &#8220;What&#8217;s wrong with the network?&#8221; you wonder. The traceroute and MTR look fine, but where&#8217;s the performance and bandwidth I&#8217;m paying for? </p>
<p>This issue is all too common and it has nothing to do with the network, but in fact, the culprits are none other than TCP and the laws of physics.</p>
<p>In data transmission, TCP sends a certain amount of data then pauses. To ensure proper delivery of data, it doesn&#8217;t send more until it receives an acknowledgement from the remote host that all data was received. This is called the &#8220;TCP Window.&#8221; Data travels at the speed of light, and typically, most hosts are fairly close together. This &#8220;windowing&#8221; happens so fast we don&#8217;t even notice it. But as the distance between two hosts increases, the speed of light remains constant. Thus, the further away the two hosts, the longer it takes for the sender to receive the acknowledgement from the remote host, reducing overall throughput. This effect is called &#8220;Bandwidth Delay Product,&#8221; or BDP.</p>
<p>We can overcome BDP to some degree by sending more data at a time. We do this by adjusting the &#8220;TCP Window&#8221; &ndash; telling TCP to send more data per flow than the default parameters. Each OS is different and the default values will vary, but most all operating systems allow tweaking of the TCP stack and/or using parallel data streams. So what is iPerf and how does it fit into all of this?</p>
<p style="margin-bottom:0; padding-bottom:0;"><strong>What is iPerf?</strong></p>
<p style="margin-top:0; padding-top:0;"><a href="http://sourceforge.net/projects/iperf/">iPerf</a> is simple, open-source, command-line, network diagnostic tool that can run on Linux, BSD, or Windows platforms which you install on two endpoints. One side runs in a &#8216;server&#8217; mode listening for requests; the other end runs &#8216;client&#8217; mode that sends data. When activated, it tries to send as much data down your pipe as it can, spitting out transfer statistics as it does. What&#8217;s so cool about iPerf is you can test in real time any number of TCP window settings, even using parallel streams. There&#8217;s even a Java based GUI you can install that runs on top of it called, JPerf (JPerf is beyond the scope of this article, but I recommend looking into it). What&#8217;s even cooler is that because iPerf resides in memory, there are no files to clean up.</p>
<p><span id="more-6751"></span></p>
<p style="margin-bottom:0; padding-bottom:0;"><strong>How do I use iPerf?</strong></p>
<p style="margin-top:0; padding-top:0;">iPerf can be quickly downloaded from <a href="http://sourceforge.net/projects/iperf/">SourceForge</a> to be installed. It uses port 5001 by default, and the bandwidth it displays is from the client to the server. Each test runs for 10 seconds by default, but virtually every setting is adjustable. Once installed, simply bring up the command line on both of the hosts and run these commands.</p>
<p>On the server side:<br />
<code>iperf -s</code></p>
<p>On the client side:<br />
<code>iperf -c [server_ip]</code></p>
<p>The output on the client side will look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#iperf -c 10.10.10.5</span>
<span style="color: #660033;">------------------------------------------------------------</span>
Client connecting to 10.10.10.5, TCP port <span style="color: #000000;">5001</span>
TCP window <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">16.0</span> KByte <span style="color: #7a0874; font-weight: bold;">&#40;</span>default<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #660033;">------------------------------------------------------------</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">local</span> 0.0.0.0 port <span style="color: #000000;">46956</span> connected with 168.192.1.10 port <span style="color: #000000;">5001</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> ID<span style="color: #7a0874; font-weight: bold;">&#93;</span> Interval       Transfer     Bandwidth
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">10.0</span> sec  <span style="color: #000000;">10.0</span> MBytes  <span style="color: #000000;">1.00</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec</pre></div></div>

<p>There are a lot of things we can do to make this output better with more meaningful data. For example, let&#8217;s say we want the test to run for 20 seconds instead of 10 (<code>-t 20</code>), and we want to display transfer data every 2 seconds instead of the default of 10 (<code>-i 2</code>), and we want to test on port 8000 instead of 5001 (<code>-p 8000</code>). For the purposes of this exercise, let&#8217;s use those customization as our baseline. This is what the command string would look like on both ends:</p>
<div style="margin-left:20px;">
<p style="margin-bottom:0;padding-bottom:0;">Client Side:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#iperf -c 10.10.10.5 -p 8000 -t 20 -i 2</span>
<span style="color: #660033;">------------------------------------------------------------</span>
Client connecting to 10.10.10.5, TCP port <span style="color: #000000;">8000</span>
TCP window <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">16.0</span> KByte <span style="color: #7a0874; font-weight: bold;">&#40;</span>default<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #660033;">------------------------------------------------------------</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">local</span> 10.10.10.10 port <span style="color: #000000;">46956</span> connected with 10.10.10.5 port <span style="color: #000000;">8000</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> ID<span style="color: #7a0874; font-weight: bold;">&#93;</span> Interval       Transfer     Bandwidth
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">6.00</span> MBytes  <span style="color: #000000;">25.2</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">2.0</span>- <span style="color: #000000;">4.0</span> sec  <span style="color: #000000;">7.12</span> MBytes  <span style="color: #000000;">29.9</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">4.0</span>- <span style="color: #000000;">6.0</span> sec  <span style="color: #000000;">7.00</span> MBytes  <span style="color: #000000;">29.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">6.0</span>- <span style="color: #000000;">8.0</span> sec  <span style="color: #000000;">7.12</span> MBytes  <span style="color: #000000;">29.9</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">8.0</span>-<span style="color: #000000;">10.0</span> sec  <span style="color: #000000;">7.25</span> MBytes  <span style="color: #000000;">30.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">10.0</span>-<span style="color: #000000;">12.0</span> sec  <span style="color: #000000;">7.00</span> MBytes  <span style="color: #000000;">29.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">12.0</span>-<span style="color: #000000;">14.0</span> sec  <span style="color: #000000;">7.12</span> MBytes  <span style="color: #000000;">29.9</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">14.0</span>-<span style="color: #000000;">16.0</span> sec  <span style="color: #000000;">7.25</span> MBytes  <span style="color: #000000;">30.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">16.0</span>-<span style="color: #000000;">18.0</span> sec  <span style="color: #000000;">6.88</span> MBytes  <span style="color: #000000;">28.8</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">7.25</span> MBytes  <span style="color: #000000;">30.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">70.1</span> MBytes  <span style="color: #000000;">29.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec</pre></div></div>

<p style="margin-bottom:0;padding-bottom:0;">Server Side:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#iperf -s -p 8000 -i 2</span>
<span style="color: #660033;">------------------------------------------------------------</span>
Server listening on TCP port <span style="color: #000000;">8000</span>
TCP window <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">8.00</span> KByte <span style="color: #7a0874; font-weight: bold;">&#40;</span>default<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #660033;">------------------------------------------------------------</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">852</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">local</span> 10.10.10.5 port <span style="color: #000000;">8000</span> connected with 10.10.10.10 port <span style="color: #000000;">58316</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> ID<span style="color: #7a0874; font-weight: bold;">&#93;</span> Interval Transfer Bandwidth
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">6.05</span> MBytes  <span style="color: #000000;">25.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">2.0</span>- <span style="color: #000000;">4.0</span> sec  <span style="color: #000000;">7.19</span> MBytes  <span style="color: #000000;">30.1</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">4.0</span>- <span style="color: #000000;">6.0</span> sec  <span style="color: #000000;">6.94</span> MBytes  <span style="color: #000000;">29.1</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">6.0</span>- <span style="color: #000000;">8.0</span> sec  <span style="color: #000000;">7.19</span> MBytes  <span style="color: #000000;">30.2</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">8.0</span>-<span style="color: #000000;">10.0</span> sec  <span style="color: #000000;">7.19</span> MBytes  <span style="color: #000000;">30.1</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">10.0</span>-<span style="color: #000000;">12.0</span> sec  <span style="color: #000000;">6.95</span> MBytes  <span style="color: #000000;">29.1</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">12.0</span>-<span style="color: #000000;">14.0</span> sec  <span style="color: #000000;">7.19</span> MBytes  <span style="color: #000000;">30.2</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">14.0</span>-<span style="color: #000000;">16.0</span> sec  <span style="color: #000000;">7.19</span> MBytes  <span style="color: #000000;">30.2</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">16.0</span>-<span style="color: #000000;">18.0</span> sec  <span style="color: #000000;">6.95</span> MBytes  <span style="color: #000000;">29.1</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">7.19</span> MBytes  <span style="color: #000000;">30.1</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">70.1</span> MBytes  <span style="color: #000000;">29.4</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec</pre></div></div>

</div>
<p>There are many, many other parameters you can set that are beyond the scope of this article, but for our purposes, the main use is to prove out our bandwidth. This is where we&#8217;ll use the TCP window options and parallel streams. To set a new TCP window you use the <code>-w</code> switch and you can set the parallel streams by using <code>-P</code>.</p>
<p>Increased TCP window commands:</p>
<p>Server side:<br />
<code>#iperf -s -w 1024k -i 2</code></p>
<p>Client side:<br />
<code>#iperf -i 2 -t 20 -c 10.10.10.5 -w 1024k</code></p>
<p>And here are the iperf results from two Softlayer file servers &ndash; one in Washington, D.C., acting as Client, the other in Seattle acting as Server:</p>
<div style="margin-left:20px;">
<p style="margin-bottom:0;padding-bottom:0;">Client Side:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># iperf -i 2 -t 20 -c 10.10.10.5 -p 8000 -w 1024k</span>
<span style="color: #660033;">------------------------------------------------------------</span>
Client connecting to 10.10.10.5, TCP port <span style="color: #000000;">8000</span>
TCP window <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">1.00</span> MByte <span style="color: #7a0874; font-weight: bold;">&#40;</span>WARNING: requested <span style="color: #000000;">1.00</span> MByte<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #660033;">------------------------------------------------------------</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">local</span> 10.10.10.10 port <span style="color: #000000;">53903</span> connected with 10.10.10.5 port <span style="color: #000000;">5001</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> ID<span style="color: #7a0874; font-weight: bold;">&#93;</span> Interval       Transfer     Bandwidth
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.9</span> MBytes   <span style="color: #000000;">109</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">2.0</span>- <span style="color: #000000;">4.0</span> sec  <span style="color: #000000;">28.5</span> MBytes   <span style="color: #000000;">120</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">4.0</span>- <span style="color: #000000;">6.0</span> sec  <span style="color: #000000;">28.4</span> MBytes   <span style="color: #000000;">119</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">6.0</span>- <span style="color: #000000;">8.0</span> sec  <span style="color: #000000;">28.9</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">8.0</span>-<span style="color: #000000;">10.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">10.0</span>-<span style="color: #000000;">12.0</span> sec  <span style="color: #000000;">29.0</span> MBytes   <span style="color: #000000;">122</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">12.0</span>-<span style="color: #000000;">14.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">14.0</span>-<span style="color: #000000;">16.0</span> sec  <span style="color: #000000;">29.0</span> MBytes   <span style="color: #000000;">122</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">16.0</span>-<span style="color: #000000;">18.0</span> sec  <span style="color: #000000;">27.9</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">29.0</span> MBytes   <span style="color: #000000;">122</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>-<span style="color: #000000;">20.0</span> sec   <span style="color: #000000;">283</span> MBytes   <span style="color: #000000;">118</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec</pre></div></div>

<p style="margin-bottom:0;padding-bottom:0;">Server Side:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#iperf -s -w 1024k -i 2 -p 8000</span>
<span style="color: #660033;">------------------------------------------------------------</span>
Server listening on TCP port <span style="color: #000000;">8000</span>
TCP window <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">1.00</span> MByte
<span style="color: #660033;">------------------------------------------------------------</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">local</span> 10.10.10.5 port <span style="color: #000000;">8000</span> connected with 10.10.10.10 port <span style="color: #000000;">53903</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> ID<span style="color: #7a0874; font-weight: bold;">&#93;</span> Interval       Transfer     Bandwidth
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.9</span> MBytes   <span style="color: #000000;">109</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">2.0</span>- <span style="color: #000000;">4.0</span> sec  <span style="color: #000000;">28.6</span> MBytes   <span style="color: #000000;">120</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">4.0</span>- <span style="color: #000000;">6.0</span> sec  <span style="color: #000000;">28.3</span> MBytes   <span style="color: #000000;">119</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">6.0</span>- <span style="color: #000000;">8.0</span> sec  <span style="color: #000000;">28.9</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">8.0</span>-<span style="color: #000000;">10.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">10.0</span>-<span style="color: #000000;">12.0</span> sec  <span style="color: #000000;">29.0</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">12.0</span>-<span style="color: #000000;">14.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">14.0</span>-<span style="color: #000000;">16.0</span> sec  <span style="color: #000000;">29.0</span> MBytes   <span style="color: #000000;">122</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">16.0</span>-<span style="color: #000000;">18.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">29.0</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>-<span style="color: #000000;">20.0</span> sec   <span style="color: #000000;">283</span> MBytes   <span style="color: #000000;">118</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec</pre></div></div>

</div>
<p>We can see here, that by increasing the TCP window from the default value to 1MB (1024k) we achieved around a 400% increase in throughput over our baseline. Unfortunately, this is the limit of this OS in terms of Window size. So what more can we do? Parallel streams! With multiple simultaneous streams we can fill the pipe close to its maximum usable amount.</p>
<p>Parallel Stream Command:<br />
<code>#iperf -i 2 -t 20 -c -p 8000 10.10.10.5 -w 1024k -P 7</code></p>
<div style="margin-left:20px;">
<p style="margin-bottom:0;padding-bottom:0;">Client Side:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#iperf -i 2 -t 20 -c -p 10.10.10.5 -w 1024k -P 7</span>
<span style="color: #660033;">------------------------------------------------------------</span>
Client connecting to 10.10.10.5, TCP port <span style="color: #000000;">8000</span>
TCP window <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">1.00</span> MByte <span style="color: #7a0874; font-weight: bold;">&#40;</span>WARNING: requested <span style="color: #000000;">1.00</span> MByte<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #660033;">------------------------------------------------------------</span>
 <span style="color: #7a0874; font-weight: bold;">&#91;</span> ID<span style="color: #7a0874; font-weight: bold;">&#93;</span> Interval       Transfer     Bandwidth
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">9</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">24.9</span> MBytes   <span style="color: #000000;">104</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">24.9</span> MBytes   <span style="color: #000000;">104</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.6</span> MBytes   <span style="color: #000000;">107</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">8</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">24.9</span> MBytes   <span style="color: #000000;">104</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">5</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.8</span> MBytes   <span style="color: #000000;">108</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.9</span> MBytes   <span style="color: #000000;">109</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.9</span> MBytes   <span style="color: #000000;">109</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>SUM<span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec   <span style="color: #000000;">178</span> MBytes   <span style="color: #000000;">746</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#40;</span>output omitted <span style="color: #000000; font-weight: bold;">for</span> brevity on server <span style="color: #000000; font-weight: bold;">&amp;</span> client<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.2</span> MBytes   <span style="color: #000000;">118</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">8</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.8</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">5</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">117</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.9</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">9</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.8</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.9</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>SUM<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec   <span style="color: #000000;">200</span> MBytes   <span style="color: #000000;">837</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>SUM<span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">1.93</span> GBytes   <span style="color: #000000;">826</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec</pre></div></div>

<p style="margin-bottom:0;padding-bottom:0;">Server Side:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#iperf -s -w 1024k -i 2 -p 8000</span>
<span style="color: #660033;">------------------------------------------------------------</span>
Server listening on TCP port <span style="color: #000000;">8000</span>
TCP window <span style="color: #c20cb9; font-weight: bold;">size</span>: <span style="color: #000000;">1.00</span> MByte
<span style="color: #660033;">------------------------------------------------------------</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">local</span> 10.10.10.10 port <span style="color: #000000;">8000</span> connected with 10.10.10.5 port <span style="color: #000000;">53903</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> ID<span style="color: #7a0874; font-weight: bold;">&#93;</span> Interval       Transfer     Bandwidth
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">5</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.7</span> MBytes   <span style="color: #000000;">108</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">8</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">24.9</span> MBytes   <span style="color: #000000;">104</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">24.9</span> MBytes   <span style="color: #000000;">104</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">9</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">24.9</span> MBytes   <span style="color: #000000;">104</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000;">10</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.9</span> MBytes   <span style="color: #000000;">108</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.9</span> MBytes   <span style="color: #000000;">109</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec  <span style="color: #000000;">25.9</span> MBytes   <span style="color: #000000;">109</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>SUM<span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>- <span style="color: #000000;">2.0</span> sec   <span style="color: #000000;">178</span> MBytes   <span style="color: #000000;">747</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">4</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.8</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">5</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.3</span> MBytes   <span style="color: #000000;">119</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.8</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000;">10</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.1</span> MBytes   <span style="color: #000000;">118</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">9</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.0</span> MBytes   <span style="color: #000000;">118</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">8</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">28.8</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #000000;">6</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec  <span style="color: #000000;">29.0</span> MBytes   <span style="color: #000000;">121</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>SUM<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">18.0</span>-<span style="color: #000000;">20.0</span> sec   <span style="color: #000000;">200</span> MBytes   <span style="color: #000000;">838</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec
<span style="color: #7a0874; font-weight: bold;">&#91;</span>SUM<span style="color: #7a0874; font-weight: bold;">&#93;</span>  <span style="color: #000000;">0.0</span>-<span style="color: #000000;">20.1</span> sec  <span style="color: #000000;">1.93</span> GBytes   <span style="color: #000000;">825</span> Mbits<span style="color: #000000; font-weight: bold;">/</span>sec</pre></div></div>

</div>
<p>As you can see from the tests above, we were able to increase throughput from 29MB/s with a single stream and the default TCP Window to 824MB/s using a higher window and parallel streams. On a Gigabit link, this about the maximum throughput one could hope to achieve before saturating the link and causing packet loss. The bottom line is, I was able to prove out the network and verify bandwidth capacity was not an issue. From that conclusion, I could focus on tweaking TCP to get the most out of my network.</p>
<p>I&#8217;d like to point out that we will never get 100% out of any link. Typically, 90% utilization is about the real world maximum anyone will achieve. If you get any more, you&#8217;ll begin to saturate the link and incur packet loss. I should also point out that Softlayer doesn&#8217;t directly support iPerf, so it&#8217;s up to you install and play around with. It&#8217;s such a versatile and easy to use little piece of software that it&#8217;s become invaluable to me, and I think it will become invaluable to you as well!</p>
<p>-Andrew</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2011/using-iperf-to-troubleshoot-speedthroughput-issues/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Quick Tip: Copy and Paste from the DOS Prompt</title>
		<link>http://blog.softlayer.com/2011/quick-tip-copy-and-paste-from-the-dos-prompt/</link>
		<comments>http://blog.softlayer.com/2011/quick-tip-copy-and-paste-from-the-dos-prompt/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 16:20:07 +0000</pubDate>
		<dc:creator>Lyndell Rottmann</dc:creator>
				<category><![CDATA[Customer Service]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[details]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[paste]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[technical support]]></category>
		<category><![CDATA[tickets]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[traceroute]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=6437</guid>
		<description><![CDATA[Having worked in SoftLayer&#8217;s technical support department for a few years now, I can tell you that the more information you provide us, the faster we can get you to a resolution. If you can show us exactly the problem you&#8217;re seeing with details from when you see it, it&#8217;s much easier for us to [...]]]></description>
			<content:encoded><![CDATA[<p>Having worked in SoftLayer&#8217;s technical support department for a few years now, I can tell you that <a href="http://blog.softlayer.com/2007/the-8-keys-to-successful-tickets/">the more information you provide</a> us, the faster we can get you to a resolution. If you can show us exactly the problem you&#8217;re seeing with details from when you see it, it&#8217;s much easier for us to troubleshoot, so I wanted to post a quick blog on the heels of Todd&#8217;s &#8220;<a href="http://blog.softlayer.com/2011/global-network-the-proof-is-in-the-traceroute/">Global Network: The Proof is in the Traceroute</a>&#8221; post to help you get information to us much more easily.</p>
<p><strong>Document Format</strong><br />
Many people consider a Microsoft Word document the lowest common denominator when it comes to formatting an attachment or file while others prefer plain text for everything. I always advocate the use of plain text. Plain text is universally accessible, it doesn&#8217;t require a third-party application to view, it doesn&#8217;t add funky encoding, and it uses monospaced fonts that format the text like you&#8217;d see in a command prompt if you were sharing troubleshooting results from ping and traceroute commands. It&#8217;s quite unnecessary to take a screen capture of a ping or traceroute when you run it, and it&#8217;s doubly unnecessary to paste that screen capture into a Microsoft Word document. </p>
<p><strong>Copying Your Ping/Traceroute</strong><br />
The problem many Windows users run into is that it&#8217;s not very clear how to copy text from the command prompt &#8230; The familiar keyboard shortcuts for copying (CTRL+C) and pasting (CTRL+V) don&#8217;t work from the DOS Prompt, so the screen capture route is usually the easiest to execute. There is an easy way to copy, though.</p>
<p>Microsoft documented the <a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/windows_dos_copy.mspx?mfr=true">instructions</a> you need, and I wanted to share them with SoftLayer customers here:</p>
<ol>
<li>Open the command prompt. If you&#8217;re unsure how to do this, open the Start Menu, click Run, enter &#8220;cmd&#8221; (without the quotes) and click OK.</li>
<li>Execute your command. Use &#8220;tracert softlayer.com&#8221; to follow along with this test.
<li>Right-click the title bar of the command prompt window, point to Edit, and then click Mark.</li>
<li>Click the beginning of the text you want to copy.</li>
<li>Press and hold down the SHIFT key, and then click the end of the text you want to copy (or you can click and drag the cursor to select the text).</li>
<li>Right-click the title bar, point to Edit, and then click Copy.</li>
</ol>
<p>Now the text is in the clipboard. You can paste it anywhere, including the body of a ticket. To preserve layout, I usually paste the text in Notepad and attach that file to the ticket. If you don&#8217;t want to go through the hassle of opening Notepad, just paste the results into the comment field below.</p>
<p>If you enjoy reading quick tips like this one that can make life easier, be sure to check out <a href="http://knowledgelayer.softlayer.com">KnowledgeLayer</a>.</p>
<p>-Lyndell</p>
<p>Bonus tip: If you want to submit your traceroute in a comment on this blog without losing the mono-spaced formatting, surround the pasted content with the &lt;code&gt; and &lt;/code&gt; tags.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2011/quick-tip-copy-and-paste-from-the-dos-prompt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
