본문 바로가기

카테고리 없음

vPC Role Election과 Sticky Bit 동작 메커니즘

today keys : Cisco, Nexus, NX-OS, vPC, Sticky Bit, Peer-Link, Keepalive, Election, Delay Restore, Reload Restore


Cisco Nexus 스위치 기반의 vPC(virtual Port Channel) 환경을 운영하다 보면 가장 까다로운 이슈 중 하나가 바로 스위치 간의 vPC Role(Primary / Secondary) 선출 및 변경입니다.

특히 장비 장애나 링크 절단 후 복구되는 과정에서 원치 않는 역할 재선출이 발생하면, LACP 멤버 포트가 플래핑(Flapping)되면서 예기치 못한 트래픽 절단이 유발되곤 합니다. 이러한 불필요한 역할 변경을 막아주는 핵심 보호 기작이 바로 vPC Primary Sticky Bit입니다.

이번 포스팅에서는 vPC의 역할 선출 순서부터 Sticky Bit의 상세 동작 원리, 그리고 다양한 장애 상황별 타이머 및 스위치 동작 메커니즘까지 깔끔하게 정리해 보겠습니다.


 

1. vPC 선출 우선순위 단계 (vPC Election Decision Order)

두 스위치가 vPC Keepalive 링크를 통해 서로 통신할 때, 다음의 3단계 순서로 vPC Primary 역할을 선출합니다

1단계: vPC Primary Sticky Bit 비교
     ↓ (Sticky Bit가 서로 동일한 경우)
2단계: 사용자 정의 vPC Role Priority 비교
     ↓ (Role Priority가 서로 동일한 경우)
3단계: System MAC Address 비교

 

2. vPC Primary Sticky Bit 이해하기

vPC Primary Sticky Bit는 스위치가 불필요하게 역할을 변경하여 네트워크 플랩(통신 중단)을 일으키는 것을 방지하는 보호 메커니즘입니다.

동작 원리: 한쪽 스위치의 Sticky Bit가 TRUE(1)로 설정되어 있고 다른 스위치는 FALSE(0)라면, 우선순위(Role Priority) 설정값에 상관없이 Sticky Bit가 TRUE인 스위치가 Primary로 선정됩니다.

TRUE (1)로 설정되는 경우:
현재 vPC Primary 스위치가 재부팅되어, 
남아서 동작하던 Secondary 스위치가 vPC Operational Primary로 역할이 변경될 때.

reload restore 타이머가 완료된 후 스위치가 Primary 역할을 맡을 때.

FALSE (0)로 설정되는 경우:
스위치가 완전히 재부팅될 때 (부팅 시 기본값 0).
사용자가 vpc role priority 명령어를 재입력하거나 변경할 때.



3. vPC Peer-Link 장애 발생 시 동작 (Peer-Link Down Behavior)

vPC Peer-Link가 끊어지고 vPC Peer-Keepalive 링크만 정상이면, 
네트워크에 Split-Brain(중복 포워딩 및 루프) 현상이 발생하는 것을 막기 위해 다음 과정이 수행됩니다:


vPC Secondary 스위치의 보호 동작
Secondary 스위치는 자신의 모든 vPC Member Port를 차단(Suspend)합니다.
vPC VLAN과 연관된 SVI 인터페이스를 셧다운합니다.

트래픽 우회
하위 장비에서 올라오는 모든 트래픽(South-to-North)은 정상 작동 중인 vPC Primary 스위치로만 유도되어 차단 없이 안정적으로 처리됩니다.



4. vPC Role이 변경되는 경우 정리

운영 중 스위치의 vPC Role(Primary / Secondary)이 실제 변경되는 대표적인 주요 시나리오와 각 상황별 처리 결과입니다.

