9.6 基础vPC设计学习

    大规模虚拟端口通道(Virtual PortChannel,vPC)设计相对比较复杂,因此本案例学习的范围将局限在vPC设计基础方面。所有复杂的设置都基于简单的部件,这一思想也适用于vPC。更多有关vPC基本概念的信息,请参考2.5.1节。本小节将直接探索有关vPC配置问题,但是在开始讨论之前,让我们快速回顾一下与本案例学习有关的一些vPC技术。

    ·vPC:vPC peer设备以及下行流设备间所绑定的端口通道。

    ·vPC peer设备:设备对中的一个设备连接到特定的端口通道,这样的端口通道也被称为vPC peer链路。

    ·vPC peer链路:用来对vPC peer设备之间进行状态同步的链路,链路两端都必须位于10GE接口上。

    ·vPC域:域由两个vPC peer设备组成,同时也可以作为配置模式,来配置某些vPC peer-keepalive链路的参数。

    ·vPC peer-keepalive链路:peer-keepalive链路是一个vPC peer设备之间的L3链路,能够确保两端设备都处于“up”状态。当网络为带外管理模式时,通过这样的备份或容错(FT)链路在vPC peer设备之间发送可配置的、周期性的keepalive消息。

    ·vPC成员端口:属于vPC的vPC peer设备的物理接口。

    简言之,vPC克服了生成树协议(Spanning Tree Protocol,STP)的局限性(更多细节请参考2.5节的相关内容)。现有DC拓扑从基于STP模式迁移到基于vPC模式,能够获得以下好处:

    ·允许一个下行流设备使用单独的端口通道穿越两个上行流设备。

    ·不需要借助STP的帮助,就能实现无环拓扑。

    ·减少了被STP封锁的端口。

    ·能够利用所有可得的上行链路带宽,而这一点之前STP是无法办到的。

    ·如果有某个链路或设备(节点)发生故障,缩短了会聚时间(与STP相比)。

    ·确保链路级的可靠性及高可获得性。

    基本的vPC配置

    “K”企业希望从一个不同的角度来处理他们的私有云计算初始化问题,不同于直接从物理或虚拟接入层启动,“K”企业希望从汇聚层而非物理接入层开始工作。IT管理部门赞同采用vPC来改造企业现有STP的方案,长期以来,STP已经成为他们的噩梦,现在他们终于等到这一天了。企业“K”购买了一对Nexus 7010(NX7010)和Nexus 5020(NX5020)交换机,希望用NX7010交换机加上vPC来代替企业当前的Cat6K汇聚层交换机,并结合NX5020交换机一起构造一个支持10GE/FCoE的物理接入层。Cat6K交换机在服务汇聚层最后将被当做服务器机箱(更多细节请参考3.1节的相关内容)。

    说明:除了汇聚层,也可以在核心层或接入层来实现vPC。

    图9-15展示了利用两台Nexus7010和两台Nexus5020交换机构建一个简单vPC的样例。我们将以此图为基础,在后续章节中完成以下内容的讨论,包括:

    9.6 基础vPC设计学习 - 图1

    图 9-15 简单的vPC设置

    ·配置vPC域

    ·配置vPC peer链路

    ·配置vPC

    上述配置(或代码)都基于图9-15的描述内容。

    说明:图9-15中的两台Nexus 7010交换机的NX-OS版本为5.0(3)。

    图9-15中,NX7K-1和NX7K-2均为vPC peer设备,端口通道1000是NX7K-1和NX7K-2之间的vPC peer链路,将接口Eth2/1和Eth2/2分别绑定到这些交换机上,在NX7K-1的管理接口(mgmt0)和NX7K-2之间通过带外管理网络建立了一条vPC peer-keepalive链路。即可偶Eth3/1和Eth3/2构成了交换机之间vPC成员端口。

    说明:在实现vPC时,vPC peer设备或物理节点最多为2个。

    vPC部署的基本步骤包括:

    1.在两个vPC peer交换机(NX7K-1和NX7K-2)上配置全局性的vPC域。

    2.在两个vPC peer设备间配置并建立一个peer-keepalive链路。

    3.在两个vPC peer交换机重用或新创建一个内部交换机端口通道。

    4.将内部交换机端口通道配置成两个vPC peer设备间的peer链路(要保证这一步能正确执行)。

    5.重用或重新创建端口通道,形成双附接下行流设备(NX5K-1和NX5K-2)。

    6.配置一个唯一逻辑vPC,加入这些穿越在vPC peer交换机之间面向接入层的端口通道。

    说明:为了确保能成功建立vPC域,peer-keepalive必须可控。

    配置vPC域

    代码清单9.12和代码清单9.13分别描绘了为NX7K-1和NX7K-2配置vPC域的过程。

    代码清单9.12 配置NX7K-1的vPC域

    9.6 基础vPC设计学习 - 图2

    代码清单9.13 配置NX7K-2的vPC域

    9.6 基础vPC设计学习 - 图3

    可以调用“feature vpc”命令来激活交换机上的vPC,可以使用“vpc domain 10”命令在两台交换机上都创建一个vPC域10。

    说明:vPC域的ID与多vPC层(多层vPC)不同,基于LACP的配置允许使用唯一的L2链路汇聚ID。

    vPC域同时也是配置角色优先级以及keep alive的配置模式,当实现一个vPC时,一对vPC peer交换机会被当做一个STP实体,vPC角色定义了由两个vPC peer中的哪一个来处理BPDU?优先级较低的将取得控制权。如果是线路中断器,则较小的系统MAC地址会取得控制权。在本例中,NX7K-1被配置成主vPC peer,角色权限为1000,NX7K-2被配置成从vPC peer,角色权限为2000。如果发生peer-link故障,将由peer交换机的vPC角色来决定后续行为(更多细节请参考本书第2章的相关内容)。

    说明:主vPC peer设备通常与STP根和主HSRP peer是同一设备。

    在设置过程中,通过管理模块的管理接口(mgmt0),带外管理网络可以被用作成peer-keepalive(容错)链路连接,可以通过调用“peer-keepalive”命令实现NX7K-1和NX7K-2的IP地址对等处理实现这个功能。

    说明:推荐使用独立端口,特别是1GE,作为连接vPC peer设备间(不一定需要直接链路)的peer-keepalive链路,这样的端口应该属于某个单独的VRF。管理接口(mgmt0)默认属于管理VRF,也是唯一被认可是该VRF的接口部分,NX-OS默认创建该管理VRF。

    端口3200上的peer keepalive是一个UDP消息,长96字节(有效长度为32字节),包括了版本、时间戳、域ID以及本地及远程IP地址信息。它构成了两个vPC peer交换机之间的心跳,用于双活(非peer-link)检测。

    vPC peer keepalive的过程分成三步:

    ·Keepalive间隔:vPC peer-keepalive消息的默认间隔为1s,可以配置范围为400ms~10s。

    ·Keepalive允许的超时范围:默认允许超时为3s(可配置范围为3~10s)。当vPC peer链路失效时,定时器开始计时,在这段超时范围内,从vPC peer设备将忽略vPC peer-keepalive消息,这种方法能够在vPC活动开始之前网络会聚。设置keepalive允许超时,是为了防止发生假阳情况。

    ·Keepalive超时:默认超时时间为5s(可配置成3~20s),当已经过了之前系统允许的超时时间后,定时器开始计时,在超时阶段开始后,从vPC peer设备将检查来自主vPC peer设备的vPC peer-keepalive hello消息,如果从vPC peer设备只收到一个hello消息,它将禁用从vPC peer设备上所有的vPC接口。

    说明:默认keepalive定时器是允许修改的,可以作为“peer-keepalive”命令的附加参数,放在目标及源域后面。

    如代码清单9.14所示,“show vpc peer-keepalive”命令可以验证peer keepalive链路是否处在可控状态,也可以检测某些vPC keepalive参数。

    代码清单9.14 vPC keepalive状态和参数

    9.6 基础vPC设计学习 - 图4

    当部署vPC peer-keepalive链路时还需要注意以下原则:

    ·不能在peer链路上路由keepalive消息。

    ·如果系统配有冗余的管理器,当使用管理器管理接口来传输vPC peer keepalive时,不要让它们在两个peer交换机之间进行连续连接,这是因为当前时刻只能有一个管理端口是活动端口,而管理器交换将可能破坏peer-keepalive链路的连接性。

    ·带外管理网络要配合管理接口,两者之间有一个管理交换机(如图9-15所示)。

    vPC peer链路配置

    代码清单9.15对NX7K-1和NX7K-2的vPC peer链路配置进行了说明,两台交换机上的peer链路配置是对称的,此外还包括了使用“vpc peer-link”命令进行常规端口通道配置。

    在静态链路汇聚中,使用链路汇聚控制协议(Link Aggregation Control Protocol,LACP)来实现平滑的故障恢复以及错误配置保护。在接口配置时,可使用全局“feature lacp”命令激活该协议和带“active”关键字的“channel-group”命令激活(更多有关LACP的介绍,请参考2.5.2节的相关内容)。

    代码清单9.15 vPC peer链路配置

    9.6 基础vPC设计学习 - 图5

    9.6 基础vPC设计学习 - 图6

    说明:“spanning-tree port type network”命令能够激活链路的桥接保证(Bridge Assurance,BA)特性,BA促使交换机向所有可控端口发送BDUP信息,信息里包含了端口类型设置为“network”以及每次握手间隔的替换及备用端口信息。如果某个邻近端口拒绝接收BPDU,该端口将设置成“阻隔”状态,如果被阻隔的端口重新开始接收BPDU信息,则通过常规的快速VLAN生成树(Rapid-Per-VLAN-Spanning-Tree,RPVST)转换,将阻隔状态恢复到常态。这种双向握手机制能够避免由于无向链路或骨干交换机而引起的回路。

    代码清单9.16中,NX7K-1调用“show vpc brief”命令来验证vPC peer链路的状态,从命令输出结果可知,端口通道1000(Po1000)工作正常。

    代码清单9.16 vPC peer链路状态

    9.6 基础vPC设计学习 - 图7

    当进行vPC peer链路部署时,要注意以下规则和建议:

    ·尽管vPC peer链路属于标准的802.1Q汇聚,能够同时支持vPC和非vPC VLAN,我们更推荐将不同的内部交换机端口通道上的这两类链路分离开来。

    ·鉴于peer链路属于点到点模式,因此不应该在vPC peer之间插入其他设备。

    ·为了获得最好的可靠性,推荐在每个peer交换机上的分离模块中最少使用2个10GE端口。

    ·对于NX7K交换机上使用超额认购技术的模块(例如,32-port 10GE以太网模块),应该指定10GE端口,而不是共享这些端口(代码清单9.15使用了共享模式)。

    更多有关vPC peer链路的详细内容,请参见2.5.3节。

    说明:NX7K 32端口10GE以太网模块可以以线性速率分布8个端口,或最多允许32个端口共享80Gbps的带宽,这些端口被分成8个组,每组4个端口。在指定模式中,每组的第一个端口是主端口,拥有线性速率性能,其他3个端口都被禁用。在共享模式下,每个组的所有4个端口都是活动的。NX-OS支持每个组分别采用不同的配置模式,既可以是指明模式,也可以是共享模式。用户可以调用“show interface EthX/Y capabilites/include Members”命令(X为模块序号,Y为端口号)来确定其他与EthX/Y相连的组成员,以及该端口组的第一个端口。

    配置vPC

    代码清单9.17展示了NX7K-1和NX7K-2的vPC配置,就像其他peer链路配置,两个peer交换机的vPC配置也是对称的。除了要配置标准的端口通道外,还需要调用“vpc<number>”命令。代码清单9.17中,端口通道10(Po0)与VPC 10关联,而端口通道20(Po20)与VPC 20关联。

    可以调用“channel-group 10”命令将Eth3/1加入到Po 10,成为与vPC 10关联的vPC成员端口。同样,也可以调用“channel-group 20”命令将Eth3/2加入到Po 20,成为与vPC 20关联的vPC成员端口。

    说明:vPC成员端口应该属于10GE接口。

    代码清单9.17 vPC配置

    9.6 基础vPC设计学习 - 图8

    9.6 基础vPC设计学习 - 图9

    说明:为了避免产生不一致,vPC peer间的vPC成员端口配置必须要匹配,不过并不要求每个vPC peer的成员端口序号一致。

    代码清单9.18和代码清单9.19分别展示了对NX5K-1及NX5K-2的标准端口通道配置,Eth1/1和Eth1/2分别与NX5K-1的端口通道10以及NX5K-2的端口通道20关联,NX5K-1和NX5K-2均为双附属连接至vPC域,Eth1/1连接到NX7K-1,Eth1/2连接到NX7K-2,尽管这些接口都被绑定到同一端口通道。这种方式能够确保在peer链路发生故障时对系统的危害性最小,并能持续保持vPC双活模式(更多有关双活模式场景,请参考2.5.2节的相关内容)。

    代码清单9.18 NX5K-1端口通道配置

    9.6 基础vPC设计学习 - 图10

    代码清单9.19 NX5K-2端口通道配置

    9.6 基础vPC设计学习 - 图11

    9.6 基础vPC设计学习 - 图12

    如代码清单9.20所示,调用“show port-channel summary”命令来验证NX7K-1和NX7K-2上vPC成员端口的状态,在NX7K-1和NX7K-2重复“show vpc brief”命令,从命令的输出结果可知,vPC10/Po10以及vPC20/Po20工作状态正常。

    代码清单9.20 vPC状态检测

    9.6 基础vPC设计学习 - 图13