10링크 집계 (Link Aggregation)Working with Link Aggregation
링크 집계는 인터페이스 본딩(bonding) 이라고도 부르며, 여러 개의 물리 인터페이스를 하나의 가상 인터페이스(bond)로 묶는 기술입니다. 이렇게 묶으면 인터페이스나 링크 장애에 대비한 이중화를 얻거나, 한 물리 인터페이스로는 불가능한 수준으로 처리량을 끌어올릴 수 있습니다. 이 장은 본딩의 개념과 용어부터 시작해, High Availability·Load Sharing 두 모드의 설정 절차, 임계 인터페이스와 코어 어피니티 같은 세부 튜닝, 페일오버 동작, Cisco 스위치 설정, 그리고 문제 해결까지 원문의 모든 절차·표·명령·주의사항을 빠짐없이 풀어 둡니다. 본딩에 대한 더 자세한 내용은 R82 Gaia Administration Guide와 R82 ClusterXL Administration Guide를 함께 참고하세요.
본딩 용어 정리
먼저 이 장에서 계속 나오는 용어를 정확히 잡아 두겠습니다.
| 용어 | 뜻 |
|---|---|
| Link Aggregation(Interface Bonding) | 여러 물리 인터페이스를 하나의 가상 인터페이스로 묶는 네트워킹 기술 |
| bond | 하나의 가상 인터페이스처럼 함께 동작하며 IP와 MAC을 공유하는 물리 인터페이스 묶음. 클러스터에서 bond0 같은 Bond ID로 식별됩니다. |
| bond 인터페이스 | bond를 논리적으로 표현한 것 |
| 종속 인터페이스(subordinate interface) | bond에 속한 물리 인터페이스. 자기 IP가 없고, 경우에 따라 같은 MAC을 공유합니다. |
링크 집계는 어떻게 동작하는가
하나의 bond에는 종속 인터페이스를 최소 1개에서 최대 8개까지 넣을 수 있습니다. bond 안의 모든 종속 인터페이스는 공통 IP를 공유하며 같은 MAC을 공유할 수도 있습니다. 클러스터 멤버마다 동일한 종속 인터페이스를 같은 수로 두는 것이 권장됩니다.

위 그림의 구성 요소는 다음과 같습니다.
| 항목 | 설명 |
|---|---|
| 1 | 스위치(Switch) |
| 2 | bond 0 |
| 3 | 클러스터(Cluster) |
본딩에는 두 가지 전략이 있습니다.
- High Availability(Active/Backup) — 인터페이스나 링크가 죽었을 때 이중화를 보장하며, 스위치 이중화까지 제공합니다.
- Load Sharing(Active/Active) — 모든 인터페이스가 동시에 활성 상태로 서로 다른 연결을 처리해 처리량을 극대화합니다. 다만 스위치 이중화는 지원하지 않습니다.
High Availability 본딩
클러스터는 그 정의상 VSX Gateway 수준의 이중화와 고가용성을 제공합니다. 링크 집계는 여기에 같은 VSX Gateway 안의 예비 인터페이스 카드로 자동 페일오버하는 인터페이스·스위치 이중화를 더합니다.
HA 배포에서는 한 번에 하나의 인터페이스만 활성이며, 인터페이스나 연결이 죽으면 bond가 예비 종속 인터페이스로 페일오버합니다. HA 페일오버는 다음 두 경우에 일어납니다.
- 활성 인터페이스가 감시 중인 인터페이스에서 링크 상태 장애를 감지할 때
- ClusterXL이 CCP(Cluster Control Protocol) keep-alive 패킷의 송수신 실패를 감지할 때
인터페이스 본딩으로 만드는 풀 메시 이중화
HA 모드를 ClusterXL과 함께 배포하면 더 높은 수준의 신뢰성을 얻을 수 있습니다. 이는 풀 메시(fully meshed) 토폴로지로 NIC와 스위치 양쪽에 독립적인 백업을 두어 세밀한(granular) 이중화를 구현하는 방식입니다.

