VPC(virtual port channel,虚拟链路聚合)是一种可以跨不同设备的port-channel的技术。在传统的网络拓扑中如果要实现网络的冗余,一般都会使用双链路上连的方式,但是这种方式明显有一个环路,因此在这种连接拓扑下都会开启生成树协议,这时就会有一条链路是block状态的。所以这种方式实现冗余,并不会增加网络带宽。如果想用链路聚合方式来做双链路上连到两台不同的设备,port-channel功能又不支持跨设备聚合。所以在这种背景下就出现了VPC的概念,和port-channel功能相比区别是:VPC功能解决了传统聚合端口不能跨设备的问题。
VPC组网对于下游第三方设备来说(交换机或服务器)物理上是连接到了两台交换机,但逻辑上是一台交换机。
和传统跨设备方案相比,VPC功能提供了如下这些好处:
- 允许单个设备用portchannel连接到两个不同的上游设备
- 消除因为生成树协议而产生的阻塞端口
- 提供无环拓扑
- 增加网络带宽,可以使用所有可用的上行链路
- 当有链路或者设备失效的时候实现快速收敛
- 增强网络冗余,实现高可用性
vPC概念
下面定义了一些vPC概念:
vPC: vPC指的是在不同vPC端设备上与下游设备之间的捆绑PortChannel。
vPC peer Switch:构成 vPC 的其中一台交换机,vPC 中两台交换机一台被选举为 primary主设备,另一台为secondary从属设备。
vPC member port:vPC成员端口指的是归属于vPC的交换机端口。
vPC peer link:用来在两台peer之间同步状态信息的链路。vPC peer link需运行在10G以上的端口。
vPC domain:vPC domain 定义了一个vPC 分组,分组中包含 2 台vPC peer Switch,两台 vPC peer Switch 配置的 domain ID 必须一致,在同一个二层网络中,vPC domain ID 需要唯一存在。
vPC keepalive link:用于检测vPC交换机之间的存活状态。vPC keepalive link既可以是管理接口也可以是SVI。所有数据和同步控制数据都不会从vPC对端存活检测链路上通过。在上面通过的只有一种消息,用来表明交换机上正在运行vPC。
Orphan device:单链路上联交换机的设备称之为孤立设备。
Orphan port:用来连接 Orphan device 的接口称之为孤立接口。
CFS: Cisco Fabric Service协议是在两个Peer之间提供可靠的同步和一致性检查机制,并运行在vPC peer-link上。CFS在vPC功能打开时默认启用,无需手动配置。
vPC配置案例
定义vPC域
NXOS1(config)#feature lacp //开启lacp特性
NXOS1(config)#feature vpc //开启vpc特性
NXOS1(config)#vpc domain 200 //定义vPC域
NXOS1(config-vpc-domain)#role priority 1 //强制使成为vPC域的主对等体
NXOS2(config)#feature lacp
NXOS2(config)#feature vpc
NXOS2(config)#vpc domain 200
配置peer-keepalive
在NX-OS中管理口(mgmt0)是对等体存活维持链路的默认端口。
NXOS1(config)#interface mgmt0
NXOS1(config-if)#ip address 10.10.10.10/24
NXOS1(config)#vpc domain 200
NXOS1(config-vpc-domain)#peer-keepalive destination 10.10.10.11 source 10.10.10.10
NXOS2(config)#interface mgmt0
NXOS2(config-if)#ip address 10.10.10.11/24
NXOS2(config)#vpc domain 200
NXOS2(config-vpc-domain)#peer-keepalive destination 10.10.10.10 source 10.10.10.11
创建peer link
NXOS1(config)#interface port-channel 200
NXOS1(config-if)#switchport
NXOS1(config-if)#switchport mode trunk
NXOS1(config-if)#vpc peer-link
NXOS1(config)#interface ethernet1/1 – 2
NXOS1(config-if)#channel-group 200 mode active
NXOS1(config-if)#no shutdown
NXOS2(config)#interface port-channel 200
NXOS2(config-if)#switchport
NXOS2(config-if)#switchport mode trunk
NXOS2(config-if)#vpc peer-link
NXOS2(config)#interface ethernet1/1 – 2
NXOS2(config-if)#channel-group 200 mode active
NXOS2(config-if)#no shutdown
创建vPC
NXOS1(config)#interface port-channel 10
NXOS1(config-if)# switchport
NXOS1(config-if)#switchport mode trunk
NXOS1(config-if)#vpc 10
NXOS1(config)#interface Ethernet1/3 – 4
NXOS1(config-if)#channel-group 10 mode active
NXOS1(config-if)#no shutdown
NXOS2(config)#interface port-channel 10
NXOS2(config-if)# switchport
NXOS2(config-if)#switchport mode trunk
NXOS2(config-if)#vpc 10
NXOS2(config)#interface Ethernet1/5 – 6
NXOS2(config-if)#channel-group 10 mode active
NXOS2(config-if)#no shutdown
下游设备配置port-channel
NXS03(config)# feature lacp
NXS03(config)#interface port-channel 10
NXOS3(config-if)#switchport
NXOS3(config-if)#switchport mode trunk
NXS03(config)#interface Ethernet1/3 – 6
NXOS3(config-if)#channel-group 10 mode active