CAN -> acceptance filter then interrupt or vice versa
First, nodes don't have IDs, only messages do.

Second, using filters and masks is always optional.  Their intent is to reduce firmware load by not bothering the firmware with message that you know up front are not relevant to that device.

I have done a number of CAN implementations, and have yet to use filters and masks.  I can see how they would be useful in highly targeted devices where low power is important.  However, they make good software architecture difficult.  The decision of what messages to ignore should not really be done in the low level packet reception layer.  That should be done at higher levels that understand the protocol used above CAN, not the bare CAN protocol.  So far in the CAN projects I've had, it's been more trouble to generalize the finite number of masks and filters to arbitrary message acceptance criteria than any benefit gained.

I have my low level CAN reception layer receive whole packets and make them available to the application layer.  The application layer then decides what to do with them, which could be nothing.  This decision of how to process particular messages is usually done via a dispatch table, so ignoring messages simply means not including table entries for them.  This mechanism is there anyway.  So far the little extra processing power that requires hasn't been worth the less maintainable architecture of discarding messages at the low level in hardware.