O vPC, como amplamente divulgado e implementado é a capacidade de dois Nexus se comportarem como um único dispositivo para a formação de port-channels com um terceito. Essa capacidade é formalmente chamada de Multi-chassis Etherchannel ou, simplesmente, MEC.
Como o Nexus 1000v possui uma arquitetura virtualizada e distribuída, vivendo nos hosts, esse conceito não se aplica de maneira tradicional a ele. No entanto, para que houvesse a possibilidade de se realizer MECs entre os VEMs e os switches upstream , criou-se o vPC Host Mode. Ou seja, é a capacidade do VEM de agrupar dois ou mais uplinks físicos em um port-channel (etherchannel), mesmo que seja para switches distintos.
Para tal, o VEM realiza um pinning do tráfego de uma VM para um (e apenas um) uplink. Existem 3 métodos de se realizer esse pinning de VM para uplink:
- MAC Pinning
- Subgroup Pinning com base em CDP
- Manual Subgroup Pinning
Exploraremos com mais detalhes cada um dos métodos.
MAC Pinning
Este método simplesmente faz um pin do tráfego de uma VM para um uplink em round robin, de acordo com o endereço MAC da VM. Tráfego de Service Console e VMKernel é tratado da mesma maneira, baseado no Source MAC. Isso permite a utilização de todos os uplinks disponíveis. Embora seja um método não determinístico, é recomendado para se conectar a switches upstream que não suportam MEC.
Figura 1. vPC HM com MAC Pinning
port-profile type ethernet CNA-Uplink
vmware port-group
switchport mode trunk
switchport trunk allowed vlan 10-11,110
channel-group auto mode on mac-pinning
no shutdown
system vlan 10-11
state enabled
Subgroup Pinning com base em CDP
Esta opção pode ser utilizada quando existem vários uplinks disponíveis conectados à dois switches upstream distindos. Neste caso, CDP é utilizado para se descobrir a qual switch cada uplink está conectado e, com isso, todos os uplinks conectados ao mesmo switch recebem o mesmo Subgroup ID (SGID). O tráfego das VMs é, então, a um subgroup baseado no Source MAC, round robin. Dentro de um mesmo subgroup, o tráfego sofre um hashing baseado nos cabeçalhos L2/L3/L4, para que ocorra um balanceamento eficaz entre os links do subgroup.
Figura 2. vPC HM com Subgroup Pinning com base em CDP
port-profile type ethernet CNA-Uplink
vmware port-group
switchport mode trunk
switchport trunk allowed vlan 10-11,110
channel-group auto mode on sub-group cdp
no shutdown
system vlan 10-11
state enabled
Manual Subgroup Pinning
A partir da versão 4.0(4)SV1(2) foi incluída a possibilidade de se especificar qual membro de um uplink vPC HM port-channel deseja-se que o tráfego de uma VM utilize quando sai do VEM.
Isto é feito especificando para qual subgroup deve ser feito o pinning de um port-profile específico (em sua configuração). Pode-se também espeficiar para qual uplink sera feito o pinning das VLANs Control/Packet com o commando:
pinned-sgid {control-vlan-pinned-sgid | packet-vlan-pinned-sgid} sub-group_id
O Subgroup ID (SGID) também pode ser atribuído manualmente. Essa possibilidade é útil quando os switches upstream não suportam CDP.
Supondo, na figura 2, acima, que queiramos que o tráfego das VMs 1 e 2 utilizem SG0 e VMs 3 e 4 utilizem SG1. Além disso, o tráfego de controle deve utilizar SG0. Para tal, criaremos 2 port-profiles (vethernet) e especificamos o SGID. Todas as VMs associadas com os respectivos port-profiles, utilizarão os uplinks associados com o respectivo SGID.
port-profile type vethernet VM-Traffic-SG0
vmware port-group
switchport mode access
switchport access vlan 110
pinning id 0
no shutdown
state enabled
port-profile type vethernet VM-Traffic-SG1
vmware port-group
switchport mode access
switchport access vlan 110
pinning id 1
no shutdown
state enabled
In addtion, Control VLAN traffic is pinned to subgroup 0:
port-profile type ethernet CNA-Uplink
vmware port-group
switchport mode trunk
switchport trunk allowed vlan 10-11,110
channel-group auto mode on sub-group cdp
no shutdown
system vlan 10-11
pinned-sgid control-vlan-pinned-sgid 0
state enabled
Neste exemplo a informação de SGID veio via CDP. Para configurá-lo manualemnte:
port-profile UpLinkProfile3
channel-group auto mode on sub-group manual
interface ethernet3/2-3
sub-group-id 0