Kernel queue tc-cake(8) supports negative overhead but RouterOS does not.
Use case;
/interface bridge settings set allow-fast-path=no use-ip-firewall=no
/interface bridge add fast-forward=no name=bridge protocol-mode=none
/interface bridge filter add action=mark-packet chain=forward disabled=yes mac-protocol=ip new-packet-mark=queue-it out-interface=ether6
/interface bridge filter add action=mark-packet chain=forward disabled=yes mac-protocol=ipv6 new-packet-mark=queue-it out-interface=ether6
/interface bridge port add bridge=bridge hw=no interface=ether6 comment=upstream
/interface bridge port add bridge=bridge hw=no interface=ether7 comment=downstream
/queue type add name=“cake-upload” kind=cake cake-overhead=0 cake-overhead-scheme=raw cake-rtt=100ms cake-rtt-scheme=internet cake-diffserv=diffserv4 cake-flowmode=triple-isolate cake-nat=no cake-wash=no cake-ack-filter=aggressive
/queue tree add name=myupload packet-mark=queue-it max-limit=5M parent=ether6 queue=cake-upload-face
Shaping upload to 5 Mbit (assymmetric connection) with aggressive ack filtering and better fairness. Now ETHERNET packets are marked, which would have the ethernet header included in the packet size calculation.
If overhead could be negative, it would be possible to dial in the correct shaping characteristic.
src: https://man.archlinux.org/man/tc-cake.8.en#Manual_Overhead_Specification