vPC

一、概述

1、技术背景

Campus Network和DCN架构在之前采用的都是层次化架构,也称为**传统架构**。传统架构中二层的主要需求就是实现二层网络需要冗余和高可用,于是一般都会部署多节点,多链路来保证设备级和链路级冗余,但是会存在二层环路的隐患,二层环路需要被打破,于是STP诞生。随着STP的应用,厂商发现STP也存在很多问题,比如收敛速度慢,链路带宽利用率低等,于是厂商经过了几代的改进,最终诞生了MSTP。而网关级冗余技术FHRP,在数据层面让业务有了网关高可靠的保障,人们在设计的时候将MSTP和FHRP配合使用,尽量的提升链路利用率和冗余两种特性,这种设计在一段时间内是主流。

时代造就了生成树,但是随着生成树的广泛应用,厂商发现了这种协议存在三个不可忽视的问题:

  • 故障后收敛速度慢:一旦二层拓扑发生变化,生成树收敛时间将高达50s,如果根出现问题,那么整个生成树则需要重新计算,收敛时间将更长。这会导致重要领域例如ISP、金融、军队等造成巨大损失,尽管可以通过修改定时器去优化,但是并没有从根本上解决问题。

  • 链路带宽利用率低:生成树的特点就是通过阻塞端口来实现二层形成树状无环拓扑,这就导致73%的链路将得不到利用,对于数据中心来说,这意味着付出更多的成本。

  • 数据中心间共享故障域:数据中心之间二层网络如果互相打通,那么故障域将会被放大,影响的范围也随之增加。

通过MST/RPVST+可以在多个STP实例之间来分发VLAN,但是这种需要手动配置才能完成,并且在某些流量模型中会变得相当繁琐。

厂商针对MSTP+VRRP架构进行了革新,提出了堆叠和跨设备链路捆绑技术。两种技术本质上就是真正实现高可用、高带宽、高扩展。堆叠和跨设备链路捆绑的重要区别就是控制平面是否只有一个。同一种技术在不同厂商中的叫法不同,这也是网络工程的一种特点:

NOTICE:vPC只能在Nexus Series Switches设备上支持,Catalyst Series Switches不支持。

vPC is a virutalization technology that presents both Cisco Nexus paired devices as a unique Layer 2 logical node to access layer devices or endpoints. vPC belongs to Multichassis EtherChannel(MCEC)or Multichassis Link Aggregation(M-LAG) family of technology.

根据思科对vPC的定义可以了解到vPC只能在一对设备上进行L2的逻辑虚拟化。

vPC(Virtual Port-Channel,虚拟端口通道)是一种实现跨设备链路聚合的虚拟化技术,属于MCEC或者M-LAG技术族。vPC将2台Nexus在L2上看作一个逻辑节点,接入设备只需要本地做Port-Channel,物理链路上联到两台Nexus上,从而把链路可靠性从单板级提高到了设备级。vPC采用数据层面的防环,而非生成树式的控制层面防环。vPC的优点:

  • 高带宽:充分利用上行链路带宽。

  • 故障收敛快:故障后快速收敛。

  • 数据层面防环:消除STP对链路block端口的情况。

  • HSRP/VRRP双活:vPC针对传统架构中的HSRP/VRRP进行了改进,将原本数据层面的Active/Standby转发模式,改成了数据层面Active/Active双活模式。

数据中心二层技术发展从2008年使用STP、2009年使用vPC、2010年FEX with vPC、2010年FabricPath with vPC+、2013-2014年的VXLAN、MPLS、OTV、LISP。事实上vPC和FabricPath技术都是在解决STP block端口导致线路利用不充分的问题,那么解决的更深层次问题就是提高冗余性并同时增加带宽。但是在实际部署时,需要确保STP仍然作为保底解决方案(Fail Safe),以至于vPC/FabricPath在down时,二层不会产生环路。

2、应用场景

