목차/08. CoreXL — Affinity와 성능 튜닝

08CoreXL — Affinity와 성능 튜닝CoreXL — Affinity와 성능 튜닝

CoreXL의 구조를 잡았으니, 이제 어느 작업을 어느 CPU 코어에 묶을지(Affinity)와 성능을 끌어올리는 튜닝 을 정리합니다. 이 장은 원문의 네 절 — IPv4·IPv6 Firewall 인스턴스 구성, Affinity 설정, 성능 튜닝, 그리고 CoreXL 명령 — 을 빠짐없이 풀어 씁니다. 절차·명령·파라미터·표·주의사항을 모두 담되, 왜 그렇게 하는지를 함께 설명합니다. 명령·경로·파라미터·sk 번호는 영어 원문 그대로 두고, 표는 한국어 표로 옮겼습니다. CoreXL 명령 전체 사전은 분량이 커서 세 개의 별도 파일로 나누어 실었습니다 — CoreXL 명령 사전 (1), (2), (3).

IPv4·IPv6 CoreXL Firewall 인스턴스 구성

CoreXL을 켜면 방화벽 검사 작업이 여러 개의 CoreXL Firewall 인스턴스 로 복제되어 여러 CPU 코어에서 병렬로 돕니다. R82는 IPv4용 인스턴스와 IPv6용 인스턴스를 각각 따로 설정할 수 있고, 한 CPU 코어에서 IPv4 인스턴스와 IPv6 인스턴스를 함께 돌릴 수도 있습니다.

인스턴스 개수 규칙

R82 Gaia Administration Guide를 따라 Security Gateway / Scalable Platform Security Group에서 Gaia IPv6 지원을 켠 다음, CPU 코어에 IPv4·IPv6 CoreXL Firewall 인스턴스를 어떻게 조합해 돌릴지 정합니다. 이때 지켜야 할 상·하한 규칙 이 있습니다.

  • IPv4 인스턴스 개수최소 2개부터, 최대 게이트웨이의 총 CPU 코어 수까지 설정할 수 있습니다.
  2 <= (Number of IPv4 CoreXL Firewall instances) <= (Total Number of CPU cores)
  
  • IPv6 인스턴스 개수기본값이 2개 입니다. 단, SMT(Hyper-Threading) 가 켜져 있으면 IPv6 인스턴스 기본값은 4개 가 됩니다.
  • IPv6 인스턴스는 최소 2개부터, 최대 IPv4 인스턴스 수까지 설정할 수 있습니다. 즉 IPv6 인스턴스 수가 IPv4 인스턴스 수보다 클 수는 없습니다.
  2 <= (Number of IPv6 CoreXL Firewall instances) <= (Total Number of IPv4 CoreXL Firewall instances)
  
  • IPv4와 IPv6 인스턴스를 합한 총개수는 40개를 넘을 수 없습니다.
  (Number of IPv4 CoreXL Firewall instances) + (Number of IPv6 CoreXL Firewall instances) <= 40
  

IPv4 인스턴스 개수 바꾸기

단계할 일
1Security Gateway / 각 Cluster Member의 명령줄에 접속합니다. Scalable Platform(Maestro·Chassis)에서는 해당 Security Group 에 접속해야 합니다.
2Gaia Clish 또는 Expert mode에 로그인합니다. Scalable Platform에서는 Gaia gClish 또는 Expert mode를 써야 합니다.
3cpconfig 실행
4Check Point CoreXL 옵션 번호를 입력합니다.
51 을 입력해 Change the number of firewall instances 를 선택합니다.
6게이트웨이에서 돌릴 IPv4 인스턴스 총개수를 입력합니다.
7cpconfig 메뉴를 빠져나옵니다.
8재부팅합니다(아래 셸별 명령 참고).
cpconfig

재부팅 명령은 환경에 따라 다릅니다.

# Security Gateway(각 Cluster Member)
reboot

# Scalable Platform Security Group — Gaia gClish
reboot

# Scalable Platform Security Group — Expert mode
g_reboot -a

IPv6 인스턴스 개수 바꾸기

절차는 IPv4와 거의 같고, 메뉴에서 2 (Change the number of IPv6 firewall instances) 를 고르는 점만 다릅니다.

단계할 일
1Security Gateway / 각 Cluster Member의 명령줄에 접속합니다(Scalable Platform은 해당 Security Group).
2Gaia Clish 또는 Expert mode에 로그인합니다(Scalable Platform은 Gaia gClish 또는 Expert mode).
3cpconfig 실행
4Check Point CoreXL 옵션 번호 입력
52 입력 → Change the number of IPv6 firewall instances
6돌릴 IPv6 인스턴스 총개수 입력
7cpconfig 메뉴 종료
8재부팅(reboot / gClish reboot / Expert g_reboot -a)

예시 — 4코어 게이트웨이의 CoreXL 구성

CPU 코어가 4개인 Security Gateway를 예로 듭니다. 기본 상태에서는 IPv4 인스턴스 3개, IPv6 인스턴스 2개 가 다음처럼 배치됩니다. 인스턴스 이름은 fw4_(IPv4), fw6_(IPv6)이고, 번호가 큰 CPU부터 채워진다는 점에 주목하세요(CPU 0은 보통 SND·트래픽 수신용으로 비워 둡니다).

CPU 코어IPv4 인스턴스IPv6 인스턴스
CPU 0N/AN/A
CPU 1fw4_2N/A
CPU 2fw4_1fw6_1
CPU 3fw4_0fw6_0

여기서 IPv4는 최소 2 ~ 최대 4개, IPv6는 최소 2 ~ 최대 3개(=현재 IPv4 수)까지 가능합니다. IPv6를 4개로 늘리려면, 먼저 IPv4를 최대 4개로 늘리고 재부팅 해야 합니다. cpconfig에서 1을 골라 IPv4를 4개로 바꾸는 화면은 이렇습니다.

CoreXL is currently enabled with 3 IPv4 firewall instances and 2 IPv6 firewall instances.
(1) Change the number of firewall instances
(2) Change the number of IPv6 firewall instances
(3) Disable Check Point CoreXL
(4) Exit
Enter your choice (1-4) : 1
How many IPv4 firewall instances would you like to enable (2 to 4) [3] ? 4
CoreXL was enabled successfully with 4 firewall instances.
Important: This change will take effect after reboot.

재부팅 후 구성은 이렇게 바뀝니다 — IPv4 인스턴스 fw4_3이 CPU 0에 추가됩니다.

CPU 코어IPv4 인스턴스IPv6 인스턴스
CPU 0fw4_3N/A
CPU 1fw4_2N/A
CPU 2fw4_1fw6_1
CPU 3fw4_0fw6_0

이제 IPv6를 4개로 늘리고 다시 재부팅합니다. 2를 골라 IPv6 인스턴스를 4개로 바꿉니다.

CoreXL is currently enabled with 4 IPv4 firewall instances and 2 IPv6 firewall instances.
(1) Change the number of firewall instances
(2) Change the number of IPv6 firewall instances
(3) Disable Check Point CoreXL
(4) Exit
Enter your choice (1-4) : 2
How many IPv6 firewall instances would you like to enable (2 to 4)[2] ? 4
CoreXL was enabled successfully with 3 IPv6 firewall instances.
Important: This change will take effect after reboot.

재부팅 후, 4개 CPU 코어 모두가 IPv4·IPv6 인스턴스를 함께 돌리는 모습이 됩니다.

CPU 코어IPv4 인스턴스IPv6 인스턴스
CPU 0fw4_3fw6_3
CPU 1fw4_2fw6_2
CPU 2fw4_1fw6_1
CPU 3fw4_0fw6_0

Affinity 설정

Affinity(친화성)인터페이스·프로세스·CoreXL Firewall 인스턴스를 특정 CPU 코어에 고정 하는 설정입니다. SND가 도는 코어와 FW 인스턴스가 도는 코어를 나눠, 트래픽 수신·분배와 검사가 서로 다른 코어에서 효율적으로 돌게 합니다.

fwaffinity.conf 구성 파일

CoreXL affinity는 $FWDIR/conf/fwaffinity.conf 평문 파일 로 제어합니다. 부팅 때 $FWDIR/scripts/fwaffinity_apply 스크립트가 이 파일대로 인터페이스 affinity를 적용 합니다. affinity 설정을 바꾸면 재부팅하거나, 그 스크립트를 수동 실행 해야 적용됩니다. 관련해서 모든 User Space 프로세스의 affinity를 한 번에 잡는 taskset_us_all 스크립트도 참고하세요.

파일의 각 줄은 모두 같은 형식을 씁니다.

<Type> <ID> <CPU_ID>

각 필드의 의미는 다음과 같습니다.

필드허용 값설명
<Type>i인터페이스의 affinity를 설정
nCheck Point 데몬의 affinity를 설정
kCoreXL Firewall 인스턴스의 affinity를 설정
<ID>인터페이스 이름<Type>i일 때
데몬 이름<Type>n일 때
CoreXL Firewall 인스턴스 ID<Type>k일 때
default다른 줄에서 지정하지 않은 인터페이스들의 affinity를 설정
<CPU_ID>CPU 코어 번호(ID)인터페이스·데몬·인스턴스를 묶을 CPU 코어의 ID
all모든 처리용 CPU 코어를 사용 가능하게 지정
auto자동 모드(아래 처리용 CPU 코어 배분 참고)
ignoreaffinity를 지정하지 않음. default 설정에서 특정 인터페이스를 제외 할 때 유용

이 파일의 기본 구성은 한 줄 입니다.

i default auto

가능한 조합을 형식으로 정리하면 이렇습니다.

# 인터페이스의 affinity
i <Name of Interface> {<CPU ID Number> | all | ignore | auto}
i default {<CPU ID Number> | all | ignore | auto}

