Need multiple packet marks for mangle and Queue's

Good day

I have 2 companies working from the same office, they share a file server but each has their own Internet. I need to route company A internet to Internet A and Company B to Internet B.
Furthermore Company B has a VOIP pabx that I need to do QOS for as well and I also want to limit Company B cell phones so they dont flood the upload with their cloud syncs.
What will be the best approach do handle this?

I currently have 2 ADSL routers in Bridge mode, then I mark the packets depending if they come from 192.168.0.0/25 or 192.168.0.128/25 and route them out the correct PPPOE account.
I cant double mark packets as far as I can see, as the second mark will over rite the first. So I am not sure how I can then do the QOS for the rest.

No one?

Why do you think that you need to have multiple packet marks at the same time?

You can use, for example:

  1. Mark packets for VoIP with mark X;
  2. Mark packets to Internet with mark Y;
  3. Mark routing if mark is X or Y;
  4. Policy routing should now work based on routing mark and you can create queues for only those packets which has mark X not Y.

Can a packet take a routing mark and a packet mark at the same time?

I mark the packet with routing marks so the correct ip range goes out the correct WAN, then I want to shape the traffic for company B VOIP they are the only one with a voip phone
This is what I have done 192.168.0.0/25 should go to pppoe-uncapped 192.168.0.128/25 should go to pppoe-har Then VOIP traffic should go to pppoe-har and get shaped the voip phone ip is 192.168.0.160

I mark the packets like this

add action=mark-routing chain=prerouting comment="Marking Marturia 192.168.0.1 - 127" new-routing-mark=Marturia passthrough=no \
    src-address=192.168.0.0/25
add action=mark-routing chain=prerouting comment="Marking Harcourts 192.168.0.128 - 254" new-routing-mark=Harcourts passthrough=no \
    src-address=192.168.0.128/25
add action=mark-connection chain=forward comment="VOIP Connection" connection-state=new new-connection-mark=VOIP passthrough=yes \
    protocol=udp src-address=192.168.0.160
add action=mark-packet chain=forward comment="VOIP Packet" connection-mark=VOIP new-packet-mark=VOIP passthrough=no
add action=mark-connection chain=forward connection-state=new disabled=yes dst-address=192.168.0.160 new-connection-mark=VOIP \
    passthrough=yes protocol=udp
add action=mark-packet chain=forward connection-mark=VOIP disabled=yes new-packet-mark=VOIP passthrough=no
add action=mark-connection chain=forward comment=OTHER connection-mark=no-mark disabled=yes new-connection-mark=OTHER passthrough=yes
add action=mark-packet chain=forward connection-mark=OTHER disabled=yes new-packet-mark=OTHER passthrough=no

Then I have the following queues to apply the shaping

/queue tree
add limit-at=1M max-limit=1M name=upload parent=pppoe-har queue=default
add limit-at=100k max-limit=100k name=upload_pri_1 packet-mark=VOIP parent=upload priority=1 queue=default
add limit-at=900k max-limit=900k name=upload_pri_8 packet-mark=no-mark parent=upload queue=default
add limit-at=10M max-limit=10M name=Download parent=ether2-master-local queue=default
add limit-at=100k max-limit=100k name=Download_pri_1 packet-mark=VOIP parent=Download priority=1 queue=default
add limit-at=9628k max-limit=9628k name=Download_pri_8 packet-mark=no-mark parent=Download queue=default
add limit-at=1M max-limit=1M name=upload_myr parent=pppoe-uncapped queue=default
add limit-at=100k max-limit=100k name=upload_myr_pri_1 packet-mark=VOIP parent=upload_myr priority=1 queue=default
add limit-at=900k max-limit=900k name=upload_myr_pri_8 packet-mark=no-mark parent=upload_myr queue=default

then in my routes i have the following

add distance=1 gateway=pppoe-uncapped routing-mark=Marturia
add distance=1 gateway=pppoe-har routing-mark=Harcourts