Separate YouTube, Facebook, Instagram, and Netflix traffic or IPs (CDN of ISP)

You actually can, but this would be kinda tricky to do. Note that I’m not guarantee you that what I’ve described below will give you desired results and maybe @anav is right, but I’ll try to give Mikrotik a chance.

In ROS7 there’s a DNS record called FWD. What you can do is:

  1. Inject MikroTik DNS into your DNS server chain (for example, client->AD DNS->Adguard->ROS->Google) and allow remote requests. You can also use dstnat chain to redirect port 53 for the devices that aren’t taking DHCP DNS parameters into account. DNS requests reaching MikroTik DNS server in DNS request chain is mandatory for this method to work.
  2. Find out required DNS domains. For meta this would be fbcdn.com cdninstagram.com instagram.com and facebook.com (this may also catch WhatsApp tho), for youtube and google you can fetch and parse https://www.gstatic.com/ipranges/goog.json or use *.googlevideo.com CDN and so on. This would be the most boring step to gather all resources you need. Use google for this step or ask on relevant resources.
  3. For each domain found in step 2, setup a DNS FWD record and tick both Match subdomain and Address list option. Call address list something like ExtraBandwidthList or so. Each time a client makes a DNS request, MT will create a dynamic address list record for it.
  4. Use mangle to mark connections with dst-address-list=ExtraBandwidthList with extra-bandwidth mark. Mark the rest with regular-bandwidth mark.
  5. Use queues to give desired amount of bandwidth per mark.

You can also ask ISP if they use some specific subnet for their CDN and just mangle that subnet tho.