vPC应用在Campus Network或者DCN都可以,但是大部分DCN用vPC居多,Campus Network使用VSS。传统DCN中vPC一般可以部署在汇聚层和接入层,云DCN中vPC用于Server Leaf间,用于提供服务器的双主接入。

二、技术原理

1、基本组件

1)Domain&Role

Domain

vPC Peer双方均需要定义Domain,且Domain id需要一致,不至于让错误的两台设备组成vPC。vPC通过Domian id来生成vPC system-mac, vPC Peer会使用该mac对外表示“一台设备”。Domain id生成vPC system-mac的机制:

Role

域中有两个角色,primary和secondary。可以通过设置role priority值来指定角色,priority小的为primary。Primary会成为operational primary,secondary会成为operational secondary,实际起作用的是operational X,operational primary有两种权力:

  • 处理ARP和BPDU报文。

  • Peer Link down,operational secondary会shutdown所有Member Ports和SVIs。

当Primary故障时,secondary会切换到operational primary,即使Primary恢复,role是也不会抢占。

2)Keepalive Link

Keepalive Link的主要功能就是对端存活检测和避免脑裂(Split Brain):

  • 对端存活检测:vPC Peer每秒发送一次keepalive报文(3200/udp)以检测对端是否存活。

  • Peer Link down时,检查是否为线路断开还是设备down:一旦Peer Link down,检测机制启动(keepalive timer启用):

    • Peer Link恢复<3s,Secondary不执行任何动作;

    • 3s<Peer Link恢复<8s,判断为线路断开,Secondary执行动作:suspend所有Member Port和SVI,以防止脑裂。

RECOMMENDATIONS-物理层建议

  • 建议Double Dedicated Links as a Port-Channel、L3互联,次建议OOB网络L3互联。

  • 对于模块化的Nexus 7X00/9500 Series:建议Dedicated Link,次选MGMT接口(双引擎,具备双MGMT口)。

  • 对于非模块化的Nexus 9300/6000/5X00/3X00 Series:建议MGMT接口,次选Dedicated Link。

RECOMMENDATIONS-PKL配置建议

  • 将keepalive接口划入VRF中,只跑keepalive流量。

  • 不要在二层Peer Link上建立SVI来创建Keepalive Link。

3)Peer Link&CFS

Peer Link

Peer Link用于表项同步和配置一致性检查,当然也会承载流量,Peer Link非常重要。由于两台vPC Peer控制平面仍然独立,所以一些信息例如Mac表、ARP表、BPDU报文需要同步,同时会进行vPC配置检查,如果检查不一致会报错,需要手动检查配置错误。Peer Link中承载的信息:

  • 传输vPC VLAN、non-vPC VLAN(但不建议)。

  • CFS message。

  • Flooded traffic from the other peer device(承载业务流量)。

  • STP BPDU、HSRP hello、IGMP updates。

RECOMMENDATIONS-物理层建议

  • 确保Peer Link至少两根10Gbps物理链路逻辑捆绑成Port-Channel,并且设备间直连,如果是模块化交换机,建议将物理链路规划到不同的线卡上。

  • 规划线卡时注意两侧交换机的线卡型号需要一致(例如M1-M1、M2-M2、F1-F1、F2-F2,F2-F2E除外)、最大支持多少物理口捆绑成Port-Channel(M1\M2最多支持8个物理口,F1\F2\F2E\M3支持超过16个物理口)。

  • N7000-N7700支持组建vPC;N5500-N5600不支持组建vPC。

  • 如果使用vDC,那么vDC类型需要一致。

RECOMMENDATIONS-PL配置建议

  • 区分开vPC VLAN和non-vPC VLAN:Peer Link只allow vPC VLAN,Orphan port跑的non-vPC VLAN最好跑在另外的线路上

  • vPC allow的VLAN,必须在Peer Link上也allow。

CFS

