No worries; your English is just fine I think it’s the networking concept that I’m missing.
If you want to route clients based on their source address, you can use :ip firewall mangle
to set a new-routing-mark
and then use :ip route rule
to determine which routing table to lookup the next hop in. The routing tables are defined by setting routing-mark
on individual routes, either manually for static routes, or by using BGP policy to set them as they come in. The wiki has some good explanation of this .
What I’m confused about is the objective. It seems like if you’re trying to build an address list based on the received BGP prefixes and then matching on the address rule in :ip firewall mangle
to make sure clients use the BGP links for those destinations … that seems like you’re reinventing how the routing table already works but with more steps, right? By default, your client traffic will be routed based on longest prefix match and in the case where the alternative is just a default route to another provider, clients will already route towards the BGP provider(s) if a route exists and dynamically fall back to the default if no route exists or if the BGP sessions go away.
The only circumstance I can see where you’d want to intervene here is if a group of source addresses on your network should *never* use the BGP links even if a specific prefix exists. You might be able to do that by adding another default route with routing-mark=default-only
or something. That way when your :ip route rule
lookup happens, the BGP routes aren’t considered because it’s looked up against that specific table containing only the default route.
 https://wiki.mikrotik.com/wiki/Manual:R ... le_Matcher