vPC по сути своей является расширением всем нам известного классического PortChannel. Он позволяет соединить какое-либо сетевое устройство (свитч, сервер) с двумя коммутаторами Cisco Nexus так, что для этого downlink-устройства соединение (логически) будет выглядеть так
Терминология
- vPC – набор portchanell’ов между vPC-peer устройствами и downstream устройствами
- vPC-peer устройство – пара устройств, которые соединены между собой специальным каналом, который называется vPC peer link
- vPC peer link – канал для синхронизации vPC-пиров. (Прим. Линки должны быть 10G)
- vPC member порт – интерфейс, который относится в vPC домену
- vPC домен – совокупность из vPC-peer устройств, линк vPC peer-keepalive и всех портов vPC member
- vPC peer-keepalive порт – L3-линк между коммутаторами для обмена keepalive
vPC peer link
Вы можете сконфигурировать только два коммутатора для работы внутри vPC-домена, т.е. следующие топологии не поддерживаются:
После настройки vPC peer link (сами настройки мы рассмотрим в конце статьи) коммутаторы договариваются между собой о том кто из них будет primary, а кто secondary (выбор идет на основе наименьшего MAC, либо приоритета). По сути, кто из них кто роли не играет (это важно только в определенных failover-ситуациях). Если primary выходит из строя, то secondary подхватывает его роль.
Прим. В случае настройки vPC между Nexus7000 настоятельно рекомендуется использовать разные линейные модули для peer-link
По peer-link’у почти никогда не передается регулярный трафик. По нему бегает лишь unknown unicast, multicast/broadcast. Достигается это благодаря тому, что все MAC-адреса, таблицы IGMP snooping’а, ARP-таблицы и пр. синхронизируются между peer-устройствами посредством протокола Cisco Fabric Services.
Если vPC peer link падает, то проверяется доступность соседа через peer-keepalive линк. Если сосед жив, то secondary свитч гасит все свои vPC порты чтобы не допустить петель в сети. Соответственно весь трафик бегает через primary устройство. Если же связи нет и по keepalive-линку Вы спокойно можете получить состояние DualActive. Именно по этому рекомендую для peer link и peer-keepalive использовать разные физические интерфейсы.
Peer-keepalive link
Как я уже упоминал, peer-keepalive используется коммутаторами для периодической отсылки keepalive’ов и мониторинга состояния соседа. Это обычный L3-интерфейс, соответственно между свитчами должна быть L3-связность (как она будет реализована не важно – хоть через прямой L2-линк, хоть через облако с IGP).
По умолчанию keepalive летают раз в секунду. Вы можете настроить как keepalive interval, так и hold-timeout (по умолчанию последний равен 3 секундам). Таймер hold запускает в момент падения vPC peer link. В течение этого интервала времени secondary vPC peer игнорирует все keepalive сообщения для того, чтобы сетка смогла конвергировать.
Также есть понятие просто timeout’а. Этот таймер стартует в момент, когда счетчик hold-timeout достигает нуля. В течение timeout-интервала secondary vPC peer слушает hello keepalive от primary устройства. При получении единичного hello на secondary-устройстве блокируются все порты. Если же keepalive так и не будет получен, то secondary берет на себя роль active.
vPC Peer-Gateway
Данная фича позволяет vPC свитчу быть гейтом для пакетов, которые адресованы на МАС-адрес vPC соседа. Таким образом достигается оптимизация использования vPC peer линка. При включении данной технологии NX-OS отключает IP redirect на всех vlan-интерфейсах, которые относятся к vPC домену.
Compatibility параметры
Большинство настроек на интерфейсах двух коммутаторов в vPC домене должны быть идентичны. Если это не так, то могут быть большие проблемы (например, на одном свитче настроен trunk, а на другом access). Соответственно за конфигурацией на vPC пирах надо следить. Как только вы включаете vPC, автоматически протол активируется CFSoE (Cisco Fabric Services over Ethernet), который следит за идентичностью конфигураций.
Прим. Два vPC пира имеют разные control и management-plane. Соответственно и настраиваются они по-отдельности. CFSoE лишь может сравнить конфиги устройств.
Ниже приведен список параметров, которые обязаны совпадать:
- port-channel mode (on/off/active/passive)
- link speed/duplex
- trunk mode
- STP mode
- STP region в случае использования MSTP
- STP port type, loop/root guard
- MTU
Параметры, которые желательно должны совпадать:
- MAC aging timer
- ACL config
- QoS
- Port Security
- CTS
- DHCP snooping (trust/untrust)
- DAI
- IPSG
- HSRP/GLBP
- PIM
Если какие-то из обязательных параметров не совпадают, то «проблемные» интерфейсы secondary устройства гасятся. Такая проверка у циски называется consistency parameter check. Работает она per vlan basis.
vPC номер
После создания vPC домена и vPC peer link, Вы настраиваете portchannel в сторону нижестоящего устройства. Каждому такому portchannel Вы должны назначить некий номер (vPC number), который должен быть одинаковым на обоих vPC пирах.
Типовые схемы vPC
Ниже на картинках Вы увидите типовые схемы, в которых внедряется vPC.
Взаимодействие vPC и других технологий
vPC и LACP
При построении LACP-соседства между vPC доменом и обычным коммутатором в качестве LACP ID используется MAC-адрес vPC домена.
vPC и STP
После перехода с классической топологии на vPC начинается конвергенция STP. Для STP vPC peer-link является постоянно активным. Primary vPC коммутатор управляет всем STP процессом: синхронизирует STP состояния со вторым коммутатором используя CFSoE. В служебных сообщениях BPDU в поле Bridge ID выставляется MAC-адрес vPC домена.
vPC и ARP
Таблица ARP’а также синхронизируется между участниками vPC посредством CFSoE (для этого необходимо ввести команду ip arp synchronize.
Ограничения и правила vPC
- Вы должны включить фичу vpc прежде чем станут доступны конфигурирования
- Необходимо в первую очередь настроить peer-keepalive link, а только потом peer-link
- Для vPC peer-link’а необходимы 10Гб интерфейсы
- Есть поддержка FEX
Конфигурация и верификация
В целом настройка vPC не представляет собой большой сложности.
Прим. Нужно лишь отдавать себе отчет о том, на какой платформе вы его строите (5k/7k) – ибо они поддерживают разные топологии (которые могут меняться в зависимости от версии NX—OS). За актуальной информацией обращайтесь на design zone по адресу http://cisco.com/go/srnd, раздел Data Center.
В этой конкретной статье мы рассмотрим один пример построения vPC на Nexus7000. Топология представлена ниже.
Первым делом необходимо включить поддержку vPC командой feature vpc.
Следующим шагом является создание vPC-домена. За это отвечает команда глобальной конфигурации vpc domain <DOMAIN_ID>. Данное значение должно совпадать на двух vPC пирах.
Далее создаем peer-keepalive линк (в режиме конфигурации домена) командой peer-keepalive destination <IP ADDRESS VPC’ PEER>. При желании в команде можете указать каким IPP красить трафик, указать source IP и vrf (по умолчанию используется vrf management, в котором находится интерфейс mgmt0).
N7K-1# show vpc
Legend:
(*) — local vPC is down, forwarding via vPC peer-link
vPC domain id : 1
Peer status : peer link not configured
vPC keep-alive status : peer is alive
Configuration consistency status: failed
Configuration consistency reason: vPC peer-link does not exists
vPC role : none established
Number of vPCs configured : 0
Peer Gateway : Disabled
Dual-active excluded VLANs : —
После поднятия peer-keepalive приходит время создать peer link. Для этого сначала помещаем нужные интерфейсы в trunk PortChannel, а затем внутри интерфейса даем команду vpc peer—link. Обращаю Ваше внимание на то, что если для peer-keepalive используются SVI-интерфейсы, то запретите данную vlan внутри peer-link.
N7K-1# show vpc
Legend:
(*) — local vPC is down, forwarding via vPC peer-link
vPC domain id : 1
Peer status : peer adjacency formed ok
vPC keep-alive status : peer is alive
Configuration consistency status: success
vPC role : secondary
Number of vPCs configured : 0
Peer Gateway : Disabled
Dual-active excluded VLANs : —
vPC Peer-link status
———————————————————————
id Port Status Active vlans
— —- —— —————————————————
1 Po100 up 1-20,100
Если Вы видите что домен у Вас не поднимается, то скорее всего на 2ух коммутаторах где-то различаются настройки. Для проверки используйте следующую команду:
N7K-1# show vpc consistency-parameters global
Legend:
Type 1 : vPC will be suspended in case of mismatch
Name Type Local Value Peer Value
————- —- ———————- ————————
STP Mode 1 Rapid-PVST Rapid-PVST
STP Disabled 1 VLANs 91 VLANs 91
STP MST Region Name 1 customer Customer
STP MST Region Revision 1 1 1
STP MST Region Instance to 1
VLAN Mapping
STP Loopguard 1 Disabled Disabled
STP Bridge Assurance 1 Enabled Enabled
STP Port Type, Edge 1 Normal, Disabled, Normal, Disabled,
BPDUFilter, Edge BPDUGuard Disabled Disabled
STP MST Simulate PVST 1 Enabled Enabled
Interface-vlan admin up 2 40-43,50,60,70-71,91,1 40-43,50,60,70-
71,91,1
00-103 00-103
Allowed VLANs — 40-43,50,60,91,100-103 9,40-
43,50,60,91,100-1
,1000 03,1000
Local suspended VLANs — — —
После поднятия непосредственно vPC домена остается лишь помещать необходимы интерфейсы в сторону коммутаторов/серверов/FEX’ов внутрь vPC. Делается это командой vpc <NUMBER> в режиме конфигурирования необходимого интерфейса. Этот номер должен быть идентичным на обоих vPC пирах. После этого интерфейс добавится в вывод команды show vpc.
N7K-1# show vpc
Legend:
(*) — local vPC is down, forwarding via vPC peer-link
vPC domain id : 1
Peer status : peer adjacency formed ok
vPC keep-alive status : peer is alive
Configuration consistency status: success
vPC role : primary
Number of vPCs configured : 1
Peer Gateway : Disabled
Dual-active excluded VLANs : —
vPC Peer-link status
———————————————————————
id Port Status Active vlans
— —- —— —————————————————
1 Po100 up 1-20,100
vPC status
———————————————————————-
id Port Status Consistency Reason Active vlans
— —- —— ———— ————————— ————
1 Po1 up success success 1-20,100
Опционально. Можно вручную задать МАС-адрес, который будет использоваться vPC доменом. Делается это с помощью system-mac <MAC>.
Также хотелось бы остановить внимание на команде vpc orphan—ports suspend, которая задается в режиме конфигурирования интерфейса. Делает она следующее: если vPC домен развалился, то необходимо погасить данный порт в случае, если он является orphan. Полные конфиги представлены ниже.
----- N7K-1 -----
feature vpc
vrf context VRF_VPC-KEEPALIVE
interface e2/47
vrf member VRF_VPC-KEEPALIVE
ip address 1.1.1.1 255.255.255.0
vpc domain 1
peer-keepalive destination 1.1.1.2 source 1.1.1.1 vrf VRF_VPC-KEEPALIVE
role priority 5
system priority 100
#### PEER LINK #####
interface Po100
switchport mode trunk
vpc peer-link
##### MEMBER PORTS #####
interface e2/1
channel-group 1 mode active
interface Po1
switchport
switchport mode trunk
vpc 1
----- N7K-2 -----
feature vpc
vrf context VRF_VPC-KEEPALIVE
interface e2/47
vrf member VRF_VPC-KEEPALIVE
ip address 1.1.1.2 255.255.255.0
vpc domain 1
peer-keepalive destination 1.1.1.2 source 1.1.1.1 vrf VRF_VPC-KEEPALIVE
role priority 10
system priority 100
#### PEER LINK #####
interface Po100
switchport mode trunk
vpc peer-link
##### MEMBER PORTS #####
interface e2/1
channel-group 1 mode active
interface Po1
switchport
switchport mode trunk
vpc 1
----- N7K-3 -----
interface e2/11-12
switchport
channel-group 1 mode passive
interface Po1
switchport mode trunk
Метки: nexus, vpc
Опубликовано: Unified Fabric
Спасибо.
Хороший обзор самых базовых возможностей.
Не понятен момент с hold-timeout: для чего он вообще нужен если его можно было включить в обычный timeout?
Картиночки побились, все 404, можно поправить их?