Is my mangle rule correct (it seems to mostly work)

I followed this youtube guide https://www.youtube.com/watch?v=3zJrNOUDNrc, and others, and resulted in this mangle rule:


/ip firewall mangle

"Connection marking and packet marking for overall downloads"
add action=mark-connection chain=forward in-interface-list=WAN new-connection-mark=client.dw.con passthrough=yes
add action=mark-packet chain=forward connection-mark=client.dw.con new-packet-mark=client.dw.pk passthrough=yes

"Connection marking and packet marking for overall uploads"
add action=mark-connection chain=prerouting in-interface=bridge1 new-connection-mark=client.up.con passthrough=yes
add action=mark-packet chain=prerouting connection-mark=client.up.con new-packet-mark=client.up.pk passthrough=yes

"Packet marking http browsing traffic, up and down, connections up to 10Mbyte (bigger than 10MB I assume to be downloads instead of browsing, and to be assigned lower priority)"
add action=mark-packet chain=forward connection-bytes=0-10000000 new-packet-mark=http.dw.pk packet-mark=client.dw.pk passthrough=no port=80,443,5222,5223,5228 protocol=tcp
add action=mark-packet chain=forward connection-bytes=0-10000000 new-packet-mark=http.up.pk packet-mark=client.up.pk passthrough=no port=80,443,5222,5223,5228 protocol=tcp

"Packet marking youtube traffic, up and down. To be given priority somewhere in between browsing and downloads"
add action=mark-packet chain=forward connection-mark=client.dw.con in-interface-list=WAN layer7-protocol=layer7-youtube new-packet-mark=client.dw.youtube passthrough=no
add action=mark-packet chain=forward connection-mark=client.up.con layer7-protocol=layer7-youtube new-packet-mark=client.up.youtube passthrough=no

"Packet marking torrent traffic. In practice, doesn't work. Torrent packets usually passes this gate and gets marked as http-browsing or others (downloads). If I can get the matching to work, I will give torent traffic the lowest priority"
add action=mark-packet chain=forward layer7-protocol=layer7-bittorrent-exp new-packet-mark=p2p.dw.pk packet-mark=client.dw.pk passthrough=no
add action=mark-packet chain=forward layer7-protocol=layer7-bittorrent-exp new-packet-mark=p2p.up.pk packet-mark=client.up.pk passthrough=no

"If does not match any of the above, mark as other upload and other download"
add action=mark-packet chain=forward new-packet-mark=other.dw.pk packet-mark=client.dw.pk passthrough=no
add action=mark-packet chain=forward new-packet-mark=other.up.pk packet-mark=client.up.pk passthrough=no

Resulting in the following Queue Tree:


/queue tree
"As I understand it, All-Bandwidth is the total of up and down. I am testing at home so 8D+8U=16Mbps"
add max-limit=16M name="All Bandwidth" parent=global priority=1

"Prioritising download packets. Oddity: in Winbox, P2P has priority of 8 (last), but in terminal is missing"
add max-limit=8M name=Download packet-mark=client.dw.pk parent="All Bandwidth" priority=2
add max-limit=8M name="1 Http.dw" packet-mark=http.dw.pk parent=Download priority=1 queue=pcq-download-default
add max-limit=8M name="2 Youtube.dw" packet-mark=client.dw.youtube parent=Download priority=3 queue=pcq-download-default
add max-limit=8M name="3 P2P.dw" packet-mark=p2p.dw.pk parent=Download queue=pcq-download-default
add max-limit=8M name="4 Other.dw" packet-mark=other.dw.pk parent=Download priority=7 queue=pcq-download-default

"Prioritising upload packets. Oddity: in Winbox, P2P has priority of 8 (last), but in terminal is missing"
add max-limit=5M name=Upload packet-mark=client.up.pk parent="All Bandwidth" priority=2
add max-limit=5M name="1 Http.up" packet-mark=http.up.pk parent=Upload priority=1 queue=pcq-upload-default
add max-limit=5M name="2 Youtube.up" packet-mark=client.up.youtube parent=Upload priority=3 queue=pcq-upload-default
add max-limit=5M name="3 P2P.up" packet-mark=p2p.up.pk parent=Upload queue=pcq-upload-default
add max-limit=5M name="4 Other.up" packet-mark=other.up.pk parent=Upload priority=7 queue=pcq-upload-default

Question(s):

  1. The youtube guide I followed uses “prerouting” and “In Interface = bridge1” to mark uploads, where most other youtube videos and guides uses forward. Why the difference? What is the impact?

2A. I would like to split the total 100mbps U/D bandwidth between 2 vlans: (1) Hotel Guest (Hotspot) VL99 (192.168.99.x) 75mbps U/D and (2) Office VL10 (192.168.10.x) 25mbps U/D. Do I add new connection marks per VLAN, or sufficient to create packet marks (per VLAN) based on the overall up and down connection marks. Which is more efficient on the CPU/RAM.

2B. Would this translate into a Q-Tree that looks like so? There seems to be a lot of repetition, is there a more efficient way.

zz2.png
Q3. If office is slow (ie, sunday), I would like to dynamically allocate unused office bandwidth to guest. How is this done?