FabricPath技术简介
FabricPath是一个思科的私有技术,纯IDC(因特网数据中心)的技术。只能用在思科设备的Nexus 5K 6K 7K 9K系列的产品。
Farbic网络就等同于vxlan中的overloay网络。穿越底层的underlay,在这个底层基础之上实现彼此之间的互通就叫做fabric。说大白话就是vxlan就像ospf,fabric就像EIGRP,简介明了。
FabricPath技术引入
树形管井状结构
传统的网络结构就是树形管井状。南北向流量带宽的瓶颈一般就是在Core的外网接口
但是往往实际情况中,东西向的流量是远远大于南北向的流量的。流量都会通过核心设备,所以我们的核心设备的带宽瓶颈很大
数据中心的三个阶段
之前的数据中心网络结构经过的三个阶段
STP 生成树
传统的生成带宽利用率很低
并且线路切换的速度很慢
线路会经常抖动,抖动会带来长期的线路中断
CSS 堆叠+聚合
CSS堆叠只能两台交换机来做,两台交换机当作一台交换机,并且一个控制平面
聚合可以实现多条线路捆绑,实现带宽聚合
但是在现在的虚拟化盛行的情况下,这个技术也是不太行的,特别是虚拟机的迁移牵扯到更换IP的问题
我们如果现在更换网络结构,全部都更换为二层的网络结构呢
此时的网关就在核心,下面的网络都是一个大的局域网。但是这种情况下还是不能解决核心的流量负载大的问题。
还有一个问题就是广播信息包会大量的泛滥
关键就是还有一个问题,传统的网路,由于堆叠的限制就只有两台。当接入层的设备假设为48口的,每个口10G,总共480G。问题就在于汇聚层的堆叠的设备最对为2台,此时接入层设备上行的线路也就只有两根线路,最大的流量瓶颈就为20G。虽然可以多几根线路做聚合,但是聚合最多8根链路就上限了,也就是说最大上行的带宽就为80G流量。并且现在的业务情况下,东西向的流量是远远大于南北向流量的
所以现在的树形管井状网络拓扑是远远不能满足现在的实际要求的
传统以太网接口对于当前日益扩大的互联网环境(多业务,复杂,多元化)之下以及不能够适用了。现在的设备的造价成本很高,业务的东西向流量又很大,会造成业务的瓶颈。此时就会迎来大二层的架构
大二层技术
虚拟机迁移,相同的IP地址段内进行迁移,这个技术也会导致核心设备中的流量负载很大
骨干分支架构
Spine代表骨干,Leaf代表分支。把原来的三层架构变成了二层架构。每一个接入交换机直接连接骨干交换机,骨干和骨干之间不相连,分支和分支之间不连接,简化了二层架构
如果骨干和骨干相连,分支和分支相连会导致设备之间出现带宽瓶颈,会占用其他的设备
解决数据中心的一些问题
骨干分支架构一旦面临上行带宽不够,我们就可以增加我们的骨干设备数量,增加分支设备即可。扩展性非常的强,并且不会影响到原有的任何业务
骨干设备都是框式设备,上面是可以增加业务板的,不用考虑接口不够的问题
不需要运行生成树,解决了带宽利用率(注意:生成树在设备中是开启的,但是不用进行使用。STP在底层起到一个保障的作用)
不需要用到堆叠了,因为我们这个结构的可扩展性很强
并且也可以实现整个的二层网络,虚拟机迁移更加的方便了
而且上行带宽的瓶颈问题也解决了
骨干分支架构更加的适合东西向流量大的问题
面临的问题
虽然骨干分支结构解决了很多问题,但是这种大二层结构会存在巨大的网络风暴,所以我们要用到FabricPath这个新的技术来解决Fabri(也可以叫大二层)结构弊端问题
FarbricPath技术优势
FabricPath是一个纯二层的技术,不会涉及IP。它是集成了二层和三层的优点
二层优点:
配置简单,即插即用
三层优点:
多路径,负载均衡,收敛速度快
fabric最多支持16X对外链路,farbic是基于二层的ISIS协议进行承载,不需要建立IP的环境
FabricPath的域
整个leaf交换机和Spine交换机接口之间的区域都是fabric域,有点像underlay网络的感觉,而leaf交换机的下面运用的还是经典的以太网结构。leaf交换机和fabric交换机都可以称为fabric设备
leaf交换机就相当于VXLAN的NVE设备,
在fabric网络当中,接口连接到另一个FabricPath装置。发送/接收与FabricPath报头。不运行生成树。不执行MAC学习。通过L2的ISIS邻接交换拓扑信息。基于交换机ID的转发表。
FabricPath角色
port角色
FabricPath edge port
EP接口=edge port=边缘端口
leaf设备的下行接口叫做EP接口
FabricPath core port
FP接口=core port=核心端口
leaf设备的上行接口叫做FP接口
FabricPath(FP)网络组件构成
FabricPath-控制层面
-
DRAP
DRAP叫做动态资源分配协议,主要作用就是分配SID。SID可以动态分配,也可以静态指定(思科官方建议静态指定) -
FabricPath ISIS
ISIS是承载协议。ISIS结合DRAP来建立邻居,下发传递SID。 -
单播路由表(FIB表)
-
组播路由表(FIB表)
-
MAC地址表
MAC地址表是根据数据层面自动产生的 -
IGMP协议
FabricPath-转发层面
-
MAC地址表
-
单播路由表(FIB表)
-
多播(组播+广播)的FIB表
-
switch ID table
-
硬件表格(硬件注册表)
FabricPath数据转发
SID定义规则
S100 S200 S300 表示的是SID,SID一般单纯的用阿拉伯数字进行定义,最多是2-4位之间。
XX - spin,两位
XXX - leaf,三位
XXXX - vswitch,四位
查看FabricPath ISIS 路由表
show fabricpath isis route
度量值metric=400/BW,这个表是定义去往那个SID,从哪个接口出去
FabricPath pruning 修剪
假设PCA的MAC地址为A,PCB的MAC地址为B,当PCA发送消息去PCB经过SW1时,SW1会学习源MAC地址,并且每个接口都会进行泛洪,当其他的交换机收到了这个广播包也会学习这个源MAC地址
但是对于中间的这个交换机是没有必要学习这个源MAC地址的,下面都没有主机,没有必要学习。每个都学的话会增加MAC地址的大小,消耗设备资源。
此时我们假设SW1和SW3连接PC的接口都属于VLAN 10,此时PCA访问PCB,数据经过SW1会进行消息泛洪,当上面的交换机收到这个泛洪消息之后发现中间的这个交换机是没有VLAN 10的,因此上面的设备就不会给中间的交换机发送,会把这个泛洪消息修剪下去。这样就可以最大化的通过修剪来减少每个设备不必要的设备之间的关系
FabricPath MDT表
MDT(Multi-destination tree)表,专门用来处理广播包,组播包,未知单播包。MDT叫做多目的树,是查询广播的泛洪路径的
注意:在FP网络中数据该泛洪还是得泛洪,因为它毕竟是个二层。但是设备毫无规则的进行泛洪,会导致设备的性能浪费。这个时候它就会计算一个MDT表,相当于计算一个泛洪路径。方式设备瞎泛洪
它会在整个FP网络中选出两个树(多目的树,不是生成树),假设S10作为一棵树的根桥,S40作为另外一棵树的根桥。当A给B发送消息时,数据经过SW1时会学习一个关于源MAC的MAC地址表,并且会进行一个泛洪,四根线都会泛洪出去,但是由于S10是根桥,所以S10负责给下面的所有的leaf交换机发送泛洪包,剩余的交换机不会进行这个泛洪消息的发送。但是不可能只让一个根桥交换机来发送泛洪消息。比如当B给A发送消息时间,SW3会把消息从四根线泛洪出去,但是由于S40也是根桥,所以S40负责给下面所有的leaf交换机发送泛洪包,剩余的交换机不会发送(注意:这个不是远近的关系)。
注意:每个FP网络中都会又两颗树,也是相当于两个根。实现了一个充分利用各个线路带宽资源。当一个根出现问题了会选另外一个根。在FP网络环境当中,SW1泛洪的消息到达了S10之后是不会学习源MAC地址的。当SW10又继续把泛洪消息发送到SW3时,它也不会学习到。当SW3将这个泛洪信息包泛洪到B时,B收到之后就会回复一个arp的replay消息,此时SW3收到之后会学习到源MAC的信息(但是注意:SW3上是没有去往目的MAC地址的信息的),SW3还会继续泛洪。假设SW3选择的是第二棵树,S40收到之后发送给了SW1上。此时SW1就会学习这个PCB的MAC地址(SW1学习到的这个MACB地址对应的出接口为SID300,此时不是对应的接口了)。此时PCA就可以正常的根PCB传送数据了(已经有了ARP对应数据了),此时A就可以给B回单播数据了,当A给B再发送消息的时候SW1就会根据数据流来进行一个负载均衡。当数据发送到SW3上的时候,SW3此时就会学习源MAC了(MACA地址对应的出接口为SID100)
关键点来了:当PCA给PCB发送消息到达leaf交换机之后(S-MAC=A,D-MAC=B),leaf会让这个数据从以太网接口进入FP接口,并且查询MAC地址表。它会在当前的这个情况下会再做一个封装(S-MAC=S100,D-MAC=300,这里用MAC有点客观),接下来就进入FP网络了。SW1就会查询fabric ISIS 路由表,然后发现去往S300有port1,2,3,4。此时就会进入一个hash负载均衡
在整个FP网络环境中的广播数据包,在学习源MAC地址的时候有一个核心思想:它的MAC地址表里必须要有你去往的目的MAC的时候才回去学习源MAC,也就是说没有目的MAC不学习源MAC。
FabricPath MAC地址表
注意:现在新的Nexus产品把以太网的接口不再用e0/1类型表示了,而是用一个本地的local ID(LID),例如为33。等于就是弄了一个编号来对应到每一个以太网的接口上(因为思科通过计算发现直接去查接口很慢)
例如:
VID | MAC地址 | 出接口 |
---|---|---|
10 | A | 33 |
FabricPath 配置命令集
en
conf ter
install feature-set fabricpath //装载fabricpath组件
feature-set fabricapth //开启fabricpath服务
fabricpath switch-id 11 //给本机指定一个SID
int e7/1-2 //进入接口下
switchport //打开二层接口
switchport mode fabricapth //在FP网络的域里面的接口都开启
no shutdown
exit
vlan 1-64
mode fabricapth //在承载业务的vlan开启fabricpath
end
注意:ISIS不需要配置,它是集成在fabricpath里面的,系统自动协商