~/network/lacp
스위칭

LACP

여러 개의 물리 링크를 하나의 논리 링크처럼 사용하게 해주는 IEEE 802.1AX 표준 제어 프로토콜이다. 묶인 링크 그룹은 한 덩어리처럼 동작하기 때문에 STP 같은 L2 제어 프로토콜에게는 단일 포트처럼 보인다.

LACP 자체는 어떤 포트를 같은 LAG(Link Aggregation Group)에 넣을지 협상하고 상태를 동기화하는 제어 프로토콜이며, 실제 트래픽 분산은 장비의 해시 기반 로드 밸런싱 알고리즘이 담당한다.

벤더별 명칭은 다음과 같다.

  • Cisco — EtherChannel / Port-Channel
  • Juniper — LAG (Link Aggregation Group), ae-interface
  • Arista — Port-Channel / MLAG
  • Linux Bonding — Mode 4 (802.3ad)

장점

여러 포트를 하나의 논리 링크로 만들면 다음 장점이 생긴다.

  • 대역폭 확장 — 전체 처리량(여러 세션의 합)은 멤버 링크 수에 비례해 N배에 가까워진다. 다만 단일 세션 단위로는 한 링크 속도가 상한이라, 한 TCP 세션 하나가 N배 빨라지지는 않는다.
  • 이중화 — 한 포트나 케이블에 장애가 발생해도 나머지 포트로 트래픽이 흐른다. 물리 링크 다운은 즉시 감지되지만, LACPDU가 끊기는 장애는 타이머 설정에 따라 보통 3초(Fast) 또는 90초(Slow) 안에 감지된다.
  • STP 차단 회피STP는 루프 방지를 위해 병렬 링크 중 일부를 Blocking으로 막지만, LACP로 묶으면 단일 논리 포트로 보이므로 모든 멤버 링크를 동시에 활성으로 사용할 수 있다.

LACP vs Static LAG

링크를 묶는 방식은 크게 두 가지다.

  • Static (Manual) — 양쪽 스위치를 그냥 묶음 그룹에 넣는다. 협상 없이 강제로 합쳐진다.
  • LACP (Dynamic) — 양쪽이 LACPDU를 주고받아 협상에 성공한 포트만 그룹에 포함시킨다.
구분StaticLACP
협상없음LACPDU 교환
케이블 오결선 감지제한적가능 (LACPDU 미수신/불일치 → 그룹에서 제외)
한쪽만 설정된 경우루프, MAC 플래핑, 블랙홀 위험협상 실패로 묶이지 않음
사용 권장예외적표준

운영 환경에서는 거의 항상 LACP를 사용한다. Static은 잘못된 결선이나 한쪽만 묶인 설정 실수를 감지하지 못해 루프, MAC 플래핑, 트래픽 블랙홀 같은 장애로 이어질 수 있기 때문이다.

LACPDU

LACP 양 끝단은 일정 주기로 LACPDU 라는 제어 프레임을 주고받으며 협상 정보를 동기화한다.

주요 필드

  • System ID — LACP에 참여하는 장비, 또는 MC-LAG처럼 하나의 장비처럼 보이게 만든 논리 시스템을 식별
  • Key — 어떤 포트들이 같은 LAG에 들어갈 수 있는지 나타내는 값. 보통 포트채널 번호와 연관되며, 양쪽 Key가 일치해야 묶임
  • Port ID — LAG 안에서 각 멤버 포트를 식별하는 값
  • State 플래그 — Active/Passive, 타이머(Short/Long), 동기화 상태 등

전송 주기

양쪽 타이머가 일치해야 안정적으로 동작한다. 한쪽만 Fast로 설정하면 비대칭 상태로 분리되는 장애가 생길 수 있다.

모드송신 주기분리 시점용도
Slow (Long Timeout)30초90초간 미수신 시일반적인 운영 환경
Fast (Short Timeout)1초3초간 미수신 시빠른 장애 감지가 필요할 때

동작 모드

LACP 포트는 두 가지 모드 중 하나로 설정된다.

  • Active — 적극적으로 LACPDU를 송신하며 협상을 시도한다.
  • Passive — LACPDU를 먼저 보내지 않지만, 상대가 보내오면 응답한다.
양쪽 조합결과
Active – Active정상 협상
Active – Passive정상 협상
Passive – Passive협상 실패. 둘 다 먼저 말을 걸지 않는다.

베스트 프랙티스는 양쪽 모두 Active 로 설정하는 것이다. Active–Passive도 정상 동작하지만, Passive–Passive는 절대 협상을 시작하지 않기 때문에 양쪽 Active가 가장 예측 가능하다.

포트 호환성

LACP가 모든 설정을 직접 검증해주는 것은 아니다. LACP는 System ID, Key, Port ID, State 같은 정보를 교환해 같은 LAG에 들어갈 수 있는지 판단하고, 장비는 여기에 더해 로컬 멤버 포트의 일관성을 검사한다.

