{"id":6702,"date":"2025-10-19T13:37:17","date_gmt":"2025-10-19T12:37:17","guid":{"rendered":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/?page_id=6702"},"modified":"2025-10-19T13:37:18","modified_gmt":"2025-10-19T12:37:18","slug":"opnsense-configuration-to-counteract-bufferbloat","status":"publish","type":"page","link":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/?page_id=6702","title":{"rendered":"OPNsense Configuration to Counteract &#8220;BufferBloat&#8221;"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>One factor that influenced me moving away from the <a href=\"https:\/\/en.wikipedia.org\/wiki\/LEAF_Project\" target=\"_blank\" rel=\"noreferrer noopener\">LEAF Bering-uClibc<\/a> Linux distribution for the Internet router and onto a more specialised router software distribution (<a href=\"https:\/\/en.wikipedia.org\/wiki\/OPNsense\" target=\"_blank\" rel=\"noreferrer noopener\">OPNsense<\/a>) was that LEAF was missing the software packages to counteract &#8220;BufferBloat&#8221; &#8211; the tendency for the data buffers on the Internet link to grow so as to prevent other TCP\/IP connections achieving low latency.<\/p>\n\n\n\n<p>For more information on BufferBloat, see: <a href=\"https:\/\/www.bufferbloat.net\/projects\/\">https:\/\/www.bufferbloat.net\/projects\/<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Assessing &#8220;BufferBloat&#8221;<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">MacOS NetworkQuality Utility<\/h3>\n\n\n\n<p>The MacOS operating system includes a standard command-line tool called <code>networkQualit<\/code>y which includes an assessment of BufferBloat via its &#8216;Responsiveness&#8217; metric. (A Low score for Responsiveness is &#8216;bad&#8217;.)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">% networkQuality <br>==== SUMMARY ====<br>Uplink capacity: 14.934 Mbps<br>Downlink capacity: 65.011 Mbps<br>Responsiveness: Low (365.962 milliseconds | 163 RPM)<br>Idle Latency: 98.430 milliseconds | 609 RPM<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Waveform Speed Test<\/h3>\n\n\n\n<p>The online tool <a href=\"https:\/\/www.waveform.com\/tools\/bufferbloat\">https:\/\/www.waveform.com\/tools\/bufferbloat<\/a> includes a more explicit measure of BufferBloat.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"595\" src=\"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x595.png\" alt=\"\" class=\"wp-image-6703\" srcset=\"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x595.png 1024w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-300x174.png 300w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-768x446.png 768w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1536x892.png 1536w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-2048x1190.png 2048w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-500x290.png 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Summary screen from Waveform Speed Test before configuring Active Queue Management<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Configuring Active Queue Management for OPNsense<\/h2>\n\n\n\n<p>The standard OPNsense documentation provides pretty good guidance; see: <a href=\"https:\/\/docs.opnsense.org\/manual\/how-tos\/shaper_bufferbloat.html\">https:\/\/docs.opnsense.org\/manual\/how-tos\/shaper_bufferbloat.html<\/a><\/p>\n\n\n\n<p>Simply following these instructions gave good results. Setting the Queues to 85% of the nominal Download and Upload bandwidth values proved too conservative and tuning showed these could be increased to 19\/20 (95%) for Upload and 73\/80 (91.25%) for Download while preserving an A+ score.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"595\" src=\"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1-1024x595.png\" alt=\"\" class=\"wp-image-6704\" srcset=\"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1-1024x595.png 1024w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1-300x174.png 300w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1-768x446.png 768w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1-1536x892.png 1536w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1-2048x1190.png 2048w, https:\/\/www.marshflattsfarm.org.uk\/wordpress\/wp-content\/uploads\/2025\/10\/image-1-500x290.png 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Summary screen from Waveform Speed Test after configuring Active Queue Management<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Introduction One factor that influenced me moving away from the LEAF Bering-uClibc Linux distribution for the Internet router and onto a more specialised router software distribution (OPNsense) was that LEAF was missing the software packages to counteract &#8220;BufferBloat&#8221; &#8211; the &hellip; <a href=\"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/?page_id=6702\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":5732,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6702","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/6702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6702"}],"version-history":[{"count":2,"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/6702\/revisions"}],"predecessor-version":[{"id":6706,"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/6702\/revisions\/6706"}],"up":[{"embeddable":true,"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/5732"}],"wp:attachment":[{"href":"https:\/\/www.marshflattsfarm.org.uk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}