<div dir="ltr">Hi John,<div><br></div><div>Thanks for sharing! </div><div><br><div>Peter</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 23, 2021 at 6:15 AM John Sager <<a href="mailto:john@sager.me.uk">john@sager.me.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Here is the toy QoS solution for linux, which is a simplified version of the <br>
one I uses successfully on my home network. It uses quite a few scheduler <br>
modules - sch_htb, act_connmark, em_meta etc - that may not load <br>
automatically, so they may need to be listed in /etc/modules.<br>
<br>
Toke, thanks for agreeing to let the attachment through.<br>
<br>
John<br>
<br>
On 19/02/2021 19:04, John Sager wrote:<br>
> Yes. The marks are set on egress so you can select on inside IP address, <br>
> port, protocol - in fact many characteristics that iptables rules can test <br>
> for. I'll put together a toy iptables rules file and a toy script with the <br>
> necessary tc commands. It'll take me a few days though as I'm busy with <br>
> other stuff currently.<br>
> <br>
> PS does the cake list allow attachments? It will be a small zip file.<br>
> <br>
> John<br>
> <br>
> On 19/02/2021 15:02, Peter Lepeska wrote:<br>
>> Hi John<br>
>><br>
>> Does this result in the ability to set per internal host max ingress <br>
>> bandwidth? If so, any chance you can share a snippet of a script? I will <br>
>> be trying to reproduce your setup.<br>
>><br>
>> Thank you!<br>
>><br>
>> Peter<br>
>><br>
>> On Fri, Feb 19, 2021 at 7:16 AM John Sager <<a href="mailto:john@sager.me.uk" target="_blank">john@sager.me.uk</a> <br>
>> <mailto:<a href="mailto:john@sager.me.uk" target="_blank">john@sager.me.uk</a>>> wrote:<br>
>><br>
>>     That's basically what I do. I set marks on outgoing traffic in the mangle<br>
>>     table which are copied to connmark before egress. Then on ingress the<br>
>>     connmark is restored to the packet and punted to ifb0 using 'action<br>
>>     connmark<br>
>>     action mirred egress redirect dev $IFB' as an ingress filter on the<br>
>>     incoming<br>
>>     interface (ppp0 in my case). Then I have HTB classes on ifb0 which set <br>
>> rate<br>
>>     limits for different traffic classes indicated by the marks. I have <br>
>> only 6<br>
>>     traffic classes (I bundle all video into one class), but as marks are 32<br>
>>     bits wide there is lots of scope for classes for individual IP addresses.<br>
>><br>
>>     John<br>
>><br>
>>     On 18/02/2021 19:28, Toke Høiland-Jørgensen via Cake wrote:<br>
>>      > Peter Lepeska <<a href="mailto:bizzbyster@gmail.com" target="_blank">bizzbyster@gmail.com</a> <mailto:<a href="mailto:bizzbyster@gmail.com" target="_blank">bizzbyster@gmail.com</a>>><br>
>>     writes:<br>
>>      ><br>
>>      >> A user on the OpenWrt forum suggested hashlimit rules supported by<br>
>>      >> iptables. How does that idea sound to you?<br>
>>      ><br>
>>      > That will result in a cliff-edge policer (i.e., as soon as a device <br>
>> goes<br>
>>      > over its limits it will see every packet get dropped). This doesn't<br>
>>      > interact too well with the burstiness of TCP, so you'll likely get<br>
>>      > erratic behaviour of the traffic if you do that. Doing the same thing<br>
>>      > with HTB means the router will queue+shape each class (and with <br>
>> FQ-CoDel<br>
>>      > on the leaves, you'll get a nice AQM behaviour as well), so that <br>
>> will be<br>
>>      > smoother and less prone to bloat :)<br>
>>      ><br>
>>      > -Toke<br>
>>      > _______________________________________________<br>
>>      > Cake mailing list<br>
>>      > <a href="mailto:Cake@lists.bufferbloat.net" target="_blank">Cake@lists.bufferbloat.net</a> <mailto:<a href="mailto:Cake@lists.bufferbloat.net" target="_blank">Cake@lists.bufferbloat.net</a>><br>
>>      > <a href="https://lists.bufferbloat.net/listinfo/cake" rel="noreferrer" target="_blank">https://lists.bufferbloat.net/listinfo/cake</a><br>
>>      ><br>
>>     _______________________________________________<br>
>>     Cake mailing list<br>
>>     <a href="mailto:Cake@lists.bufferbloat.net" target="_blank">Cake@lists.bufferbloat.net</a> <mailto:<a href="mailto:Cake@lists.bufferbloat.net" target="_blank">Cake@lists.bufferbloat.net</a>><br>
>>     <a href="https://lists.bufferbloat.net/listinfo/cake" rel="noreferrer" target="_blank">https://lists.bufferbloat.net/listinfo/cake</a><br>
>><br>
> _______________________________________________<br>
> Cake mailing list<br>
> <a href="mailto:Cake@lists.bufferbloat.net" target="_blank">Cake@lists.bufferbloat.net</a><br>
> <a href="https://lists.bufferbloat.net/listinfo/cake" rel="noreferrer" target="_blank">https://lists.bufferbloat.net/listinfo/cake</a><br>
> <br>
_______________________________________________<br>
Cake mailing list<br>
<a href="mailto:Cake@lists.bufferbloat.net" target="_blank">Cake@lists.bufferbloat.net</a><br>
<a href="https://lists.bufferbloat.net/listinfo/cake" rel="noreferrer" target="_blank">https://lists.bufferbloat.net/listinfo/cake</a><br>
</blockquote></div>