From: Sebastian Moeller <moeller0@gmx.de>
To: Jonathan Morton <chromatix99@gmail.com>
Cc: marco@heavenlysanctuary.com, cake@lists.bufferbloat.net
Subject: Re: [Cake] Frontier FIOS Framing
Date: Mon, 23 Sep 2019 09:44:05 +0200 [thread overview]
Message-ID: <310A6A0A-04F6-4EB9-B9AA-912B8E66C4BF@gmx.de> (raw)
In-Reply-To: <F35FA667-3AE9-487E-9747-2EFCB6627556@gmail.com>
> On Sep 23, 2019, at 06:26, Jonathan Morton <chromatix99@gmail.com> wrote:
>
>> I have searched every nook and cranny of the bloated internet looking for any information I can find on whether Frontier/Verizon FIOS (assuming the only difference between the service offered by both Frontier and Verizon is in name only) requires any special framing parameters passed on to sch_cake's overhead settings. Most mentions of cake/fq/scm/etc and FIOS are ether very dated and inconclusive or I find messages and forum posts asking questions a lot like this one.
>
> I don't know precisely what framing FIOS uses. However, most provisioning shapers used by cable/fibre ISPs operate on Ethernet frames, so if you use the "ethernet" keyword you should match what the shaper is doing. The proof of the pudding is in the eating, of course.
Ethernet will assume 38 bytes of overhead, including the "silent" inter-frame-gap overhead (which essentially is a gap in transmission sized so that one could transmit 12 octets instead), for real active ethernet over fiber that should be correct (maybe it needs another 4 bytes if a vlan tag is used).
But according to https://www.lightreading.com/gigabit/fttx/verizon-preps-next-major-broadband-upgrade/d/d-id/722062 verizon uses GPON, and all we know about GPON is that is uses a 5 byte GEM header which replaces parts of the ethernet overhead (IFG, Preamble, SFD, -> 12+7+1 = 20Bytes) for an estimated per packet overhead of 38-20+5 = 23 Bytes. But I do not know how much additional "hidden" overhead GPON adds to each packet. So "ethernet's" 38 bytes should be a decent safe bet (it is always better to over-estimate per-packet-overhead, as otherwise small packets will fool the shaper).
>
>> Currently this is what I have and am also curious if I should be using the "nat" keyword for both ingress and egress? I'm not entirely sure - see below:
>
> If your box is doing NAT *and* you are using a flow-mode that depends on accurate internal host information, then you should have the "nat" keyboard on in both directions. Otherwise it's more efficient to switch it off, though leaving it on does no harm otherwise.
>
> The default flow-mode is "triple-isolate", which does use internal host information. So do the "dual-srchost" and "dual-dsthost" modes, which are more precise but need you to specify which direction the traffic is flowing. The "besteffort" and "flows" modes do not, but you should only use those if you're deliberately experimenting with something.
>
>> In absence of framing compensation I figured I should just go extreme by reserving more bandwidth than the qdisc needs because I also read somewhere I think that mentioned that if you don't compensate and are incorrect everything stops working as opposed to if you over compensate you might lose out on bandwidth but you'll still win in the latency department.
>
> That's approximately correct, close enough for actual practice. It's also why we included the "conservative" keyword, which applies the maximum amount of framing compensation that is ever likely to be seen in the wild - much more than you'd expect to see on a cable/fibre link, but only slightly more than on most ADSL lines.
I am not 100% sure the "likely to be seen in the wild" assumption still holds, ds-lite will easily add another 40 bytes of overhead for IPv4 packets (as will other IPv4 in IPv6 encapsulations)...
>
> The overhead compensation matters more with small packets than with the larger ones used for bulk transfers; for the latter, reserving a little more bandwidth will appear to make everything work.
+1, for any given packet-size under-estimation of either gross-shaper-rate or per-packet-overhead can be compensated by over-estimating the other, and since most speedtests employ large packets that can lead to under-estimation of the overhead which will cause bufferbloat if there are enough small packets in flight (for which effective transmit duration estimation will be too small with too little overhead leading to observable bufferbloat).
> For fibre I would try "ethernet" and reserve about 1% bandwidth each way, then if possible test to see whether there is any bloat.
First the iteration, perform a speedtest and plug the resulting goodput numbers into cake as gross-shaper-rates, and then you can slowly increase these limits until you see latency under load increase more than you are willing to accept. I would first keep the ingress/download rate at goodput number and optimize egress/upload and then do the same for the ingress rate. Ideally use a bidirectionally saturating speedtest (like flent's RRUL or RRUL_CS8), as that will typically be more sensitive and show a higher magnitude of latency under load increase for the same settings than doing the up-/downloading tests sequentially.
Best Regards
Sebastian
>
> - Jonathan Morton
> _______________________________________________
> Cake mailing list
> Cake@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cake
next prev parent reply other threads:[~2019-09-23 7:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-23 3:37 Marco Belmonte
2019-09-23 4:26 ` Jonathan Morton
2019-09-23 6:57 ` Marco Belmonte
2019-09-23 7:44 ` Sebastian Moeller [this message]
2019-09-23 11:53 ` Ryan Mounce
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://lists.bufferbloat.net/postorius/lists/cake.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=310A6A0A-04F6-4EB9-B9AA-912B8E66C4BF@gmx.de \
--to=moeller0@gmx.de \
--cc=cake@lists.bufferbloat.net \
--cc=chromatix99@gmail.com \
--cc=marco@heavenlysanctuary.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox