why routed ports usually implemented between the distribution layer and the core layer ? why not just extend the layer 2 domain to the core layer ? is the other design model more practical than this one ?
Redundant L2 links are usually implemented using some form of spanning-tree protocol - all but one are blocked. Having active L2 links requires some kind of MC-LAG which is proprietary due to the lack of an open standed or Shortest Path Bridging (802.1aq) which hasn't really caught on yet in the industry.
Using redundant L3 links enables active links (using ECMP or policy routing). Additionally, L3 scales better (no broadcasting noise), and in case one of the L2 segments goes bonkers (loops, broadcast storms), the effects are very limited.
There are other approaches, but that hierarchical model can potentially scale limitlessly with L3 interconnects.
There are multiple reasons. Some of the main reasons are:
- Layer-2 (spanning tree) picks a single path to a root bridge in order to prevent layer-2 loops.
- Layer-3 (routing) paths are all active and can be configured to balance traffic across multiple links.
- Layer-2 (spanning tree) failover is much slower than layer-3 (routing) failover.
- Layer-2 problems would extend to all devices, but layer-3 blocks layer-2 problems from propagating.
- Layer-2 protocols are fairly easy to hack or spoof, and eliminating or limiting them increases security.
The best practice is not to fit for every network. So based on your understanding for your network you can achieve the best practice objectives in your design.
For example in a small network the best practice to go with collapsed core design.