这个实验有点长,看官慢慢看!

传说中用来取代生成树(Spanning-tree)的FabricPath(这个还真不太好翻译,就简称FP吧),到底是啥?先别急,首先回顾一下生成树协议,作为二层网络的防环路机制,生成树确实有积极的一面,不过缺点也是一大堆啦:

1.    收敛很慢,论秒计的速度;

2.    运算机制也比较复杂,配置管理和维护也相对复杂;

3.    网络里有接口被BLOCK,才能形成无环路的树;

数据中心网络里,这些缺点都会进一步被放大,设想:一台服务器连接到网络上,需要若干秒才能开始转发数据,这个速度太慢了;一个巨大的二层网络的生成树维护,想想也是醉了的;花了大价钱买来的10G、40G甚至是100G端口,却被置于BLOCK状态,那可真是叔可忍婶儿也不能忍啊!

小小的吐槽了一下生成树,当然是为了显示出社会主义制度,哦,不对,是FabricPath的巨大优越性:

1.    收敛速度大大加快,FP的底层协议是ISIS,ISIS作为一个路由协议的收敛速度可以达到毫秒级;

2.    虽然原理并不那么简单,不过配置起来那就… 哈哈哈,容我大笑五分钟;

3.    一个二层网络,居然不用BLOCK任何端口也不会产生环路,好神奇,对比生成树,最起码带宽的利用率高了不少;

实验逻辑拓扑:

wKioL1XNvHni4MuVAAQRxmsilEY615.jpg

实验目标:四台设备互联的标记为绿色的线路上运行FabricPath协议

如果不是运行FabricPath,这样一个二层网络如果不BLOCK掉一部分接口,那环路是不可避免的了,接踵而来的就是广播风暴,最后网络瘫痪,这里用了FabricPath,情况就完全不一样了~

Showtime,实验开始

第一步,允许设备运行FabricPath

wKiom1XNuoqBaFD9AACK4cy3UIY536.jpg

DefaultVDC里开启FabricPath这个特性集,然后到需要运行FP的VDC里去开启FP

wKiom1XNusvTUiXWAABzPt7AxLE856.jpg

wKioL1XNvOXxnvddAABvgudIs6M754.jpg

N5K也类似,

wKiom1XNvATAGuT_AACq-84T7fY858.jpg

wKiom1XNvBaDVqgnAACdWItg49g308.jpg

第二步,定义FP模式的VLAN,

wKiom1XNvCzyuy6BAAF6jw7iJjQ096.jpg

可以看出VLAN的模式有两种CE和FabricPath,关于这个模式是啥意思,最后详细说明下 (每台设备上配置VLAN的方式是一样的,我这里就只贴一个图了)

第三步,把互连接口配置成FP模式

wKiom1XNvEjCtQqCAAExxdxVl4A516.jpg

wKioL1XNvtWTtOSxAAFtf_dCCSc093.jpg

wKioL1XNvoqgk8wLAAJv7LsHyKQ297.jpg

wKioL1XNvxTRTHMcAAJzXhP3wbk210.jpg

好吧,事情发展到了这个地步,我必须告诉你们,FP的实验已经做完了…

wKioL1XNv6OzMwTAAAI0EgT0O2I339.jpgwKiom1XNvbqR-Jy2AAJmtUsVcRM161.jpg

邻居建立成功,控制层面开始计算,生成FabricPath路由表和MAC地址表之后,数据层面该怎么转发就怎么转发啦~

FabricPath的基本操作就是这么简单,

 

细心的同学可能会问,为啥两台N7K之间的链路没有运行FabricPath呢,这个留个大家去思考一下咯?小提示,结合实验一里面的“主干、枝叶”结构去思考~

根据以上实验,补充一些关于FabricPath的知识点,不关心理论的,请直接忽视啦

wKiom1XNvePz48rRAAPISQVNzQQ052.jpg

传统生成树网络中,Server A要访问Server B,过程是这样的:基于数据帧头部里的Destination MAC信息,ServerB的MAC地址是MAC B

帧头部包含的信息

Destination MAC

MACA)

Source MAC

MACB)

… …

DC2-N5K-1交换机上去查CAM表

设备 MAC 端口
DC2-N5K-1 MAC A E1/15
MAC B E1/21-22

通过E1/21-22转发给DC2-N7K-3,

于是,逐跳逐跳的,数据帧从DC2-N5K-1 -> DC2-N7K-3 ->DC2-N5K-2 最后到达Server B,是传统网络中的二层交换过程。其核心的思路是转发是逐跳的,每一跳都要根据地址进行表项查找,这种执行效率是比较低下的。

FabricPath原理相对于二层交换,非常类似于MPLS相对于传统路由的关系,FabricPath在原有数据帧的前面增加了一个新的二层头部(MAC in MAC),于是网络的选路不再基于MAC信息,而是基于新头部中的信息 – – – Switch ID。

