vPC 简介
vPC (Virtual Port Channel)
vPC 是一种实现跨设备链路聚合的机制,基于 LACP(单台设备链路聚合的标准) 进行了扩展,能够实现多台设备间的链路聚合,从而把链路可靠性从单板级提高到了设备级。
如上图所示,在传统的网络拓扑中要实现网络的冗余,一般都会使用双链路上联的方式,但这种方式明显有一个环路,在这种拓扑下都会开启 STP,这时就会有一条链路是处于 Block 状态的,所以这种方式可以实现冗余,但不能增加网络带宽。想通过链路聚合的方式做双链路上联到两台不同的设备,但是 Port-Channel 不支持跨设备聚合,所以在这种背景下就出现了 vPC 的概念。和传统跨设备方案的区别是:既增强网络冗余又能增加带宽。
vPC 网络优势
vPC 为第二层网络提供大量重要优势,并借助第二层功能提供的优势,对第三层互联进行一系列改进。
在第二层网络中,能够实现以下优势:
- 通过冗余系统提高系统可靠性
- 无需使用生成树协议,即能进行环路管理。
- 始终提供完全系统带宽可用性
- 迅速恢复链路故障
- 为任意支持 IEEE 802.3ad 的边缘设备提供端口信道连接
此外,还支持以下重要的三层特性:
- 通过 HSRP 配置进行主用-主用第三层转发
- 通过主用-主用 HSRP 进行完全第三层带宽访问
- 通过主用-主用 PIM 指定路由器进行第三层迅速组播融合
Cisco Nexus 5K 以上型号的交换机都可以使用该功能。
vPC 配置
【配置示例】Nexus 1
Nexus1# configure terminal
Nexus1(config)# feature vpc //全局开启 vpc 功能
Nexus1(config)# feature lacp //全局开启 lacp 功能
Nexus1(config)# vpc domain 1
Nexus1(config-vpc-domain)# peer-keepalive destination 12.12.12.2 source 12.12.12.1 //指定peer源目IP
Nexus1(config)# interface range Ethernet 1/31-32 //将两个物理端口加入channel 12
Nexus1(config-if-range)# switchport
Nexus1(config-if-range)# switch mode trunk
Nexus1(config-if-range)# channel-group 12 mode active
Nexus1(config)# interface port-channel 12
Nexus1(config-if)# vpc peer-link //指定port-channel 12 为peer链路
Nexus1(config)# interface Ethernet1/1 //将物理端口加入channel 100
Nexus1(config-if)# switchport mode trunk
Nexus1(config-if)# channel-group 100 mode active
Nexus1(config)# interface port-channel 100
Nexus1(config-if)# vpc 100 //channel 100加入vpc 100
Nexus1(config)# interface mgmt0
Nexus1(config-if)# ip address 12.12.12.1/30
Nexus 2
Nexus2# configure terminal
Nexus2(config)# feature vpc //全局开启 vpc 功能
Nexus2(config)# feature lacp //全局开启 lacp 功能
Nexus2(config)# vpc domain 1
Nexus2(config-vpc-domain)# peer-keepalive destination 12.12.12.1 source 12.12.12.2 //指定peer源目IP
Nexus2(config)# interface range Ethernet 1/31-32 //将两个物理端口加入channel 12
Nexus2(config-if-range)# switchport
Nexus2(config-if-range)# switch mode trunk
Nexus2(config-if-range)# channel-group 12 mode active
Nexus2(config)# interface port-channel 12
Nexus2(config-if)# vpc peer-link //指定port-channel 12 为peer链路
Nexus2(config)# interface Ethernet1/1 //将物理端口加入channel 100
Nexus2(config-if)# switchport mode trunk
Nexus2(config-if)# channel-group 100 mode active
Nexus2(config)# interface port-channel 100
Nexus2(config-if)# vpc 100 //channel 100加入vpc 100
Nexus2(config)# interface mgmt0
Nexus2(config-if)# ip address 12.12.12.2/30