{"id":138,"date":"2025-03-21T23:08:47","date_gmt":"2025-03-21T23:08:47","guid":{"rendered":"https:\/\/www.bgptrace.com\/blog\/?p=138"},"modified":"2025-03-21T23:09:32","modified_gmt":"2025-03-21T23:09:32","slug":"test-with-ecmp-on-linux-part-2","status":"publish","type":"post","link":"https:\/\/www.bgptrace.com\/blog\/?p=138","title":{"rendered":"Test with ECMP on Linux &#8211; Part 2"},"content":{"rendered":"\n<p><strong>Continuing from the previous article on ECMP on a Linux machine<\/strong>, the goal is to enhance overall performance, but it will always be limited by the session-wise characteristics of traffic.<\/p>\n\n\n\n<p>Surprisingly, something interesting happens during a multiple-flow Speedtest. When a single test generates multiple traffic flows using different port numbers (Layer 4), the aggregated result shows a higher combined throughput\u2014regardless of whether the traffic is routed through two different public IPs with NAT.<\/p>\n\n\n\n<p>For example, consider two links:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>150Mbps Download \/ 30Mbps Upload<\/strong> (DIA)<\/li>\n\n\n\n<li><strong>30Mbps Download \/ 30Mbps Upload<\/strong> (DIA via public WiFi)<\/li>\n<\/ol>\n\n\n\n<p>A Linux gateway is configured to use ECMP with two next-hop routes pointing to these links. When the traffic test starts, the portal or app will display only one of the link\u2019s public IP addresses. However, the test results show <strong>170+ Mbps download and 40+ Mbps upload<\/strong>. WOOOO!!!<\/p>\n\n\n\n<p>Of course, this is just a traffic test\u2014similar to running <strong>iPerf<\/strong> with multiple flow tests and aggregating the results. So, yes, it\u2019s possible!<\/p>\n\n\n\n<p>I believe some vendors use similar techniques for load sharing. Since it\u2019s Linux-based, that shouldn\u2019t be an issue.<\/p>\n\n\n\n<p>Any other ideas? I\u2019m also thinking about UDP-based video streaming\u2014should we be considering application-layer optimization?<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>#ECMP #internet #NAT #IP #loadsharing #BGP #DIA #Speedtest #IPERF #measurement #traffictest <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuing from the previous article on ECMP on a Linux machine, the goal is to enhance overall performance, but it will always be limited by the session-wise characteristics of traffic. Surprisingly, something interesting happens during a multiple-flow Speedtest. When a single test generates multiple traffic flows using different port numbers (Layer 4), the aggregated result &hellip; <a href=\"https:\/\/www.bgptrace.com\/blog\/?p=138\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Test with ECMP on Linux &#8211; Part 2&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[142],"class_list":["post-138","post","type-post","status-publish","format-standard","hentry","category-internet","tag-ecmp-internet-nat-ip-loadsharing-bgp-dia-speedtest-iperf-measurement-traffictest"],"_links":{"self":[{"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=138"}],"version-history":[{"count":1,"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/138\/revisions"}],"predecessor-version":[{"id":139,"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/138\/revisions\/139"}],"wp:attachment":[{"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bgptrace.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}