{"id":2217,"date":"2013-12-15T15:29:41","date_gmt":"2013-12-15T19:29:41","guid":{"rendered":"http:\/\/www.braindeadprojects.com\/blog\/?p=2217"},"modified":"2013-12-15T17:47:29","modified_gmt":"2013-12-15T21:47:29","slug":"wireless-iperf-graphing","status":"publish","type":"post","link":"http:\/\/www.braindeadprojects.com\/blog\/what\/wireless-iperf-graphing\/","title":{"rendered":"Wireless Iperf Graphing"},"content":{"rendered":"<p>About a year ago, we were doing some wireless throughput\/interference testing at the office\u00a0 to acclamate ourselves to the wireless world. Most importantly, we were trying to answer the question &#8220;Why can&#8217;t I just lease a 10 foot section on a tower and\u00a0 install a zillion radios there?&#8221;<\/p>\n<p>Despite having a handful of BCP design documents at hand, as well as input from established and respected members of the wireless community, the question kept seeming to pop up. So how does one present a worthwhile answer?<\/p>\n<p>My solution was to build a small section of a tower leg on our back lot using a <a title=\"Non -Pen roof mounts\" href=\"http:\/\/www.3starinc.com\/non-pen_mounts_2.html\" target=\"_blank\">non-penetrating roof mount<\/a>, 2 <a title=\"5G-20-90\" href=\"http:\/\/dl.ubnt.com\/AirMax5GSectors.pdf\" target=\"_blank\">Ubiquiti Rocket M5 90 5G-20-90 degree sectors <\/a>(mounted 90 degrees from each other, without shielding), 2 <a title=\"Nanostation M5\" href=\"http:\/\/www.ubnt.com\/nanostation\" target=\"_blank\">Nanostion M5 <\/a>CPE&#8217;s, 4 laptops, and a couple of inverters and car batteries to power 2 of the laptops (the other 2 were run off extension cables).\u00a0 The two laptops connected at the Access Point side ran as <a title=\"Iperf\" href=\"http:\/\/en.wikipedia.org\/wiki\/Iperf\" target=\"_blank\">Iperf<\/a> servers, each laptop ran as a client.<\/p>\n<figure id=\"attachment_2218\" aria-describedby=\"caption-attachment-2218\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/Ubiquiperf-layout.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2218\" alt=\"UbiquiperfLayout\" src=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/Ubiquiperf-layout-300x225.png\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/Ubiquiperf-layout-300x225.png 300w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/Ubiquiperf-layout-900x675.png 900w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/Ubiquiperf-layout.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2218\" class=\"wp-caption-text\">Plug this in here, that in over there, and this cable.. here.<\/figcaption><\/figure>\n<p>The thought was to grab Iperf and AirOS datapoints at every couple of seconds\u00a0 and see &#8220;what happens when I do\u00a0<strong><em>this?<\/em><\/strong>&#8221; &#8220;<em><strong>THIS<\/strong> <\/em>&#8221; generally entailed doing something BCPs warned against doing.<\/p>\n<p>To gather the Iperf data and AirOS statistics, I put together a quick script i called &#8220;<a title=\"Ubiquiperf\" href=\"https:\/\/github.com\/gillespiem\/Ubiquiperf\" target=\"_blank\">Ubiquiperf<\/a>&#8220;. Basically it polls an iperf test every second, pulls the stats off the radio (Capacity, Quality, RSSI, etc) , generates a CSV file of all the data, and finally creates a graph using the <a title=\"JPGraph\" href=\"http:\/\/jpgraph.net\/\" target=\"_blank\">jpgraph PHP libraries<\/a>.<\/p>\n<p>Due to weather conditions our testing was cut short and our initial results had a simple problem: we needed to turn the transmit power down on all the radios.<\/p>\n<p>For a baseline, we performed a quick throughput test one at a time, where each Access Point operating on the same frequency could perform at about 85Mbps:<\/p>\n<figure id=\"attachment_2228\" aria-describedby=\"caption-attachment-2228\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2228\" alt=\"ap1-test1\" src=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test1-300x161.png\" width=\"300\" height=\"161\" srcset=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test1-300x161.png 300w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test1-900x483.png 900w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test1.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2228\" class=\"wp-caption-text\">AP1 Baseline<\/figcaption><\/figure>\n<figure id=\"attachment_2229\" aria-describedby=\"caption-attachment-2229\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2229\" alt=\"ap2-test1\" src=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test1-300x161.png\" width=\"300\" height=\"161\" srcset=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test1-300x161.png 300w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test1-900x483.png 900w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test1.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2229\" class=\"wp-caption-text\">AP2 Baseline<\/figcaption><\/figure>\n<p>So what happens if I perform the same throughput test on both units but at the exact same time, over a longer duration?<\/p>\n<figure id=\"attachment_2230\" aria-describedby=\"caption-attachment-2230\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2230 \" alt=\"ap1-test2\" src=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test2-300x161.png\" width=\"300\" height=\"161\" srcset=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test2-300x161.png 300w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test2-900x483.png 900w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap1-test2.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2230\" class=\"wp-caption-text\">AP1 concurrent iperf test<\/figcaption><\/figure>\n<figure id=\"attachment_2231\" aria-describedby=\"caption-attachment-2231\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2231\" alt=\"ap2-test2\" src=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test2-300x161.png\" width=\"300\" height=\"161\" srcset=\"http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test2-300x161.png 300w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test2-900x483.png 900w, http:\/\/www.braindeadprojects.com\/blog\/wp-content\/ap2-test2.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2231\" class=\"wp-caption-text\">AP2 concurrent iperf<\/figcaption><\/figure>\n<p>Well, it obviously cut off about 20Mbps from the first access point. Of course, the power on the radios <em>really<\/em> needs to be turned down so this test is unfortunately not worth much. We&#8217;ll be doing additional testing in the near future, and hope to have meaningful results that include mounts with and without <a title=\"RF Armor\" href=\"http:\/\/www.rfarmor.com\" target=\"_blank\">RF Armor<\/a>, <a title=\"Titanium\" href=\"http:\/\/dl.ubnt.com\/newsletters\/0141.html\" target=\"_blank\">Titanium <\/a>model equipment, etc. I&#8217;ll publish our results when I can.<\/p>\n<p>In the meantime, feel free to play with it yourself. <a title=\"GitHub Source\" href=\"https:\/\/github.com\/gillespiem\/Ubiquiperf\" target=\"_blank\">Full PHP source is available on GitHub.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>About a year ago, we were doing some wireless throughput\/interference testing at the office\u00a0 to acclamate ourselves to the wireless world. Most importantly, we were trying to answer the question &#8220;Why can&#8217;t I just lease a 10 foot section on a tower and\u00a0 install a zillion radios there?&#8221; Despite having a handful of BCP design &hellip; <a href=\"http:\/\/www.braindeadprojects.com\/blog\/what\/wireless-iperf-graphing\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Wireless Iperf Graphing<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41,40,1,18],"tags":[],"class_list":["post-2217","post","type-post","status-publish","format-standard","hentry","category-php","category-ubiquiti","category-what","category-wireless"],"_links":{"self":[{"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/posts\/2217"}],"collection":[{"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/comments?post=2217"}],"version-history":[{"count":20,"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/posts\/2217\/revisions"}],"predecessor-version":[{"id":2242,"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/posts\/2217\/revisions\/2242"}],"wp:attachment":[{"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/media?parent=2217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/categories?post=2217"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.braindeadprojects.com\/blog\/wp-json\/wp\/v2\/tags?post=2217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}