背景
因最近工作上遇到vPC问题,因此来系统学习和记录下vPC的内容。本文内容摘录翻译自Design and Configuration Guide: Best Practices for Virtual Port Channels (vPC) on Cisco Nexus 7000 Series Switches。为专注原理学习,将忽略设备型号和板卡等信息。
vPC 描述和术语
vPC(virtual port channel ),就是我们常常理解的跨设备端口聚合。典型拓扑如图:
在数据中心场景下,vPC的优势包括
- 消除生成树的blocked端口
- 可以利用所有上行链路带宽
- 允许服务器连接到不同设备,且处两个端口都处于转发状态。
- 快速收敛
vPC 组件
术语 | 含义 |
---|---|
vPC peer device | 一对配置了vPC的交换机 |
vPC Domain | 一个vPC域包含两台对等设备,同一个vPC域中,只能有两台vPC |
vPC member port | 配置了跨设备聚合的下行口 |
vPC peer link | 设备间直连的端口,必须是10G端口,二层trunk 端口,承载vPC Vlan |
vPC peer keep-alive link | 用于检测对端设备存活的链路,不能peer-link使用相同链路 |
vPC Vlan | vPC peer link上承载的vlan,vPC peer link上配置了该vlan,就属于vPC Vlan |
no vPC Vlan | 该Vlan不属于vPC,不在peer link上配置 |
orphan port | 只连接到一台交换机端口的设备,vPC Vlan用于这个端口上 |
CFS protocal | 运行在peer link上,用于在两台设备之间执行一致性检查和同步 |
vPC组件如图:
vPC 环路避免机制
vPC 环路避免机制是通过数据平面实现的,从vPC成员端口过来的流量,经过Peer link后,不允许再发向任何vPC 成员端口,但是可以发到其他类型端口,例如L3,orphan port和
如示意图
vPC 部署场景
部署场景包括
- single sided vPC
- dual sided vPC
- dual layer 3 / layer2 Pod interconnect 。数据中心和pod之间极少使用vPC作为互联方案, 因此就不再介绍。
single side vPC
接入层交换机/服务器/刀片防火墙配置port-channel m汇聚层配置vPC如图
dual-sided
汇聚层下行配置vPC,接入层上行也配置vPC,增加了系统弹性和可靠性,但是增加了运维的复杂度,现网中暂时没遇到这样的配置场景。
配置vPC域的最佳实践
创建vPC域
创建vPC域流程和注意事项:
- 全局配置vPC域,domain id必须一致;
- 配置peer-keepalive link,确保peer-keepalive link状态是正常的,否则vPC 域将会无法创建成功;
- 为vpc 配置peer-link,必须是聚合端口;
- 配置成员端口;
- 如果配置了dual-sided vpc,两边的vpc domain id必须不一样。
vPC 系统MAC和vPC 本地系统MAC
配置vPC后,两台交换机利用vPC domain ID 生成一个唯一的vPC 系统mac ,
vPC system-mac = 00:23:04:ee:be:,如果domain id是10 ,
vPC系统mac 则为of 00:23:04:ee:be:0a。当两台交换机作为一个整体时,就会使用该mac地址。
当两台交换机在流量转发行为中不需要作为一个整体时,交换机使用vPC 本地系统MAC,该mac地址继承自系统的mac地址。
如图,5K_1 local port-channel 将使用7k_1的vPC 本地系统MAC作为目的mac,5K_2将使用vPC system-mac作为目的mac。
vPC角色
vPC角色包括primary和secondary,Primary 负责处理BPDU报文和响应ARP。
使用role priority 可以修改优先级,值越低优先级越高。
show vpc role可以查看角色。vPC一般不会配置抢占,抢占会导致流量中断。
vPC 角色还可以从实际情况角度分类,配置的primary ,实际的primary ,配置的secondary和实际的secondary 。如图:
当vpc peer-link down时,secondary通过keep alive link检测到primary 存活,将会shutdown所有vPC port member 以及vPC Vlan的SVI。
CFS
CFS(cisco fabric service)协议提供可靠的同步和一致性检查机制。在vPC配置中,主要检查以下内容:
- 配置检查和比较;
- 为成员端口同步MAC地址地址;、
- 成员端口状态通告;
- STP管理;
- 同步HSRP和IGMP snooping;
检查类型可以分为Type1和Type2,Type1的配置参数必须一致,Type2可以不一致,但是可能会导致一些流量转发行为异常。
type 1一致性检查
全局参数type 1检查失败时,所有的成员端口将会被shutdown;
vPC接口type 1检查失败时,成员端口将会被shutdown,从5.2版本开始,接口检查失败将会只shutdown secondary设备上的成员端口。
使用show vpc consistency-parameters可以检查vPC可能会影响vPC come up 的配置参数。
type2 一致性检查
type2 检查到不一致时,所有成员端口都会保持up状态,vPC进入到protective actions,vPC将会disable vPC接口中两边不一致的VLAN,检查参数包括:
创建vPC 注意事项和限制
- 先配置peer keep alive link再配置peer-link;
- vpc配置必须在两台设备上手动输入,无法进行设备配置同步;
- double-sided VPC中,两边vPC要使用不同的vPC domain id
- DCI 中两边vPC也需要用不同的vPC domain id
- 检查配置参数一致;
- 推荐使用lacp active 模式;
- 使用VDC时,所有接口都属于同一个VDC
- 只支持2层的端口聚合,不支持三成端口聚合;
- PIM SM可以和vPC配合使用,PIM BiDIR 或PIM SSM暂时不支持;
- DAI,IPSG不支持在VPC场景中使用,DHCP relay或者DHCP snooping可以支持;
- port security 不支持在成员端口上配置;
- vPC 之间的设备路由通过专门的链路,而不是通过peer-link;
- 创建专门链路,为no-vPC VLAN通过;
vPC组件配置最佳实践
peer-keepalive link配置
peer-keepalive link 承载两个设备之间周期性心跳流量,用于确保在形成vPC domain,和peer-link down时两台设备都处于up状态。
当peer-link down时,如果通过peer-keepalive link检测到两台设备都存活,secondary 设备上的vPC 成员端口将会进入到down状态。
peer-keepalive 是一个UDP报文,使用3200端口。
peer-keepalive link有三个计时器:
当vPC peer-Link down时,开始启动keep alive hold timout 计时器,时间为3秒,这段时间内将忽略任何peer-keepalive hello消息。
三秒过后,将启动keepalive timeout计时器,时间为5秒,在这段时间内,如果收到任何hello 消息,secondary就认为进入到了双活的场景,就会disable掉所有vPC 成员端口。
peer-keepalive link使用以下推荐配置:
- 使用专门的L3,1G链路作为peer-keepalive link
- 使用管理端口作为peer-keepalive link ;
- 两个keepalive 接口之间通过三层路由互通,不要在peer-link上面承载peer-keepalive消息;
- 在双引擎设备上,如果使用引擎板卡上的管理口发送keepalive 消息,则需要将每台设备的两块引擎卡通过交换机相连,避免引擎倒换时管理口处于down状态。如图所示:
peer link配置
peer-link的作用:
- 承载vPC和非vPC Vlan;
- 承载CFS,cos=4;
- 承载泛洪流量
- 承载STP BPDU,HSRP hello报文
推荐配置:
- 使用10G口,最少使用两个10G口做端口聚合,同时两个10G口最好位于不同板卡,提高可靠性;
- 直连线,不经过任何交换机;
- 增加专门链路,承载非vPC VLAN流量;
- 两端vpc peer link 使用相同的接口类型和板卡;
peer link down
当peer link down , peer keepalive link up时,secondary device 将执行以下动作:
- 挂起本地成员端口
- 关闭vPC Vlan的SVI
这两个行为将会使得所有流量都经过primary设备。
当orphan port连接到备用设备时,流量将会中断。如果要保持orphan port的三层流量不受影响,SVI不被关闭,需要配置:
N7k(config-vpc-domain)# dual-active exclude interface-vlan
VLAN list 必须属于vPC VLAN。
vPC object tracking
当主用设备上的uplink和peer-link同时中断时,备用设备将会挂起本地成员端口和关闭vPC VLAN 的SVI ,这样即使备用设备处于正常状态,也无法转发流量,造成流量黑洞。解决的办法就是配置vPC tracking .
track 1 interface port-channel11 line-protocol
track 2 interface Ethernet1/1 line-protocol
track 3 interface Ethernet1/2 line-protocol
track 10 list boolean OR object 1 object 2 object 3
! If object 10 goes down on the primary vPC peer,
! system will switch over to other vPC peer and disable all local vPCs
vpc domain 1 track 10
vPC 成员端口配置
- Whenever a vPC VLAN is defined on vPC member port, it MUST be defined also on vPC peer-link. Not defining a vPC VLAN on vPC peer-link will will make the VLAN not operational;
- A Layer 2 port-channel only is supported with vPC (no Layer 3).;
- 成员端口的端口类型必须一致。