Problem with the internet is that its hard to find up to date information. You have to hunt for it or find it yourself sometimes. Looks like the old Layer7 rule doesn’t work anymore and testing for just port 3724 either.
I used Basic traffic shaping wiki script as a base then used port info from blizzard’s website for the ports I needed.
Thought it help out some people having similar issues.
/ip firewall mangle
add chain=postrouting action=mark-packet new-packet-mark=worldofwarcraft_out \
passthrough=no protocol=tcp out-interface=WAN0 \
dst-port=3724,6112,6113,6114,4000
add chain=prerouting action=mark-packet new-packet-mark=worldofwarcraft_in \
passthrough=no protocol=tcp in-interface=WAN0 \
src-port=3724,6112,6113,6114,4000
/queue tree
add name="worldofwarcraft_in" packet-mark=worldofwarcraft_in parent=WAN0_IN priority=4
add name="worldofwarcraft_out" packet-mark=worldofwarcraft_out parent=WAN0_OUT priority=4
Works well on my 750G. This rule is not optimized yet as Blizzard also uses the same ports for patch updates, so when Cataclysm hits your going to start getting huge bulk transfers from these ports. Supposedly they use 6881-6999 for the torrent part (or port 80) but I haven’t experimented with it much.
Further to this you could probably use a script on the mikrotik to download and parse the ip lists automatically.
A modified version of the following code would work:
#Log beginning of modification
#If the unmetered address list file size is larger than 0, begin
#Remove all previous entries
#Put the content of the txt file into the variable $content
#Get the total length of $content
:log info "Beginning Address List Modification"
:if ( [/file get [/file find name=unmetered_ip_address_list.txt] size] > 0 ) do={
/ip firewall address-list remove [/ip firewall address-list find list=ip-list]
:local content [/file get [/file find name=unmetered_ip_address_list.txt] contents] ;
:local contentLen [ :len $content ] ;
#Set lineEnd to 0
#Set line to null
#Set lastEnd to 0
:local lineEnd 0
:local line ""
:local lastEnd 0
#Beginning of do/while loop
#Set lineEnd to the first point in the line there's a newline char
#Set line to be whatever is between lastEnd and lineEnd
#Set lastEnd to be lineEnd + 1 (ready for new line)
:do {
:set lineEnd [:find $content "\n" $lastEnd ] ;
:set line [:pick $content $lastEnd $lineEnd] ;
:set lastEnd ( $lineEnd + 1 ) ;
#if the line is not empty (1st char is a newline) do the following
#if line is longer than 0 characters - add a new ip firewall address list entry with $line as the address
#End if segment
#End do segment - while $lineEnd is smaller than the total length of the list
#End if segment
#Log completion
:if ( [:pick $line 0 1] != "\n" ) do={
:if ( [:len $line ] > 0 ) do={ /ip firewall address-list add list=ip-list address=$line }
}
} while ($lineEnd < $contentLen)
}
:log info "IP List Modification Complete"
Source is a post I did a while ago detailing a similar setup: http://www.mikrotik-routeros.com/?p=80
That’s awesome by the way! On my old tomato router I did it by data center IP address but when I put the same IP range into the Mikrotek it didn’t mark the connections. Didn’t realize they changed the IP ranges (Heck, it looks like they moved it to another state too:P)
Thanks for the script too, I can use that for other things:)
If you like that one head over to http://www.mikrotik-routeros.com and check out the others 
They’re all public, so you’re welcome to adapt and modify for your own usage.