虚机的动态迁移要求在一个二层VLAN内进行。在常用的三层数据架构中,接入层和汇聚层为二层网络,三层网关设在汇聚层或者核心层,所有二层链路上多运行STP。
1. 二层网络存在的问题
未来数据中心内部的横向流量会越来越大,如果采用STP阻断多余端口,而只启用一条链路,则会导致资源的浪费;其次,二层设计会越来越复杂;然后,传统二层MAC没有层次化概念,边缘设备的MAC地址空间将会耗尽。
如果二层网络没办法解决问题,另一种思路是采用在汇聚交换机和接入交换机上设置IP网关,通过三层路由将所有交换机连接起来,类似的解决方案还包括将网关设备设在核心设备上,通过核心设备集中互联。该方案存在的问题如下:
- 在虚拟化环境中,虚拟只有在一个二层网络的范围内才能动态迁移,而不能跨三层网关迁移。虚拟化的最大特点是可以将业务动态部署到数据中心的任何计算资源上,如果这些计算资源被过多的三层网关隔离开来,也就失去了虚拟化的优势。
- 采用三层接入设备会产生大量的三层网关以及无数个地址段。动态路由协议的行为往往难以预测,导致网络可控性不高;静态路由协议修改过于复杂。
运行STP的代价非常昂贵,接入设备只有一条上联链路可以通信,而且,在复杂的网络连接中,控制STP的行为变得非常困难,一旦出现网络震荡,收敛效率低下。
总而言之,目前二层网络过于简单,它的问题类似于只有一个数据平面而没有控制平面。
2. FabricPath:新的控制平面
FabricPath重塑一个控制平面,这个新的控制平面具备了以下功能:
- 主动建立邻居关系,并给予链路状态维护一个路由DB。
- 支持等价路由。
- 支持灵活的寻址方式。
- 保留原有的二层网络配置简单的风格。
2.1 新增一个二层帧头
该新帧头添加在原有数据帧之外,包含较多信息,主要的有三个:源地址、目的地址和TTL。
原地址和目的地址来自FabricPath新定义的一个名为switch ID的全新地址空间。任何一个新加入的网络设备都被分配一个1-4094之间的整数,作为唯一的switch ID,用于标识交换机身份,也是节点之间进行路由寻址的依据。
TTL则为了抛弃STP,保证数据帧不会在成环的链路中被无限转发。
2.2 增加了一套简化的IS-IS路由协议
IS-IS是一个链路状态协议,相比较OSPF最大的不同在于,IS-IS可以封装在链路层报文中支持多种网络层协议,而OSPF只能封装在IP包中支持IP协议,这就使得IS-IS能够很容易被移植到FabricPath中,为二层数据帧的转发提供路由服务。FabricPath中实际运行的是一个简化版本的IS-IS协议。
2.3 为什么引入新地址空间
采用新地址空间而不是MAC的原因如下:FabricPath的IS-IS协议会建立一套逻辑树结构,这个结构说明了任意两点间最优路径,是交换机转发数据的依据。而MAC地址在出厂时就被设定,不同设备之间没有规律可循,如果使用MAC作为唯一标识,生成的树是一个随机结构,这可能导致最终的转发路径不是最优路径。
2.4 FabricPath的工作模式
数据帧在进入FabricPath网络时,会被打上新帧头,在FabricPath网络内根据帧头里的switch ID进行转发,离开FabricPath网络,脱去帧头,进入传统的以太网交换环境。要加入FabricPath网络,只需在交换机对应端口上启用FabricPath模式即可,所有的地址分配和路由策略都自动生成,无需繁琐的配置。
接入设备作为网关连接了传统以太网络同FabricPath网络,FabricPath网关上可以进行『基于会话的MAC地址学习』。只有那些目的地址为本地设备的数据帧的原地址会被放入网关的MAC地址表,其他数据帧的源地址以及广播帧的源地址都不会被学习,这就保证了边缘网关设备的MAC地址表的体积。
基于IS-IS特性,FabricPath网络设备的switch ID可以动态修改,而不影响流量转发。当数据中心规模不断扩张,可以利用FabricPath平滑地扩展其汇聚层,并在接入设备间实现多达16条二层多路径转发。
3.TRILL--FabricPath的公开标准
TRILL是由IETF推出的协议,而IEEE则推出了802.1aq(SPB)。FabricPath是CISCO借用TRILL而提前推出的协议。
TRILL定义了RBridges或者称为Routing Bridges的网元,这个节点相当于FabricPath网络中的FabricPath网关,RBridges互联形成的网络就是TRILL网络,也就是控制平面,位于TRILL网络边缘的RBridges作为TRILL网关跟普通交换机互联。
TRILL中的RBridges会给进入TRILL网络的数据帧打上全新的二层帧头。这个帧头包含TRILL网关地址和MAC地址两部分,TRILL网关地址是数据帧进入和离开TRILL经过的RBrides,由控制屏幕的IS-IS计算得出,并由RBrides写入新帧头的。
TRILL完全按照三层交换设备的规律工作:新添加的帧头中的TRILL网关地址就是一个三层地址,数据帧在转发过程中保持TRILL网关地址不变,而MAC地址在每一跳转发时都被动改写成新的源设备MAC地址和下一跳目的设备的MAC地址。除了TRILL网关地址不是IP地址之外,这个转发过程同路由器处理IP包的过程几乎一模一样。
4.SPB
SPB同TRILL一样,采用IS-IS构建了一个独立的控制平面。SPB的控制平面保证了任意两点间的数据传输总是能选择最短路径。缺点是,目前,SPB还无法在两点间实现基于流的ECMP,而TRILL已经实现,不过该功能将在802.1Qbp中实现。
与TRILL转发思路不同的是,SPB包含两种转发策略SPBV(Shortest Path Bridging VID--基于VID的最短路桥接路径)和SPBM(Shortest Path Bridging MAC--基于MAC的最短桥接路径)。这两种方式都复用了现有的以太网技术,而不是像TRILL那样设计了一个新的帧头结构,其中SPBV基于802.1ad/Q-in-Q,SPBM则基于802.1ah(PBB),后者比较受认可。
PBB是一个MAC-in-MAC技术,将二层数据再打上二层数据帧头,然后放入802.1ah中传送。这个添加的帧头包含内容如下:一对MAC地址,分别是入向网关MAC和出向的;S-VID标志位,长度24位,因此可以定义2的24次方个数量,一个数量类似于一条VPN隧道,如果两个SPBM节点属于一条隧道,那么当数据进入其中一点时,就能够通过隧道到达隧道的另外一个端点。
SPBM与TRILL往帧头里写入的MAC地址是不同的,TRILL的MAC地址是逐跳修改的,RBridges每转发一次数据都会写入下一跳MAC;而SPBM得MAC地址是固定的,在SPB网络内部不会修改。SPBM数据从入向网关进入隧道,隧道的出口就是SPBM网络的出现网关,中间的设备完全按照S-VID规定的隧道走向转发数据,而不受外层帧头中MAC地址的影响。
如果需要做个类比,SPBM新添加帧头中的MAC地址同TRILL定义的TRILL网关地址类似,都起到一个『三层地址』的作用。SPBM将这对MAC地址赋予新的含义,用以指代转发路径的起点和终点,而传统上应该由MAC地址负责的逐跳寻址工作则由S-VID代劳了。
参考
《腾云》