众所周知,Cisco正凭借Nexus产品平定整个数据中心网络市场,2010年,Cisco打出了深藏已久的最后一张王牌—FabricPath,至此,Nexus交换机的主要特性已全部面向公众发布,FabricPath为整个计划添上了最后一块基石,进一步稳固了Nexus作为下一代数据中心网络平台的地位。
大部分人(包括我)第一次阅读FabricPath华丽的白皮书后,只朦胧地知道这是一个“能在大型二层数据中心网络实现多路径的东东”,既然FabricPath解决的是数据中心的问题,我们首先需要弄清楚数据中心到底有什么问题。
今天的大部分数据中心网络是遵循标准的层次化理念建设的,分为接入层和汇聚/核心层,接入层和汇聚层之间为二层链路,三层网关设在汇聚或核心,所有的二层链路上都运行生成树协议(STP),当任意两点间有一条以上路径可达时,STP会block多余的路径,以保证两点间只有一条路径可达,从而防止环路的产生。这种模式在过去很长一段时间被大规模采用,因为其部署起来非常简单,接入层设备不需要复杂的配置,大部分的网络策略只要在汇聚层集中部署就能分发到全网。但随着数据中心的规模不断扩张,这种模型逐渐显得力不从心。
未来数据中心内部的横向流量将越来越大,新加入的设备同原有设备之间仍然要运行STP,如果两台服务器之间只有一条链路可行,其余的万兆交换机端口全被block,不但是投资的极大浪费,也无法支持业务的快速扩展;其次,当交叉链路数量增加时,二层网络的设计会变得非常复杂,哪条链路该保留哪条链路该阻断?三层网关设在何处?类似这样的问题会冒出一大堆,这就失去二层网络配置简单的优势;最后,传统的二层MAC地址没有层次化的概念,同一个二层网络内的接入交换机上存储本网段所有设备的MAC地址,这很容易导致边缘设备的MAC地址空间耗尽,特别是在虚拟化的数据中心内,虚拟机的MAC地址数量可能以千计。
如果二层互联不能解决问题,另一种思路是在汇聚交换机和接入交换机上设置IP网关,通过三层路由将所有交换机连接起来,类似的解决方案还包括将网关设置在核心设备上,通过核心设备集中互联。这个做法以前也许勉强可行,但在虚拟化环境中,二层网络是虚拟机迁移的基础。虚拟化的最大特点是可以将业务动态部署到数据中心的任何计算资源上,如果这些计算资源(也就是服务器)被过多的三层网关隔离开来,也就失去了虚拟化的优势。
同时,采用三层接入设备会产生大量的三层网关以及无数个让网管人员抓狂的地址段。动态路由协议的行为往往难以预测,在重要数据中心,为了保证网络行为的可控性,每台交换机的路由策略都要经过仔细琢磨,这个工作量过于庞大;而如果采用静态路由,一旦后期需要改动某个地址段的范围,可能需要改写一大段接入换机的路由表,更不用提相关访问控制策略的变动。
至此,我们走进了死胡同,虚拟化的应用要求基础网络在扩展时保持一个完整的二层环境,而随之而来的STP和地址空间问题又成为绕不开的坎,在接受二层环境的同时,我们基本上也就同一大堆时髦的字眼say byebye了,这些字眼包括但不仅限于“动态扩展”、“多路径”、“快速收敛”、“层次化寻址”等等,仰望IP路由,二层网络就好象一个生活在原始社会的苦行僧,忍受着种种的考验,传统网络在支持虚拟化数据中心扩张时已经越来越吃力。
为了改变这种尴尬的局面,在烧掉大把银子之后,Cisco的FabricPath终于闪亮登场了!
目标
简单说,FabricPath是Cisco Nexus交换机上的一项技术特性,其目标是在保证二层环境的前提下,修复前文所说的缺陷,这个技术需要做到以下几点:
实现两点间多条路径同时转发流量EMCP(Equal Cost Multi Pathing);
类似IP网络的平滑扩展;
快速收敛;
防止广播风暴;
保持原有二层网络配置的简洁性
更准确地说,我们要摆脱传统二层“交换”的弊端,在二层环境中实现类似三层IP的“路由”行为。
二、FabricPath:从“交换”到“路由”
L2不给力的原因
我们知道FabricPath的目标是为传统二层环境设计一个增强型方案,以屏蔽原来的缺陷,实现对数据帧的“路由”转发。要明白FabricPath是怎么做到这点的,首先要看看layer 2这些不给力的毛病到底是怎么出来的?
传统二层以太网环境中的数据转发是非常简单的,一台二层交换机一辈子干的活可以用以下几句话概括:
1)收到数据帧–>2)查看目的地址–>3)查看MAC地址表–>4)将数据帧从对应端口送出去
偶尔,当这个流程进行到第三步时,交换机会发现目的地址不在自己的MAC地址表中,它会怎么做呢?这台茫然的交换机就会将这个数据帧从所有的端口广播出去!没错,是整个帧从所有端口发送出去,希望其他交换机能知道正确目的地。且不说,这个方式在今天看来是多没有效率,当设备之间存在环路时,这种帧会被无尽地转发下去,最终形成广播风暴。
为了解决这个问题,交换机厂商引入了STP。STP的机制也极其简单,就是通过阻断二层端口来防止环路,并阻止数据帧从其接收到的端口再转发出去。
广播帧在任意节点只会被转发一次,避免了被永远转发下去。但如前所述,运行STP的代价是非常昂贵的,接入设备只有一条上联链路没被block,而且,在复杂的网络连接中,控制STP的行为变得很困难,一旦出现震荡,其收敛效率也非常低下。
另一方面,二层交换机通过学习接收到的数据帧的源地址建立MAC地址表,所有接收到的数据帧源地址都会被放进MAC地址表中,导致一台交换机可能学习到整个网段内的所有二层地址,就算它大部分时间只跟其中的一小部分有联系。
由此可见,今天的二层网络过于简单,交换机只会学习网络地址,不会基于学到的地址规划出一套转发数据的最优方案,它的问题类似于只有一个数据平面,没有控制平面的概念,这就导致二层交换机不可能有效地进行“路由”,从而引入了STP等一系列问题。
随着数据中心内虚拟化应用的不断扩张,底层的数据行为也在悄然发生改变,带动了基础架构的演进。未来的数据中心不仅需要大容量、高密度的网络设备,还要能够顺应这种数据行为的变化,并反过来提供经过优化的网络平台,这种从量到质的变化将深刻影响数据中心技术的发展。
FabricPath是Cisco在这个方向的重要布局之一,结合之前发布的FCoE、OTV、VN-LINK等技术,一个新一代数据中心网络平台已经隐约可见,Cisco只待市场大转型的到来,再次一举确立在网络行业的领导地位。
了解FabricPath有助于我们认识数据中心网络的演进方向,把握整个行业的脉搏,从而形成自己的思考,得出自己的结论。
五分钟Q&A
1)什么是FabricPath?
FabricPath是思科Nexus交换机上的一项特性,能够实现二层多路径数据转发。FabricPath能够在二层环境实现类似三层的路由功能,帮助虚拟化数据中心网络实现平滑扩展。
2)FabricPath有哪些好处?
FabricPath网络不再需要运行生成树协议(STP),没有链路被阻断,大大增加了网络传输带宽,很好地支持了服务器之间迅猛增加的横向流量。同时,FabricPath能够实现类似三层的路由功能,支持二层网络的平滑扩展。
3)FabricPath与现有二层交换冲突吗?
FabricPath的前提是不破坏现有的二层交换行为,FabricPath网络对已部署的接入设备来说是一个透明连接。
4)如何部署FabricPath?
在支持FabricPath的设备上将端口配置为FabricPath模式,系统会自动完成地址分配、路由建立等行为,无需手动干预。
5)什么是TRILL?
为了实现二层多路径功能,IETF在RFC5556中定义了一套方法,命名为Transparent Interconnection of Lots of Links,又名TRILL。
6)FabricPath是私有协议吗?
FabricPath是Cisco的市场词汇,用来表示思科的二层多路径技术,所以,FabricPath不是一项私有协议,但它是思科的私有技术实现。
7)FabricPath同TRILL的关系?
Cisco在TRILL标准制定过程中参与极深,并且积极推动TRILL的最终成型。FabricPath是TRILL正式标准化之前,Cisco推向市场的“Pre-Standard”技术,基本内容与TRILL相同, 增加了“基于会话的MAC地址学习”、“Vpc+”和“多重拓扑”等高级功能。FabricPath架构与TRILL完全兼容,Cisco承诺FabricPath平台将全面支持TRILL协议,TRILL正式标准化之后,通过软件升级,现有FabricPath设备能够与标准的TRILL交换机互联互通。
8)什么设备能够支持FabricPath?
2010年Cisco在Nexus 7000交换机上发布了一块支持FabricPath的32口万兆光纤板卡,以及相应的软件。未来,FabricPath技术会扩展到更多的Nexus 7000和Nexus 5000交换机上。
9)市场上还有那些类似FabricPath的解决方案?
目前没有完全相同的产品,Juniper的QFabric在二层扩展方面与FabricPath类似,但QFabric是一个私有架构,目前也没有开放的时间表。