Need clarifications on ACLs.
As we all know, Cisco's recommendations for standard ACLs is to put them as close to destination as possible and extended as close to source as possible. However, if you look at one level deeper, the goal of those policies is to not block too much access for standard ACLs by putting them close to destination and reduce network traffics for extended ACLs by putting them close to source. The first goal is kind of a requirement that is nonnegotiable because you really don't want to block what you shouldn't. The second goal is more about optimization and there seems to be room for compromise.
If I understand ACLs correctly, by blocking access from host A to host B also bocks host B from accessing host A since there is no way for returning traffics to pass.
Keeping the two previous paragraphs in mind, in a case where it is clear which hosts or subnets are the source and which are the destination, choosing the location of the access list is simple, but what if the destination and source are interchangeable. I.e. what if the goal is to deny access two locations from each other without a clear destination and source.
Sure, in that situation, if you arbitrarily choose a source and destination and apply the standard or extended ACL with Cisco's recommendation, it would work since the ACL will deny forwarding traffics as well as returning traffics. This solution would be best if you wish to minimize the number of ACLs used to one.
However, if your goal is to minimize network traffic, wouldn't it make more sense to create two ACLs and apply one of each on a different router interface? This solution not only reduces traffic, but also saves host processing time since they wouldn't have to process requests and send back replies which would be blocked anyway on their return path. The trade off would be that we would now have two routers (or two interfaces on one router) that will have to check ACLs and spend CPU cycles. However, if it is two routers and not two interfaces on the same router, that would kind of balance the load.
So, now my question is, in an ICND1 exam environment, how should I implement ACLs when the destination and source are blurred? I'm pretty sure the Odom book has no recommendations for that or maybe I missed something. Also, I really don't think asking this is some kind of brain **** because I think I do know how ACLs work technically. I also do understand what are Cisco's recommendation and more importantly WHY those recommendations are made. It is specifically because I understand the WHY that I'm making this post for clarifications.
I'm also interested in knowing what would a network engineer do in real life. Here are the situations I can think of.
1) What if we have a situation where there are three routers, subnet A connected to router A connected to router B connected to router C connected to subnet C. We want to block traffic between subnet A and subnet C. What if the router that is in between, router B, is a much more powerful router than routers A and C, and ACLs can be checked extremely fast. Also, routers A and C already have huge ACLs on their interfaces for other reasons. Would that be a good situation where we should maybe put two ACLs on router B, one on each interface. This would violate Cisco's recommendations, no matter where you define as source and where you define as destination, but wouldn't this make more sense?
2) Using the same network in the first sentence of the previous paragraph. What if is the link between router A and router B and the link between router B and router C are WAN links which are slow and they are already congested. In that case, wouldn't it make sense to minimize traffic to the extreme and use two ACLs?
Sorry for the wall of text and thanks for reading.