| 항목 | 설명 | 항목 | 설명 |
|---|---|---|---|
| 1 | 스위치 1 | 5 | 네트워크 연결 2 |
| 2 | 스위치 2 | 6 | 네트워크 연결 3 |
| 3 | 네트워크 연결 1 | 7 | VSX Cluster Member 1 |
| 4 | 네트워크 연결 4 | 8 | VSX Cluster Member 2 |
이 시나리오에서 VSX Cluster Member 1과 2는 High Availability 모드로 구성되어 있습니다.
Load Sharing 본딩
Load Sharing은 인터페이스 이중화에 더해 여러 종속 인터페이스로 트래픽을 분산하는 능력을 줍니다. 모든 인터페이스가 항상 활성이며, 트래픽은 Load Sharing이 VSX Cluster Member 사이에서 트래픽을 분배하는 것과 비슷한 방식으로 인터페이스 간에 분배됩니다.
Load Sharing은 IEEE 802.3ad 또는 XOR 표준 중 하나에 따라 동작합니다. 이 모드에서는 개별 연결마다 특정 종속 인터페이스가 지정되어, 그 연결에 대해서는 지정된 종속 인터페이스만 활성으로 동작합니다. 지정된 종속 인터페이스가 죽으면 트래픽이 다른 인터페이스로 넘어가는데, 그 인터페이스도 기존에 처리하던 트래픽을 계속 처리합니다.
bond 인터페이스 제한 사항
용량 계획을 세울 때 다음 제한을 알아 두어야 합니다.
- Gaia 서버나 어플라이언스에는 최대 4096개의 인터페이스를 정의할 수 있습니다. 이때 사용 중인 bond 인터페이스의 총수는 bond 개수 + 각 bond에 든 종속 인터페이스 수의 합으로 계산됩니다.
- 링크 집계 배포에서 하나의 bond 인터페이스당 최대 8개 인터페이스를 정의할 수 있습니다.
Bond High Availability 모드 설정
이 절은 bond 인터페이스에 High Availability를 설정하는 방법을 설명합니다. CLI 명령은 VSX Gateway(VS0) 컨텍스트에서 실행하며, VSX 클러스터라면 각 VSX Cluster Member에서 실행합니다. HA를 설정하려면 mode 파라미터에 active-backup 값을 씁니다.
High Availability bond 구성 워크플로
다음은 HA 모드로 링크 집계를 설정하는 CLI 명령의 흐름입니다.
- 본딩 그룹을 추가합니다.
- 본딩 그룹에 종속 인터페이스를 추가합니다.
- bond가 올바르게 구성됐는지 확인합니다.
- SmartConsole을 열어 클러스터 객체를 설정합니다.
- 새 링크 집계 설치라면 — 새 클러스터 객체를 만듭니다.
- 기존 구성을 갱신하는 것이라면 — 인터페이스 토폴로지를 갱신합니다.
인터페이스 토폴로지 갱신하기
기존 구성을 링크 집계로 바꿀 때는 새로 만든 bond에 연결되도록 관련 객체를 다시 구성해야 합니다. 여기에는 Virtual System, Virtual Router, Virtual Switch가 모두 포함됩니다. 이 작업은 SmartConsole에서 할 수 있으며, 대부분의 경우 해당 정의는 객체의 Properties 창에서 찾을 수 있습니다.
Domain Management Server와 Virtual Device가 많은 대규모 기존 VSX 배포에서는 관리 서버에서 vsx_util change_interfaces 명령을 쓰는 편이 훨씬 빠릅니다. 예컨대 200개 Domain에 각각 Virtual Device가 잔뜩 있는 Multi-Domain Server 배포라면 이 명령을 쓰는 것이 더 빠릅니다. 이 명령은 모든 해당 객체의 인터페이스를 새 bond로 자동 교체해 줍니다.
bond 재구성 (SmartConsole 절차)
새로 만든 bond를 클러스터용으로 구성하는 단계는 다음과 같습니다.
- VSX 클러스터를 관리하는 Security Management Server나 Main Domain Management Server에 SmartConsole로 연결합니다.
- 사용하지 않을 종속 인터페이스를 bond에서 삭제합니다.
- 탐색 트리에서 Topology를 클릭합니다.
- 탐색 트리에서 Physical Interfaces를 클릭합니다.
- 해당 종속 인터페이스를 선택하고 Remove를 클릭합니다.
- OK를 클릭합니다.
- 나머지 모든 종속 인터페이스에 대해 같은 단계를 반복합니다.
- 각 VSX Cluster Member의 Gaia Clish에서 새 bond 인터페이스를 만듭니다.
- VSX 클러스터를 관리하는 Security Management Server나 Main Domain Management Server에 SmartConsole로 연결합니다.
- Gateways & Servers 뷰나 Object Explorer에서 VSX 클러스터 객체를 더블클릭합니다.
- 왼쪽 탐색 트리에서 Physical Interfaces를 클릭합니다.
- Add를 클릭하고 bond 인터페이스를 구성합니다. Physical Interface Properties 창이 열립니다.
- bond 이름을 입력합니다.
- bond가 VLAN 트렁크라면 VLAN Trunk를 선택합니다.
- OK를 클릭합니다.
- 왼쪽 탐색 트리에서 Topology를 클릭합니다.
- bond에 추가하는 각 인터페이스에 대해 다음을 수행합니다.
- 인터페이스를 더블클릭합니다. Interface Properties 창이 열립니다.
- Interface에서 bond 인터페이스를 선택합니다.
- OK를 클릭합니다.
- VSX 클러스터 객체에 VSX 정책(
<VSX 클러스터 객체 이름>_VSX)을 설치합니다.
`vsx_util change_interfaces`로 토폴로지 재구성
vsx_util change_interfaces 명령으로 객체를 재구성하는 절차는 다음과 같습니다.
- 지정 인터페이스를 쓰는 Security Management Server와 모든 Domain Management Server의 SmartConsole 창을 닫습니다.
- 관리 서버의 명령줄에 접속합니다.
- Expert 모드로 로그인합니다.
vsx_util change_interfaces명령을 실행하고 화면 안내를 따릅니다.- Security Management Server 또는 Main Domain Management Server의 IP 주소를 입력합니다.
- 관리 관리자(administrator) 이름과 암호를 입력합니다.
- VSX 클러스터 객체를 선택합니다.
- Apply changes to the management database and to the VSX Gateway/Cluster members immediately(변경을 관리 데이터베이스와 VSX Gateway/클러스터 멤버에 즉시 적용)를 선택합니다.
- 프롬프트가 뜨면 교체할 인터페이스를 선택합니다.
- 프롬프트가 뜨면 교체에 쓸 bond 인터페이스를 선택합니다.
- 인터페이스를 더 교체하려면 프롬프트에서
y를 입력하고 위 단계를 반복합니다. - 과정을 마치려면
n을 입력합니다.
Bond Load Sharing 모드 설정
이 절은 bond 인터페이스에 Load Sharing을 설정하는 방법을 설명합니다. CLI 명령은 VSX Gateway(VS0) 컨텍스트에서 실행하며, VSX 클러스터 구성이라면 각 VSX Cluster Member에서 실행합니다. bond 인터페이스에는 다음 Load Sharing 모드 중 하나를 설정합니다.
- Round Robin — 활성 종속 인터페이스를 순서대로(sequentially) 선택합니다.
- 802.3ad — 활성 종속 인터페이스를 동적으로 활용해 트래픽 부하를 분산합니다. 이 모드는 LACP 프로토콜을 사용해 Check Point Security Gateway와 스위치 사이의 인터페이스 링크를 완전히 감시합니다.
- XOR — UP 상태의 모든 종속 인터페이스가 Load Sharing을 위해 활성이 됩니다. 트래픽은 전송 해시 정책에 따라 활성 종속 인터페이스에 배정되는데, Layer 2 정보(하드웨어 MAC 주소의 XOR) 또는 Layer 3+4 정보(IP 주소와 포트)를 씁니다.
Load Sharing bond 구성 워크플로
다음은 Load Sharing 모드로 링크 집계를 설정하는 CLI 명령의 흐름입니다.
- 본딩 그룹을 추가합니다.
- 본딩 그룹에 종속 인터페이스를 추가합니다.
- 임계(critical) 인터페이스 수를 정의합니다.
- Performance Pack을 쓰는 구성이라면 코어 어피니티(core affinity)를 설정합니다.
- bond가 올바르게 구성됐는지 확인합니다.
- SmartConsole을 열어 VSX 클러스터 객체를 설정합니다.
- 새 링크 집계 설치라면 — 새 클러스터 객체를 만듭니다.
- 기존 구성을 갱신하는 것이라면 — 인터페이스 토폴로지를 갱신합니다.
임계 필수 인터페이스(Critical Required Interfaces) 설정
Load Sharing 모드의 bond는 살아 있는 종속 인터페이스 수가 임계 최솟값 아래로 떨어지면 다운으로 간주됩니다. 명시적으로 정의하지 않으면, n개 인터페이스로 이루어진 bond에서 UP 상태로 유지돼야 하는 임계 최솟값은 n-1입니다. 따라서 종속 인터페이스가 추가로 하나 더 죽어(n-2가 남으면) bond에 종속 인터페이스가 둘보다 많더라도 bond 전체가 다운으로 처리됩니다.
더 적은 수의 종속 인터페이스로도 예상 트래픽을 감당할 수 있다면, 임계 최솟값을 직접 정의해 이중화를 높일 수 있습니다. 적절한 값은 최대 예상 트래픽 속도를 종속 인터페이스 속도로 나눠 정수로 올림한 값입니다.
임계 인터페이스 수를 명시적으로 정의하려면 다음 파일을 만들어 편집합니다.
$FWDIR/conf/cpha_bond_ls_config.conf파일의 각 줄은 다음 구문으로 적습니다.
<본드 이름> <임계 최솟값(종속 인터페이스 수)>예를 들어 bond0에 종속 인터페이스가 7개, bond1에 6개 있다면 파일 내용은 다음과 같을 수 있습니다.
bond0 5
bond1 3이 예에서는 —
- bond0은 종속 인터페이스 3개가 죽으면 다운으로 간주됩니다.
- bond1은 종속 인터페이스 4개가 죽으면 다운으로 간주됩니다.
종속 인터페이스의 CPU 코어 어피니티
최적 성능을 위해 다음 지침을 따릅니다.
- bond 종속 인터페이스를 CPU 코어에 정적(static)으로 고정합니다.
- 가능하면 인터페이스마다 처리 코어 하나를 전담시킵니다.
- 물리 인터페이스가 CPU 코어보다 많으면, 일부 코어가 두 개 이상의 인터페이스를 맡습니다.
이때 내부 본드와 외부 본드에서 같은 위치(position)에 있는 종속 인터페이스를 한 쌍으로 묶어 처리하는 것이 요령입니다.
- bond 안 종속 인터페이스의 위치를 보려면 Expert 모드에서 다음을 실행합니다.
cat /proc/net/bonding/<본드 인터페이스 이름>
- 출력에 나타나는 인터페이스의 순서를 확인합니다. 두 bond(외부 본드와 그에 대응하는 내부 본드)에 대해 이 순서를 비교하면, 같은 위치에 나타나는 종속 인터페이스가 인터페이스 쌍입니다. 이 쌍을 하나의 처리 CPU 코어가 다루도록 설정합니다.
구성 예시
어떤 어플라이언스가 다음과 같다고 합시다.
- 처리 CPU 코어 4개: core 0, core 1, core 2, core 3
- bond 인터페이스 2개:
- bond0 — 종속 인터페이스 eth0, eth1, eth2
- bond1 — 종속 인터페이스 eth3, eth4, eth5
이 경우 CPU 코어 중 둘은 각각 종속 인터페이스 두 개를 맡아야 합니다. 최적 구성은 다음과 같을 수 있습니다.
| CPU 코어 | bond0 | bond1 |
|---|---|---|
| 0 | eth0 | eth3 |
| 1 | eth1 | eth4 |
| 2 | eth2 | |
| 3 | eth5 |
페일오버는 어떻게 일어나는가
다음 두 가지 장애 시나리오 중 하나가 bond 페일오버를 일으킵니다.
- 활성 인터페이스가 감시 중인 다른 인터페이스에서 링크 상태 장애를 감지할 때
- ClusterXL이 CCP(Cluster Control Protocol) keep-alive 패킷의 송수신 실패를 감지할 때
이런 일이 생기면 상황에 따라 본드 안의 다른 종속 인터페이스로 넘어가거나 VSX Cluster Member 사이에서 페일오버가 일어납니다.
링크 상태로 시작되는 페일오버
링크 상태로 촉발되는 페일오버는 다음 순서로 진행됩니다.
- 활성 종속 인터페이스가 다운된 링크 상태를 감지합니다.
- bond가 예비 인터페이스로 페일오버합니다. 이는 본드 내부의 페일오버라 다른 VSX Cluster Member의 상태에는 영향이 없습니다. 다만 살아 있는 종속 인터페이스 수가 임계 최솟값 아래로 떨어지면 다른 VSX Cluster Member로 페일오버합니다(위 "임계 필수 인터페이스 설정" 참고).
- 예비 인터페이스마저 계속 링크 장애를 감지하고 처음 인터페이스도 여전히 죽어 있으면, 다른 VSX Cluster Member로 페일오버가 일어납니다.
CCP(Cluster Control Protocol)로 시작되는 페일오버
CCP 페일오버는 다른 VSX Cluster Member가 죽지 않았을 때만 일어나며, 다음 순서로 진행됩니다.
- ClusterXL이 CCP 패킷 송수신에 문제가 있음을 감지합니다.
- ClusterXL이 내부 본드 페일오버를 시작합니다.
- ClusterXL이 CCP 패킷의 송수신을 계속 감시합니다. 3분 안에 추가 문제가 감지되면 다른 VSX Cluster Member로 페일오버합니다.
VLAN에 대한 페일오버 지원
ClusterXL은 VLAN ID의 연결 실패나 통신 오류를 감시해 필요할 때 페일오버합니다. 기본적으로는 가장 높은 VLAN ID와 가장 낮은 VLAN ID만 장애 감시 대상이며, 이는 정해진 간격으로 왕복 경로에 ClusterXL Control Protocol(CCP) 패킷을 보내 이루어집니다. 필요하면 VSX가 모든 VLAN을 감시하도록 설정할 수 있습니다.