운영에서는 다음 조건을 맞춰야 한다.

  • 속도 / Duplex — 대부분의 장비에서 같은 LAG의 멤버는 동일 속도, full-duplex여야 한다.
  • L2/L3 모드 — 멤버 포트들이 모두 스위치포트이거나 모두 라우티드 포트여야 한다.
  • VLAN 설정 — Access면 같은 VLAN, Trunk면 Native VLAN 및 Allowed VLAN이 일치해야 한다.
  • MTU
  • STP / QoS / 보안 옵션 — Port Cost, Priority, Storm Control, QoS Trust, Port Security 같은 포트 단위 설정

로컬 멤버 포트끼리 설정이 다르면 장비가 해당 포트를 suspended, individual, not bundled 상태로 빼는 경우가 많다. 반면 양 끝단의 VLAN/MTU 같은 설정이 서로 다르면 LACP는 올라오더라도 특정 VLAN만 통신이 안 되거나 큰 프레임이 드롭되는 식의 장애가 날 수 있다. show lacp neighbor / show etherchannel summary 같은 명령으로 LACP 상태와 번들 상태를 함께 확인해야 한다.

로드 밸런싱

LAG가 여러 링크로 묶여 있어도 하나의 플로우는 항상 같은 한 링크로만 보내진다. 패킷이 도착 순서가 꼬이는 것을 막기 위해서다. 어느 링크로 보낼지는 패킷 헤더의 일부 필드를 해시해서 결정하며, 어떤 필드를 입력으로 쓸지는 장비 설정으로 고를 수 있다.

자주 쓰이는 해시 입력 필드:

  • MAC 주소 — 출발지/목적지 MAC. 주로 L2 스위치 환경.
  • IP 주소 — 출발지/목적지 IP. L3 환경.
  • L4 포트 포함 — TCP/UDP 포트까지 입력에 넣으면 같은 서버 쌍 사이에서도 세션마다 다른 링크로 분산된다.

Hash Imbalance

해시 결과가 특정 링크로 몰리면 LAG 전체에 여유가 있어도 그 링크만 포화되어 드롭이 생긴다. 트래픽 패턴과 해시 입력이 맞지 않을 때 발생한다.

예: 서버 한 대가 DB 한 대로만 통신하는 구간에서 해시가 IP만 본다면, 서버-DB 쌍이 하나뿐이라 항상 같은 링크로만 흐른다. 해시 입력에 L4 포트까지 포함시키면 TCP 세션별로 포트가 달라지면서 여러 링크로 분산된다.

운영에서는 트래픽 흐름을 확인하고 해시 입력을 조정한다 (예: Cisco port-channel load-balance src-dst-ip-l4port).

MC-LAG / vPC

기본 LACP는 한 대 단말 ↔ 한 대 스위치 사이에서만 동작한다. 그래서 단말의 두 포트를 서로 다른 상위 스위치 두 대에 나눠 꽂아 이중화하려 해도, 단말 입장에선 서로 다른 두 장비에서 LACPDU 가 오니까 한 LAG 로 묶이지 않는다 — 양쪽 스위치의 System ID 가 다르기 때문이다.

MC-LAG는 두 대의 상위 스위치를 단말 시점에서 한 대처럼 보이게 만들어 이 문제를 해결한다. 두 스위치가 공통 System ID 를 공유해 단말과의 LACP 협상이 성립하고, 한쪽 스위치가 다운돼도 나머지 한 대만으로 통신이 끊김 없이 이어진다.

내부적으로 두 스위치는 서로를 Peer Link(데이터·상태 동기화)와 Keepalive Link(생존 감시)로 직접 연결해 MAC 테이블, LACP 상태 등을 맞춘다.

벤더별 명칭:

  • Cisco Nexus — vPC (virtual Port-Channel)
  • Juniper — MC-LAG (Multi-Chassis LAG)
  • Arista / Cumulus — MLAG

MC-LAG 는 IEEE 표준 LACP 자체의 기능이 아니라 벤더별 구현이지만, 캠퍼스 / DC 환경의 Distribution 또는 Aggregation 계층 이중화에서 사실상 표준이다.

PAgP (Port Aggregation Protocol)

PAgP는 Cisco 독자 프로토콜로, LACP 이전부터 EtherChannel 협상에 사용되어 왔다. 동작 개념은 LACP와 유사하지만 Cisco 장비끼리만 가능하다. 멀티 벤더 환경에서는 표준인 LACP가 사실상의 디폴트이며, PAgP를 새로 도입할 이유는 없다.

정리

  • LACP는 여러 물리 링크를 하나의 논리 링크처럼 쓰기 위한 표준 제어 프로토콜이다.
  • 양쪽 모두 Active 모드의 LACP 가 일반적인 구성이며, Static LAG는 결선 실수 감지가 어려워 권장하지 않는다.
  • 로드 밸런싱은 해시 기반이라 단일 플로우는 보통 한 링크에 고정된다. 전체 대역폭은 여러 플로우가 분산될 때 의미가 있다.
  • 장비 단위 이중화까지 확장하려면 vPC / MC-LAG / MLAG 같은 다중 섀시 LAG 기술이 필요하다.