CFS跑在Peer Link上,CFS默认是启用的。其作用就两个:表项同步和检查配置一致性。表项同步包括MAC地址、成员端口、成员端口状态、STP、HSRP和IGMP snooping。一致性检查有两类:

Type-1:When Type 1 inconsistency check is detected,radical actions are taken:

For global configuration type 1 inconsistency check, all vPC member ports are set to down state.

For vPC interface configuration type 1 inconsistency check, the misconfigured vPC is set to down state.

检查global和interface configuration;如果global参数配置一致性检查不通过,那么会将所有Member Port shutdown。如果interface configuration配置一致性检查不通过,会将错误配置的vPC shutdown。

Type-2:When Type 2 inconsistency check is detected,moderate action or no action are taken:

For global configuration type 2 inconsistency check,all vPC member ports remain in up state and vPC systems trigger to protective actions.

For vPC interface configuration type 2 inconsistency check,the misconfigured vPC remains in up state.However,depending on the discrepancy type,vPC systems will trigger protective actions.The most typical one deals with allowed VLAN in vPC interface trunking configuration.In that case,vPC systems will disable from the vPC interface VLAN that do not match on both sides.

检查global和interface configuration;如果global参数配置一致性检查不通过,vPC Member Ports仍然是up的。如果interface configuration配置一致性检查不通过,错误配置的vPC仍然是up的。但是这种方式可能会导致流量异常,系统会产生不一致的syslog,不建议使用。

RECOMMENDATIONS-全局配置建议

  • 在特殊场景下可以先将一致性检查改成Type2,以保证流量持续转发。

4)Member Port

Member Port是指被绑定进vPC的端口,Member Port必须是switchport(Access/Trunk)。如果模块化交换机组建vPC,那么规划Member Port时,需要注意两侧交换机的线卡是否型号一致,不一致无法组建vPC。

RECOMMENDATIONS-MP配置建议

  • 配置时vPC id和port-channel id建议一样,便于管理、排障。

  • Member Port接口放行的VLAN,Peer Link上也需要放行。

  • 配置时两边设备的Member Port需要一致,如果检测到不一致(Inconsistency),VLAN或者整个port channel将被挂起(Suspend)。举个例子,MTU不匹配将导致Member Port被suspend。

  • 接入交换机只需要配置LACP或静态链路捆绑,建议使用Active-Active,而不是Active-passive,因为AA起EC比AP快很多。EC的hash算法建议使用source-destination IP,L4 port and VLAN。

2、vPC流量转发机制

vPC的流量转发机制遵循本地优先转发,通过数据层面防环机制来避免二层环路。

流量经过HASH后随机扔到vPC链路上(绿色和蓝色流量被扔到了不同的链路上),流量到达vPC Peer,vPC Peer会学习从Member Port传过来的帧的MAC,并使用CFS执行MAC地址表项同步(vPC Peer不会学习从Peer Link传过来的帧的MAC)。正常情况下的流量转发:

  • 如果本地有先前学习到的MAC,那么优先本地转发。

  • 如果本地vPC链路有问题,才会被发送到Peer Link上,由vPC Peer负责转发,此时vPC Peer是不会触发任何防环机制的。

  • 以太网广播帧转发:

  1. HASH:流量通过HASH随机发送到vPC链路上。

  2. 广播帧泛洪:Peer1从Member Port接收广播帧,复制并发送到除接收到的接口之外的所有接口。

  3. 泛洪广播穿越Peer Link:经过Peer Link的广播帧发送到Peer2。

  4. vPC防环机制:该帧不允许转发到任何Member Port上。

vPC防环机制:如果流量从vPC Peer的Member Port接收后通过Peer Link转发过来的帧不会从本地的任何Member Port出去,但是可以发送给其他类型端口例如L3 Port、Orphan Port、非vPC接口等。

vPC防环机制失效:当vPC Peer Member Port故障时,无法从本地优先转发时,需要发送到Peer Link上由vPC Peer代为转发,此时vPC Peer不会触发防环机制。