扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:libing 2011年3月24日
关键字: FabricPath 数据中心网络
在本页阅读全文(共2页)
二、FabricPath:从“交换”到“路由”
L2不给里的原因
我们知道FabricPath的目标是为传统二层环境设计一个增强型方案,以屏蔽原来的缺陷,实现对数据帧的“路由”转发。要明白FabricPath是怎么做到这点的,首先要看看layer 2这些不给力的毛病到底是怎么出来的?
传统二层以太网环境中的数据转发是非常简单的,一台二层交换机一辈子干的活可以用以下几句话概括:
1)收到数据帧–>2)查看目的地址–>3)查看MAC地址表–>4)将数据帧从对应端口送出去
偶尔,当这个流程进行到第三步时,交换机会发现目的地址不在自己的MAC地址表中,它会怎么做呢?这台茫然的交换机就会将这个数据帧从所有的端口广播出去!没错,是整个帧从所有端口发送出去,希望其他交换机能知道正确目的地。且不说,这个方式在今天看来是多没有效率,当设备之间存在环路时,这种帧会被无尽地转发下去,最终形成广播风暴。
为了解决这个问题,交换机厂商引入了STP。STP的机制也极其简单,就是通过阻断二层端口来防止环路,并阻止数据帧从其接收到的端口再转发出去。
广播帧在任意节点只会被转发一次,避免了被永远转发下去。但如前所述,运行STP的代价是非常昂贵的,接入设备只有一条上联链路没被block,而且,在复杂的网络连接中,控制STP的行为变得很困难,一旦出现震荡,其收敛效率也非常低下。
另一方面,二层交换机通过学习接收到的数据帧的源地址建立MAC地址表,所有接收到的数据帧源地址都会被放进MAC地址表中,导致一台交换机可能学习到整个网段内的所有二层地址,就算它大部分时间只跟其中的一小部分有联系。
由此可见,今天的二层网络过于简单,交换机只会学习网络地址,不会基于学到的地址规划出一套转发数据的最优方案,它的问题类似于只有一个数据平面,没有控制平面的概念,这就导致二层交换机不可能有效地进行“路由”,从而引入了STP等一系列问题。
FabricPath的实现:新的控制平面
既然二层网络的问题是控制平面的缺失,FabricPath的思路就清晰了,那就是重塑一个控制平面。
为了能够高效地支持数据中心扩展,这个新的控制平面需要具备几个基本功能,包括:主动建立邻居关系,并基于链路状态维护一个路由数据库,支持等价路由
支持灵活的寻址方式,保留原有二层网络配置简单的风格。
为了构建这样一个控制平面,FabricPath主要做了以下两件事:
1)新增一个二层帧头
2)增加一套简化的IS-IS路由协议
这个新的帧头添加在原有数据帧之外,包含了丰富的信息,其中最重要的三个字段是源地址、目的地址和TTL。
源地址和目的地址来自FabricPath新定义的一个名为switch ID的全新地址空间,任何一个新加入FabricPath网络的设备都会被分配一个1~4094之间的整数,作为唯一的switch ID,用于标识一台交换机的身份,也是节点之间进行路由寻址的依据。
TTL(Time To Live)字段定义了一个数据帧的最长生存周期。当生成一个数据帧时,其TTL字段被写入一个整数,每当其经过一台交换设备TTL就减一,直到TTL为零时,这个帧将被丢弃。TTL的概念是TCP/IP的基础之一,在FabricPath中,TTL承担了同样的任务,保证数据帧不会在成环的链路中被无限次转发,从而使得二层环境不再需要运行STP协议,不再有链路被Block,这是实现两点之间多路径转发的基础。
相较帧结构的变化,FabricPath更重要的改进在于引入IS-IS这样一套完整的路由协议。IS-IS是一个广泛运行于运营商等大型网络的路由协议,同OSPF类似,IS-IS也是一个链路状态协议,会维护一个链路状态数据库,相比MAC寻址这样的距离矢量行为,运行链路状态协议的设备能够在内存中建立一张包含全网设备的拓扑,并且在这个拓扑的基础上挑选当前链路状态下的最短路径来转发数据。IS-IS的效率很高,且IS-IS区域能平滑地平移、分割、合并,但相较OSPF最大的不同在于,IS-IS可以封装在链路层报文中支持多种网络层协议,而OSPF只能封装在IP包中支持IP协议,这就使得IS-IS能够很容易被移植到FabricPath中,为二层数据帧的转发提供路由服务。
FabricPath中实际运行的是一个简化版本的IS-IS协议,不再依赖MAC地址进行寻址,依靠交换机的switch ID工作,在节点之间交换IS-IS信令构建路由表,IS-IS协议会事先计算出最优路径作为数据转发的依据。有了IS-IS的助阵,FabricPath能够轻松地实现两点之间的ECMP、网络拓扑的快速收敛、以及快速的错误诊断等高级路由功能。
新的地址空间加上IS-IS协议,FabricPath基本建立起一个控制平面雏形,数据平面和控制平面各司其职。如果你是个较真的同学,你的第一个问题该出现了,为什么不延用原有的MAC地址,而要兴师动众地加入一套新地址呢?问得好!
FabricPath中的IS-IS协议会建立一套逻辑树结构,这个结构说明了任意两点间的最优路径,是交换机转发数据的依据。路由协议在计算逻辑树的过程中往往会用到设备的标识号,由于MAC地址在设备出厂时就固定了,不同设备之间的地址没有任何规律,如果使用MAC地址作为唯一标识,生成的将是一个随机结构,这有可能导致最终的转发路径不是当前的最优路径。由于路由协议的算法是写死的,要避免这种情况只能人工调整各个节点的标识大小,这种情况同部署STP时调整交换机的优先级,以保证最优的转发路径是一个道理。然而,FabricPath设计的初衷就是保留二层配置简洁的优势,如果将STP的老毛病一并带过来,无疑大大削弱了对客户的吸引力,不利于现有网络向FabricPath的迁移。
既然是从头设计一套全新的机制,不如追求一把极致,将所有复杂的工作都隐藏到幕后,只呈现给用户最简洁的一面,这就是FabricPath费尽苦心设计一套地址空间的出发点。
FabricPath的工作模式
上图中,数据帧在进入FabricPath网络时,会被打上新帧头,在FabricPath网络内根据帧头里的switch ID进行转发,离开Fabric Path网络时,脱去帧头,进入传统的以太网交换环境。要加入FabricPath网络,只需在交换机对应端口上启用FabricPath模式即可,所有的地址分配和路由策略都自动生成,无需繁琐的配置。
上图是一个典型的FabricPath组网,汇聚设备同接入设备之间为FabricPath网络,FabricPath网络内没有运行STP,多条链路都能够转发数据,目前版本的FabricPath支持16条等价路由,也就是说在使用万兆链路的情况下,任意两点间的带宽可到2.56Tbps(16条等价链路结合,每条等价链路为16个万兆portchannel)。
接入设备作为网关连接了传统以太网络同FabricPath网络,FabricPath网关上可以进行“基于会话的MAC地址学习”,只有那些目的地址为本地设备的数据帧的源地址会被放入网关的MAC地址表,其他数据帧的源地址以及广播帧的源地址都不会被学习,这就保证了边缘网关设备的MAC地址表里只保存与本地有会话关系的MAC地址,这个举措能够大大缩小虚拟化数据中心内接入设备的MAC地址表体积。
基于IS-IS的特性,FabricPath网络设备的switch ID可以动态修改,而不影响流量转发,当数据中心规模不断扩张时,可以利用FabricPath平滑地扩展其汇聚层,并在接入设备间实现高达16条二层多路径(ECMP)。
第二个问题
OK,这一切都看上去很美,但你有没有觉得哪里不对劲?这就是我对FabricPath的第二个问题,以上说的所有这些东西,新增帧头啦、新的选路机制啦,和VPN不是差不多吗?在今天这个技术过剩的时代,难道找不出一个能解决这些问题的现有技术,非要重新折腾出一套新玩意吗?
现有VPN技术种类繁多,但大多数都使用IP包承载,协议开销较大,这与二层具备的快速转发特性是背道而驰的,仅此一项就将IPSec等三层VPN技术屏蔽在可选项之外。剩下的二层VPN中最常见的是类似MPLS+VPLS的实现方式,MPLS是一个2.5层技术,专门用于大量数据的快速转发,但问题是,MPLS的控制平面仍然需要IP报文进行路由,每个节点仍需要进行IP配置,而部署一个MPLS+VPLS网络你觉得容易吗?反正我看着都觉得头大,如果一种局域网技术需要网管人员先学习一遍MPLS,我觉得这种技术基本也没啥戏可演了。
标准化
FabricPath是Cisco近期在数据中心领域最重要的一个发布,同时也预示着基础网络向下一代模型转型的开始。数据中心内不断增长的横向流量推动了二层多路径技术的迅速发展,FabricPath是这股潮流的重要组成部分,但Cisco不是唯一的声音。
目前致力于实现二层多路径的标准化组织主要有IETF和IEEE,两家的标准分别为TRILL和802.1aq,都采用IS-IS作为路由协议,实现方式大同小异。目前,TRILL和802.1aq都已接近完成,预计2011年底就能够正式标准化。
Cisco在TRILL的制定过程中参与极深,虽然FabricPath是Cisco的私有解决方案,但可以看作一个“增强版的TRILL”,是TRILL的基本功能加上“基于会话的MAC地址学习”、“Vpc+”和“多重拓扑”等高级功能的合集。
Cisco已经发布了支持FabricPath的Nexus 7000板卡,并且承诺现有架构与TRILL标准兼容,当TRILL正式标准化之后,只需要升级现有设备的软件,就能够与标准的TRILL交换机互联互通。
三、结语
随着数据中心内虚拟化应用的不断扩张,底层的数据行为也在悄然发生改变,带动了基础架构的演进。未来的数据中心不仅需要大容量、高密度的网络设备,还要能够顺应这种数据行为的变化,并反过来提供经过优化的网络平台,这种从量到质的变化将深刻影响数据中心技术的发展。
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是一个私有架构,目前也没有开放的时间表。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者