# Check Point 데몬의 affinity
n <Name of Daemon> {<CPU ID Number> | all | ignore | auto}

# CoreXL Firewall 인스턴스의 affinity
k <ID of CoreXL Firewall instance> {<CPU ID Number> | all | ignore | auto}

모든 인터페이스의 IRQ를 보려면 다음을 실행합니다.

# Security Gateway(각 Cluster Member) — Gaia Clish / Expert mode
fw ctl affinity -l -v -a

# Scalable Platform Security Group — Gaia gClish
fw ctl affinity -l -v -a

# Scalable Platform Security Group — Expert mode
g_fw ctl affinity -l -v -a

fwaffinity_apply 스크립트

이 셸 스크립트는 부팅 때 자동으로 실행되어 affinity를 적용합니다. 설정을 바꾼 뒤 재부팅 없이 즉시 반영 하고 싶을 때 수동으로 실행합니다.

# Security Gateway(각 Cluster Member) — Expert mode
$FWDIR/scripts/fwaffinity_apply <Parameter>

# Scalable Platform Security Group — Expert mode
g_all $FWDIR/scripts/fwaffinity_apply <Parameter>

파라미터는 두 가지입니다.

파라미터설명
-q조용한 모드. 오류 메시지만 출력 하고 표준 출력은 /dev/null로 보냅니다.
-t i / -t n / -t k지정한 종류에만 affinity를 적용합니다 — -t i는 인터페이스, -t n은 Check Point 데몬, -t k는 CoreXL Firewall 인스턴스.

성능 튜닝

이 절은 CoreXL 성능을 환경에 맞게 미세 조정 하는 방법을 다룹니다.

처리용 CPU 코어 배분

CoreXL 구조의 핵심에는 SND(Secure Network Distributor) 가 있습니다. SND가 하는 일은 다음과 같습니다.

  • 네트워크 인터페이스에서 들어오는 트래픽을 처리합니다.
  • (SecureXL이 켜져 있으면) 허가된 패킷을 가속 합니다.
  • 가속되지 않은 패킷을 CoreXL Firewall 인스턴스들에게 분배 합니다.

용어를 정리하면 — 특정 인터페이스를 특정 CPU 코어에 묶는 것이 인터페이스의 affinity 입니다. 이렇게 묶으면 그 인터페이스의 트래픽이 해당 코어로 흐르고, CoreXL SND도 그 코어에서 돕니다. 마찬가지로 특정 CoreXL Firewall 인스턴스를 특정 코어에 묶는 것이 인스턴스의 affinity, 특정 User Space 프로세스를 특정 코어에 묶는 것이 프로세스의 affinity 입니다.

모든 인터페이스의 기본 affinity는 Automatic 입니다. Automatic이 뜻하는 바는 SecureXL의 상태에 따라 다릅니다.

  • SecureXL이 켜져 있으면 — 각 인터페이스의 affinity가 일정 간격마다 바뀌며, 사용 가능한 CPU 코어들 사이에서 균형 을 잡습니다.
  • SecureXL이 꺼져 있으면 — 모든 인터페이스의 기본 affinity가 하나의 가용 CPU 코어 로 잡힙니다.

두 경우 모두, CoreXL Firewall 인스턴스가 도는 코어나, 다른 User Space 프로세스의 affinity로 지정된 코어는 "사용 불가" 로 보고, 인터페이스 affinity를 그런 코어에는 잡지 않습니다.

때로는 CoreXL Firewall 인스턴스·SND·기타 프로세스를 코어에 다시 나눠야 할 때가 있습니다(아래 절들). 이때는 NIC(인터페이스)나 프로세스의 affinity를 바꿉니다. CoreXL이 효율적으로 돌려면, 모든 인터페이스의 트래픽이 CoreXL Firewall 인스턴스가 돌지 않는 코어로 향해야 합니다. 그래서 인터페이스나 프로세스의 affinity를 바꾸면, 그에 맞춰 CoreXL Firewall 인스턴스 개수도 조정 하고, 인스턴스가 다른 코어에서 돌도록 확인해야 합니다.

하드웨어에 CPU 코어를 추가했을 때

컴퓨터의 처리용 CPU 코어 수를 늘려도, CoreXL Firewall 인스턴스 수가 자동으로 늘지는 않습니다. cpconfig 메뉴에서 직접 적절한 인스턴스 수를 설정 해야 합니다(인스턴스 개수 바꾸기 참고).

SND에 CPU 코어를 더 주기

기본 배분이 항상 최적은 아닙니다. SND 인스턴스 수가 들어오는 트래픽을 감당하기에 부족하고, 게이트웨이에 코어 여유가 있다면, CoreXL Firewall 인스턴스 수를 줄여서 SND에 코어를 더 줄 수 있습니다(인스턴스를 줄이면 그만큼의 코어가 SND용으로 자동 배정됩니다). 이런 상황은 트래픽 대부분이 SecureXL로 가속될 때 자주 생깁니다 — 이때는 SND의 일이 FW 인스턴스의 일에 비해 지나치게 무거워질 수 있습니다.

SND가 트래픽의 병목인지 확인하는 방법입니다.

단계할 일
1인터페이스 트래픽이 향하는 처리용 CPU 코어를 찾습니다.
2부하가 높은 상황 에서 top을 실행해, 각 CPU 코어의 idle 열 값을 살펴봅니다.
# 1단계 — 인터페이스가 트래픽을 보내는 코어 확인
# Security Appliance — Gaia Clish / Expert mode
fw ctl affinity -l -r
# Scalable Platform — Gaia gClish
fw ctl affinity -l -r
# Scalable Platform — Expert mode
g_fw ctl affinity -l -r

# 2단계 — 부하 상태에서 idle 값 확인
# Security Appliance — Expert mode
top
# Scalable Platform — Expert mode
g_top

SND에 코어를 추가하는 절차입니다.

항목설명
1cpconfig 메뉴에서 CoreXL Firewall 인스턴스 수를 줄입니다.
2남은 코어들에 인터페이스 affinity를 설정 합니다(인터페이스 affinity 설정 참고).
3재부팅 해서 새 구성을 적용합니다.

무거운 로깅을 위해 코어 하나 떼어 주기

게이트웨이가 아주 많은 로그를 생성 한다면, 로그를 만드는 fwd 데몬 에게 처리용 코어 하나를 전용으로 줄 만합니다.

fwd 데몬에 코어를 떼어 주는 절차입니다(Affinity 설정 참고).

단계할 일
1Security Gateway(각 Cluster Member)의 명령줄에 접속합니다(Scalable Platform은 해당 Security Group).
2Expert mode에 로그인합니다.
3cpconfig 실행
4Check Point CoreXL 옵션 번호 입력
5CoreXL Firewall 인스턴스 수를 줄입니다.
6cpconfig 메뉴 종료
7어느 코어가 FW 인스턴스를 돌리고 어느 코어가 인터페이스 트래픽을 처리하는지 확인합니다.
8fwaffinity.conf 파일을 백업합니다.
9fwaffinity.conf 파일을 편집합니다.
10남은 코어 하나를 fwd 데몬에 배정합니다(fwd의 affinity를 그 코어로 설정).
11변경을 저장하고 편집기를 빠져나옵니다.
12(Scalable Platform) 파일을 모든 Security Group 멤버로 복사합니다.
13새 구성을 적용합니다(즉시 적용 또는 재부팅).

7~13단계에 쓰는 명령들입니다.

# 7단계 — 코어별 역할 확인
fw ctl affinity -l -r              # 게이트웨이
g_fw ctl affinity -l -r            # Scalable Platform

# 8단계 — fwaffinity.conf 백업
cp -v $FWDIR/conf/fwaffinity.conf{,_BKP}      # 게이트웨이
g_cp -v $FWDIR/conf/fwaffinity.conf{,_BKP}    # Scalable Platform

# 9단계 — 편집
vi $FWDIR/conf/fwaffinity.conf

10단계에서 fwd 데몬을 특정 코어(예: CPU 2)에 묶는 줄을 추가합니다. 형식과 예시는 이렇습니다.

n fwd <CPU ID>

# 예 — fwd를 CPU 코어 #2에 묶기
n fwd 2
# 12단계 — (Scalable Platform) 멤버로 복사
asg_cp2blades $FWDIR/conf/fwaffinity.conf

# 13단계 — 즉시 적용
$FWDIR/scripts/fwaffinity_apply              # 게이트웨이
g_all $FWDIR/scripts/fwaffinity_apply        # Scalable Platform

# 13단계 — 나중에 적용(재부팅)
reboot                                       # 게이트웨이
g_reboot -a                                  # Scalable Platform

인터페이스의 affinity 설정

다시 말하지만, 인터페이스를 특정 코어에 묶으면 그 트래픽이 해당 코어로 흐르고 SND가 그 코어에서 돕니다. 게이트웨이(Security Group 멤버)는 부팅 때 $FWDIR/conf/fwaffinity.conf에서 인터페이스 affinity를 읽어 들이며, 그 파일에서 i로 시작하는 줄 이 인터페이스 affinity를 정의합니다.

작업 흐름입니다.

단계할 일
1어느 코어가 FW 인스턴스를 돌리고 어느 코어가 인터페이스 트래픽을 처리하는지 확인합니다(fw ctl affinity -l -r, Scalable Platform은 gClish 동일 / Expert g_fw ctl affinity -l -r).
2남은 코어들을 SND용으로 배정합니다 — 즉 인터페이스 affinity를 해당 코어들로 설정합니다.

명시적으로 인터페이스 affinity를 설정하는 절차입니다.

