I can see how it can be useful to have simple way how to select some interfaces and have separate routing for them. Almost like separate routers. Or to have some services on router available only in some of these separate areas. That’s all fine. But then I have same problem as you do. With things nicely separated, it’s quite likely that I might need separate firewall configuration for each. But no, there’s just one common firewall for all. And even worse, no easy way how to filter by used VRF.
I didn’t think it through completely, but at first sight I’d expect some vrf= parameter, to be able to easily separate traffic. But unless I’m going blind, it’s not there. And it seems that neither Linux has it, so maybe the way how it’s supposed to be used is different.
And yes, there’s one clear diffence, Linux has interface for each VRF, so you can work with that. If you want to e.g. accept traffic from given VRF (regardless of exact interface), it’s fine. RouterOS has these interfaces too, but hidden and you can’t work with them. So that’s limitation.
But even if these VRF interfaces were available (1:1 copy from Linux), it wouldn’t solve everything, because in some chains you still couldn’t match exact interface within VRF. Now MikroTik started to change how firewall sees interfaces, and if they finish it like this (also for output/postrouting and interface lists), you’ll be able to do something you can’t do in Linux. Cool. But I wonder why Linux does what it does, and if it’s good to change it. Could it backfire in some way?
For example, how will I be able to tell first pass through prerouting from second one? Linux and previous RouterOS has first in-interface= and second in-interface=. But now I’ll see in-interface= for both. What if I want to increase TTL by one for everything coming from real interface? I didn’t test it, but with latest RouterOS I expect it to be increased by two, one for each pass. Not good.
Edit: I’m probably too fixated on interfaces. You could do just with having routing mark available. But it still seems to me that it would be best to give us VRF interfaces as Linux has. It would solve some things. And since Linux is made by clever people, I’m pretty sure there’s some plan (even if I don’t yet understand it completely) and if they added those interfaces, they are good thing.