발생 시나리오 동작 및 Role 변경 결과 Sticky Bit 상태 변동
Primary 스위치 재부팅 (Reload) Secondary 스위치가 1호기의 다운을 감지하고 Operational Primary로 승격 Secondary였던 장비의 Sticky Bit가 0 ➔ 1로 변경
Peer-Link + Keepalive 동시에 절단 두 장비 모두 상대방이 죽었다고 판단하여 각자 Operational Primary로 작동 (Dual-Active) 승격 프로세스가 일어난 장비의 Sticky Bit가 1로 세팅
재부팅 후 240초간 피어 미응답 스위치가 독립적으로 vPC Primary로 승격되어 포트 Bring-up 타이머 만료 후 Primary 승격 시점에 Sticky Bit 1 세팅
Dual-Active 상태에서 링크 복구 Sticky Bit(1 vs 1)가 동일하므로 vPC Role Priority를 비교하여 역할 재정렬 vPC 세션 정상화(Established) 완료 시 양쪽 모두 0으로 리셋
관리자가 vpc role priority 재설정 제어 데몬이 초기화되며 설정된 Priority 기반으로 역할 재선출 유도 명령 입력 즉시 Sticky Bit 0으로 리셋

 

5. reload restore timer가 적용되는 경우

reload restore 타이머(기본값 240초)는 스위치가 재부팅(Reload)되어 부팅된 직후 혼자 올라왔을 때 적용되는 대기 타이머입니다.

스위치 재기동 (None establish 상태)
     ↓
240초 카운트다운 시작 (vPC 포트 Suspended 대기)
     ↓
240초 동안 피어 스위치 미응답 확인
     ↓
vPC Primary 승격 & Sticky Bit = 1 세팅 & vPC 포트 Bring-Up

기능 목적
 스위치가 재부팅된 직후 피어 스위치가 아직 수렴 중이거나 늦게 올라오는 상황에서,
 혼자 즉시 Primary를 선언하고 포트를 열었다가 발생할 수 있는 트래픽 블랙홀(Blackholing)을 방지합니다.


동작 특성
 부팅 시 단 한 번 카운트다운되는 단방향 타이머입니다. 
부팅 후 60초 시점에 피어 연결이 끊기더라도 타이머가 240초로 리셋되지 않으며, 남아있는 180초 동안 계속 카운트다운을 진행합니다.



6. Peerlink와 Keepalive-link 동시 단절 시 Sticky Bit 전환 시점

Peer-Link와 Keepalive-Link가 동시에 끊겼을 때 
2호기(Secondary)의 Sticky Bit가 1(TRUE)로 바뀌는 시점에 대해 240초 타이머와 혼동하기 쉽습니다. 

결론부터 정리하면 240초를 기다리지 않고 감지 즉시 변경됩니다.

링크 동시 단절 시 (운영 중 발생) ➔ "즉시 (바로) 1로 변경"

이미 vPC 연결이 정상 형성된(Established) 상태로 동작 중이었다면, 
두 링크가 동시에 끊기는 즉시 2호기는 1호기를 장애 상태로 간주합니다. 
2호기가 Secondary에서 Operational Primary로 역할을 승격시키는 그 순간 바로 Sticky Bit가 1(TRUE)로 변경됩니다.


스위치 재부팅 시 (부팅 직후) ➔ "240초 타이머 만료 후 1로 변경"

스위치가 재부팅되어 부팅된 직후(None establish) 상태라면,
피어 응답을 기다리기 위해 reload restore 타이머가 작동합니다. 
이 경우에는 240초가 완전히 경과한 뒤 Primary로 승격되는 시점에 Sticky Bit가 1(TRUE)로 변경됩니다.

 

📌 한 줄 요약: 운영 중 물리적인 링크 동시 단절은 '즉시' 승격 및 Sticky Bit 1 세팅이 진행되며, 스위치 자체가 켜지는 부팅 상황에서만 '240초 후'에 승격 및 Sticky Bit 1 세팅이 진행됩니다.

 

7. 참고 Cisco 공식 문서 (Reference Links)

본 포스팅의 메커니즘 분석 및 검증에 참고된 Cisco 공식 기술 문서 목록입니다.

 

※ 기존 vPC Role 관련 포스팅
 https://zigispace.net/522

 

Nexus - NX-OS 정리 Part 16 (vPC Roles)

올 한해도 벌써 다 지나가고 있네요. 날씨도 엄청나게 춥구요.. Nexus 정리 16번째 입니다. 두서없이 정리하느라 순서도 잘 없고.. 원래 말쯤에는 pdf로 쭈~욱 정리를 해보고 싶었지만.. 그렇게 부지

zigispace.net