Why Is TRILL Not Routing at Layer-2
Peter John Hill made an interesting observation in a comment to one of my blog posts; he wrote “TRILL really is routing at layer 2.”
He’s partially right – TRILL uses a routing protocol (IS-IS) and the TRILL protocol used to forward Ethernet frames (TRILL data frames) definitely has all the attributes of a layer-3 protocol:
- TRILL data frames have layer-3 addresses (RBridge nickname);
- They have a hop count;
- Layer-2 next-hop is always the MAC address of the next-hop RBridge;
- As the TRILL data frames are propagated between RBridges, the outer MAC header changes.
However, once the TRILL infrastructure is set up and the best paths are computed, bridging forwarding paradigms are used to forward host-to-host data traffic, including building MAC address table by listening to data traffic and flooding of packets sent to unknown MAC destination. TRILL therefore retains most of the non-scalable properties of transparent bridging with these exceptions:
- Convergence is faster and more predictable;
- Data forwarding can use all the available links;
- Core RBridges (those that have no non-TRILL links) do not need to know the end-station MAC addresses;
- Edge RBridges need to know end-station MAC addresses only for the VLANs in which they participate (but that’s also true in existing well-designed bridged networks).
For an in-depth overview of TRILL, start with the Setting the stage for TRILL, rethinking data center switching article by Brad Hedlund and continue with RFC 5556 (TRILL: Problem and Applicability Statement); you'll find a big-picture perspective in my Data Center 3.0 for Networking Engineers webinar (buy a recording or yearly subscription).
Great blog, btw!
In this article you say the outer MAC changes as it traverses RBridges. In Cisco's "proprietary" implementation of TRILL (called FabricPath), that is not true. With Cisco FabricPath, the outer MAC is that of the far end Edge bridge and does not change as it traverses RBridges in the core. From a "standards" perspective, in reading the spec for 802.1aq (SPBM, the newer variant that uses mac-in-mac) there is no language I can see that says the outer MAC should change when passing through RBridges (correct me if you see otherwise). This very different from L3 "Routing" behavior where the L2 destination address changes link by link.
This further re-enforces your point that saying "TRILL really is routing at Layer 2", while a cute and semi-accurate sound-bite, is not completely true when you begin to peel back the onion.
Thanks for the link, Ivan. I really appreciate that.
Cheers,
Brad
:)
another question (if you can share the answer): is FabricPath similar to SPBM or SPBV?
Thanks,
Ivan
Cisco FabricPath is similar to 802.1aq SPBM, with a couple of additional enhancements:
1) a more optimized Conversation based MAC learning
2) identifying multiple multicast topologies, not just one, and load balancing multicast traffic across each topology on a per group basis.
Cheers,
Brad
The Rbridges exchange their topology (links) and identity (MAC address) through IS-IS. Therefore if a "core" RBridge has equal cost paths to an "edge" RBridge, it will be known ahead of time which of its links are included in those paths. When a "core" RBridge receives a frame with a MAC of an edge bridge (the outer MAC) it will apply the ECMP logic and send traffic out each link on a per flow basis.
Cheers,
Brad
The Rbridges exchange their topology (links) and identity (MAC address) through IS-IS. Therefore if a "core" RBridge has equal cost paths to an "edge" RBridge, it will be known ahead of time which of its links are included in those paths. When a "core" RBridge receives a frame with a MAC of an edge bridge (the outer MAC) it will apply the ECMP logic and send traffic out each link on a per flow basis.
Cheers,
Brad