목차/11. VSX 성능 최적화

11VSX 성능 최적화Optimizing VSX

이 챕터는 VSX의 성능을 모니터링하고 최적화하는 기능들을 다룹니다. 메모리와 CPU 자원을 들여다보는 방법, SNMP로 가상 장치를 감시하는 방법, 그리고 Jumbo Frame 설정이 핵심입니다.

메모리 자원 보기 — vsx mstat

vsx mstat 명령은 VSX Gateway가 쓰는 메모리를 전체적으로 보여 줍니다(Expert 모드에서 실행). 시스템과 각 가상 장치가 얼마나 메모리를 쓰는지 한눈에 볼 수 있는데, 전역 자원으로는 전체 물리 메모리(Memory Total)와 가용 메모리(Memory Free), 전체·가용 스왑 메모리, 그리고 초당 스왑 횟수(Swap-in rate)가 나옵니다. 가상 장치는 VSID 순으로 나열되며, 어떤 VSID가 어떤 장치인지는 vsx stat -v로 확인합니다.

같은 정보를 cpview로도 볼 수 있습니다. VS0 컨텍스트에서 cpview를 실행한 뒤 Advanced > VSX > VSs > Physical-Resources 로 들어가면 Virtual System과 Virtual Router의 메모리 소비가 표시됩니다.

vsx mstat        # VSX Gateway 메모리 개요 (Expert 모드)
vsx stat -v      # 어떤 VSID가 어떤 장치인지 확인
cpview           # VS0 컨텍스트 → Advanced > VSX > VSs > Physical-Resources

CPU 자원 보기

R80.40부터 CPU Resource Control이 CPView에 통합되었습니다. 먼저 VS0 컨텍스트로 가는데, Expert 모드에서는 vsenv, Gaia Clish에서는 set virtual-system 0을 쓴 뒤 cpview를 실행하고 같은 Physical-Resources 탭으로 들어가면 됩니다. 여기서 한 가지 CPU % 컬럼의 읽는 법을 알아야 합니다. 이 값은 top 명령처럼 단일 CPU 기준의 백분율이라, 여러 코어에 걸친 사용량이 합산됩니다. 예를 들어 코어가 4개인데 VS1이 CPU0의 30%, CPU1의 40%, CPU2의 50%, CPU3의 10%를 쓰면 CPU % 컬럼에는 130%로 표시됩니다. 따라서 게이트웨이 전체의 CPU 사용률을 보려면 Total Resource Consumption의 CPU % 값을 코어 수로 나눠야 합니다.

SNMP 모니터링

VSX는 SNMP v1·v2c·v3를 모든 모드에서 지원하며, 모드는 세 가지입니다. 모드의 차이는 SNMP 데몬이 어디서 도느냐, 그리고 어느 IP로 질의하느냐에 있습니다.

Default 모드에서는 SNMP 데몬이 VS0(VSX Gateway)에서만 돕니다. VS0의 데몬이 각 가상 장치별 카운터 테이블(VSX SNMP 트리)을 갖고 있고, 모든 질의는 VSX Gateway IP로 보냅니다.

① VSX Gateway로 SNMP 요청을 보내는 SNMP 서버 ② eth0 ③ VSX Gateway ④ SNMP 데몬 ⑤ Virtual System 0 ⑥ Virtual System 1(ctx 1) ⑦ Bridge 모드 Virtual System(ctx 2) ⑧ Virtual Router(ctx 3) ⑨ Virtual Switch(ctx 4)
① VSX Gateway로 SNMP 요청을 보내는 SNMP 서버 ② eth0 ③ VSX Gateway ④ SNMP 데몬 ⑤ Virtual System 0 ⑥ Virtual System 1(ctx 1) ⑦ Bridge 모드 Virtual System(ctx 2) ⑧ Virtual Router(ctx 3) ⑨ Virtual Switch(ctx 4)

VS 모드에서는 각 가상 장치마다 자기 컨텍스트에서 별도의 SNMP 데몬이 돕니다. 질의는 여전히 VS0 IP(게이트웨이 인터페이스)로 보내되 VS ID를 함께 지정하면, 질의가 해당 장치로 전달되고 응답도 같은 게이트웨이 인터페이스로 돌아옵니다. VS 모드를 켜도 Default 모드 질의 기능은 줄어들지 않습니다.

① 질의 호스트 ② eth0 ③ VSX Gateway ④ VS 0 ⑤ SNMP 데몬 ⑥ UDS
① 질의 호스트 ② eth0 ③ VSX Gateway ④ VS 0 ⑤ SNMP 데몬 ⑥ UDS

vs-direct-access 모드는 VS 모드가 켜져 있을 때만 쓸 수 있으며, VS0뿐 아니라 Virtual System이나 Virtual Router 자신의 IP로 직접 질의할 수 있게 합니다.

① 질의 호스트 ② eth0 ③ VSX Gateway ④ VS 0 ⑤ SNMP 데몬 ⑥ UDS
① 질의 호스트 ② eth0 ③ VSX Gateway ④ VS 0 ⑤ SNMP 데몬 ⑥ UDS

