云数据中心网络与SDN:1.8 Cisco私有的大二层
1.8 Cisco私有的大二层——FabricPath
Cisco于2010年推出了FabricPath,在业界普遍的说法中,FabricPath是对TRILL的升级,但实际上除了控制平面都是用的ISIS协议外,FabricPath的实现和TRILL区别很大,起码从封装上来看两者就是完全不一样的,本节就来介绍FabricPath的实现。
1.8.1 整体设计
如图1-18所示,FabricPath采用的是MACinMAC的封装,对外层的MAC地址有明确的编址规则,外层的MAC地址主要包含三个信息——SID、SSID和LID。其中:12bit的SID是一个FabricPath域内交换机的唯一标识,8bit的SSID是vPC+ Port Channel在vPC+ Domain中的编号(不使用vPC+时SSID默认为0),16bit的LID是MAC地址接入的物理端口号,因此在FabricPath中即可将目的地所在的位置表示为SID.SSID.LID。U/L bit表示MAC地址是否为IEEE定义的标准MAC地址,由于FabricPath自定义了外层的MAC地址,因此大部分情况下(已知单播)该bit都会被置位。I/G bit标识数据帧是否为广播帧,如果是广播帧则置位。OOO(Out Of Order) bit可以用于数据包乱序后的重排。FabricPath的以太网类型是0x8903,通过10bit的Ftag来标识多拓扑,以便为不同的VLAN构造不同的BUM转发树,TTL默认初始值为32并逐跳递减用于防环。内层MAC头中,802.1Q字段会被保留,用于VLAN隔离和基于COS的QoS机制。FabricPath也支持TRILL的FGL扩展,可以通过两个VLAN ID来形成24位的w/Segment-ID,以支持更多的租户数量。
图1-18 FabricPath封装格式
对比TRILL可以发现,FabricPath使用的是完全不同的封装,因此在实现的各个方面都和TRILL有着较为明显的差别(见图1-19)。TRILL中所有RBridge的角色都是一样的,endpoint的MAC地址会分布在所有的RBridge上,虽然TRILL Header是End-to-End的,但是外层的MAC头是Hop-by-Hop的。而FabricPath中交换机分为Leaf和Spine两种角色,endpoint的MAC地址只存在于Leaf上而不会存在于Spine上,外层的MAC头即为FabricPath Header,是End-to-End的。因此,单从封装上来看,FabricPath倒是和SPB更类似一些。
图1-19 FabricPath与TRILL的对比
FabricPath将交换机分为两类:一类是Ingress/Egress交换机(Leaf);另一类是Core交换机(Spine)。Spine上所有的端口,以及Leaf上与Spine相连的端口都需要工作在fabricpath mode下,如果两个Leaf存在vPC Peer的关系,那么Leaf间用作Peer-Link的端口也需要工作在fabricpath mode下。Leaf上用于接入的端口工作在CE(Classical Ethernet)模式下。
控制平面上,FabricPath支持使用DRAP(Dynamic Resource Allocation Protocol)协议来自动分配SID和Ftag。SID和Ftag是FabricPath中最为关键的两个参数,分别用于已知单播和BUM的转发。一个Ftag对应物理网络的一个子拓扑,一个Ftag子拓扑可以对应多个VLAN,这些VLAN的泛洪和广播都将基于这个Ftag子拓扑来完成,这和MSTP实现的功能是类似的。SID标识着一个FabricPath交换机,一个交换机的SID在任何的Ftag子拓扑中都是不变的。DRAP能够自动地分配SID和Ftag,并且保证在一个FabricPath域内SID和Ftag的唯一性,SID是随机生成的,而Ftag是从1开始递增的。
除了DRAP以外,FabricPath在Underlay使用了ISIS,主要用于物理拓扑发现,形成SID转发表以及BUM转发表。Overlay中的MAC地址学习,FabricPath采用的是一种“基于会话”的自学习机制,能够有效地减少交换机上的MAC表项。下面来看数据包在FabricPath中具体的转发流程,来对上面提到的机制进行具体的理解。
- 点赞
- 收藏
- 关注作者
评论(0)