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-домену, тобто такі топології не підтримуються:
Після настройки vPC peer link (самі настройки ми розглянемо в кінці статті) комутатори домовляються між собою про те хто з них буде primary, а хто secondary (вибір йде на основі найменшого MAC, або пріоритету). По суті, хто з них хто ролі не грає (це важливо тільки в певних failover-ситуаціях). Якщо primary виходить з ладу, то secondary підхоплює його роль.
Прим. У разі настройки vPC між Nexus7000 настійно рекомендується використовувати різні лінійні модулі для peer-link
Якщо vPC peer link падає, то перевіряється доступність сусіда через peer-keepalive лінк. Якщо сусід живий, то secondary свитч гасить всі свої vPC порти щоб не допустити петель в мережі. Відповідно весь трафік бігає через primary пристрій. Якщо ж зв'язку немає і по keepalive-лінку Ви спокійно можете отримати стан DualActive. Саме з цього рекомендую для peer link і peer-keepalive використовувати різні фізичні інтерфейси.
Як я вже згадував, 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 домені повинні бути ідентичні. Якщо це не так, то можуть бути великі проблеми (наприклад, на одному світче налаштований 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
Параметри, які бажано повинні збігатися:
Якщо якісь з обов'язкових параметрів не співпадають, то «проблемні» інтерфейси secondary пристрої гасяться. Така перевірка у циского називається consistency parameter check. Працює вона per vlan basis.
Після створення vPC домену та vPC peer link, Ви налаштовуєте portchannel в сторону нижчестоящого пристрою. Кожному такому portchannel Ви повинні призначити якийсь номер (vPC number), який повинен бути однаковим на обох vPC бенкетах.
Нижче на малюнках Ви побачите типові схеми, в яких впроваджується vPC.
vPC і LACP
Таблиця ARP'а також синхронізується між учасниками vPC допомогою CFSoE (для цього необхідно ввести команду ip arp synchronize.
- Ви повинні включити фичу vpc перш ніж стануть доступні конфігурації
- Необхідно в першу чергу налаштувати peer-keepalive link, а тільки потім peer-link
- Для vPC peer-link'а необхідні 10Гб інтерфейси
- Є підтримка FEX
В цілому настройка vPC не представляє собою великої складності.
У цій конкретній статті ми розглянемо один приклад побудови vPC на Nexus7000. Топологія представлена нижче.
Насамперед необхідно включити підтримку vPC командою featurevpc.
Наступним кроком є створення vPC-домену. За це відповідає команда глобальної конфігурації vpcdomain
Далі створюємо peer-keepalive лінк (в режимі конфігурації домену) командою peer-keepalive destination
(*) - 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, а потім всередині інтерфейсу даємо команду vpcpeer-link. Звертаю Вашу увагу на те, що якщо для peer-keepalive використовуються SVI-інтерфейси, то забороніть дану vlan всередині peer-link.
(*) - 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
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
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-
Allowed VLANs - 40-43,50,60,91,100-103 9,40-
Local suspended VLANs - - -
Після підняття безпосередньо vPC домену залишається лише поміщати необхідні інтерфейси в сторону комутаторів / серверів / FEX'ов всередину vPC. Робиться це командою vpc
(*) - 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
id Port Status Consistency Reason Active vlans
- - - ---- --------- ----
1 Po1 up success success 1-20,100
Також хотілося б зупинити увагу на команді vpcorphan-portssuspend. яка задається в режимі конфігурації інтерфейсу. Робить вона наступне: якщо vPC домен розвалився, то необхідно погасити даний порт в разі, якщо він є orphan. Повні конфіги представлені нижче.