단계할 일
1Security Gateway(각 Cluster Member / Scalable Platform Security Group)의 명령줄에 접속합니다.
2Expert mode에 로그인합니다.
3fwaffinity.conf에서 각 인터페이스의 affinity를 설정합니다. 인터페이스마다 i로 시작하는 별도의 줄 이 있어야 하고, 각 줄은 i <Name of Interface> <CPU ID> 형식입니다.
4새 구성을 적용합니다(즉시 또는 재부팅).

예를 들어 eth0·eth1 트래픽은 CPU 코어 #0으로, eth2 트래픽은 CPU 코어 #1로 보내려면 이렇게 적습니다.

# Security Gateway(각 Cluster Member)
i eth0 0
i eth1 0
i eth2 1

# Scalable Platform Security Group
i eth1-05 0
i eth1-07 0
i eth1-09 1

또는 한 코어에만 인터페이스를 명시적으로 묶고, 나머지 인터페이스는 default 다른 코어를 지정할 수도 있습니다.

i default <CPU ID>

예를 들어 eth2 트래픽만 CPU #1로, 나머지 모든 인터페이스 트래픽은 CPU #0으로 보내려면 이렇게 적습니다.

# Security Gateway(각 Cluster Member)
i eth2 1
i default 0

# Scalable Platform Security Group
i eth1-05 1
i default 0

4단계 적용 명령은 앞서와 같습니다($FWDIR/scripts/fwaffinity_apply / g_all ..., 또는 reboot / g_reboot -a).

CoreXL 인스턴스의 Dynamic Balancing

Check Point 어플라이언스에서는 R80.40부터 재부팅 없이 CoreXL Firewall·SND 인스턴스 수를 바꾸는 Dynamic Balancing 기능이 생겼습니다.

켜져 있으면 게이트웨이·클러스터 멤버·Security Group 멤버가 CoreXL Firewall·SND 인스턴스의 평균 CPU 사용률을 감시 하면서 FW 인스턴스 수를 자동으로 늘리거나 줄입니다. 이 일을 하는 Dynamic Balancing Daemon(dsd) 은 매 반복(iteration)마다 세 단계를 거칩니다.

  1. 현재 CPU 사용률을 살핍니다.
  2. 사용률을 보고 무엇을, 바꿀지 말지 를 결정합니다.
  3. 필요하면 다음 둘 중 하나로 CoreXL 구성을 바꿉니다.

CoreXL Firewall 인스턴스 추가 는 다음 조건이 모두 맞을 때만 가능합니다.

  • FW 인스턴스와 SND 인스턴스의 평균 CPU 사용률 차이가 10%를 초과 한다.
  • 현재 FW 인스턴스 수가 부팅 시점보다 적다.

CoreXL SND 인스턴스 추가FW 인스턴스 하나를 멈춰 다른 코어로 옮기는 변경으로, 다음 조건이 모두 맞을 때만 가능합니다.

  • FW 인스턴스와 SND 인스턴스의 평균 CPU 사용률 차이가 10%를 초과 한다.
  • FW 인스턴스가 코어를 40% 미만 으로 쓰고 있다.
  • 쓸 수 있는 코어가 있다.

Dynamic Balancing 명령

기능 켜기 — 켠 뒤에는 재부팅이 필요합니다.

# Gaia Clish (게이트웨이/각 클러스터 멤버)
set dynamic-balancing state enable
reboot

# Gaia gClish (Scalable Platform Security Group)
set dynamic-balancing state enable
reboot

# Expert mode
dynamic_balancing -o enable        # 게이트웨이
g_dynamic_balancing -o enable      # Scalable Platform
reboot                             # 게이트웨이
g_reboot -a                        # Scalable Platform

기능 멈추기(stop) — Dynamic Balancing을 "얼립니다".

# Gaia Clish
set dynamic-balancing state stop
# Gaia gClish
set dynamic-balancing state stop
# Expert mode
dynamic_balancing -o stop          # 게이트웨이
g_dynamic_balancing -o stop        # Scalable Platform

기능 시작하기(start) — stop된 것을 다시 시작합니다.

# Gaia Clish
set dynamic-balancing state start
# Gaia gClish
set dynamic-balancing state start
# Expert mode
dynamic_balancing -o start         # 게이트웨이
g_dynamic_balancing -o start       # Scalable Platform

기능 초기화(reset) — CoreXL 구성을 기본값으로 되돌리면서 Dynamic Balancing은 계속 켜 둡니다. disableenable을 연달아 한 것과 같습니다.

# Gaia Clish
set dynamic-balancing state reset
# Gaia gClish
set dynamic-balancing state reset
# Expert mode
dynamic_balancing -r               # 게이트웨이
g_dynamic_balancing -r             # Scalable Platform

기능 끄기(disable)

# Gaia Clish
set dynamic-balancing state disable
reboot
# Gaia gClish
set dynamic-balancing state disable
reboot
# Expert mode
dynamic_balancing -o disable       # 게이트웨이
g_dynamic_balancing -o disable     # Scalable Platform
reboot                             # 게이트웨이
g_reboot -a                        # Scalable Platform

Dynamic Balancing 모니터링

상태를 CLI로 봅니다.

# Gaia Clish (게이트웨이)
show dynamic-balancing state
# Gaia gClish (Scalable Platform)
show dynamic-balancing state
# Expert mode
dynamic_balancing -p               # 게이트웨이
g_dynamic_balancing -p             # Scalable Platform

CPView 에서 상태 를 보려면 cpview 실행 후 위쪽에서 SysInfo 를 누르고 DS Status 필드를 봅니다 — On이면 켜짐, Off면 꺼짐입니다.

CPView 에서 성능 을 보려면 cpview 실행 후 위쪽에서 CPU > Overview > Host 로 가서 다음 두 구역을 봅니다.

  • Overview — 현재 CoreXL 인스턴스 수와 평균 CPU 사용률
  • CPU — 각 CPU 코어, 그 코어가 돌리는 CoreXL 인스턴스 종류, 항목별 CPU 사용률

CoreXL Firewall 인스턴스는 다음 명령으로 봅니다.

# Gaia Clish (게이트웨이)
fw ctl multik stat
# Gaia gClish (Scalable Platform)
fw ctl multik stat
# Expert mode
fw ctl multik stat                 # 게이트웨이
g_fw ctl multik stat               # Scalable Platform

CoreXL Affinity는 다음 명령으로 봅니다.

# Gaia Clish (게이트웨이)
fw ctl affinity -l -r -a
# Gaia gClish (Scalable Platform)
fw ctl affinity -l -r -a
# Expert mode
fw ctl affinity -l -r -a           # 게이트웨이
g_fw ctl affinity -l -r -a         # Scalable Platform

로그 파일도 확인할 수 있습니다.

  • Dynamic Balancing이 CoreXL 구성을 바꿀 때$FWDIR/log/dsd.elg 파일에 기록합니다.
  • Dynamic Balancing이 시작될 때$FWDIR/log/dynamic_split.elg 파일에 기록합니다.

CoreXL Firewall 모드 — User Space인가 Kernel Space인가

CoreXL Firewall 인스턴스는 커널에서 돌 수도, User Space에서 돌 수도 있습니다.

  • Kernel Space Firewall(KSFW) — CoreXL Firewall 인스턴스가 커널에서 도는 인프라입니다.
  • User Space Firewall(USFW) — 인스턴스가 User Space에서 도는 인프라입니다. R80.30부터(Gaia kernel 3.10) 쓸 수 있습니다.

Firewall 모드를 바꾸는 절차입니다.

단계할 일
1Security Gateway / 각 Cluster Member의 명령줄에 접속합니다(Scalable Platform은 해당 Security Group).
2Gaia Clish 또는 Expert mode에 로그인합니다(Scalable Platform은 Gaia gClish 또는 Expert mode).
3cpconfig 실행
4Check Point CoreXL 옵션 번호 입력
53 입력 → Change firewall mode
6화면 안내를 따릅니다.
7cpconfig 메뉴 종료
8재부팅(reboot / gClish reboot / Expert g_reboot -a)

CoreXL 명령 사전으로 이어집니다

CoreXL을 다루는 CLI 명령은 종류가 많아 별도 파일 세 개로 정리했습니다.

정리하면, Affinity로 SND·FW 인스턴스를 코어에 적절히 나누고, Dynamic Balancing이나 수동 튜닝으로 병목에 맞춰 코어를 배분 하는 것이 CoreXL 성능 튜닝의 핵심입니다.

CoreXL 명령 사전 (1) — 전역·구성 명령

이 파일부터 세 부분에 걸쳐 CoreXL을 다루는 CLI 명령 을 빠짐없이 정리합니다. 명령·파라미터·옵션은 원문을 따라 가능하면 알파벳 순 으로 싣고, 명령·경로·파라미터는 영어 원문 그대로 둡니다. 앞선 Affinity와 성능 튜닝에서 이어집니다.

CLI 구문 표기법

다른 명령 설명을 정확히 읽으려면 표기 약속을 먼저 알아야 합니다.

