From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass DE-1" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 3E7F821F2BD for ; Wed, 22 Apr 2015 02:19:11 -0700 (PDT) Received: from u-089-d090.biologie.uni-tuebingen.de ([134.2.89.90]) by mail.gmx.com (mrgmx001) with ESMTPSA (Nemesis) id 0LymHf-1ZMZEi3Wlj-0167yI; Wed, 22 Apr 2015 11:19:07 +0200 Content-Type: multipart/mixed; boundary="Apple-Mail=_5BB62B34-D72D-4C60-805F-D36D89B829A3" Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) From: Sebastian Moeller In-Reply-To: Date: Wed, 22 Apr 2015 11:19:08 +0200 Message-Id: <70F5A05D-79AF-40BA-BCA3-3A0599745614@gmx.de> References: <558D3A0C-75A0-4707-95DF-790F29F825AE@gmx.de> To: leetminiwheat X-Mailer: Apple Mail (2.1878.6) X-Provags-ID: V03:K0:enOHLmydwBFzi5U7ANFFxWiFB39fCYXQnJEaQ5XoAM7EpTmcvNI RkRXSnO4qlbFjg/51VvfJ60vJpFGyTkBwXs84m2IfYzcPA1mwh7sA0NrkkrXM5Zu9H3AtJU NolTkbiOI+r1WW+GiHwRfK92awnNFivJf9XJmUZ/x1NAL55IPtBK6wvDPR5VwK3bg20Nd46 pA/XCFh0C5Wq0Gr9Tc9jA== X-UI-Out-Filterresults: notjunk:1; Cc: cerowrt-devel Subject: Re: [Cerowrt-devel] squash/ignore DSCP and mangle table questions X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Apr 2015 09:19:41 -0000 --Apple-Mail=_5BB62B34-D72D-4C60-805F-D36D89B829A3 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi leetminiwheat, On Apr 22, 2015, at 02:28 , leetminiwheat = wrote: > Correcton on P.S. section: 3 and 5t not 4 and 5t. This is confusing me ;) >=20 > also regarding my tc qdisc output: i clearly need to reboot or > something to fix the duplicate IFBs after testing a bunch of QoS. You could also try to run /usb/lib/sqm/stop.sh = $NAME_OF_THE_INTERFACE (so not ifb5gw00 but rather gw00) that hopefully = cleans up the left, let me know how that works... > I currently have to hand-mix the latest ones with Cero since I don't > have an updated luci-sqm >=20 Please find attached the most recent sqm-scripts and the most recent = luci-sqm (the relevant script) please copy sqm-cbi.lua to: /usr/lib/lua/luci/model/cbi/sqm.lua and you should be as up to date as = you can be. Make sure to also move all the files from the attached = sqm-scripts folder to the matching folders on your cerowrt router; that = should hopefully fix the leftover IFB issue to some degree (we currently = do not clean up when an interface goes away, only when the interface = gets upped again) Best Regards Sebastian --Apple-Mail=_5BB62B34-D72D-4C60-805F-D36D89B829A3 Content-Disposition: attachment; filename=sqm-cbi.lua Content-Type: application/octet-stream; x-unix-mode=0644; name="sqm-cbi.lua" Content-Transfer-Encoding: 7bit --[[ LuCI - Lua Configuration Interface Copyright 2014 Steven Barth Copyright 2014 Dave Taht Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 $Id$ ]]-- local wa = require "luci.tools.webadmin" local fs = require "nixio.fs" local net = require "luci.model.network".init() local sys = require "luci.sys" --local ifaces = net:get_interfaces() local ifaces = sys.net:devices() local path = "/usr/lib/sqm" m = Map("sqm", translate("Smart Queue Management"), translate("With SQM you " .. "can enable traffic shaping, better mixing (Fair Queueing)," .. " active queue length management (AQM) " .. " and prioritisation on one " .. "network interface.")) s = m:section(TypedSection, "queue", translate("Queues")) s:tab("tab_basic", translate("Basic Settings")) s:tab("tab_qdisc", translate("Queue Discipline")) s:tab("tab_linklayer", translate("Link Layer Adaptation")) s.addremove = true -- set to true to allow adding SQM instances in the GUI s.anonymous = true -- BASIC e = s:taboption("tab_basic", Flag, "enabled", translate("Enable")) e.rmempty = false n = s:taboption("tab_basic", ListValue, "interface", translate("Interface name")) -- sm lifted from luci-app-wol, the original implementation failed to show pppoe-ge00 type interface names for _, iface in ipairs(ifaces) do -- if iface:is_up() then -- n:value(iface:name()) -- end if iface ~= "lo" then n:value(iface) end end n.rmempty = false dl = s:taboption("tab_basic", Value, "download", translate("Download speed (kbit/s) (ingress):")) dl.datatype = "and(uinteger,min(0))" dl.rmempty = false ul = s:taboption("tab_basic", Value, "upload", translate("Upload speed (kbit/s) (egress):")) ul.datatype = "and(uinteger,min(0))" ul.rmempty = false -- QDISC c = s:taboption("tab_qdisc", ListValue, "qdisc", translate("Queueing discipline")) c:value("fq_codel", "fq_codel ("..translate("default")..")") c:value("efq_codel") c:value("nfq_codel") c:value("sfq") c:value("codel") c:value("ns2_codel") c:value("pie") c:value("sfq") c.default = "fq_codel" c.rmempty = false local qos_desc = "" sc = s:taboption("tab_qdisc", ListValue, "script", translate("Queue setup script")) for file in fs.dir(path) do if string.find(file, ".qos$") then sc:value(file) end if string.find(file, ".qos.help$") then fh = io.open(path .. "/" .. file, "r") qos_desc = qos_desc .. "

" .. file:gsub(".help$", "") .. ":
" .. fh:read("*a") .. "