FP网络中每个节点都有一个唯一的Switch ID(类似于路由协议的router-id),协议会分配,也可以手工指定Switch ID,但必须保证唯一性;FP的底层协议是IS-IS,IS-IS根据Switch-ID来做二层路由计算,在二层路由中用到的表项有两个FabricPath IS-IS路由表、 FabricPath路由表和mac address-table,

FabricPath IS-IS routing table,到任何一个Switch-ID应该从哪个接口转发,

例如下图红框:60是通过Port-Channel200可达,

wKiom1XNv2DSUBQEAAGkLrQUaqA849.jpg

Mac address-table,除了MACVLAN 等信息之外,还有SWID/SSID/LID,例如40/0/210

wKioL1XNwYGBpt2FAALTZSnCT5A981.jpg

SWID Switch-ID,FabricPath环境中设备的标识符,必须唯一不冲突
SSID SubSwitch-ID,没有vPC+,这个值始终为0
LID

FabricPath头部里的Port-ID,用来标识交换机上的具体接口,

(这个值看起来会很奇怪,不过交换机知道是指的哪个接口啦)

wKioL1XNwjCRJlukAAOnVyD39KA263.jpg

那么这个时候,Server A 到Server B的访问是怎么样的呢?

首先,数据帧到达DC2-N5K-1之后,会被加上一个新的FabricPath 头部

wKiom1XNwDzBWUTyAAYmltdNPjg872.jpg

<—           Outer DA           –><—           Outer SA           –>  

Switch ID Sub Switch ID Port ID Switch ID Sub Switch ID Port ID Ftag ……
40 0 4306 30 0 4306 1

从进入FabricPath的域开始,设备的路由都是基于Switch ID,所有Switch ID该如何到达,在FabricPath路由表和FabricPath IS-IS路由表里可以查到。

并且数据包是直接要求发送往具体某个Switch ID上的某个PortID对应的接口的,End-to-End的方式,(非常类似于MPLS的标签查找,完全区别于基于MAC的逐跳查找)

wKiom1XNwN3BvzojAANS0A3gokU978.jpg

最后我们来看看,FabricPath跟vPC强强联合的情景吧,这种工作场景被称之为vPC+(一般的vPC的二层网络都是运行Spanning-Tree生成树协议的)

wKioL1XNwwChzNs3AAM2Ax6GeEM003.jpg
wKiom1XNwQrjJSrqAAQc82-wiM4315.jpg

vPC跟FabircPath两个家伙,想要一起工作,除了前面实验四里面演示过的vPC配置和实验五上半部分介绍过的FabricPath配置之外,vPC的配置要做如下改动

wKioL1XNwyeQjxhjAALRfVl67Zc828.jpg

FabricPath工作在vPC+的环境下只所以有些特殊,原因是:SwitchID跟设备应该是一一对应的,但是vPC的Peer Switch两台可以看做是一台设备在工作,所以,

vPC+的情况下,vPC的PeerSwitch会增加一个虚拟的节点,这个节点有一个虚拟的Switch ID,称之为VirtualSwitch ID。

 

接入层Switch通过vPC20发送数据,目的地址不是DC2-N5K-1或DC2-N5K-2的Switch ID,而是这两台PeerSwitch虚拟出来的Virtual Switch ID,至于这个流量是从Port7发送还是Port6发送,这个会HASH算法运算之后进行负载均衡。

 

当数据要发往Switch的时候,情形也类似,数据包的目的地址其实是而是这两台PeerSwitch虚拟出来的Virtual Switch ID,数据包到底是从DC2-N5K-1还是DC2-N5K-2走?其实是谁都不重要,最终都会从vPC PeerSwitch共同管理的vPC20走,至于最终是哪台设备来做处理,会用HASH算法计算后做负载均衡。

wKiom1XNwTyAeLSUAAPY5YFDOqo316.jpg

FabricPath IS-IS routing table,会增加一个virtualSwitch ID的条目

Mac address-table,除了MAC、VLAN、老化时间等信息之外,还有SWID/SSID/LID,例如: 70/0/0

wKioL1XNw1uRFw5gAAGZDauIdcs430.jpg

Mac address-table,除了MAC、VLAN、老化时间等信息之外,还有SWID/SSID/LID,例如: 70/0/0

SWID vPC+环境里,是vPCdomain里配置的virutal Switch-ID
SSID

用来标识vPC+下的一个Port-Channel,

可以这么理解,在vPC+环境中,这个值标识出接口,只不过这个出接口是个virtualPort-Channel

LID无意义

wKioL1XNw7-Sy5GeAAT9RxKLWAc941.jpgwKiom1XNwdfxHi9xAARUEmv0Qls760.jpgwKiom1XNwf6QJDKJAAKn1x67GjQ025.jpgwKiom1XNwgvwRorFAALUuPXSTOc794.jpg