표기
TAB(들여쓰기)중첩된 하위 명령을 나타냅니다. 들여쓴 줄은 위 명령의 하위 명령입니다.
중괄호 { }세로줄 `\`로 구분된 후보 목록. 이 중 하나만 고를 수 있습니다.
꺾쇠 < >변수. 사용자가 지원되는 실제 값을 직접 지정 해야 합니다.
대괄호 [ ]선택적(optional) 명령·파라미터. 넣어도 되고 안 넣어도 됩니다.

들여쓰기(TAB) 표기 예시입니다. 이렇게 쓰여 있으면,

    config
        -a <options>
        -d <options>
        -p
        -r
    del <options>

실제로는 아래 중 하나의 명령 을 실행하라는 뜻입니다 — cpwd_admin config -a <options>, cpwd_admin config -d <options>, cpwd_admin config -p, cpwd_admin config -r, 또는 cpwd_admin del <options>.

cp_conf corexl — CoreXL 켜기·끄기

CoreXL을 활성화·비활성화합니다.

구문은 환경별로 같고, Scalable Platform Expert mode에서는 앞에 g_all을 붙입니다.

# Security Gateway / Cluster Member (Gaia Clish 또는 Expert mode), 그리고 Scalable Platform Security Group (Gaia gClish)
cp_conf corexl [-v] enable [n] [-6 k]      # n개의 IPv4(선택적으로 k개의 IPv6) 인스턴스로 켜기
cp_conf corexl [-v] disable                # 끄기

# Scalable Platform Security Group (Expert mode)
g_all cp_conf corexl [-v] enable [n] [-6 k]
g_all cp_conf corexl [-v] disable

관련 명령은 fwboot corexl입니다.

파라미터설명
-v고메모리(vmalloc)를 변경하지 않은 채 둡니다.
nIPv4 CoreXL Firewall 인스턴스 개수
kIPv6 CoreXL Firewall 인스턴스 개수

예시 — 현재 IPv4 인스턴스가 2개(KERN_INSTANCE_NUM = 2)인 게이트웨이를 3개로 바꿉니다.

[Expert@MyGW:0]# fw ctl multik stat
ID | Active | CPU | Connections | Peak
----------------------------------------------
0  | Yes    | 2   | 7           | 28
1  | Yes    | 1   | 0           | 11

[Expert@MyGW:0]# cat /etc/fw.boot/boot.conf
CTL_IPFORWARDING 1
DEFAULT_FILTER_PATH 0
KERN_INSTANCE_NUM 2
COREXL_INSTALLED 1
KERN6_INSTANCE_NUM 2
IPV6_INSTALLED 0
CORE_OVERRIDE 4

[Expert@MyGW:0]# cp_conf corexl -v enable 3
[Expert@MyGW:0]# cat /etc/fw.boot/boot.conf
...
KERN_INSTANCE_NUM 3
...
[Expert@MyGW:0]# reboot
.. ... ...
[Expert@MyGW:0]# fw ctl multik stat
ID | Active | CPU | Connections | Peak
----------------------------------------------
0  | Yes    | 3   | 7           | 28
1  | Yes    | 2   | 0           | 11
2  | Yes    | 1   | 4           | 10

cpconfig — Check Point 구성 도구

cpconfigCheck Point Configuration Tool 을 띄웁니다. 설치된 Check Point 제품의 여러 설정을 다루는 도구입니다.

게이트웨이·클러스터 멤버(Gaia Clish 또는 Expert mode)에서나, Scalable Platform Security Group(Gaia gClish 또는 Expert mode)에서나 명령은 같습니다.

cpconfig
메뉴 항목설명
Licenses and contracts이 게이트웨이/클러스터 멤버의 Check Point 라이선스·계약을 관리합니다.
SNMP Extension쓸모없어진 항목 입니다. 더는 쓰지 마세요. SNMP는 R82 Gaia Administration Guide의 System Management > SNMP 절을 보세요.
PKCS#11 TokenGaia OS가 쓸 암호화 토큰을 등록하고, 토큰 정보를 보고 기능을 테스트합니다.
Random PoolGaia OS가 쓸 RSA 키를 구성합니다.
Secure Internal Communication게이트웨이/클러스터 멤버의 SIC를 관리합니다. 이 변경은 Check Point 서비스 재시작 이 필요합니다. (SIC 초기화는 sk65764 참고)
Enable / Disable cluster membership for this gateway게이트웨이의 클러스터 멤버십을 켜고/끕니다. 재부팅 필요. Scalable Platform(ElasticXL·Maestro·Chassis)에는 해당하지 않습니다.
Enable / Disable Check Point Per Virtual System StateVSX 클러스터 멤버에서 Virtual System Load Sharing을 켜고/끕니다. (R82 VSX Administration Guide 참고) Scalable Platform에는 해당하지 않습니다.
Enable / Disable Check Point ClusterXL for Bridge Active/StandbyBridge 모드용 ClusterXL을 켜고/끕니다. 재부팅 필요. Scalable Platform에는 해당하지 않습니다.
Check Point CoreXL게이트웨이/클러스터 멤버/Security Group의 CoreXL과 Firewall 모드를 관리 합니다. CoreXL 구성을 바꾸면 반드시 재부팅 해야 합니다.
Automatic start of Check Point Products설치된 Check Point 제품 중 부팅 시 자동 시작 할 것을 보여 주고 제어합니다.
Exit구성 도구를 종료합니다.

예시 1 — 단독 게이트웨이의 메뉴입니다.

[Expert@MySingleGW:0]# cpconfig
This program will let you re-configure
your Check Point products configuration.
Configuration Options:
----------------------
(1) Licenses and contracts
(2) SNMP Extension
(3) PKCS#11 Token
(4) Random Pool
(5) Secure Internal Communication
(6) Enable cluster membership for this gateway
(7) Check Point CoreXL
(8) Automatic start of Check Point Products
(9) Exit
Enter your choice (1-9) :

예시 2 — 클러스터 멤버의 메뉴입니다(항목이 더 많아 번호가 다릅니다).

[Expert@MyClusterMember:0]# cpconfig
...
(1) Licenses and contracts
(2) SNMP Extension
(3) PKCS#11 Token
(4) Random Pool
(5) Secure Internal Communication
(6) Disable cluster membership for this gateway
(7) Enable Check Point Per Virtual System State
(8) Enable Check Point ClusterXL for Bridge Active/Standby
(9) Check Point CoreXL
(10) Automatic start of Check Point Products
(11) Exit
Enter your choice (1-11) :

cpview — 성능 모니터링 유틸리티

CPView 는 Check Point 장비에 내장된 텍스트 기반 모니터링 유틸리티 입니다. CPU·메모리·디스크 같은 일반 시스템 정보와, (게이트웨이/ClusterXL/Security Group에서) 여러 Software Blade의 정보를 함께 보여 주고, 데이터를 계속 갱신 합니다. 자세한 내용은 sk101878 을 참고하세요.

cpview --help

CPView 화면 구성

구역설명
Header세 번째 구역의 통계가 수집된 시각 을 보여 줍니다. 갱신할 때 함께 업데이트됩니다.
Navigation대화형 메뉴 바. 화살표 키·마우스로 메뉴를 옮겨 다니며, 하위 메뉴는 메뉴 바 아래에 나타납니다.
View해당 뷰에서 수집한 통계 를 보여 주고, 갱신 주기마다 업데이트됩니다.

CPView 키 조작

탐색용 키입니다.

하는 일
화살표 키메뉴·뷰 사이를 이동하고, 뷰 안에서 스크롤합니다.
HomeOverview 뷰로 돌아갑니다.
EnterView 모드 로 바꿉니다. 하위 메뉴가 있는 메뉴에서는 가장 낮은 단계의 하위 메뉴로 이동합니다.
EscMenu 모드 로 돌아갑니다.
QCPView를 종료합니다.

화면 옵션을 바꾸는 키입니다.

하는 일
R갱신 주기 를 바꾸는 창을 엽니다(기본 2초).
Wwide ↔ normal 표시 모드를 전환합니다. wide 모드에서는 화면을 가로로 꽉 채웁니다.
S행·열 수를 수동으로 설정합니다.
M마우스를 켜고/끕니다.
P통계 수집을 일시 정지/재개합니다.

통계 저장·도움말·갱신용 키입니다.

하는 일
C현재 페이지를 파일로 저장합니다. 파일 이름은 cpview_<ID of the cpview process>.cap<Number of the capture> 형식입니다.
HCPView 옵션 툴팁을 보여 줍니다.
Space bar통계를 즉시 갱신합니다.

dynamic_balancing — Dynamic Balancing 제어

Check Point 어플라이언스에서 R80.40부터 재부팅 없이 CoreXL Firewall·SND 인스턴스 수를 바꾸는 Dynamic Balancing을 제어합니다. Expert mode의 dynamic_balancing과 Gaia Clish의 set dynamic-balancing state로컬 게이트웨이/클러스터 멤버 의 Dynamic Balancing을 다룹니다. 자세한 동작은 Dynamic Balancing 절을 보세요.

구문입니다.

# Gaia Clish / Gaia gClish (Scalable Platform)
set dynamic-balancing state {disable | enable | reset | start | stop}
show dynamic-balancing state

# Expert mode
dynamic_balancing {-o disable | -o enable | -o start | -o stop | -p | -r}
g_dynamic_balancing {-o disable | -o enable | -o start | -o stop | -p | -r}
파라미터설명
(없음)내장 도움말을 보여 줍니다.
disableDynamic Balancing을 끕니다. 끄면 CoreXL 구성이 기본값으로 돌아가고 재부팅이 필요 합니다(명령이 메시지를 보여 줌). Security Group은 멤버를 차례로 재부팅하길 권장합니다.
enableDynamic Balancing을 켭니다. 재부팅 필요. 처음 켠 직후에는 (현재 구성이 기본값이 아니거나, 현재 부하에 SND 인스턴스가 더 필요할 때) 재부팅이 필요할 수 있습니다. 부팅 후에는 재부팅 없이 stop·start 할 수 있습니다.
reset 또는 -rCoreXL 구성을 기본값으로 되돌리되 Dynamic Balancing은 계속 켜 둡니다. disableenable과 동일. 재부팅 불필요.
startstop된 기능을 다시 시작합니다. CPU 사용률에 따라 자동으로 구성을 바꿉니다. 재부팅 불필요, 재부팅 후에도 유지.
stop기능을 멈춥니다. 마지막 Balancing 구성을 그대로 사용. 재부팅 불필요, 재부팅 후에도 유지. 상태는 "off"로 표시.
show dynamic-balancing state 또는 -p현재 상태(enabled / disabled / started / stopped)를 보여 줍니다.

예시입니다.

[Expert@MyGW:0]# dynamic_balancing -p
Dynamic Balancing is currently On

다음 파일에서 fw ctl multik 계열 명령으로 이어집니다.

CoreXL 명령 사전 (2) — fw ctl multik

CoreXL 명령 사전 (1)에서 이어집니다. 이 파일은 CoreXL Firewall 인스턴스를 다루는 fw ctl multik 계열 명령을 모두 정리합니다. 명령·파라미터·경로는 영어 원문 그대로 둡니다.

fw ctl multik — 개요

fw ctl multik(IPv4)과 fw6 ctl multik(IPv6)은 CoreXL을 제어 하는 명령입니다. 두 명령의 하위 명령은 동일합니다.

fw ctl multik
      add_bypass_port <options>
      del_bypass_port <options>
      dynamic_dispatching <options>
      gconn <options>
      get_instance <options>
      print_heavy_conn
      prioq <options>
      show_bypass_ports
      stat
      start
      stop
      utilize

(IPv6는 위에서 fwfw6으로 바꾸면 됩니다.)

하위 명령설명
add_bypass_port <options>TCP/UDP 포트를 Dynamic Dispatcher 우회(bypass) 목록 에 추가합니다.
del_bypass_port <options>지정 포트를 우회 목록에서 제거합니다.
dynamic_dispatching <options>CoreXL Dynamic Dispatcher 를 보고 제어합니다(sk105261).
gconn <options>CoreXL Global Connections 통계를 보여 줍니다.
get_instance <options>지정한 IPv4 연결을 처리하는 인스턴스 를 보여 줍니다.
print_heavy_connCPU를 가장 많이 쓰는 무거운 연결(Heavy Connections) 표를 보여 줍니다.
prioq <options>CoreXL Firewall Priority Queues 를 구성합니다(sk105762).
show_bypass_ports우회 목록에 설정된 TCP/UDP 포트를 보여 줍니다.
statCoreXL 상태를 보여 줍니다.
start멈춰 있던 모든 인스턴스를 즉석에서 시작합니다.
stop모든 인스턴스를 일시적으로 멈춥니다.
utilize인스턴스별 큐 사용률 을 보여 줍니다.

fw ctl multik add_bypass_port — 우회 포트 추가

지정한 TCP/UDP 포트를 CoreXL Dynamic Dispatcher의 우회 포트 목록에 추가합니다(자세한 동작은 sk105261).

fw ctl multik add_bypass_port <Port Number 1>,<Port Number 2>,...,<Port Number N>
파라미터설명
<Port Number>목록에 추가할 TCP/UDP 포트 번호. 최대 10개 까지 추가할 수 있습니다.

예시 — 포트 8888, 9999를 차례로 추가합니다.

[Expert@MyGW:0]# fw ctl multik show_bypass_ports
dynamic dispatcher bypass port list:
[Expert@MyGW:0]# fw ctl multik add_bypass_port 8888
[Expert@MyGW:0]# fw ctl multik show_bypass_ports
dynamic dispatcher bypass port list:
(8888)
[Expert@MyGW:0]# fw ctl multik add_bypass_port 9999
[Expert@MyGW:0]# fw ctl multik show_bypass_ports
dynamic dispatcher bypass port list:
(8888,9999)

fw ctl multik del_bypass_port — 우회 포트 제거

지정한 TCP/UDP 포트를 우회 목록에서 제거합니다.

fw ctl multik del_bypass_port <Port Number 1>,<Port Number 2>,...,<Port Number N>
파라미터설명
<Port Number>목록에서 제거할 TCP/UDP 포트 번호.

예를 들어 (8888,9999) 목록에서 9999를 제거하면 (8888)만 남습니다.

fw ctl multik dynamic_dispatching — Dynamic Dispatcher 제어

CoreXL Dynamic Dispatcher 는 CPU 코어 사용률을 보고 새 연결을 인스턴스에 동적으로 배정 하는 기능입니다(sk105261). 이 명령으로 상태를 보고 켜고 끕니다.

# IPv4
fw ctl multik dynamic_dispatching {get_mode | off | on}
# IPv6
fw6 ctl multik dynamic_dispatching {get_mode | off | on}
파라미터설명
get_mode현재 Dynamic Dispatcher 상태를 보여 줍니다.
offDynamic Dispatcher를 끕니다.
onDynamic Dispatcher를 켭니다.

예시 — 켜면 재부팅하라는 안내 가 나옵니다.

[Expert@MyGW:0]# fw ctl multik dynamic_dispatching get_mode
Current mode is Off
[Expert@MyGW:0]# fw ctl multik dynamic_dispatching on
New mode is: On
Please reboot the system

fw ctl multik gconn — Global Connections 통계

게이트웨이가 커널 테이블 fw_multik_ld_gconn_table에 저장하는 CoreXL Global Connections 통계를 보여 줍니다. 이 테이블에는 어느 인스턴스가 어느 연결을 소유하는지 가 담깁니다.

fw [-d] ctl multik gconn
      -h
      -p
      -sec
      -seg <Number>
파라미터설명
-d디버그 모드로 실행합니다. 명령 자체를 트러블슈팅할 때만 쓰세요.
(없음)Firewall Priority Queues용 대화형 메뉴를 보여 줍니다.
-h내장 도움말을 보여 줍니다.
-p각 인스턴스의 추가 정보를 Firewall Priority Queues 정보까지 포함 해 보여 줍니다 — I/O(In/Out), Inst. ID, Flags, Seq, Hold_ref, Prio, last_enq_jiff, queue_indx, conn_tokens.
-s전체 global connection 개수를 보여 줍니다.
-sec각 인스턴스의 추가 정보를 보여 줍니다 — I/O, Inst. ID, Flags, Seq, Hold_ref.
-seg <Number>지정한 Global Connections Segment의 기본 정보를 보여 줍니다.

요약 정보만 보는 예시입니다.

[Expert@MyGW:0]# fw ctl multik gconn -s
Summary:
Total number of global connections: 12

기본 출력은 연결별로 Segm | Src IP | S.port | Dst IP | D.port | Proto | Flags | PP | Ref Cnt(I/O) | Inst | PPAK ID | clstr mem ID | Rec. ref | Rec. Type 열을 가진 표를 보여 줍니다. 표 아래의 약어 뜻은 FP = from pool(풀에서), T = temporary connection(임시 연결), PP = pending permanent(보류 중 영구) 입니다. -p/-sec를 주면 여기에 인스턴스 섹션 정보(In = inbound, Out = outbound)가 덧붙습니다.

fw ctl multik get_instance — 연결을 처리하는 인스턴스 찾기

지정한 IPv4 연결을 어느 CoreXL Firewall 인스턴스가 처리 하는지 보여 줍니다.

# 단일 연결
fw ctl multik get_instance sip=<Source IPv4 Address> dip=<Destination IPv4 Address> proto=<Protocol Number>

# IPv4 주소 범위
fw ctl multik get_instance sip=<Source Start>-<Source End> dip=<Dest Start>-<Dest End> proto=<Protocol Number>
파라미터설명
<Source IPv4 Address> / <... Start> / <... End>출발지 IPv4 주소(또는 범위의 시작/끝)
<Destination IPv4 Address> / <... Start> / <... End>목적지 IPv4 주소(또는 범위의 시작/끝)
<Protocol Number>IANA 프로토콜 번호. 예: 1 = ICMP, 6 = TCP, 17 = UDP

단일 연결 예시 — => 3은 인스턴스 #3이 처리한다는 뜻입니다.

[Expert@MyGW:0]# fw ctl multik get_instance sip=192.168.2.3 dip=172.30.241.66 proto=6
protocol: 6
192.168.2.3 -> 172.30.241.66 => 3

범위 예시 — 출발지별로 처리 인스턴스가 다르게 나옵니다.

[Expert@MyGW:0]# fw ctl multik get_instance sip=192.168.2.3-192.168.2.8 dip=172.30.241.66 proto=6
protocol: 6
192.168.2.3 -> 172.30.241.66 => 3
192.168.2.4 -> 172.30.241.66 => 0
192.168.2.5 -> 172.30.241.66 => 3
192.168.2.6 -> 172.30.241.66 => 5
192.168.2.7 -> 172.30.241.66 => 4
192.168.2.8 -> 172.30.241.66 => 5

fw ctl multik print_heavy_conn — 무거운 연결 보기

CPU를 가장 많이 잡아먹는 무거운 연결(Heavy Connections) 표를 보여 줍니다(sk105261). CoreXL은 다음 조건을 모두 만족하는 연결을 "무겁다"고 의심합니다.

  • 게이트웨이가 지난 24시간 안에 그 의심 연결을 감지했다.
  • 의심 연결이 10초보다 오래 지속된다.
  • 그 연결을 처리하는 인스턴스가 60%를 넘는 CPU 부하 를 일으킨다.
  • 그 연결이 해당 인스턴스 전체 작업의 50%를 넘게 차지한다.

출력 표에는 출발지 IP·포트, 목적지 IP·포트, 프로토콜 번호, 처리 인스턴스 ID, 인스턴스의 CPU 부하, 연결이 그 인스턴스에서 차지하는 상대 부하 가 담깁니다.

fw [-d] ctl multik print_heavy_conn
파라미터설명
-d디버그 모드. 명령 자체를 트러블슈팅할 때만 사용(출력은 파일로 저장 권장).

예시입니다.

[Expert@MyGW:0]# fw ctl multik print_heavy_conn
Source: 192.168.20.31; SPort: 51006; Dest: 172.30.40.55; DPort: 80; IPP: 6; Instance 1; Instance Load 61%; Connection instance load 100%
Source: 192.168.20.31; SPort: 50994; Dest: 172.30.40.55; DPort: 80; IPP: 6; Instance 1; Instance Load 61%; Connection instance load 100%
Source: 192.168.20.31; SPort: 50992; Dest: 172.30.40.55; DPort: 80; IPP: 6; Instance 1; Instance Load 61%; Connection instance load 100%

fw ctl multik prioq — Firewall Priority Queues 구성

CoreXL Firewall Priority Queues를 구성합니다(sk105762).

# IPv4
fw ctl multik prioq [{0 | 1 | 2}]
# IPv6
fw6 ctl multik prioq [{0 | 1 | 2}]
파라미터설명
(없음)구성용 대화형 메뉴를 보여 줍니다.
0Priority Queues를 끕니다(Off).
1Evaluator-only 모드 로 켭니다.
2Priority Queues를 켭니다(On).

대화형 메뉴 예시입니다.

[Expert@MyGW:0]# fw ctl multik prioq
Current mode is Off
Available modes:
0. Off
1. Evaluator-only
2. On
Choose the desired mode number: (or 3 to Quit)

fw ctl multik show_bypass_ports — 우회 포트 보기

add_bypass_port로 설정한 우회 포트 목록을 보여 줍니다(sk105261).

fw ctl multik show_bypass_ports
[Expert@MyGW:0]# fw ctl multik show_bypass_ports
dynamic dispatcher bypass port list:
(9999,8888)

fw ctl multik stat — 인스턴스 상태 보기

각 CoreXL Firewall 인스턴스의 정보를 보여 줍니다.

# IPv4
fw [-d] ctl multik stat
# IPv6
fw6 [-d] ctl multik stat

출력에 담기는 정보입니다.

  • 각 인스턴스의 ID 번호 (0부터 시작).
  • 각 인스턴스의 상태 (Active 여부).
  • 인스턴스가 도는 CPU 코어 ID (가장 높은 가용 CPU ID부터 매겨짐).
  • 인스턴스가 현재 다루는 동시 연결 수.
  • 시작 이후 다룬 동시 연결의 최고치(Peak).
파라미터설명
-d디버그 모드. 명령 자체를 트러블슈팅할 때만 사용(출력은 파일로 저장 권장).

예시입니다.

[Expert@MyGW:0]# fw ctl multik stat
ID | Active | CPU | Connections | Peak
----------------------------------------------
0  | Yes    | 7   | 5           | 21
1  | Yes    | 6   | 3           | 23
2  | Yes    | 5   | 5           | 25
3  | Yes    | 4   | 4           | 21
4  | Yes    | 3   | 5           | 21
5  | Yes    | 2   | 5           | 20

[Expert@MyGW:0]# fw6 ctl multik stat
ID | Active | CPU | Connections | Peak
----------------------------------------------
0  | Yes    | 7   | 0           | 4
1  | Yes    | 6   | 0           | 4

fw ctl multik start — 인스턴스 시작

fw ctl multik stop으로 멈춰 둔 모든 인스턴스를 즉석에서 시작 합니다.

fw ctl multik start      # IPv4
fw6 ctl multik start     # IPv6

예시 — 멈춰 있던 인스턴스를 하나씩 시작하면, 마지막에는 "이미 모두 활성"이라고 알려 줍니다.

[Expert@MyGW:0]# fw ctl multik start
Instance 1 started (2 of 3 are active)
[Expert@MyGW:0]# fw ctl multik start
Instance 2 started (3 of 3 are active)
[Expert@MyGW:0]# fw ctl multik start
All instances are already active

fw ctl multik stop — 인스턴스 멈추기

모든 인스턴스를 즉석에서 멈춥니다.

fw ctl multik stop       # IPv4
fw6 ctl multik stop      # IPv6

예시 — 멈춘 인스턴스는 stat에서 Active가 No, CPU가 -로 표시됩니다. 다 멈추면 "이미 모두 비활성"이라고 알려 줍니다.

[Expert@MyGW:0]# fw ctl multik stop
Instance 2 stopped (2 of 3 are active)
[Expert@MyGW:0]# fw ctl multik stop
Instance 1 stopped (1 of 3 are active)
[Expert@MyGW:0]# fw ctl multik stop
All instances are already inactive

fw ctl multik utilize — 큐 사용률 보기

각 인스턴스의 CoreXL 큐 사용률 을 보여 줍니다.

fw ctl multik utilize    # IPv4
fw6 ctl multik utilize   # IPv6

예시 — Utilize(%)Queue Elements(큐에 쌓인 항목 수)를 인스턴스별로 보여 줍니다.

[Expert@MyGW:0]# fw ctl multik utilize
ID | Utilize(%) | Queue Elements
----------------------------------
0  | 1          | 30
1  | 0          | 10
2  | 0          | 17

다음 파일에서 fw ctl affinity·fwboot·taskset_us_all·Multi-Queue로 이어집니다.

CoreXL 명령 사전 (3) — affinity·부팅·Multi-Queue

CoreXL 명령 사전 (2)에서 이어지는 마지막 부분입니다. affinity 조회·설정, 인스턴스 지정 실행, 부팅 구성, User Space 프로세스 affinity, Multi-Queue 개요를 정리합니다. 명령·경로·파라미터는 영어 원문 그대로 둡니다.

fw ctl affinity — affinity 보기·설정

fw ctl affinity인터페이스 / User Space 프로세스 / CoreXL Firewall 인스턴스 의 CoreXL affinity를 보고 설정합니다. 관련해서 taskset_us_all도 참고하세요. -l은 보기, -s는 설정이며, Gateway 모드와 VSX 모드의 사용법이 다릅니다.

fw ctl affinity -l (Gateway 모드 — 보기)

게이트웨이의 현재 affinity를 보여 줍니다.

fw ctl affinity                                    # 내장 도움말
fw ctl affinity -l [-a] [-v] [-r] [-q]             # 모든 affinity 보기
fw ctl affinity -l -i <Interface Name>             # 지정 인터페이스
fw ctl affinity -l -k <CoreXL Firewall instance ID> # 지정 인스턴스
fw ctl affinity -l -p <Process ID>                 # PID로 지정한 프로세스
fw ctl affinity -l -n <Process Name>               # 이름으로 지정한 프로세스
fw -d ctl affinity -corelicnum                     # CoreXL 라이선스가 허용하는 CPU 코어 수
파라미터설명
-i <Interface Name>지정 인터페이스의 affinity를 보여 줍니다.
-k <CoreXL Firewall instance ID>지정 인스턴스의 affinity를 보여 줍니다.
-p <Process ID>PID로 지정한 Check Point User Space 프로세스(예: fwd, vpnd)의 affinity.
-n <Process Name>이름으로 지정한 User Space 프로세스의 affinity.
all모든 CPU 코어(0부터)의 affinity를 보여 줍니다.
<CPU ID0> ... <CPU IDn>지정한 CPU 코어들(0부터)의 affinity를 보여 줍니다.
-a현재 모든 CoreXL affinity를 보여 줍니다.
-v인터페이스의 IRQ 번호 까지 포함한 상세 출력.
-raffinity를 역순 으로(코어별로 묶어) 보여 줍니다.
-q출력의 오류를 억제합니다.

기본 출력(-l)은 인터페이스와 인스턴스, 그리고 데몬들이 어느 코어에 묶였는지 보여 줍니다.

[Expert@MyGW:0]# fw ctl affinity -l
eth0: CPU 0
eth1: CPU 0
eth2: CPU 0
eth3: CPU 0
fw_0: CPU 7
fw_1: CPU 6
fw_2: CPU 5
fw_3: CPU 4
fw_4: CPU 3
fw_5: CPU 2
fwd: CPU 2 3 4 5 6 7
...

-a -v를 주면 인터페이스 줄에 IRQ 번호가 붙습니다.

[Expert@MyGW:0]# fw ctl affinity -l -a -v
Interface eth0 (irq 67): CPU 0
Interface eth1 (irq 75): CPU 0
...
fw_0: CPU 7
...

-a -v -r를 주면 코어별 로 무엇이 도는지 뒤집어 보여 줍니다(예: CPU 0에는 모든 인터페이스, CPU 2~7에는 각 인스턴스와 데몬들).

특정 대상만 보는 예시들입니다.

[Expert@MyGW:0]# fw ctl affinity -l -i eth0
eth0: CPU 0

[Expert@MyGW:0]# fw ctl affinity -l -p 26641
Process 26641: CPU 2 3 4 5 6 7
[Expert@MyGW:0]# fw ctl affinity -l -n fwd
fwd: CPU 2 3 4 5 6 7

[Expert@MyGW:0]# fw ctl affinity -l -k 1
fw_1: CPU 6

라이선스가 허용하는 시스템 CPU 코어 수는 이렇게 봅니다.

[Expert@MyGW:0]# fw -d ctl affinity -corelicnum
...
4

fw ctl affinity -l -x (VSX 모드 — 보기)

VSX 게이트웨이에서 affinity를 봅니다.

fw ctl affinity -l -x
   [-vsid <VSID ranges>]
   [-cpu <CPU ID ranges>]
   [-flags {e | k | t | n | h | o}]

fw -d ctl affinity -corelicnum
파라미터설명
-vsid <VSID ranges>지정한 단일 VS(예: -vsid 7) 또는 여러 VS(예: -vsid 0-2 4)의 affinity. -vsid를 생략하면 현재 가상 컨텍스트 에서 실행됩니다.
-cpu <CPU ID ranges>지정한 단일 CPU(예: -cpu 7) 또는 여러 CPU(예: -cpu 0-2 4)의 affinity.
`-flags {e \k \t \n \h \o}`최소 하나의 인자를 줘야 합니다 — e(예외 프로세스 미출력), k(커널 스레드 미출력), t(모든 프로세스 스레드 출력), n(/proc/<PID>/cmdline 대신 프로세스 이름 출력), h(CPU 마스크를 Hex로 출력), o(출력을 /tmp/affinity_list_output 파일로).

VSX 출력 표의 열 뜻입니다 — PID(프로세스 ID), VSID(가상 장치 ID), CPU(그 프로세스에 할당된 CPU), SRC(설정의 출처 — (V)SID / (I)nstance / (P)rocess), V(유효성 — *는 실제 affinity가 설정값과 다름 을 뜻함), KT(커널 스레드 여부), EXC(프로세스 예외 목록 vsaffinity_exception.conf에 속하는지), NAME(이름).

fw ctl affinity -s (Gateway 모드 — 설정)

게이트웨이에서 affinity를 설정합니다.

fw ctl affinity                                    # 내장 도움말

fw ctl affinity -s -i <Interface Name> {all | <CPU ID0> [<CPU ID1> ...]}
fw ctl affinity -s -k <CoreXL Firewall instance ID> {all | <CPU ID0> [...]}
fw ctl affinity -s -p <Process ID> {all | <CPU ID0> [...]}
fw ctl affinity -s -n <Process Name> {all | <CPU ID0> [...]}
파라미터설명
-i <Interface Name>지정 인터페이스의 affinity를 설정합니다.
-k <CoreXL Firewall instance ID>지정 인스턴스의 affinity를 설정합니다.
-p <Process ID>PID로 지정한 User Space 프로세스의 affinity를 설정합니다.
-n <Process Name>이름으로 지정한 User Space 프로세스의 affinity를 설정합니다. 프로세스 이름은 대소문자를 구분 합니다.
all모든 CPU 코어(0부터)에 affinity를 설정합니다.
<CPU ID0> ... <CPU IDn>지정한 CPU 코어들(0부터)에 affinity를 설정합니다.

예시들 — 설정에 성공하면 set successfully와 함께, Multi-Queue affinity는 바뀌지 않았다는 안내(sk113834)가 나옵니다.

# eth1을 CPU #1에
[Expert@MyGW:0]# fw ctl affinity -s -i eth1 1
eth1: CPU 1 - set successfully

# 인스턴스 #1을 CPU #2에
[Expert@MyGW:0]# fw ctl affinity -s -k 1 2
fw_1: CPU 2 - set successfully

# 프로세스 CPD를 PID로 CPU #2에
[Expert@MyGW:0]# fw ctl affinity -s -p 6080 2
Process 6080: CPU 2 - set successfully

# 프로세스 CPD를 이름으로 CPU #2에
[Expert@MyGW:0]# fw ctl affinity -s -n cpd 2
cpd: CPU 2 - set successfully

fw ctl affinity -s (VSX 모드 — 설정)

VSX 게이트웨이에서 affinity를 설정합니다.

fw ctl affinity                                    # 내장 도움말

# Virtual System들의 affinity
fw ctl affinity -s -d [-vsid <VSID ranges>] -cpu <CPU ID ranges>

# 지정한 User Space 프로세스의 affinity
fw ctl affinity -s -d -pname <Process Name> [-vsid <VSID ranges>] {-cpu all | -cpu <CPU ID ranges>}

# 지정한 FWK 데몬 인스턴스(User Space Firewall)의 affinity
fw ctl affinity -s -d -inst <Instances Ranges> -cpu <CPU ID ranges>

# 모든 FWK 인스턴스의 affinity
fw ctl affinity -s -d -fwkall <Number of CPUs>

# affinity를 기본값으로 초기화
fw ctl affinity {-vsx_factory_defaults | -vsx_factory_defaults_no_prompt}
파라미터설명
-vsid <VSID ranges>단일 VS(예: -vsid 7) 또는 여러 VS(예: -vsid 0-2 4)의 affinity를 설정합니다. 생략하면 현재 가상 컨텍스트를 씁니다.
-cpu <CPU ID ranges>단일 CPU(예: -cpu 7) 또는 여러 CPU(예: -cpu 0-2 4)로 affinity를 설정합니다. CPU 번호는 0부터 시작합니다.
-pname <Process Name>이름으로 지정한 Check Point 데몬(예: fwd, vpnd)의 affinity. 대소문자 구분.
-inst <Instances Ranges>단일 FWK 데몬 인스턴스(예: -inst 7) 또는 여러 인스턴스(예: -inst 0 2 4)의 affinity.
-fwkall <Number of CPUs>실행 중인 모든 FWK 데몬 인스턴스를 지정한 개수의 CPU 코어 에 묶습니다. 모든 코어에 묶으려면 가용 코어 총수를 입력합니다.
-vsx_factory_defaults기존 affinity 설정을 모두 지우고, 다음 재부팅 때 기본 affinity 를 만듭니다. 진행 전 확인을 묻습니다. 완료하려면 재부팅해야 합니다.
-vsx_factory_defaults_no_prompt위와 같되 확인을 묻지 않습니다. 완료하려면 재부팅해야 합니다.

예시들입니다.

# VS #0,1,2,4,6,7,8을 CPU #0,1,2,4에
[Expert@MyGW:0]# fw ctl affinity -s -d -vsid 0-2 4 6-8 -cpu 0-2 4
VDevice 0-2 4 6-8 : CPU 0 1 2 4 - set successfully

# 프로세스 CPD를 VS #0-12에 대해 CPU #7에
[Expert@MyGW:0]# fw ctl affinity -s -d -pname cpd -vsid 0-12 -cpu 7
VDevice 0-12 : CPU 7 - set successfully
Warning: some of the VSIDs did not exist

# FWK 인스턴스 #0,2,4를 CPU #5에
[Expert@MyGW:0]# fw ctl affinity -s -d -inst 0 2 4 -cpu 5
VDevice 0 2 4: CPU 5 - set successfully

# 모든 FWK 인스턴스를 마지막 두 코어에
[Expert@MyGW:0]# fw ctl affinity -s -d -fwkall 2
VDevice 0-2 : CPU 2 3 - set successfully

-fwkall로 모든 코어에 묶을 때 이미 설정된 프로세스/인스턴스가 있으면, 기존 설정을 덮어쓸지(y) 아니면 설정되지 않은 것만 설정할지(n) 묻습니다.

[Expert@MyGW:0]# fw ctl affinity -s -d -fwkall 4
There are configured processes/FWK instances
(y) will override all currently configured affinity and erase the configuration files
(n) will set affinity only for unconfigured processes/threads
Do you want to override existing configurations (y/n) ? y
VDevice 0-2 : CPU all - set successfully

fw -i — 특정 인스턴스에만 명령 적용

기본적으로 fw 명령은 게이트웨이 전체에 적용되고, 모든 인스턴스의 정보를 합산 해 보여 줍니다. fw -i는 지정한 한 인스턴스에만 적용됩니다.

fw -i <ID of CoreXL Firewall instance> <Command>
파라미터설명
<ID of CoreXL Firewall instance>인스턴스 ID. 가능한 ID는 fw ctl multik stat로 봅니다.
<Command>fw -i를 지원하는 명령은 다음뿐입니다 — conntab, ctl get, ctl leak, ctl pstat, ctl set, monitor, tab. (각 명령의 세부 파라미터는 해당 명령 항목을 참고)

예시입니다.

# 인스턴스 #1의 Connections 테이블
fw -i 1 tab -t connections

# 인스턴스 #1의 내부 통계
fw -i 1 ctl pstat

fwboot bootconf — 부팅 보안 옵션

부팅 보안 옵션을 구성합니다.

# 현재 값 보기
$FWDIR/boot/fwboot bootconf
   get_corexl | get_core_override | get_def | get_ipf | get_ipv6 | get_kernnum | get_kern6num

# 값 설정
$FWDIR/boot/fwboot bootconf
   set_corexl {0 | 1}
   set_core_override <number>
   set_def [</path/filename>]
   set_ipf {0 | 1}
   set_ipv6 {0 | 1}
   set_kernnum <number>
   set_kern6num <number>
파라미터설명 (괄호 안은 boot.conf 변수)
(없음)내장 도움말.
get_corexlCoreXL이 켜졌(1)는지 꺼졌(0)는지. (COREXL_INSTALLED)
get_core_override덮어쓰는 CPU 코어 수. SMT(Hyper-Threading, sk93000)가 재부팅 후 코어 수를 정할 때 씁니다. (CORE_OVERRIDE)
get_defDefault Filter 정책 파일의 경로·이름(기본 $FWDIR/boot/default.bin). (DEFAULT_FILTER_PATH)
get_ipf부팅 중 IP Forwarding이 켜졌(1)는지 꺼졌(0)는지. 0이면 부팅 중 인터페이스 간 트래픽을 전달하지 않습니다. (CTL_IPFORWARDING)
get_ipv6IPv6 지원이 켜졌(1)는지 꺼졌(0)는지. (IPV6_INSTALLED)
get_kernnum설정된 IPv4 인스턴스 수. (KERN_INSTANCE_NUM)
get_kern6num설정된 IPv6 인스턴스 수. (KERN6_INSTANCE_NUM)
`set_corexl {0\1}`CoreXL을 끄기(0)/켜기(1). 단, CoreXL 구성은 cpconfig 메뉴로 하세요. (COREXL_INSTALLED)
set_core_override <number>덮어쓰는 CPU 코어 수 설정(SMT용). (CORE_OVERRIDE)
set_def [</path/filename>]Default Filter 정책 파일 경로·이름 설정. 경로를 생략하면 DEFAULT_FILTER_PATH가 0이 되어 부팅 중 Default Filter를 불러오지 않습니다. 권장 위치는 $FWDIR/boot/ 입니다.
`set_ipf {0\1}`부팅 중 IP Forwarding 끄기(0)/켜기(1). (CTL_IPFORWARDING)
`set_ipv6 {0\1}`IPv6 지원 끄기(0)/켜기(1). 단, IPv6 지원은 Gaia Portal이나 Gaia Clish로 구성하세요. (IPV6_INSTALLED)
set_kernnum <number>IPv4 인스턴스 수 설정. 단, cpconfig 메뉴로 구성하세요. (KERN_INSTANCE_NUM)
set_kern6num <number>IPv6 인스턴스 수 설정. 단, cpconfig 메뉴로 구성하세요. (KERN6_INSTANCE_NUM)

fwboot corexl — CoreXL 부팅 구성·조회

CoreXL을 구성하고 모니터링합니다.

# 조회
$FWDIR/boot/fwboot corexl
   core_count | curr_instance4_count | curr_instance6_count
   def_instance4_count | def_instance6_count | eligible | installed
   max_instance4_count | max_instances4_32bit | max_instances4_64bit
   max_instance6_count | max_instances_count | max_instances_32bit | max_instances_64bit
   min_instance_count | unsupported_features

# 구성
$FWDIR/boot/fwboot corexl
   def_by_allowed [n]
   default
   [-v] disable
   [-v] enable [n] [-6 k]
   vmalloc_recalculate

조회·구성 파라미터입니다. 대부분 결과를 종료 코드(echo $?) 로 돌려줍니다.

파라미터설명
(없음)내장 도움말.
core_count이 컴퓨터의 CPU 코어 수를 돌려줍니다.
curr_instance4_count / curr_instance6_count현재 설정된 IPv4 / IPv6 인스턴스 수.
def_by_allowed [n]허용된 CPU 코어 수에 맞춰 CoreXL 기본 구성을 설정합니다.
defaultCoreXL을 기본 구성으로 설정합니다.
def_instance4_count / def_instance6_countIPv4 / IPv6 인스턴스의 기본 개수.
[-v] disableCoreXL을 끕니다. -v는 vmalloc을 그대로 둡니다.
eligible이 게이트웨이에서 CoreXL을 켤 수 있는지(1) 없는지(0).
[-v] enable [n] [-6 k]n개의 IPv4(선택적으로 k개의 IPv6) 인스턴스로 켭니다. -v는 vmalloc 유지.
installedCoreXL이 설치(활성)되었는지(1) 아닌지(0).
max_instance4_count / max_instance6_count이 게이트웨이의 IPv4 / IPv6 인스턴스 최대 허용 수.
max_instances4_32bit / max_instances4_64bit32비트(예: 14) / 64비트(예: 38) 커널에서 IPv4 인스턴스 최대 허용 수.
max_instances_countIPv4+IPv6 인스턴스 총 최대 허용 수(예: 40).
max_instances_32bit / max_instances_64bit32비트(예: 16) / 64비트(예: 40) 커널에서 인스턴스 총 최대 허용 수.
min_instance_countIPv4 인스턴스 최소 허용 수(예: 2).
vmalloc_recalculate/boot/grub/grub.conf의 vmalloc 값을 갱신합니다.
unsupported_featuresCoreXL이 지원하지 않는 기능이 하나라도 설정돼 있으면 1을 돌려줍니다.

예시 — 지원되지 않는 기능을 점검하면, 설정된 항목(예: QoS)을 알려 줍니다.

[Expert@MyGW:0]# $FWDIR/boot/fwboot corexl unsupported_features
corexl unsupported feature: QoS is configured.
[Expert@MyGW:0]# echo $?
1

fwboot cpuid — CPU·코어 개수 조회

이 게이트웨이의 가용 CPU·CPU 코어 수를 보여 줍니다.

$FWDIR/boot/fwboot cpuid {-h | -help | --help} | -c | --full | ht_aware | -n | --possible
파라미터설명
(없음)가용 CPU 코어들의 ID를 보여 줍니다(예: 3 2 1 0).
-c가용 CPU 코어 개수 를 세어 종료 코드로 돌려줍니다.
--full가용 CPU·코어의 전체 맵(cpuid, phys_id, core_id, thread_id)을 보여 줍니다.
ht_awareHyper-Threading 인지(awareness) 순서로 코어를 보여 줍니다.
-n가용 CPU 개수 를 세어 종료 코드로 돌려줍니다.
--possible가능한(possible) CPU 코어 개수를 세어 종료 코드로 돌려줍니다.

fwboot ht — (사용 중단)

fwboot multik_reg — (내부용)

지정한 인스턴스의 등록 함수 내부 메모리 주소를 보여 줍니다.

$FWDIR/boot/fwboot multik_reg <Number of CoreXL Firewall instance> {ipv4 | ipv6} [-d]
파라미터설명
(없음)내장 도움말.
<Number of CoreXL Firewall instance>인스턴스 ID 번호.
ipv4 / ipv6IPv4 / IPv6 인스턴스를 대상으로 합니다.
-dhook 함수의 10진수 64비트 주소 를 보여 줍니다.

fwboot post_drv — (내부용)

부팅 중 CoreXL용 Firewall 드라이버를 로드합니다.

$FWDIR/boot/fwboot post_drv {ipv4 | ipv6}
파라미터설명
(없음)내장 도움말.
ipv4 / ipv6IPv4 / IPv6용 Firewall 드라이버를 로드합니다.

taskset_us_all — User Space 프로세스 affinity

$FWDIR/bin/taskset_us_all 스크립트는 실행 중인 모든 User Space 프로세스의 affinity 를 CPU 코어에 설정합니다.

  • CPU 코어를 ID 목록 으로도, CPU 비트마스크 로도 지정할 수 있습니다.
  • affinity 대상을 CoreXL Firewall 인스턴스가 도는 코어, SND가 도는 코어, 또는 모든 코어 로 정할 수 있습니다.
  • 스크립트가 무시할 프로세스 목록 을 정할 수 있습니다.
  • 스크립트는 $FWDIR/log/taskset_us_all.elg 로그 파일을 만듭니다.
   --help
   {-i | --instance} [<IDs of Instances>]
   {-l | --list} <IDs of CPU Cores> [--ignore_default] [--ignore_exe "<Name1>|<Name2>|...|<NameN>"]
   {-m | --mask} <CPU BitMask>
   {-s | --snd} [--no_zero]

# Scalable Platform Security Group에서는:
g_all taskset_us_all <parameters>
파라미터종류설명
(없음)내장 도움말 호출법을 보여 줍니다.
--help선택내장 도움말을 보여 줍니다.
`{-i \--instance} [<IDs>]`선택CoreXL Firewall 인스턴스가 도는 코어 에만 affinity를 설정합니다(예: --instance 0,2,5). `-s--snd`와 상호 배타, VSX 모드 미지원.
`{-l \--list} <IDs of CPU Cores>`필수인자를 CPU 코어 ID 목록 으로 씁니다 — 쉼표 목록(--list 0,1,2,3), 범위(--list 0-3), 범위+개별(--list 0-2,3).
[--ignore_default]선택미리 정해진 Check Point 실행 파일 목록 을 무시합니다. 이들의 affinity를 바꾸면 성능이 떨어집니다 — fwk, dmd_run, usim_x86, usim_wd_agent, usim_launcher.
`[--ignore_exe "<Name1>\..."]`선택지정한 실행 파일을 무시합니다(예: `--ignore_exe "bash\fwk\clishd"). 고정 목록은 스크립트의 ignore_list=""` 변수를 편집해 정합니다.
`{-m \--mask} <CPU BitMask>`필수인자를 CPU 코어 ID 비트마스크 로 씁니다.
`{-s \--snd} [--no_zero]`선택SND가 도는 코어 에만 affinity를 설정합니다. `-i--instance와 상호 배타. --no_zero`는 CPU 코어 0을 무시 합니다.

비트마스크는 코어별 16진수 비트를 더해 만듭니다. 예를 들어 16코어 장비에서 코어 0~3은 이렇게 계산합니다.

0x0000000000000001 (CPU 0) +
0x0000000000000010 (CPU 1) +
0x0000000000000100 (CPU 2) +
0x0000000000001000 (CPU 3) =
------------------
0x0000000000001111

코어 5, 7, 9, 15는 이렇습니다.

0x0000000000100000 (CPU 5) +
0x0000000010000000 (CPU 7) +
0x0000001000000000 (CPU 9) +
0x1000000000000000 (CPU 15) =
------------------
0x1000001010100000

Multi-Queue — 인터페이스당 여러 큐

기본적으로 각 네트워크 인터페이스는 하나의 트래픽 큐 를 가지고, 그 큐를 하나의 CPU 가 처리합니다. 그래서 트래픽을 처리하는 인터페이스 수보다 더 많은 코어를 가속에 쓸 수는 없습니다. Multi-Queue 는 인터페이스마다 큐를 여러 개 두어, 한 인터페이스의 가속에 여러 코어 를 쓰게 합니다.

개요입니다.

  • 지원 드라이버를 쓰는 모든 인터페이스에서 Multi-Queue가 기본으로 켜져 있습니다.
  • 지원 인터페이스의 큐 개수는 SND 인스턴스가 도는 가용 코어 수인터페이스·드라이버의 한계 에 따라 자동으로 정해집니다.
  • 트래픽 큐는 SND 인스턴스가 도는 코어에 자동으로 묶입니다.
  • Multi-Queue 구성 변경은 재부팅이 필요 없습니다.
  • Multi-Queue는 명령줄에서 구성합니다 — Gaia Clish(Scalable Platform은 Gaia gClish) 또는 Expert mode.

자세한 Multi-Queue 사용법은 Multi-Queue 장을 참고하세요. 이로써 CoreXL 명령 사전을 마칩니다.