다만 클러스터에서는 Virtual IP로만 질의할 수 있고, IP를 가진 가상 장치만 질의 가능하므로 Virtual Switch나 Virtual Bridge는 대상이 아닙니다.

설정은 Gaia Clish에서 SNMP 에이전트를 켠 뒤 모드를 고르는 식입니다. Default는 set snmp mode default, VS 모드는 set snmp mode vs, 직접 접근은 거기에 set snmp vs-direct-access on을 더합니다. SNMP v3 질의를 쓰려면 USM 사용자를 정의해야 하는데, VSX에서는 USM 사용자에게 허용할 가상 장치를 set snmp usm user <이름> vsid <VSID>로 지정해야 합니다(기본적으로 허용 장치가 없습니다). vs-direct-access를 켜면 Virtual System이 모든 인터페이스에서 SNMP 질의를 받으므로, 특정 인터페이스를 막고 싶으면 정책에 SNMP 차단 규칙을 추가합니다.

# SNMP 모드 설정 (Gaia Clish)
set snmp agent on
set snmp mode vs                 # 또는 default
set snmp vs-direct-access on     # 직접 접근까지 쓸 때
set snmp usm user admin vsid 2,15   # v3 USM 사용자에 허용 VS 지정

질의 예시를 보면 모드와 버전에 따라 형태가 다릅니다. VS0 IP로 v3 질의를 할 때는 snmpwalk -n vsid2 -v 3 ...처럼 SNMP 컨텍스트 이름으로 vsidN을 지정하고, v1/v2c 질의를 할 때는 snmpwalk -v 1 -c public_2 ...처럼 커뮤니티 이름 뒤에 VSID나 VS 이름을 접미사로 붙입니다(이런 접미사 커뮤니티는 자동 생성됩니다). 가상 장치 IP로 직접 질의할 때는 그 장치의 Virtual IP를 대상으로 보내며, 활성 장치만 응답합니다.

# VS0 IP로 v3 질의 (vsidN = SNMP 컨텍스트)
snmpwalk -n vsid2 -v 3 -l authNoPriv -u admin -A abcd1234 192.0.2.5 ifDesc

# VS0 IP로 v1 질의 (커뮤니티에 _VSID 접미사)
snmpwalk -v 1 -c public_2 192.0.2.5 ifDescr

# 가상 장치 IP로 직접 질의 (vs-direct-access)
snmpwalk -v 2c -c public 192.0.2.81 ifDescr

v1/v2c에서는 커뮤니티 접미사 충돌에 주의해야 합니다. 예를 들어 읽기 전용 커뮤니티가 private이고 읽기-쓰기 커뮤니티가 private_1이면, VSID 1용으로 private_1private_1_1이 자동 생성되어 private_1이 모호해지고 예기치 않게 동작할 수 있습니다.

클러스터에서 질의할 때는 응답 주체에 주의합니다. VSLS 클러스터를 VS0 Virtual IP로 질의하면 Active 멤버의 VS0가 응답하고, Standby 멤버에서 Active인 Virtual System은 응답하지 않습니다. Standby 멤버의 Active VS를 질의하려면 그 멤버의 실제 IP를 써야 합니다. 또한 SNMP 트랩은 VS0에서만 제공된다는 점도 기억해야 합니다.

가상 장치에서 정보를 얻으려면 SNMP 브라우저에 체크포인트 MIB 파일을 불러와야 합니다. MIB 파일은 VS0 컨텍스트의 $CPDIR/lib/snmp/chkpnt.mib에 있고, VSX의 OID는 .1.3.6.1.4.1.2620.1.16입니다. 예컨대 VSX 상태 테이블은 vsxStatusTable, 메모리 사용 테이블은 vsxStatusMemoryUsageTable로 질의합니다. 카운터 테이블(vsxCountersTable)의 갱신 주기는 $FWDIR/conf/amon_vsx_refresh_interval 파일에서 정하며 기본값은 30초입니다.

Jumbo Frame 설정

VSX는 Jumbo Frame을 지원하며 NIC 드라이버의 최대 MTU까지 설정할 수 있습니다. 설정은 어느 장치의 MTU를 바꾸느냐에 따라 다릅니다.

Virtual Switch의 경우, Virtual Switch의 MTU를 바꾸면 거기에 연결된 Warp Link와 인터페이스가 모두 자동으로 새 값으로 변경됩니다. 그래서 Virtual System 쪽에서는 Warp Link의 MTU를 따로 설정할 수 없습니다. SmartConsole에서 Virtual Switch 객체를 열어 Topology에서 인터페이스를 편집하고 General 탭의 MTU를 바꾼 뒤 세션을 publish하면 됩니다.

Virtual Router나 Bridge 모드 Virtual System도 같은 방식으로 객체를 열어 Topology에서 인터페이스의 MTU를 설정합니다. 다만 이 둘은 설정 후 해당 객체에 Access Control 정책을 설치해야 적용됩니다(Virtual Switch는 publish만으로 충분). Virtual Router의 Warp Link MTU를 바꾸려면 연결된 Virtual System 쪽 설정에서 변경합니다.