That's the reason, UDP won't be marked by those mangling rules as there's no initial UDP connection, but TCP.
Did some testing and had a look at a packet capture, the src-port for UDP to be 2001 for the first BW-test, 2002 for the next, and so on, so we'd better not use that to mark UDP.
Marking UDP is tricky, as the first connection is TCP, then the UDP streaming starts, so we cannot use conntrack to directly relate the two on a single mangle rule to mark a new connection, as that won't happen with UDP; but, we can still use that in our advantage:
1.- On initial TCP connection (done by both TCP/UDP) add the IP initiating the BW test to an address list
2.- Check that address list when marking BW Test UDP Tx/Rx traffic:
/ip firewall mangle
add chain=input dst-port=2000 packet-mark=no-mark protocol=tcp action=add-src-to-address-list \
address-list=BW_TEST_ADDRESS_LIST address-list-timeout=1h
add chain=prerouting connection-state=new dst-port=2000 packet-mark=no-mark protocol=tcp \
action=mark-connection new-connection-mark=BWTEST log=yes log-prefix=BWTESTLOG_TCP passthrough=yes
add chain=prerouting protocol=udp packet-mark=no-mark src-address-list=BW_TEST_ADDRESS_LIST \
action=mark-connection new-connection-mark=BWTEST passthrough=yes comment="ROS UDP Rx Test"
add chain=output protocol=udp packet-mark=no-mark dst-address-list=BW_TEST_ADDRESS_LIST \
action=mark-connection new-connection-mark=BWTEST passthrough=yes comment="ROS UDP Tx Test"
add chain=prerouting connection-mark=BWTEST action=mark-packet new-packet-mark=BTEST_P passthrough=no comment="ROS Rx BW Test "
add chain=output connection-mark=BWTEST action=mark-packet new-packet-mark=BTEST_P passthrough=no comment="ROS Tx BW Test"