最近在研究数据中心功能时发现CISCO有一个虚拟化技术叫vPC的技术,今天就把我研究的成果分享出来。什么是vPC(virtual port channel)?研究了大半天,其实它就是一个可以跨不同设备的port-channel技术。它的作用:可以实现网络冗余,可以跨设备进行端口聚合,增加链路带宽,当链路故障时比生成树协议收敛时间还快。
下面我们就说说为什么会出现vPC技术。
如上图所示,在传统的网络拓扑中要实现网络的冗余,一般都会使用双链路上连的方式,而这种方式明显有一个环路,在这种拓扑下都会开起生成树协议,这时就会有一种链路是block状态的。所以这种方式实现冗余,并不会增加网络带宽。如果想用链路聚合方式来做双链路上连到两台不同的设备,port-channel功能又不支持跨设备聚合。所以在这种背景下就出现了vPC的概念,和port-channel功能相比区别是:vPC功能解决了传统聚合端口不能跨设备的问题。和传统跨设备方案相比的区别是:即增强网络冗余又能增加网络带宽。
vPC的部署拓扑如上图所示,它与前面的传统部署方案的优势是:
1. 允许下行设备通过port channel跨两个不同的上行设备。
2. 避免了以太网环路,也就不需要增加生成树(STP)的功能,也就解决了因为生成树功能而产生的block端口。
3. 增加了上行带宽
4. 当链路或是设备出现故障可以实现快速的故障恢复
5. 确保高可靠性
6. 双活工作机制
7. 实现网络拓扑简单化
目前据我所知在CISCO的Nexus 5000以上的型号都可以使用该功能。按上面的拓扑举例如何在CISCO Nexus 5548上 配置vpc功能:
在Nexus01上配置如下:
- Nexus01:
- Nexus01#config t
- Nexus01(config)# feature vpc //全局开启vpc功能
- Nexus01(config)# vpc domain 1
- Nexus01(config-vpc-domain)# peer-keepalive destination 10.10.10.11 source 10.10.10.10//指定peer的源和目标
- Nexus01(config)#interface ethernet 1/31-32//这两个物理口加入channel 10
- Nexus01(config-if-range)#switch mode trunk
- Nexus01(config-if-range)# channel-group 10 mode active
- Nexus01(config-if-range)#interface port-channel 10
- Nexus01(config-if)# vpc peer-link //port-channel 10指定为peer链路
- Nexus01(config)#interface ethernet 1/1//这两个物理口加入channel 100
- Nexus01(config-if)# switchport mode trunk
- Nexus01(config-if)# channel-group 100 mode active
- Nexus01(config)#interface port-channel 100
- Nexus01(config-if)# vpc 100//channel 100加入vpc100
在Nexus02上配置如下:
- Nexus02#config t
- Nexus02(config)# feature vpc
- Nexus02(config)#
- Nexus02(config)# vpc domain 1
- Nexus02(config-vpc-domain)# peer-keepalive destination 10.10.10.10 source 10.10.10.11
- Nexus02(config)#interface ethernet 1/31-32
- Nexus02(config-if-range)#switch mode trunk
- Nexus02(config-if-range)# channel-group 10 mode active
- Nexus02(config-if-range)#interface port-channel 10
- Nexus02(config-if)# vpc peer-link
- Nexus02(config)#interface ethernet 1/1
- Nexus02(config-if)# switchport mode trunk
- Nexus02(config-if)# channel-group 100 mode active
- Nexus02(config)#interface port-channel 100
- Nexus02(config-if)# vpc 100