3. vPC域规划与参数设计

vPC(virtual Port Channel)能让两台Nexus交换机在接入侧呈现为一台逻辑设备,但前提是这两台交换机必须属于同一个vPC域,并且域内关键参数保持一致。域规划做得好,后续加入第三条成员链路、扩容或故障切换都会很顺畅;规划得不好,轻则vPC无法建立,重则出现双活(split-brain)导致转发异常。本节围绕四个核心参数展开:domain ID、角色优先级、系统优先级与MAC地址、peer-keepalive链路。

一、domain ID:vPC域的唯一标识

domain ID是一个1~1000的整数,用于标识一对vPC peer。两台交换机必须配置相同的domain ID才能形成vPC域。它的作用不是“编号好看”,而是让设备在建立peer-link时确认彼此属于同一逻辑对,并在vPC成员端口协商时携带该标识。

规划原则有三条。第一,同一对peer必须相同,不同对peer必须不同。如果两台本不该配对的交换机误配了相同domain ID,且peer-link误连,就可能形成错误的vPC域。第二,domain ID应纳入全网编号规范,例如按机柜或机房分配:机房A用100~199,机房B用200~299,便于运维快速定位。第三,domain ID一旦确定,不建议随意更改,因为更改会触发vPC域重建,所有vPC成员端口会短暂中断。

配置示例(两台peer均执行):

switch(config)# vpc domain 100
switch(config-vpc-domain)# peer-switch
switch(config-vpc-domain)# peer-keepalive destination 10.0.0.2 source 10.0.0.1

其中peer-switch用于让两台设备在STP层面也呈现为一台,减少拓扑震荡。domain ID本身不参与转发决策,但它是所有vPC参数的“容器”,后续角色优先级、系统优先级都挂在它下面。

二、角色优先级:决定谁是Primary

vPC域中两台交换机分为Primary和Secondary。Primary负责生成vPC的系统MAC、处理部分控制平面任务;Secondary在Primary正常时处于备份角色。角色优先级是一个0~65535的整数,数值越小优先级越高,默认值为32667。两台设备比较角色优先级,小者成为Primary;若相同,则比较系统MAC,小者成为Primary。

规划建议:不要依赖默认值,显式配置且拉开差距。例如主设备配100,备设备配200。这样即使主设备重启后角色优先级不变,仍能稳定回到Primary。如果两台都配默认值,一旦系统MAC较小的设备意外重启,角色可能漂移,虽然vPC通常能恢复,但会增加收敛时间。

需要特别注意的是,角色优先级只影响Primary/Secondary选举,不影响流量转发。两台设备在正常状态下都会转发vPC流量,只有peer-link故障时才会触发Secondary抑制vPC成员端口。因此角色优先级规划的目标是“稳定”,而不是“性能”。

三、系统优先级与MAC地址:让两台设备“看起来像一台”

vPC域对外呈现一个统一的系统MAC地址和系统优先级。系统MAC用于生成vPC成员端口的源MAC、STP BPDU源MAC等;系统优先级用于STP选举,确保这对peer在生成树中占据预期位置。

系统MAC的规划原则是:手动指定一个本地管理地址(LAA),避免使用设备出厂MAC。例如:

switch(config-vpc-domain)# system-mac 0000.0c9f.f100
switch(config-vpc-domain)# system-priority 4096

系统优先级数值越小优先级越高,默认32768。建议将vPC域的系统优先级设为4096或更低,使其成为STP根桥或靠近根桥,避免vPC成员端口被STP阻塞。两台peer必须配置相同的system-mac和system-priority,否则vPC无法建立。

系统MAC建议全网统一规划,例如按vPC域编号分配:域100用0000.0c9f.f100,域101用0000.0c9f.f101。这样在抓包或查看MAC表时,能一眼看出流量属于哪个vPC域。

四、peer-keepalive链路设计原则

peer-keepalive是vPC的“心跳线”,用于在peer-link故障时判断对端是否存活。它承载的是UDP 3200端口的保活报文,流量很小,但可靠性要求高。设计原则如下:

  • 独立物理路径:peer-keepalive必须走与peer-link不同的物理链路,最好经过独立的交换机或路由路径。如果peer-link和keepalive走同一台中间设备,该设备故障会导致双活。
  • 三层可达:keepalive是三层通信,需要配置源IP和目的IP,通常使用管理接口或独立的带外接口。建议使用独立的VLAN和子网,避免与业务流量混跑。
  • 带宽要求低但延迟要稳:keepalive报文很小,1Gbps链路足够,但延迟和抖动要小。不建议跨广域网或经过高延迟链路。
  • 冗余设计:如果条件允许,可配置多条keepalive路径或使用管理网络冗余,但Cisco默认只支持一个keepalive目的地址,可通过管理接口冗余实现。

配置示例:

switch(config-vpc-domain)# peer-keepalive destination 10.0.0.2 source 10.0.0.1 vrf management

验证命令:show vpc peer-keepalive可查看keepalive状态和统计。正常应显示“peer is alive”。如果显示“peer is not alive”,需检查三层可达性和ACL是否放行UDP 3200。

五、参数一致性检查与常见排障

vPC域建立失败时,首先检查以下参数是否一致:domain ID、system-mac、system-priority、peer-link接口配置、peer-keepalive可达性。使用show vpc可查看域状态,show vpc consistency-parameters global可查看全局参数一致性,show vpc consistency-parameters interface port-channel X可查看接口级参数一致性。

常见问题:domain ID不一致导致vPC无法建立;system-mac不一致导致vPC成员端口无法up;peer-keepalive不可达导致peer-link故障时无法判断对端状态,进而触发双活。双活的典型现象是两台设备都认为自己是Primary,vPC成员端口都处于up状态,可能导致MAC地址漂移和流量黑洞。

双活风险提示:peer-link故障且peer-keepalive也故障时,两台设备会同时进入Primary角色,形成双活。此时应通过show vpc确认角色,并尽快恢复peer-link或keepalive。可在vPC域下配置auto-recovery reload-delay 240,让设备在双活持续一段时间后自动重启,减少人工干预。
vPC域参数规划与peer-keepalive链路 Nexus A(Primary) domain 100 role priority 100 system-mac 0000.0c9f.f100 Nexus B(Secondary) domain 100 role priority 200 system-mac 0000.0c9f.f100 peer-link Port-Channel 1 peer-keepalive UDP 3200 / 独立三层路径 10.0.0.1 / mgmt VRF 10.0.0.2 / mgmt VRF 接入交换机 vPC成员端口(Port-Channel 10) vPC成员链路 vPC成员链路 参数一致性要求 domain ID 相同 system-mac / priority 相同 role priority 不同(主小备大) peer-link peer-keepalive vPC成员链路 注:peer-link与keepalive必须走不同物理路径

总结来看,vPC域规划的核心是“一致”与“分离”:domain ID、system-mac、system-priority必须一致,role priority要拉开差距,peer-link和peer-keepalive必须物理分离。把这四项参数在规划阶段就确定下来,并纳入配置模板和检查清单,可以避免绝大多数vPC建立失败和双活问题。