" end end sc.default = "simple.qos" sc.rmempty = false sc.description = qos_desc ad = s:taboption("tab_qdisc", Flag, "qdisc_advanced", translate("Show and Use Advanced Configuration")) ad.default = false ad.rmempty = true squash_dscp = s:taboption("tab_qdisc", ListValue, "squash_dscp", translate("Squash DSCP on inbound packets (ingress):")) squash_dscp:value("1", "SQUASH") squash_dscp:value("0", "DO NOT SQUASH") squash_dscp.default = "1" squash_dscp.rmempty = true squash_dscp:depends("qdisc_advanced", "1") squash_ingress = s:taboption("tab_qdisc", ListValue, "squash_ingress", translate("Ignore DSCP on ingress:")) squash_ingress:value("1", "Ignore") squash_ingress:value("0", "Allow") squash_ingress.default = "1" squash_ingress.rmempty = true squash_ingress:depends("qdisc_advanced", "1") iecn = s:taboption("tab_qdisc", ListValue, "ingress_ecn", translate("Explicit congestion notification (ECN) status on inbound packets (ingress):")) iecn:value("ECN", "ECN ("..translate("default")..")") iecn:value("NOECN") iecn.default = "ECN" iecn.rmempty = true iecn:depends("qdisc_advanced", "1") eecn = s:taboption("tab_qdisc", ListValue, "egress_ecn", translate("Explicit congestion notification (ECN) status on outbound packets (egress).")) eecn:value("NOECN", "NOECN ("..translate("default")..")") eecn:value("ECN") eecn.default = "NOECN" eecn.rmempty = true eecn:depends("qdisc_advanced", "1") ad2 = s:taboption("tab_qdisc", Flag, "qdisc_really_really_advanced", translate("Show and Use Dangerous Configuration")) ad2.default = false ad2.rmempty = true ad2:depends("qdisc_advanced", "1") ilim = s:taboption("tab_qdisc", Value, "ilimit", translate("Hard limit on ingress queues; leave empty for default.")) -- ilim.default = 1000 ilim.isnumber = true ilim.datatype = "and(uinteger,min(0))" ilim.rmempty = true ilim:depends("qdisc_really_really_advanced", "1") elim = s:taboption("tab_qdisc", Value, "elimit", translate("Hard limit on egress queues; leave empty for default.")) -- elim.default = 1000 elim.datatype = "and(uinteger,min(0))" elim.rmempty = true elim:depends("qdisc_really_really_advanced", "1") itarg = s:taboption("tab_qdisc", Value, "itarget", translate("Latency target for ingress, e.g 5ms [units: s, ms, or us]; leave empty for automatic selection, put in the word default for the qdisc's default.")) itarg.datatype = "string" itarg.rmempty = true itarg:depends("qdisc_really_really_advanced", "1") etarg = s:taboption("tab_qdisc", Value, "etarget", translate("Latency target for egress, e.g. 5ms [units: s, ms, or us]; leave empty for automatic selection, put in the word default for the qdisc's default.")) etarg.datatype = "string" etarg.rmempty = true etarg:depends("qdisc_really_really_advanced", "1") iqdisc_opts = s:taboption("tab_qdisc", Value, "iqdisc_opts", translate("Advanced option string to pass to the ingress queueing disciplines; no error checking, use very carefully.")) iqdisc_opts.rmempty = true iqdisc_opts:depends("qdisc_really_really_advanced", "1") eqdisc_opts = s:taboption("tab_qdisc", Value, "eqdisc_opts", translate("Advanced option string to pass to the egress queueing disciplines; no error checking, use very carefully.")) eqdisc_opts.rmempty = true eqdisc_opts:depends("qdisc_really_really_advanced", "1") -- LINKLAYER ll = s:taboption("tab_linklayer", ListValue, "linklayer", translate("Which link layer to account for:")) ll:value("none", "none ("..translate("default")..")") ll:value("ethernet", "Ethernet with overhead: select for e.g. VDSL2.") ll:value("atm", "ATM: select for e.g. ADSL1, ADSL2, ADSL2+.") -- ll:value("adsl") -- reduce the options ll.default = "none" po = s:taboption("tab_linklayer", Value, "overhead", translate("Per Packet Overhead (byte):")) po.datatype = "and(integer,min(-1500))" po.default = 0 po.isnumber = true po.rmempty = true po:depends("linklayer", "ethernet") -- po:depends("linklayer", "adsl") po:depends("linklayer", "atm") adll = s:taboption("tab_linklayer", Flag, "linklayer_advanced", translate("Show Advanced Linklayer Options, (only needed if MTU > 1500)")) adll.rmempty = true adll:depends("linklayer", "ethernet") -- adll:depends("linklayer", "adsl") adll:depends("linklayer", "atm") smtu = s:taboption("tab_linklayer", Value, "tcMTU", translate("Maximal Size for size and rate calculations, tcMTU (byte); needs to be >= interface MTU + overhead:")) smtu.datatype = "and(uinteger,min(0))" smtu.default = 2047 smtu.isnumber = true smtu.rmempty = true smtu:depends("linklayer_advanced", "1") stsize = s:taboption("tab_linklayer", Value, "tcTSIZE", translate("Number of entries in size/rate tables, TSIZE; for ATM choose TSIZE = (tcMTU + 1) / 16:")) stsize.datatype = "and(uinteger,min(0))" stsize.default = 128 stsize.isnumber = true stsize.rmempty = true stsize:depends("linklayer_advanced", "1") smpu = s:taboption("tab_linklayer", Value, "tcMPU", translate("Minimal packet size, MPU (byte); needs to be > 0 for ethernet size tables:")) smpu.datatype = "and(uinteger,min(0))" smpu.default = 0 smpu.isnumber = true smpu.rmempty = true smpu:depends("linklayer_advanced", "1") lla = s:taboption("tab_linklayer", ListValue, "linklayer_adaptation_mechanism", translate("Which linklayer adaptation mechanism to use; for testing only")) lla:value("htb_private") lla:value("tc_stab", "tc_stab ("..translate("default")..")") lla.default = "tc_stab" lla.rmempty = true lla:depends("linklayer_advanced", "1") -- PRORITIES? return m --Apple-Mail=_5BB62B34-D72D-4C60-805F-D36D89B829A3 Content-Disposition: attachment; filename=sqm-scripts.zip Content-Type: application/zip; x-mac-auto-archive=yes; name="sqm-scripts.zip" Content-Transfer-Encoding: base64 UEsDBAoAAAAAAAZmk0YAAAAAAAAAAAAAAAAMABAAc3FtLXNjcmlwdHMvVVgMAOuHM1XrhzNV9QEU AFBLAwQKAAAAAACRlFJEAAAAAAAAAAAAAAAAEgAQAHNxbS1zY3JpcHRzL2ZpbGVzL1VYDAAhmgNT IZoDU/UBFABQSwMECgAAAAAAkWpjRgAAAAAAAAAAAAAAABYAEABzcW0tc2NyaXB0cy9maWxlcy9l dGMvVVgMABKn9VQSp/VU9QEUAFBLAwQKAAAAAAD7vmxGAAAAAAAAAAAAAAAAHQAQAHNxbS1zY3Jp cHRzL2ZpbGVzL2V0Yy9jb25maWcvVVgMAHkZAlV5GQJV9QEUAFBLAwQUAAgACAD7vmxGAAAAAAAA AAAAAAAAIAAQAHNxbS1zY3JpcHRzL2ZpbGVzL2V0Yy9jb25maWcvc3FtVVgMAHkZAlV5GQJV9QEU AIWPuw7CMAxF936Ft2woHZDYESu/UJnELRHBTvMA9e+pVJjSFi8ejq6Pb2OEezfAWKgQKMr3VjXw HQnZCQMx3jxZULpCjjPFHs1W1MqbveCcPR21rvMlLLTVa3S0LhlQ/dgZseQrnkx0IYNK7hk8HUZJ 6yc6tC9ks1VhiJRSR4ZBXc7Xuv4fvigioffTb+0KM8aB5rexZKltu9Q7fnicKIJiYVJN8wFQSwcI gHQDIKYAAADBAQAAUEsDBAoAAAAAALFYlkYAAAAAAAAAAAAAAAAJABAAX19NQUNPU1gvVVgMAF5k N1VeZDdV9QEUAFBLAwQKAAAAAACxWJZGAAAAAAAAAAAAAAAAFQAQAF9fTUFDT1NYL3NxbS1zY3Jp cHRzL1VYDABeZDdVXmQ3VfUBFABQSwMECgAAAAAAsViWRgAAAAAAAAAAAAAAABsAEABfX01BQ09T WC9zcW0tc2NyaXB0cy9maWxlcy9VWAwAXmQ3VV5kN1X1ARQAUEsDBAoAAAAAALFYlkYAAAAAAAAA AAAAAAAfABAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvZXRjL1VYDABeZDdVXmQ3VfUBFABQ SwMECgAAAAAAsViWRgAAAAAAAAAAAAAAACYAEABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy9l dGMvY29uZmlnL1VYDABeZDdVXmQ3VfUBFABQSwMEFAAIAAgA+75sRgAAAAAAAAAAAAAAACsAEABf X01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy9ldGMvY29uZmlnLy5fc3FtVVgMAHkZAlV5GQJV9QEU AGNgFWNnYGJg8E1MVvAPVohQgAKQGAMnEBsBcQ0Qg/jrGIgCjiEhQVAmSMcMIBZDU8KIEBdNzs/V SywoyEnVKyxNLErMK8nMS2Uo1DcwMDCyNjU1NjczMU219k3MzLFmAABQSwcIY/Uy12EAAACuAAAA UEsDBAoAAAAAAJRqY0YAAAAAAAAAAAAAAAAgABAAc3FtLXNjcmlwdHMvZmlsZXMvZXRjL2hvdHBs dWcuZC9VWAwAGKf1VBin9VT1ARQAUEsDBAoAAAAAAJZqY0YAAAAAAAAAAAAAAAAmABAAc3FtLXNj cmlwdHMvZmlsZXMvZXRjL2hvdHBsdWcuZC9pZmFjZS9VWAwAG6f1VBun9VT1ARQAUEsDBBQACAAI AGC1dEYAAAAAAAAAAAAAAAAsABAAc3FtLXNjcmlwdHMvZmlsZXMvZXRjL2hvdHBsdWcuZC9pZmFj ZS8xMS1zcW1VWAwAZJQMVWSUDFX1ARQARY7BTsMwEETv/oohqXoi9R0JpKoUKQdACMQFcXDSTWzh roO9KVRV/52YSHCb2Z2dfeWFbhzrZJUqIWRai+ene0hApIrYNJ7gJJHv8GWJYRiOhWJnWsoRMwxk YlIltTagWJzqu/Vme8YuUEI7xkgs/ggOAvp2SS5neZiqJB4d90hiomSR/wbOezvZVYEb6B0d9Mc+ 9ar0oe8popLfXJVQ2CCDH/t884d0hcXpdvtaZwTTigucJ+vNS/34cC6UepsQZ1fgGq4bB7xjuYQe U9TeNTp97nUceZXsDPbfp9QPUEsHCDSMck/eAAAALAEAAFBLAwQKAAAAAACxWJZGAAAAAAAAAAAA AAAAKQAQAF9fTUFDT1NYL3NxbS1zY3JpcHRzL2ZpbGVzL2V0Yy9ob3RwbHVnLmQvVVgMAF5kN1Ve ZDdV9QEUAFBLAwQKAAAAAACxWJZGAAAAAAAAAAAAAAAALwAQAF9fTUFDT1NYL3NxbS1zY3JpcHRz L2ZpbGVzL2V0Yy9ob3RwbHVnLmQvaWZhY2UvVVgMAF5kN1VeZDdV9QEUAFBLAwQUAAgACABgtXRG AAAAAAAAAAAAAAAANwAQAF9fTUFDT1NYL3NxbS1zY3JpcHRzL2ZpbGVzL2V0Yy9ob3RwbHVnLmQv aWZhY2UvLl8xMS1zcW1VWAwAZJQMVWSUDFX1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFx DRCD+OsYiAKOISFBUCZIxwwgFkNTwogQF03Oz9VLLCjISdUrLE0sSswrycxLZSjUNzAwMLI2NTU2 NzMxTbX2TczMsWYAAFBLBwhj9TLXYQAAAK4AAABQSwMEFAAIAAgAlGpjRgAAAAAAAAAAAAAAACoA EABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy9ldGMvLl9ob3RwbHVnLmRVWAwAGKf1VBin9VT1 ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxDRCD+OsYiAKOISFBUCZIxwwgFkNTwogQF03O z9VLLCjISdUrLE0sSswrycxLZSjUNzAwMLI2gAJr38TMHGsGAFBLBwgQcksfWwAAAK4AAABQSwME CgAAAAAAkZRSRAAAAAAAAAAAAAAAAB0AEABzcW0tc2NyaXB0cy9maWxlcy9ldGMvaW5pdC5kL1VY DAAhmgNTIZoDU/UBFABQSwMEFAAIAAgAgLV0RgAAAAAAAAAAAAAAACAAEABzcW0tc2NyaXB0cy9m aWxlcy9ldGMvaW5pdC5kL3NxbVVYDACglAxVoJQMVfUBFABTVtRPyszTL85Q0E8tSdYvStZLzs/N zc/j4goOcQwKsTU14OIqSs3JT0zR0OSq5tIvLS7Sz8lM0i8uzNUvKs3TA2osLkksKuGqBakDM8EK IXpAotjF8gvwmJdfwFULAFBLBwh1xHiaXwAAAJkAAABQSwMECgAAAAAAsViWRgAAAAAAAAAAAAAA ACYAEABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy9ldGMvaW5pdC5kL1VYDABeZDdVXmQ3VfUB FABQSwMEFAAIAAgAgLV0RgAAAAAAAAAAAAAAACsAEABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxl cy9ldGMvaW5pdC5kLy5fc3FtVVgMAKCUDFWglAxV9QEUAGNgFWNnYGJg8E1MVvAPVohQgAKQGAMn EBsBcQ0Qg/jrGIgCjiEhQVAmSMcMIBZDU8KIEBdNzs/VSywoyEnVKyxNLErMK8nMS2Uo1DcwMDCy NjU1NjczMU219k3MzLFmAABQSwcIY/Uy12EAAACuAAAAUEsDBBQACAAIAJGUUkQAAAAAAAAAAAAA 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 WAwAXmQ3VV5kN1X1ARQAUEsDBAoAAAAAALFYlkYAAAAAAAAAAAAAAAAjABAAX19NQUNPU1gvc3Ft LXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9VWAwAXmQ3VV5kN1X1ARQAUEsDBAoAAAAAALFYlkYAAAAA AAAAAAAAAAAnABAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9zcW0vVVgMAF5k N1VeZDdV9QEUAFBLAwQUAAgACACgsXRGAAAAAAAAAAAAAAAANQAQAF9fTUFDT1NYL3NxbS1zY3Jp cHRzL2ZpbGVzL3Vzci9saWIvc3FtLy5fZnVuY3Rpb25zLnNoVVgMAFyNDFVcjQxV9QEUAGNgFWNn YGJg8E1MVvAPVohQgAKQGAMnEBsBcQ0Qg/jrGIgCjiEhQVAmSMcMIBZDU8KIEBdNzs/VSywoyEnV KyxNLErMK8nMS2Uo1DcwMDCyNjU1NjczMU219k3MzLFmAABQSwcIY/Uy12EAAACuAAAAUEsDBBQA CAAIAGC1dEYAAAAAAAAAAAAAAAAkABAAc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9zcW0vcnVu LnNoVVgMAGSUDFVklAxV9QEUAK1YW2/iSBZ+xr/iNESjsArQifapo6zEJKTbuwkQIDN70chy7DLU xlS5q+yk2Yj/Ne/zx+arKgMmwemd1SJ1OtjnfvnOOWl96D1w0dMLz2vRbME1ZUrOVbgk/JooxkjL JH8OFTunlSwoCgUpFnOdK/5Q5Ix4TqGIe1LRUsY8WUEMHhUiZoryBaOcqaUmmdgvn4f39JkJpsKU xsVDyiO64RETmtETU5pLQWcUasjIzFu9YDE9rCzrtbFlWtpC1xIawhwMXa8Fcve5lNlK8fkip+PL Np19PD3r/JluebQIWUpXXZqFi/yEZvKR0ZfffuUpDO/89bdf1dxYIE5oyh5CnXO4eCtZmjLleV6X eil/6CWFiIw63TWhms5G4wuvfznzfxoE01l/NgjGk8G1//eL5vTuNghB+sQCKYLmPtG1fzMIrvzJ RbP3FKqeKkQP9E1v+RhzRZ2Mjl4O0q89o7M/mQWjYeBfXxydNVokRboy2YqY1ggR8sUFop2EETO5 HF2NiCd0dGYyyZZZviLNUhYhX2m6I9X0zPMFwRTBxZz0V2Re6DwUkAL2f1HnP7CqonxNv9C5h5QI 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 iLHa3kVCmWFklBg+NLZXElCvNGpZScAFn98CfoIPRK75KEbwXaGhMcmrWm0QmKqr8NgHMPAtqr1O dlFVZZ8qH5Wu5HdCdBXNdsRuP1T9HX9Xp26lZRRfxtgZ9nd/bO8dFPd1IqBWl3baQzauf/KbQcYe qebnQFxIFqUz30fpmPwUGZFf2lFYQ7lIHrsh33dREYYssLryk4GiKnVi9hQTuFko0i17+0fSs+IO z+gZfcxkZo97bDzJ76u0Wt+Wl6KMMiLcglxqH+b3bzonJ+NdgzW+4sGFDKgPn7rn51hmlEhwNz5r TH2XdAaIaBbdqn9b5T+U3+SyO1/2fk+o+FAayjwxeqb5tC/0qnazLBQ3PFknIh594/wbUEsHCJx6 YXiBCwAAaiYAAFBLAwQUAAgACAD7vmxGAAAAAAAAAAAAAAAAMwAQAF9fTUFDT1NYL3NxbS1zY3Jp cHRzL2ZpbGVzL3Vzci9saWIvc3FtLy5fc2ltcGxlLnFvc1VYDAB5GQJVeRkCVfUBFABjYBVjZ2Bi YPBNTFbwD1aIUIACkBgDJxAbAXENEIP46xiIAo4hIUFQJkjHDCAWQ1PCiBAXTc7P1UssKMhJ1Sss TSxKzCvJzEtlKNQ3MDAwsjY1NTY3MzFNtfZNzMyxZgAAUEsHCGP1MtdhAAAArgAAAFBLAwQUAAgA CACAvs1EAAAAAAAAAAAAAAAALQAQAHNxbS1zY3JpcHRzL2ZpbGVzL3Vzci9saWIvc3FtL3NpbXBs ZS5xb3MuaGVscFVYDACAcptTgHKbU/UBFAANyDEOgCAQBMDeV1ypBT7CT1gaAkvYBESOI35fp5zj dIWVhiiWFXBGqDzKpjQOb2y3jJBRIS8tS+pXaBFF/ocPWfrExC5rRPKz2LZ8UEsHCOPlMLpMAAAA UwAAAFBLAwQUAAgACACAvs1EAAAAAAAAAAAAAAAAOAAQAF9fTUFDT1NYL3NxbS1zY3JpcHRzL2Zp bGVzL3Vzci9saWIvc3FtLy5fc2ltcGxlLnFvcy5oZWxwVVgMAIBym1OAcptT9QEUAGNgFWNnYGJg 8E1MVvAPVohQgAKQGAMnEBsBcQ0Qg/jrGIgCjiEhQVAmSMcMIBZDU8KIEBdNzs/VSywoyEnVKyxN LErMK8nMS2Uo1DcwMDCyNjU1NjczMU219k3MzLFmAABQSwcIY/Uy12EAAACuAAAAUEsDBBQACAAI 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 E/z9pQlvn5gBrSfj0UM2SX5tmBBcU4VEyQQai9q6cqz1E+2sWtiO/Mhw5lIxhTSP8CemzzOGlbDe bbwM7Fi8PQZ17qpmZi8kaBYH/HwPypHJi/yetSCJCUljuQIIhUdrOYyorkjxnUU0DvZumucbIuTi HyquDCh7gBtBd60HWkcvdnf7vq44tGXnoWDgt+Hur9EhJp3p1/IXlZTNndqkgs1eisNeoHovvcMk dsp1rehW58tB7/Bt8+gku+88RKlNcpxcvcTnhHw1TvMFNHNvhiqrsqNOus/byu7Aoh2RvAoGSoea hUrSfWE1xCUL5K78qnGiCrRC0hTtO2kg4h2+PS3haX4b5Cl8SWXK12PYvJj7vvX6H/ISKK20CPh0 q/na3F9unZ7eHhJTMRDlbRin0rU8c++HaoAw/qW7WbHnQJKiiCQ0dL36hwr9AXMTnktB+X50oDTf fVGuGD1N6HZU4Fa4ejQQN0SsUxGOfrH+D1BLBwilePSBXA8AAKo/AABQSwMEFAAIAAgAgLtWRQAA AAAAAAAAAAAAADkAEABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy91c3IvbGliL3NxbS8uX3Np bXBsZV9wcHBvZS5xb3NVWAwAYCFIVGAhSFT1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFx DRCD+OsYiAKOISFBUCZIxwwgFkNTwogQF03Oz9VLLCjISdUrLE0sSswrycxLZSjUNzAwMLI2NTU2 NzMxTbX2TczMsWYAAFBLBwhj9TLXYQAAAK4AAABQSwMEFAAIAAgAYLlQRQAAAAAAAAAAAAAAADMA EABzcW0tc2NyaXB0cy9maWxlcy91c3IvbGliL3NxbS9zaW1wbGVfcHBwb2UucW9zLmhlbHBVWAwA ZDRAVGQ0QFT1ARQAFY4xCsMwDAD3vEIfSB5R6NwMhY5FOEosaluKJDf0903Wg+Pu9hoLVw5aILIR jcFkoMZiHOwYLA08ZaoEB0eGdX8nWajAyQlThr1TpwmeVFUM7QdfMr+sEOCq5TRbgGdUbtsgKyi6 XzHpW4Z5nh93oJZQvRe8PhTTh8Kn4Q9QSwcIqW7QqH0AAACcAAAAUEsDBBQACAAIAGC5UEUAAAAA AAAAAAAAAAA+ABAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9zcW0vLl9zaW1w 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 AAAAALFYlkYAAAAAAAAAAAAAAAAVAAwAAAAAAAAAAED9QUQCAABfX01BQ09TWC9zcW0tc2NyaXB0 cy9VWAgAXmQ3VV5kN1VQSwECFQMKAAAAAACxWJZGAAAAAAAAAAAAAAAAGwAMAAAAAAAAAABA/UGH AgAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvVVgIAF5kN1VeZDdVUEsBAhUDCgAAAAAAsViW RgAAAAAAAAAAAAAAAB8ADAAAAAAAAAAAQP1B0AIAAF9fTUFDT1NYL3NxbS1zY3JpcHRzL2ZpbGVz L2V0Yy9VWAgAXmQ3VV5kN1VQSwECFQMKAAAAAACxWJZGAAAAAAAAAAAAAAAAJgAMAAAAAAAAAABA /UEdAwAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvZXRjL2NvbmZpZy9VWAgAXmQ3VV5kN1VQ SwECFQMUAAgACAD7vmxGY/Uy12EAAACuAAAAKwAMAAAAAAAAAABApIFxAwAAX19NQUNPU1gvc3Ft LXNjcmlwdHMvZmlsZXMvZXRjL2NvbmZpZy8uX3NxbVVYCAB5GQJVeRkCVVBLAQIVAwoAAAAAAJRq Y0YAAAAAAAAAAAAAAAAgAAwAAAAAAAAAAEDtQTsEAABzcW0tc2NyaXB0cy9maWxlcy9ldGMvaG90 cGx1Zy5kL1VYCAAYp/VUGKf1VFBLAQIVAwoAAAAAAJZqY0YAAAAAAAAAAAAAAAAmAAwAAAAAAAAA AEDtQYkEAABzcW0tc2NyaXB0cy9maWxlcy9ldGMvaG90cGx1Zy5kL2lmYWNlL1VYCAAbp/VUG6f1 VFBLAQIVAxQACAAIAGC1dEY0jHJP3gAAACwBAAAsAAwAAAAAAAAAAEDkgd0EAABzcW0tc2NyaXB0 cy9maWxlcy9ldGMvaG90cGx1Zy5kL2lmYWNlLzExLXNxbVVYCABklAxVZJQMVVBLAQIVAwoAAAAA ALFYlkYAAAAAAAAAAAAAAAApAAwAAAAAAAAAAED9QSUGAABfX01BQ09TWC9zcW0tc2NyaXB0cy9m aWxlcy9ldGMvaG90cGx1Zy5kL1VYCABeZDdVXmQ3VVBLAQIVAwoAAAAAALFYlkYAAAAAAAAAAAAA AAAvAAwAAAAAAAAAAED9QXwGAABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy9ldGMvaG90cGx1 Zy5kL2lmYWNlL1VYCABeZDdVXmQ3VVBLAQIVAxQACAAIAGC1dEZj9TLXYQAAAK4AAAA3AAwAAAAA AAAAAECkgdkGAABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy9ldGMvaG90cGx1Zy5kL2lmYWNl Ly5fMTEtc3FtVVgIAGSUDFVklAxVUEsBAhUDFAAIAAgAlGpjRhBySx9bAAAArgAAACoADAAAAAAA AAAAQKSBrwcAAF9fTUFDT1NYL3NxbS1zY3JpcHRzL2ZpbGVzL2V0Yy8uX2hvdHBsdWcuZFVYCAAY p/VUGKf1VFBLAQIVAwoAAAAAAJGUUkQAAAAAAAAAAAAAAAAdAAwAAAAAAAAAAEDtQXIIAABzcW0t c2NyaXB0cy9maWxlcy9ldGMvaW5pdC5kL1VYCAAhmgNTIZoDU1BLAQIVAxQACAAIAIC1dEZ1xHia XwAAAJkAAAAgAAwAAAAAAAAAAEDtgb0IAABzcW0tc2NyaXB0cy9maWxlcy9ldGMvaW5pdC5kL3Nx bVVYCACglAxVoJQMVVBLAQIVAwoAAAAAALFYlkYAAAAAAAAAAAAAAAAmAAwAAAAAAAAAAED9QXoJ AABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy9ldGMvaW5pdC5kL1VYCABeZDdVXmQ3VVBLAQIV AxQACAAIAIC1dEZj9TLXYQAAAK4AAAArAAwAAAAAAAAAAECkgc4JAABfX01BQ09TWC9zcW0tc2Ny aXB0cy9maWxlcy9ldGMvaW5pdC5kLy5fc3FtVVgIAKCUDFWglAxVUEsBAhUDFAAIAAgAkZRSRBBy Sx9bAAAArgAAACcADAAAAAAAAAAAQKSBmAoAAF9fTUFDT1NYL3NxbS1zY3JpcHRzL2ZpbGVzL2V0 Yy8uX2luaXQuZFVYCAAhmgNTIZoDU1BLAQIVAwoAAAAAAJGUUkQAAAAAAAAAAAAAAAAWAAwAAAAA AAAAAEDtQVgLAABzcW0tc2NyaXB0cy9maWxlcy91c3IvVVgIACGaA1MhmgNTUEsBAhUDCgAAAAAA kZRSRAAAAAAAAAAAAAAAABoADAAAAAAAAAAAQO1BnAsAAHNxbS1zY3JpcHRzL2ZpbGVzL3Vzci9s aWIvVVgIACGaA1MhmgNTUEsBAhUDCgAAAAAAu3Z1RgAAAAAAAAAAAAAAAB4ADAAAAAAAAAAAQO1B 5AsAAHNxbS1zY3JpcHRzL2ZpbGVzL3Vzci9saWIvc3FtL1VYCADydw1V8ncNVVBLAQIVAxQACAAI AKCxdEaViF96OhMAADw5AAAqAAwAAAAAAAAAAECkgTAMAABzcW0tc2NyaXB0cy9maWxlcy91c3Iv bGliL3NxbS9mdW5jdGlvbnMuc2hVWAgAXI0MVVyNDFVQSwECFQMKAAAAAACxWJZGAAAAAAAAAAAA AAAAHwAMAAAAAAAAAABA/UHSHwAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvdXNyL1VYCABe ZDdVXmQ3VVBLAQIVAwoAAAAAALFYlkYAAAAAAAAAAAAAAAAjAAwAAAAAAAAAAED9QR8gAABfX01B Q09TWC9zcW0tc2NyaXB0cy9maWxlcy91c3IvbGliL1VYCABeZDdVXmQ3VVBLAQIVAwoAAAAAALFY lkYAAAAAAAAAAAAAAAAnAAwAAAAAAAAAAED9QXAgAABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxl cy91c3IvbGliL3NxbS9VWAgAXmQ3VV5kN1VQSwECFQMUAAgACACgsXRGY/Uy12EAAACuAAAANQAM AAAAAAAAAABApIHFIAAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9zcW0vLl9m dW5jdGlvbnMuc2hVWAgAXI0MVVyNDFVQSwECFQMUAAgACABgtXRGUafPoOcHAABCFAAAJAAMAAAA AAAAAABA7YGZIQAAc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9zcW0vcnVuLnNoVVgIAGSUDFVk lAxVUEsBAhUDFAAIAAgAYLV0RmP1MtdhAAAArgAAAC8ADAAAAAAAAAAAQKSB4ikAAF9fTUFDT1NY L3NxbS1zY3JpcHRzL2ZpbGVzL3Vzci9saWIvc3FtLy5fcnVuLnNoVVgIAGSUDFVklAxVUEsBAhUD FAAIAAgA+75sRpx6YXiBCwAAaiYAACgADAAAAAAAAAAAQO2BsCoAAHNxbS1zY3JpcHRzL2ZpbGVz L3Vzci9saWIvc3FtL3NpbXBsZS5xb3NVWAgAeRkCVXkZAlVQSwECFQMUAAgACAD7vmxGY/Uy12EA AACuAAAAMwAMAAAAAAAAAABApIGXNgAAX19NQUNPU1gvc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xp Yi9zcW0vLl9zaW1wbGUucW9zVVgIAHkZAlV5GQJVUEsBAhUDFAAIAAgAgL7NROPlMLpMAAAAUwAA AC0ADAAAAAAAAAAAQKSBaTcAAHNxbS1zY3JpcHRzL2ZpbGVzL3Vzci9saWIvc3FtL3NpbXBsZS5x b3MuaGVscFVYCACAcptTgHKbU1BLAQIVAxQACAAIAIC+zURj9TLXYQAAAK4AAAA4AAwAAAAAAAAA AECkgSA4AABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy91c3IvbGliL3NxbS8uX3NpbXBsZS5x b3MuaGVscFVYCACAcptTgHKbU1BLAQIVAxQACAAIAIC7VkWlePSBXA8AAKo/AAAuAAwAAAAAAAAA AEDtgfc4AABzcW0tc2NyaXB0cy9maWxlcy91c3IvbGliL3NxbS9zaW1wbGVfcHBwb2UucW9zVVgI AGAhSFRgIUhUUEsBAhUDFAAIAAgAgLtWRWP1MtdhAAAArgAAADkADAAAAAAAAAAAQKSBv0gAAF9f TUFDT1NYL3NxbS1zY3JpcHRzL2ZpbGVzL3Vzci9saWIvc3FtLy5fc2ltcGxlX3BwcG9lLnFvc1VY CABgIUhUYCFIVFBLAQIVAxQACAAIAGC5UEWpbtCofQAAAJwAAAAzAAwAAAAAAAAAAECkgZdJAABz cW0tc2NyaXB0cy9maWxlcy91c3IvbGliL3NxbS9zaW1wbGVfcHBwb2UucW9zLmhlbHBVWAgAZDRA VGQ0QFRQSwECFQMUAAgACABguVBFY/Uy12EAAACuAAAAPgAMAAAAAAAAAABApIGFSgAAX19NQUNP U1gvc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9zcW0vLl9zaW1wbGVfcHBwb2UucW9zLmhlbHBV WAgAZDRAVGQ0QFRQSwECFQMUAAgACAAgu1BF3i6Zc94EAADjCwAAKgAMAAAAAAAAAABA7YFiSwAA c3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xpYi9zcW0vc2ltcGxlc3QucW9zVVgIAKw3QFSsN0BUUEsB AhUDFAAIAAgAILtQRWP1MtdhAAAArgAAADUADAAAAAAAAAAAQKSBqFAAAF9fTUFDT1NYL3NxbS1z Y3JpcHRzL2ZpbGVzL3Vzci9saWIvc3FtLy5fc2ltcGxlc3QucW9zVVgIAKw3QFSsN0BUUEsBAhUD FAAIAAgAgL7NRE7V49RLAAAATAAAAC8ADAAAAAAAAAAAQKSBfFEAAHNxbS1zY3JpcHRzL2ZpbGVz L3Vzci9saWIvc3FtL3NpbXBsZXN0LnFvcy5oZWxwVVgIAIBym1OAcptTUEsBAhUDFAAIAAgAgL7N RGP1MtdhAAAArgAAADoADAAAAAAAAAAAQKSBNFIAAF9fTUFDT1NYL3NxbS1zY3JpcHRzL2ZpbGVz L3Vzci9saWIvc3FtLy5fc2ltcGxlc3QucW9zLmhlbHBVWAgAgHKbU4Bym1NQSwECFQMUAAgACABA WVJFt38+UPECAAAxBgAAJQAMAAAAAAAAAABA7YENUwAAc3FtLXNjcmlwdHMvZmlsZXMvdXNyL2xp Yi9zcW0vc3RvcC5zaFVYCABoLkJUaC5CVFBLAQIVAxQACAAIAEBZUkVj9TLXYQAAAK4AAAAwAAwA AAAAAAAAAECkgWFWAABfX01BQ09TWC9zcW0tc2NyaXB0cy9maWxlcy91c3IvbGliL3NxbS8uX3N0 b3Auc2hVWAgAaC5CVGguQlRQSwECFQMUAAgACAAGZpNGOE72H4ICAACtBQAAFAAMAAAAAAAAAABA pIEwVwAAc3FtLXNjcmlwdHMvTWFrZWZpbGVVWAgA64czVeuHM1VQSwECFQMUAAgACAAGZpNGY/Uy 12EAAACuAAAAHwAMAAAAAAAAAABApIEEWgAAX19NQUNPU1gvc3FtLXNjcmlwdHMvLl9NYWtlZmls ZVVYCADrhzNV64czVVBLBQYAAAAAMQAxAGUSAADCWgAAAAA= --Apple-Mail=_5BB62B34-D72D-4C60-805F-D36D89B829A3 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 >=20 > On Tue, Apr 21, 2015 at 8:19 PM, leetminiwheat = wrote: >> Sorry this is getting a bit off-topic here. >>=20 >>> On Wed, Apr 15, 2015 at 5:05 AM, Sebastian Moeller = wrote: >>>=20 >>>> On Apr 15, 2015, at 03:35 , leetminiwheat = wrote: >>>=20 >>>> I assume tweaking ring parameters from default RX:128 and TX:32 >>>> doesn't matter anymore thenr? >>>=20 >>> As far as I know we leave that alone, see: = http://www.bufferbloat.net/projects/bloat/wiki/Linux_Tips: >>> =93Set the size of the ring buffer for the network interface >>>=20 >>> NOTE: THIS HACK IS NO LONGER NEEDED on many ethernet drivers in = Linux 3.3, which has Byte Queue Limits instead, which does a far better = job." >>>=20 >> I noticed Dave mentioned on a mailing list that changing tx ring = still >> does have some benefit, and his notes in debloat script suggest BQL >> doesn't always work as implied. >>>=20 >>>>=20 >>>>> [...] >>>>> If you have time and netperf-wrapper it would be good to convince = yourself and us again, that txqueuelen really does not matter for BQL=92d = interfaces by running RRUL tests with and without your modifications=85. >>=20 >> Thanks, after extensive RRUL testing.... I've come to the same >> conclusion Dave did, that changing tx perameters just isn't worth it >> and causes instability. I noticed on 120s tests my WAN connection >> would reset with ath9k: pll_reg and latencies would skyrocket >> thereafter. I don't quite have a producible error, but it seemed like >> associating/diassociating wireless clients might be related to it >> (with Revert "debloat: stop changing wifi qlen") but I was also >> changing txring on ethernet for testing at 4, 8, 16, etc. >>=20 >> Also, I tested some custom HFSC+fq_codel qos scripts here: >> https://github.com/zcecc22/qos-nxt >> He defaults to 90% (meaning you have to adjust your b/w limits), and >> the 2-bin codel doesn't seem to work very well. Seemed like an >> interesting compromise between simple and simplest, but the results >> were pretty terrible. I'd like to test CAKE more, but it seems >> 3.10.50-1 doesn't have the required kernel support. >>=20 >> Recent changes in barrier breaker to txring seem pretty dumb, they >> default to 256 txring now I believe, ticket here was closed with >> "worksforme" https://dev.openwrt.org/ticket/13072 so I'm reluctant to >> upgrade, plus I don't fully understand the extent of which Dave's >> kernel hacks impact things. Closer inspection/comparison/diffs are >> needed if I'm to upgrade and integrate Cero's tweaks. >>=20 >> Oddly enough, simplest.qos on WAN gives me better throughput/latency >> at times (likely due to less overhead), but other times simple.qos is >> doing what it should and giving more throughput and lower latency to >> higher priority traffic. I seem to get better RRUL tests with LIMIT=3D >> blank, and ILIMIT/ELIMIT set to auto which results in this: >>=20 >> qdisc fq_codel a: dev se00 root refcnt 2 limit 1514p flows 1024 >> quantum 1514 target 5.0ms interval 100.0ms ecn >> qdisc htb 1: dev ge00 root refcnt 2 r2q 10 default 12 >> direct_packets_stat 0 direct_qlen 1000 >> qdisc fq_codel 110: dev ge00 parent 1:11 limit 1024p flows 1024 >> quantum 300 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 120: dev ge00 parent 1:12 limit 1024p flows 1024 >> quantum 300 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 130: dev ge00 parent 1:13 limit 1024p flows 1024 >> quantum 300 target 5.0ms interval 100.0ms ecn >> qdisc ingress ffff: dev ge00 parent ffff:fff1 ---------------- >> qdisc mq 1: dev sw10 root >> qdisc fq_codel 10: dev sw10 parent 1:1 limit 800p flows 1024 quantum >> 500 target 10.0ms interval 100.0ms >> qdisc fq_codel 20: dev sw10 parent 1:2 limit 800p flows 1024 quantum >> 300 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 30: dev sw10 parent 1:3 limit 1000p flows 1024 quantum >> 300 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 40: dev sw10 parent 1:4 limit 1000p flows 1024 quantum >> 300 target 5.0ms interval 100.0ms >> qdisc mq 1: dev sw00 root >> qdisc fq_codel 10: dev sw00 parent 1:1 limit 800p flows 1024 quantum >> 500 target 10.0ms interval 100.0ms >> qdisc fq_codel 20: dev sw00 parent 1:2 limit 800p flows 1024 quantum >> 300 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 30: dev sw00 parent 1:3 limit 1000p flows 1024 quantum >> 300 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 40: dev sw00 parent 1:4 limit 1000p flows 1024 quantum >> 300 target 5.0ms interval 100.0ms >> qdisc htb 1: dev ifb4ge00 root refcnt 2 r2q 10 default 12 >> direct_packets_stat 0 direct_qlen 32 >> qdisc fq_codel 110: dev ifb4ge00 parent 1:11 limit 1024p flows 1024 >> quantum 500 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 120: dev ifb4ge00 parent 1:12 limit 1024p flows 1024 >> quantum 1500 target 5.0ms interval 100.0ms ecn >> qdisc fq_codel 130: dev ifb4ge00 parent 1:13 limit 1024p flows 1024 >> quantum 300 target 5.0ms interval 100.0ms ecn >> qdisc htb 1: dev ifb4gw00 root refcnt 2 r2q 10 default 12 >> direct_packets_stat 0 direct_qlen 32 >> qdisc fq_codel 110: dev ifb4gw00 parent 1:11 limit 1024p flows 1024 >> quantum 500 target 10.3ms interval 105.3ms ecn >> qdisc fq_codel 120: dev ifb4gw00 parent 1:12 limit 1024p flows 1024 >> quantum 1500 target 10.3ms interval 105.3ms ecn >> qdisc fq_codel 130: dev ifb4gw00 parent 1:13 limit 1024p flows 1024 >> quantum 300 target 10.3ms interval 105.3ms ecn >>=20 >> image of RRUL 45s graph here with simple.qos, no tx changes, auto >> LIMIT on FiOS 32/25 (30Mb/22.5Mb QoS): https://screencloud.net/v/tVV0 >> - looks pretty good to me, but I should set up more MARK or DSCP >> classifications for my important/unimportant traffic. MARK is = probably >> a better idea since it won't unnecessarily mis-flag outgoing traffic. >> I assume QOS_MARK_ge00 sees marks from other interfaces too. >>=20 >> I'm still unsure whether to apply simple/simplest to my secure >> wireless or leave it alone, Dave's debloat script seems to have >> wireless-specific optimizations when left on auto, does simple.qos >> handle VO/VI/BE/BK queues as efficiently? I never top out my wireless >> since it's used only for mobile phones anyways and I run HT20 which >> seems to be more reliable/less latency. however my guest wifi I do >> need to limit and segregate via firewall so I have it enabled. >>=20 >> P.S. I learned the hard way NEVER to enable port 4 on the switch, >> results in broken ethernet. port4 is unused and likely internally >> reserved for unknown purposes. I'm still trying to figure out how it >> maps an interface to an actual port, since I'd like to assign a = single >> switch switch port to it's own subnet for my FiOS router instead of >> having to use a secondary router to clone the ge00 interface on the >> backend router to forward FiOS ports to the verizon/FiOS MOCA bridge >> router in order for alerts to display on set-top boxes such as caller >> ID. There has to be a way of doing this without needing 3 routers... >> My current thoughts are to remove the port (port3 in this case) from >> the switch and make a new switch config with just 4 and 5t and = somehow >> make a new interface on that for the FiOS router, but assigning the >> same ip address as the default gateway/route from ge00 on that port >> might confuse routing. More information on their rather complicated >> and seemingly unnecessary config with a backend router is located >> here: http://www.dslreports.com/faq/verizonfios/3.0_Networking#16710 --Apple-Mail=_5BB62B34-D72D-4C60-805F-D36D89B829A3--