<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-794698467011142936</id><updated>2012-01-15T06:23:12.621-08:00</updated><category term='freeRADIUS'/><category term='Accounting'/><category term='mysql'/><category term='cluster'/><category term='Linux'/><category term='AAA'/><category term='Solaris'/><category term='wansimulator'/><category term='Authentication'/><category term='crossbow'/><category term='wan'/><category term='performance'/><category term='Authorization'/><category term='opensolaris'/><category term='Windows'/><category term='muti-threaded application'/><category term='posting'/><category term='radius'/><category term='networking'/><category term='blogs'/><category term='mysql cluster'/><title type='text'>Server Side Technologies</title><subtitle type='html'>Write about various server side technologies enabling the era of web 2.0 and beyond... And write about various hardware platforms (systems, storage, networking), operating systems(windows, linux, solaris), databases (oracle, MySQL, PostgreSQL...), and other server side technologies enabling web2.0 and beyond.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://serversidetechnologies.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://serversidetechnologies.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Yousuf</name><uri>http://www.blogger.com/profile/09138600341043391768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ab2f_Ak_60s/SvzRkKvPhkI/AAAAAAAABIw/idMgWivoOQ4/S220/usuf_web_id1pic.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-794698467011142936.post-1273352555460823044</id><published>2009-11-12T05:29:00.000-08:00</published><updated>2009-11-13T00:39:15.876-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='radius'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='AAA'/><category scheme='http://www.blogger.com/atom/ns#' term='freeRADIUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Authorization'/><category scheme='http://www.blogger.com/atom/ns#' term='Accounting'/><title type='text'>FreeRADIUS with MySQL cluster</title><content type='html'>&lt;span style="font-weight: bold;"&gt;About:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This is all about deploying &lt;a href="http://freeradius.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;FreeRADIUS&lt;/span&gt;&lt;/a&gt; with &lt;a href="http://mysql.com/products/database/cluster/"&gt;MySQL cluster&lt;/a&gt;, understand about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;FreeRADIUS&lt;/span&gt; deployment options with MySQL cluster for high availability ease of database management.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Overview:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Few months ago, I was working on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;FreeRADIUS&lt;/span&gt; integration with MySQL cluster to provide a better alternative for high availability and scalability of the data store.  The same is available as white paper for some time now, and the white papers are  "&lt;a href="http://www.mysql.com/why-mysql/white-papers/mysql_wp_deploying_FreeRADIUS.php"&gt;The deployment of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;FreeRADIUS&lt;/span&gt; with MySQL cluster&lt;/a&gt;" and  on "&lt;a href="http://www.mysql.com/why-mysql/white-papers/mysql_wp_ha_auth_account.php"&gt;Strategy Guide for Building Highly Scalable &amp;amp; Available AAA  Services&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Look here for how to configure MySQL cluster, or  configure &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;FreeRADIUS&lt;/span&gt; with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;mysql&lt;/span&gt; cluster database. Since the integration of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;FreeRADIUS&lt;/span&gt; with MySQL cluster and testing of the same is also carried out, this document highlights some of those areas too.&lt;br /&gt;&lt;br /&gt;As well I ported the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;FreeRADIUS&lt;/span&gt; on &lt;a href="http://www.sun.com/software/solaris/"&gt;Solaris 10&lt;/a&gt;, as I used &lt;a href="http://docs.sun.com/app/docs/doc/817-1592/z.config.ov-12?a=view"&gt;Solaris Containers&lt;/a&gt; to simulate multiple systems as required. However I used 3 systems running Solaris 10 on it. The same could be used with Linux too, however we have to carefully manage co-location of MySQL clusters &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SQL&lt;/span&gt; node, Management node, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;FreeRADIUS&lt;/span&gt; application itself.&lt;br /&gt;&lt;br /&gt;Since &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;mysql&lt;/span&gt; cluster needs minimum of 3 nodes for providing high availability of the data being stored. The stored data on both the nodes is replicated synchronously across the nodes,  a  third node is used as management node which also offers quorum vote in the event of node failure and also does the management of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;mysql&lt;/span&gt; cluster. This  third node could be used to host the application as well as  MySQL server. It becomes more easy if we have multiple systems,  or  multiple OS environments (high level abstraction providing virtual independent system)  / &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;solaris&lt;/span&gt; containers will ease the job.&lt;br /&gt;&lt;br /&gt;When &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;FreeRADIUS&lt;/span&gt; receives any request from it's clients either for authentication, authorization or accounting it looks up at it's configured data store option and sends the appropriate request to fetch the data from the data store.  Based on the response from the data store &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;FreeRADIUS&lt;/span&gt;  takes the appropriate step. However since &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;FreeRADIUS&lt;/span&gt; works with MySQL, it does &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;lookup&lt;/span&gt; on the indexed columns which is very good for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;mysql&lt;/span&gt; cluster, this does not result in the any  changes to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;FreeRADIUS&lt;/span&gt; data store &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;mysql&lt;/span&gt; module, however there are few changes that are documented in the white paper for configuring the same. Once the request is landed on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;mysql&lt;/span&gt; cluster either of data node would serve the request via &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;SQL&lt;/span&gt; node (MySQL server).&lt;br /&gt;&lt;br /&gt;Note: I ported the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;FreeRADIUS&lt;/span&gt; on Solaris, will share the learning of the same in my subsequent post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Acknowledgment:&lt;/span&gt;&lt;br /&gt;I would like to thank &lt;a href="http://deployingradius.com/blog/"&gt;Alan &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;Dekok&lt;/span&gt;&lt;/a&gt; for his help to walk me  through the high level architecture and working of the modules and options available with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;FreeRADIUS&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/794698467011142936-1273352555460823044?l=serversidetechnologies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serversidetechnologies.blogspot.com/feeds/1273352555460823044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=794698467011142936&amp;postID=1273352555460823044' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/1273352555460823044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/1273352555460823044'/><link rel='alternate' type='text/html' href='http://serversidetechnologies.blogspot.com/2009/11/freeradius-with-mysql-cluster.html' title='FreeRADIUS with MySQL cluster'/><author><name>Yousuf</name><uri>http://www.blogger.com/profile/09138600341043391768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ab2f_Ak_60s/SvzRkKvPhkI/AAAAAAAABIw/idMgWivoOQ4/S220/usuf_web_id1pic.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-794698467011142936.post-9218125448183889485</id><published>2009-10-30T07:03:00.000-07:00</published><updated>2009-11-12T21:35:58.901-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crossbow'/><category scheme='http://www.blogger.com/atom/ns#' term='wan'/><category scheme='http://www.blogger.com/atom/ns#' term='wansimulator'/><category scheme='http://www.blogger.com/atom/ns#' term='opensolaris'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>wansimulator</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;About:&lt;/span&gt;&lt;br /&gt;Are you thinking to setup a "wan-simulator" for testing application functionality and performance over-head of the wan(wide area network) within the lab environment, than this might be of interest to you .&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Overview:&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;span style="font-weight: normal;"&gt;Any x86 (64/32bit) system can be used to host this. This system could run latest OpenSolaris, to download OpenSolaris visit http://genunix.org/ . Wan-simulator leverages on to project &lt;a href="http://www.opensolaris.com/learn/features/networking/networkcrossbow/"&gt;crossbow&lt;/a&gt;, it's a streams module/driver which emulates WAN environment. It &lt;/span&gt;captures packets from IP and manipulates the packets according to the WAN setup.&lt;br /&gt;&lt;br /&gt;There are five parameters to control the environment.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;network propagation delay,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;bandwidth,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;drop rate,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;re-ordering, and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;corruption.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Hxbt acts like a "pipe" between two hosts. And the pipe is the emulated WAN.&lt;br /&gt;&lt;br /&gt;Note that the current hxbt implementation only operates on the output side. Hxbt can be visualized as a emulated router on the outgoing path. And the returning path is a "direct" link. In normal circumstances, this asymmetry should not be a problem as long as the parameters are set properly to reflect WAN condition on BOTH paths. For example, if outgoing and incoming paths both introduce a 10ms delay, set hxbt to emulate a 20ms delay. If incoming and outgoing paths need to be emulated, set up hxbt in machines on both sides of the path.&lt;br /&gt;For more details about the wan-simulator please visit  &lt;a href="http://www.opensolaris.org/os/community/networking/readme.hxbt.txt"&gt;OpenSolaris networking&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This case study is a typical example where one need to have simulated wan or have systems geographically apart to test the replication over long distance for disaster recovery testing. There could be other case studies like if we have to understand the impact of the AJAX/Javascripts running on the web-client or hand-held devices over long distance, we could setup such an environment to do the required testing within the comfort of one location, this eases out some of the challenges one would face to do such activity, like co-ordination over the long distance to ensure the required environment is sane as per the requirement etc.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ab2f_Ak_60s/SuVfBj2AKXI/AAAAAAAABFw/c3XEamnrdVY/s1600-h/wansimulator.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_ab2f_Ak_60s/SuVfBj2AKXI/AAAAAAAABFw/c3XEamnrdVY/s320/wansimulator.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;In this example of disaster recovery scenario, where 2 sites are geographically apart around 1500 miles,bandwidth is 8Mbps, link is bad, simulating 5% packet drops and  5% corruption of data. There are multiple IP addresses on each side talking to each other over this simulated wan to do the data replication and monitor the health of each site and management of Inter Cluster Resource Management(ICRM) etc. Since these 2 sites are geographically apart, for these 2 sites on 2 different TCP/IP network this wan-simulator acts as router among both the sites, as well as provides the required functionality of wide area network by using hit-box/hxbt (wan-simulator). The above diagram attempts to show this environment.&lt;br /&gt;&lt;br /&gt;If need to compute the latency etc, visit &lt;a href="http://www.netqos.com/resourceroom/calculator/index.html"&gt;netqos&lt;/a&gt; or compute the required latency and understand packet drops and understand the data corruptions by manually observing it using ping and other sniffing tools.&lt;br /&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;br /&gt;Installation of wansimulator:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;All you have to do is download &lt;a href="http://opensolaris.org/os/"&gt;OpenSolaris&lt;/a&gt; from http://www.genunix.org/. I had tried this on OpenSolaris b122, however you could download and try it out on the latest build too.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="text-decoration: none;"&gt;1. Download the pre-compiled binaries &lt;a href="http://sites.google.com/site/blogsftp/home/hxbt.tar.bz2?attredirects=0&amp;amp;d=1"&gt;tar ball from this blog&lt;/a&gt;, or download the latest source code from &lt;a href="http://opensolaris.org/os/community/networking/dsf"&gt;http://opensolaris.org/os/community/networking/&lt;/a&gt;&lt;/span&gt;. Here I have used &lt;a href="http://sites.google.com/site/blogsftp/home/hxbt.tar.bz2?attredirects=0&amp;amp;d=1"&gt;tar ball from this blog&lt;/a&gt;.&lt;br /&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;2. Unpack the tar ball, copy the pre-compiled binaries to the appropriate locations,&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;cd /extracted_directory &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;cp onnv/usr/src/uts/intel/hxbt/obj32/hxbt /kernel/drv     &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;cp onnv/usr/src/uts/intel/hxbt/obj64/hxbt /kernel/drv/amd64      &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;cp onnv/usr/src/uts/common/inet/hxbt/hxbt.conf /kernel/drv &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;cp onnv/usr/src/cmd/cmd-inet/usr.sbin/ifhit/ifhit /usr/sbin &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;add_drv -m"* 0666 root root" hxbt &lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;How to verify it is installed?&lt;br /&gt;&lt;br /&gt;Insert the hxbt module to verify the successful installation and configuration.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;ifconfig nge0 modlist&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;ifconfig nge0 &lt;/span&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt; modinsert hxbt@2 &lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;ifconfig nge0 modlist&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;/nic&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;nic&gt;&lt;u&gt;Un-install:&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;This is you would do, once you are done with wansimulator.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#ifconfig  nge0 modlist&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;0 arp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;1 ip&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;2 hxbt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;3 nge&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#ifconfig &lt;/span&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt; nge0 modremove hxbt@2&lt;br /&gt;root@wansimulator:~#modinfo | grep hxbt&lt;br /&gt;252 fffffffff7dc3000   2460   -   1  hxbt (hxbt stream module v1.1)&lt;br /&gt;252 fffffffff7dc3000   2460 291   1  hxbt (hxbt stream driver v1.1)&lt;br /&gt;root@wansimulator:~#modunload -i 252&lt;br /&gt;root@wansimulator:~#pfexec rem_drv hxbt&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic&gt;&lt;nic&gt;&lt;b&gt;Configure wan-simulator:&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Pre-requisite&lt;/nic&gt;&lt;/nic&gt;[optional]&lt;nic&gt;&lt;nic&gt;: Configure this OpenSolais wansimulator system as router. For this case study I did configure &lt;a href="http://danbordeanu.blogspot.com/2008/12/how-to-enable-ip-forward-in-opensolaris.html"&gt;here are the steps to configure router&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are the network interfaces that this system hosts, which takes part in routing.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifconfig nge0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;nge0: flags=1100843&lt;up,broadcast,running,multicast,router,ipv4&gt; mtu 1500 index 2&lt;/up,broadcast,running,multicast,router,ipv4&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;        inet 192.168.50.250 netmask ffffff00 broadcast 192.168.50.255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;        ether 0:21:28:44:67:a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifconfig nge1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;nge1: flags=1100943&lt;up,broadcast,running,promisc,multicast,router,ipv4&gt; mtu 1500 index 3&lt;/up,broadcast,running,promisc,multicast,router,ipv4&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;        inet 10.10.50.250 netmask ffffff00 broadcast 10.10.50.255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;        ether 0:21:28:44:67:b&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---&amp;gt; &lt;u&gt;ifhit without options lists all the targets that are configured to take a hit.&lt;/u&gt;&lt;br /&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@wansimulator:~# ifhit&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;hxbt target list:&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@wansimulator:~#&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;nic&gt;&lt;nic&gt;&lt;br /&gt;----&amp;gt; &lt;u&gt;Lets look at the time to reach destination before configuring hit-box(wansimulator).&lt;/u&gt;&lt;br /&gt;===&amp;gt; ping from primary network&lt;br /&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@pnode1:~# ping -s pnode1&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;PING pnode1: 56 data bytes&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=0. time=0.178 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=1. time=0.0670 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;^C&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;----pnode1 PING Statistics----&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;2 packets transmitted, 2 packets received, 0% packet loss&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;round-trip (ms)  min/avg/max/stddev = 0.0670/0.122/0.178/0.078&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@pnode1:~# ping -s drnode1&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;PING drnode1: 56 data bytes&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=0. time=0.443 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=1. time=0.389 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;^C&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;----drnode1 PING Statistics----&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;2 packets transmitted, 2 packets received, 0% packet loss&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;round-trip (ms)  min/avg/max/stddev = 0.389/0.416/0.443/0.038&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@pnode1:~#&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;nic&gt;&lt;nic&gt;&lt;br /&gt;===&amp;gt; ping from DR network&lt;br /&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@drnode1:~# ping -s drnode1&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;PING drnode1: 56 data bytes&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=0. time=0.172 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=1. time=0.154 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;^C&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;----drnode1 PING Statistics----&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;2 packets transmitted, 2 packets received, 0% packet loss&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;round-trip (ms)  min/avg/max/stddev = 0.154/0.163/0.172/0.013&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@drnode1:~# ping -s pnode1&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;PING pnode1: 56 data bytes&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=0. time=0.453 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=1. time=0.392 ms&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;^C&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;----pnode1 PING Statistics----&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;2 packets transmitted, 2 packets received, 0% packet loss&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;round-trip (ms)  min/avg/max/stddev = 0.392/0.422/0.453/0.043&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;root@drnode1:~#&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;nic style="color: rgb(0, 0, 102);"&gt;&lt;nic&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;nic&gt;&lt;nic&gt;&lt;br /&gt;---&amp;gt; &lt;u&gt;Following are the IP of the wan-simulator(hit-box) configured:&lt;/u&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;192.168.50.250  drrouter&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;10.10.50.250    prouter&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifconfig nge0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;nge0: flags=1100843&lt;/span&gt;&lt;up,broadcast,running,multicast,router,ipv4&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; mtu 1500 index 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;inet 192.168.50.250 netmask ffffff00 broadcast 192.168.50.255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;ether 0:21:28:44:67:a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifconfig nge1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;nge1: flags=1100943&lt;/span&gt;&lt;up,broadcast,running,promisc,multicast,router,ipv4&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; mtu 1500 index 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;inet 10.10.50.250 netmask ffffff00 broadcast 10.10.50.255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;ether 0:21:28:44:67:b&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;---&amp;gt; &lt;u&gt;Following is the set IP addresses of both the networks which will be communicating among each other:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;192.168.50.103  drnode1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;192.168.50.104  drnode2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;192.168.50.111  drcluster&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;192.168.50.112  dapprep&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;192.168.50.113  ddbrep&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;10.10.50.105    pnode1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;10.10.50.106    pnode2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;10.10.50.111    primarycluster&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;10.10.50.112    papprep&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;10.10.50.113    pdbrep&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;----&amp;gt; &lt;u&gt;Configure all the above IP addresses as follows, to simulate 4Mbps link over a distance of 1000 miles which is would have 250millisecond delay and drops approx 5% packet, corrupt 5% of packets going to &lt;ip&gt; such that there are 2bytes in each packet are corrupted.&lt;br /&gt;&lt;/ip&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 10.10.50.105 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:10.10.50.105)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;====&amp;gt; Test the above by pinging to pnode1 (10.10.50.105) from drnode1.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@drnode1:~# ping -s pnode1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;PING pnode1: 56 data bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=0. time=247. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=1. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=2. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=3. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=4. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=6. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=7. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=8. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=9. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=10. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=11. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=12. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=13. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=14. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=15. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=16. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=17. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=18. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=19. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=20. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=21. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;^C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;----pnode1 PING Statistics----&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;23 packets transmitted, 21 packets received, 8% packet loss&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;round-trip (ms)  min/avg/max/stddev = 247./247.9/248./0.262&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@drnode1:~# ping -s pnode1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;PING pnode1: 56 data bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=0. time=250. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=1. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=2. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode1 (10.10.50.105): icmp_seq=3. time=248. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;^C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;----pnode1 PING Statistics----&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;4 packets transmitted, 4 packets received, 0% packet loss&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;round-trip (ms)  min/avg/max/stddev = 248./248./250./1.3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@drnode1:~#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;===&amp;gt; Do the same thing to all the IP addresses.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 10.10.50.106 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:10.10.50.106)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 10.10.50.111 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:10.10.50.111)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 10.10.50.112 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:10.10.50.112)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 10.10.50.113 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:10.10.50.113)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 192.168.50.103 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:192.168.50.103)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 192.168.50.104 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:192.168.50.104)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 192.168.50.111 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:192.168.50.111)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 192.168.50.112 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:192.168.50.112)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit 192.168.50.113 -b 4096 -d 5 -c 5 -C 2 -l 250&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;(::ffff:192.168.50.113)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Bandwidth 524288 (bytes/s) (4096.000000 Kbps)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Drop rate = 5.00 %&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Delay = 250 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Corruption rate = 5.00 %, corruption count = 2 bytes/packet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~# ifhit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;hxbt target list:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:10.10.50.105&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:10.10.50.106&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:192.168.50.103&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:192.168.50.104&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:10.10.50.111&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:10.10.50.112&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:10.10.50.113&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:192.168.50.111&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:192.168.50.112&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;::ffff:192.168.50.113&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@wansimulator:~#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;===&amp;gt; &lt;u&gt;After configuring all the IP address the delay is double &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@pnode1:~# ping -s drnode1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;PING drnode1: 56 data bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=0. time=495. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=1. time=492. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=3. time=492. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=4. time=493. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=5. time=492. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=6. time=492. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from drnode1 (192.168.50.103): icmp_seq=8. time=492. ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;^C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;----drnode1 PING Statistics----&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;9 packets transmitted, 7 packets received, 22% packet loss&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;round-trip (ms)  min/avg/max/stddev = 492./493./495./0.95&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@pnode1:~#&lt;/span&gt;&lt;br /&gt;===&amp;gt; ping on the same network no packet drops.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@pnode1:~# ping -s pnode2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;PING pnode2: 56 data bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode2 (10.10.50.106): icmp_seq=0. time=0.991 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode2 (10.10.50.106): icmp_seq=1. time=0.143 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode2 (10.10.50.106): icmp_seq=2. time=0.166 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;64 bytes from pnode2 (10.10.50.106): ^C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;----pnode2 PING Statistics----&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;4 packets transmitted, 4 packets received, 0% packet loss&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;round-trip (ms)  min/avg/max/stddev = 0.143/0.363/0.991/0.42&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;root@pnode1:~#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion:&lt;/b&gt;&lt;br /&gt;Since we configure 4Mbps one way, it's like send &amp;amp; receive will get 8Mbps. Hence one should do appropriate computation to simulate the required network.&lt;br /&gt;For instance, if you want to configure 8 Mbps link, split that into two halves for each way.&lt;br /&gt;&lt;/up,broadcast,running,promisc,multicast,router,ipv4&gt;&lt;/up,broadcast,running,multicast,router,ipv4&gt;&lt;/nic&gt;&lt;/nic&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://opensolaris.org/"&gt;OpenSolaris&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hub.opensolaris.org/bin/view/Project+crossbow/WebHome"&gt;Project crossbow&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hub.opensolaris.org/bin/download/Community+Group+networking/WebHome/readme.hxbt.txt"&gt;readme on hit-box (wan-simulator from project page)&lt;br /&gt;&lt;/a&gt;&lt;a href="http://hub.opensolaris.org/bin/view/Community+Group+networking/WebHome"&gt;Network community&lt;/a&gt; has reference to hxbt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Acknowledgment:&lt;/span&gt;&lt;br /&gt;I would like to thank &lt;a href="http://blogs.sun.com/sunay/"&gt;Sunay Tripathi &lt;/a&gt;and &lt;a href="http://blogs.sun.com/kais/"&gt;Kais Belgaied&lt;/a&gt; for their support to help me understand the working of the wan-simualtor and creating it.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--&lt;div class="zemanta-pixie"&gt;&lt;br /&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=709101cb-6103-8a3a-83f4-3964813cf742" /&gt;&lt;br /&gt;&lt;/div&gt;--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/794698467011142936-9218125448183889485?l=serversidetechnologies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serversidetechnologies.blogspot.com/feeds/9218125448183889485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=794698467011142936&amp;postID=9218125448183889485' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/9218125448183889485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/9218125448183889485'/><link rel='alternate' type='text/html' href='http://serversidetechnologies.blogspot.com/2009/10/wansimulator_30.html' title='wansimulator'/><author><name>Yousuf</name><uri>http://www.blogger.com/profile/09138600341043391768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ab2f_Ak_60s/SvzRkKvPhkI/AAAAAAAABIw/idMgWivoOQ4/S220/usuf_web_id1pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ab2f_Ak_60s/SuVfBj2AKXI/AAAAAAAABFw/c3XEamnrdVY/s72-c/wansimulator.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-794698467011142936.post-9033205979282517167</id><published>2009-06-19T19:03:00.001-07:00</published><updated>2009-11-06T01:42:25.552-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogs'/><category scheme='http://www.blogger.com/atom/ns#' term='posting'/><title type='text'>Testing scribefire for the first time</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I got scribe fire installed, restarted the browser.&lt;br /&gt;Configuring scribefire for blogspot is very simple.&lt;br /&gt;Just provide the blog url, scribefire picked up the appropriate API and provided username &amp;amp; password.&lt;br /&gt;Looks cool...&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tag/scribefire%20testing%20blogspot" class="performancingtags"&gt;scribefire testing blogspot&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/794698467011142936-9033205979282517167?l=serversidetechnologies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serversidetechnologies.blogspot.com/feeds/9033205979282517167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=794698467011142936&amp;postID=9033205979282517167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/9033205979282517167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/9033205979282517167'/><link rel='alternate' type='text/html' href='http://serversidetechnologies.blogspot.com/2009/06/testing-scribefire-for-first-time_19.html' title='Testing scribefire for the first time'/><author><name>Yousuf</name><uri>http://www.blogger.com/profile/09138600341043391768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ab2f_Ak_60s/SvzRkKvPhkI/AAAAAAAABIw/idMgWivoOQ4/S220/usuf_web_id1pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-794698467011142936.post-3397123677815511351</id><published>2007-06-18T09:12:00.000-07:00</published><updated>2007-07-28T00:26:35.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='muti-threaded application'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Solving Performance issue of a Multi-threaded application on Solaris,  Linux &amp; Windows</title><content type='html'>&lt;b&gt;On Solaris10 ::&lt;/b&gt;&lt;br /&gt;When my colleague approached me with the following problem,&lt;br /&gt;Brief background:: His application is a multi-threaded application running on &lt;code&gt;&lt;script language="javascript"&gt;&lt;br /&gt;&lt;!-- window.open ('http://www.sun.com/servers/coolthreads/se_t2000/') --&gt;&lt;br /&gt;&lt;/script&gt;T2000&lt;/code&gt; which is multi-core multi-threaded server &lt;code&gt;&lt;a href="http://www.sun.com/processors/UltraSPARC-T1/" target="_blank"&gt;&lt;/a&gt;&lt;/code&gt;&lt;a href="http://www.sun.com/processors/UltraSPARC-T1/" target="_blank"&gt;Ultra Sparc T1 processor&lt;code&gt;&lt;/code&gt;&lt;/a&gt;. He asks,&lt;br /&gt;How do I know which process is running on CPU &lt;n&gt;? And why it's running on that CPU? And what it's doing there? To start with,&lt;br /&gt;There are tools around which he had used like "mpstat" to narrow down the problem to a particular CPU. In this case it was CPU 0 which is busy almost all the time and other CPUs are free.&lt;br /&gt;And mpstat shows that "ithr" (so many network interrupts are being handled by this CPU) is flagging large numbers only on one of the CPUs. So gives us an starting point to drill down &amp; we know that it's CPU 0 which is consuming most of the system resources and rest of all other CPUs are less loaded.&lt;br /&gt;&lt;br /&gt;Tried digging a step(1) deeper to know who's running on CPU0? as follows,&lt;br /&gt;# dtrace -n 'sched:::on-cpu /cpu == 0/ { @[execname, pid] = count() }'&lt;br /&gt;&gt;&gt; Found out the culprit process name and it's pid by this method. This one-liner dtrace command can be used to identify any process which is occupying CPU most of the time with the sample interval. And come to know that this particular application is consuming most of the CPU time.&lt;br /&gt;&lt;br /&gt;With this process name &amp;amp; process id, we started digging further a step(2) down to know what this process is doing? as follows,&lt;br /&gt;# dtrace -n 'syscall:::entry /pid == 8876/ { @[probefunc] = count() }'&lt;br /&gt;&gt;&gt; With this it's clear that, which systems calls are keeping the system busy and is it expected by this application. And the answer is Yes as this is a network intensive application which is busy all the time doing network related read &amp; write operations. With this could make out that the top system calls that are being repeatedly called by this processes are read/write operations on the network.&lt;br /&gt;&lt;br /&gt;Now looking at the solution, on Solaris 10u3 and above we can apply following changes to the system's kernel parameters to handle incoming network requests by all the available CPUs as follows,&lt;br /&gt;&lt;br /&gt;set ip:ip_squeue_fanout=1&lt;br /&gt;set ip:ip_squeue_bind=0&lt;br /&gt;* the below value has to be based on the number of CPU's  or cores available.&lt;br /&gt;set ip:ip_soft_rings_cnt=16&lt;br /&gt;&lt;br /&gt;After applying these changes one has to reboot the system. And then after reboot, measuring the performance of the same application gives almost double the performance and it was scaling up as we enable more CPUs on this system as all the incoming threads were handled by all the available CPUs. This is specific to application to application and this is being well written multi-threaded application it scaled well in this case. And now we could see that all the CPUs are handling the incoming network interrupts and all the CPUs are equally busy.&lt;br /&gt;&lt;br /&gt;If it's a live production environment one can use ndd commands to change the dynamic kernel parameters to the live system and see the effect immediately without rebooting the node. Here are the ndd commands that can be used on a live system to set some of the above /etc/system values on to the live kernel learn as follows,&lt;br /&gt;&lt;br /&gt;ndd -set /dev/ip ip_squeue_fanout 1&lt;br /&gt;ndd -set /dev/ip ip_squeue_bind 0&lt;br /&gt;&lt;br /&gt;To get the values from the live kernel one can use "ndd -get" option to get the values.&lt;br /&gt;&lt;br /&gt;Description of the parameters that are set::&lt;br /&gt;&lt;/n&gt;&lt;p&gt;&lt;code class="small"&gt;ip_squeue_fanout&lt;/code&gt;: Controls whether incoming connections from one NIC are fanned out across all CPUs. A value of 0 means incoming connections are assigned to the squeue attached to the interrupted CPU. A value of 1 means the connections are fanned out across all CPUs. The latter is required when NIC is faster than the CPU (say 10Gb NIC) and multiple CPUs need to service the NIC. Set by way of &lt;code class="small"&gt;/etc/system&lt;/code&gt; by adding the following line: &lt;/p&gt;  &lt;pre class="small"&gt;set ip:ip_squeue_fanout=1&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt; &lt;code class="small"&gt;ip_squeue_bind&lt;/code&gt;: Controls whether worker threads are bound to specific CPUs or not. When bound (default), they give better locality. The non-default value (don't bind) should be chosen only when processor sets are to be created on the system. Unset by way of &lt;code class="small"&gt;/etc/system&lt;/code&gt; by adding the following line: &lt;/p&gt;  &lt;pre class="small"&gt;set ip:ip_squeue_bind=0&lt;br /&gt;&lt;/pre&gt; &lt;code&gt;&lt;/code&gt; &lt;dl&gt;&lt;dt&gt;ip_soft_rings_cnt: Determines the number of squeues to be used to fanout the incoming TCP/IP connections.&lt;b&gt; &lt;/b&gt; The incoming traffic is placed on one of the rings. If the ring is overloaded, packets are dropped. For every packet that gets dropped, the kstat dls counter,  &lt;tt&gt;dls_soft_ring_pkt_drop&lt;/tt&gt;, is incremented.&lt;/dt&gt;&lt;dt&gt;Default: 2&lt;/dt&gt;&lt;dt&gt;Range: 0 - nCPUs, where nCPUs is the maximum number of CPUs in the system&lt;/dt&gt;&lt;dt&gt;Dynamic? No. The interface should be plumbed again when changing this parameter.&lt;/dt&gt;&lt;dt&gt;When to Change? Consider setting this parameter to a value greater than 2 on systems that have 10 Gbps NICs and many CPUs.&lt;/dt&gt;&lt;dt&gt;set ip:ip_soft_rings_cnt=16&lt;/dt&gt;&lt;/dl&gt; Note:: Here by looking at the mpstat one can come to know that's the network interrupts which is the problem, but to add to that if a developer is curious to know if his/her own application is into this state this analysis is helpful to know that my own application which is facing the limitations/default setting an OS would have.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;On Linux (RedHat/SuSe etc) &amp;amp; Windows (XP/Vista or any latest server) ::&lt;br /&gt;&lt;/b&gt;If we happen to come across similar problem on &lt;b&gt;Linux &lt;/b&gt;we would use top to find out which is the top process consuming most of the systems resources and try to drill down from there And probably take "strace" of that processes to know which system calls it's making and try to capture all that out put in a file and post processes that file to know which system call is being made most frequently etc.. and The overhead that strace brings in to the application is too much which one would like to avoid using it in the production environment.&lt;br /&gt;&lt;br /&gt;If we happen to come across similar problem on &lt;b&gt;Windows &lt;/b&gt;one would look at the available windows GUI to look at the top applications consuming the resources in the "Windows task Manager" window and can sort based on various parameters like CPU, memory etc. To drill down probably one can use windows native performance tools which will give high level info with regards to what's happening in the system. And can use use third party tools to profile a given application and understand what it is doing etc..&lt;br /&gt;&lt;br /&gt;Well known profiling tool on windows &amp; Linux for multi-threaded application are from "&lt;span style=""&gt;Intel® &lt;b&gt;Thread Profiler&lt;/b&gt; 3.1 for &lt;b&gt;Windows" &lt;/b&gt;&lt;/span&gt;Intel Thread profiler for Linux etc..&lt;br /&gt;&lt;br /&gt;Open to know more tools on Linux &amp;amp; windows platforms which can help drill the problems easily without taxing the over-all application or system performance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/794698467011142936-3397123677815511351?l=serversidetechnologies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serversidetechnologies.blogspot.com/feeds/3397123677815511351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=794698467011142936&amp;postID=3397123677815511351' title='84 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/3397123677815511351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/794698467011142936/posts/default/3397123677815511351'/><link rel='alternate' type='text/html' href='http://serversidetechnologies.blogspot.com/2007/06/solving-performance-issue-of-multi.html' title='Solving Performance issue of a Multi-threaded application on Solaris,  Linux &amp; Windows'/><author><name>Yousuf</name><uri>http://www.blogger.com/profile/09138600341043391768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_ab2f_Ak_60s/SvzRkKvPhkI/AAAAAAAABIw/idMgWivoOQ4/S220/usuf_web_id1pic.jpg'/></author><thr:total>84</thr:total></entry></feed>