| 항목 | 설명 | 항목 | 설명 |
|---|---|---|---|
| 1 | 클러스터(Cluster) | 5 | VLAN 3 |
| 2 | bond 0 | 6 | S-1 |
| 3 | VLAN 1 | 7 | S-2 |
| 4 | VLAN 2 |
장애가 감지되면 그 기록이 Logs & Events 뷰에 로그로 남습니다.
가장 높은·가장 낮은 VLAN ID 감시
기본적으로 가장 높은 VLAN ID와 가장 낮은 VLAN ID가 물리 연결의 상태를 나타냅니다. 이 VLAN ID들은 항상 감시되며 둘 중 하나라도 연결 실패가 생기면 페일오버가 시작됩니다. 대부분의 배포에서는 이 설정이 바람직한데, 기능의 주된 목적(연결 실패 감지)에 부합하고 네트워크에서 생기는 트래픽도 가볍기 때문입니다. 다만 이 설정에서는 가장 높은·가장 낮은 VLAN ID에 대한 스위치 측 VLAN 구성 문제만 감지된다는 한계가 있습니다.
Cisco 스위치 설정 (Load Sharing 모드)
Load Sharing 모드를 쓰려면 스위치 쪽도 맞춰야 합니다. 아래는 Cisco 스위치용 예시 명령이며(정확한 명령은 스위치 모델과 OS 버전에 맞는 Cisco 문서를 참고하세요), 802.3ad(LACP)와 XOR의 차이는 채널 그룹 모드가 active냐 on이냐, 그리고 LACP 프로토콜 지정 유무입니다.
# 802.3ad (LACP)
Switch# conf t
Switch(config)# port-channel load-balance src-dst-ip
Switch(config)# interface FastEthernet <참여하는 모든 포트>
Switch(config-if)# channel-group 1 mode active
Switch(config-if)# channel-protocol lacp
Switch(config-if)# exit
Switch(config)# interface port-channel 1
Switch(config-if)# switchport access vlan <원하는 vlan 번호>
Switch(config-if)# end
Switch# write# XOR
Switch# conf t
Switch(config)# port-channel load-balance src-dst-ip
Switch(config)# interface FastEthernet <참여하는 모든 포트>
Switch(config-if)# channel-group 1 mode on
Switch(config-if)# exit
Switch(config)# interface port-channel 1
Switch(config-if)# switchport access vlan <원하는 vlan 번호>
Switch(config-if)# end
Switch# write본딩 인터페이스 문제 해결
문제 해결 워크플로
본드에 문제가 의심되면 다음 순서로 점검합니다.
- 명령줄에 접속합니다.
- Expert 모드로 로그인합니다.
- 본드의 상태를 확인합니다.
cat /proc/net/bonding/<bond id>
- 문제가 있으면 물리 링크가 죽었는지 다음과 같이 확인합니다.
- 다음 명령을 실행합니다.
- Gaia Clish에서:
show cluster bond name <bond_name> - Expert 모드에서:
cphaprob show_bond <bond_name>
- Gaia Clish에서:
- 링크 상태(status)가
no로 보고되는 종속 인터페이스를 찾습니다. - 케이블 연결과 그 밖의 하드웨어를 점검합니다.
- 스위치의 포트 설정을 점검합니다.
- 다음 명령을 실행합니다.
- VSX Cluster Member가 죽었는지 다음으로 확인합니다.
- Gaia Clish에서:
show cluster state - Expert 모드에서:
cphaprob state
- Gaia Clish에서:
VSX Cluster Member 중 State가 Active가 아닌 멤버가 있으면 R82 ClusterXL Administration Guide의 "Monitoring and Troubleshooting Clusters" 장을 참고합니다.
운영상 기억할 점이 있습니다. VSX Cluster Member에서는 bond 인터페이스에 대해 다음 작업을 하면 재부팅이 필요합니다.
- bond 모드를 변경할 때
- bond에 종속 인터페이스를 추가할 때
본드 상태와 페일오버에 대한 더 자세한 정보는 Logs & Events 뷰에서 로그를 확인하세요. 모든 인터페이스 본드 상태 변화는 로그로 기록되어 Logs & Events에서 볼 수 있습니다.
참고로 자주 쓰는 명령을 모으면 다음과 같습니다.
cat /proc/net/bonding/<bond id> # 본드 상태
cphaprob show_bond <bond_name> # 종속 인터페이스 링크 상태 (Expert)
cphaprob state # 클러스터 멤버 상태 (Expert)
show cluster bond name <bond_name> # 종속 인터페이스 링크 상태 (Clish)
show cluster state # 클러스터 멤버 상태 (Clish)스위치에서의 연결 지연
일부 스위치에서는 내부 본드 페일오버 시 연결 지연이 생길 수 있습니다. 최근 일부 스위치에 포함된 여러 기능 때문에, 스위치가 새로 연결된 인터페이스에 서비스를 시작하기까지 거의 1분 가까이 걸리기도 합니다. 링크 장애 후 시작 시간을 줄이는 방법은 다음과 같습니다.
- 해당 인터페이스에서 auto-negotiation을 끕니다.
- 일부 Cisco 스위치에서는 아래 설명대로 PortFast를 켭니다.
PortFast 사용에 대한 경고
Cisco 스위치 PortFast 설정 예시
다음은 IOS를 구동하는 Cisco 3750 스위치의 Gigabit Ethernet 1/0/15 인터페이스에 PortFast를 켜는 명령입니다.
# 1. 구성 모드로 진입
cisco-3750A# conf t
# 2. 구성할 인터페이스 지정
cisco-3750A(config)# interface gigabitethernet1/0/15
# 3. 이 인터페이스에 PortFast 설정
cisco-3750A(config-if)# spanning-tree portfast