핵심 인사이트 (3줄 요약)
- 본질: 라우터의 큐잉(Queuing) 기술은 톨게이트(라우터 포트)에 트래픽이 꽉 차서 줄을 섰을 때, 어떤 놈을 먼저 내보내고 어떤 놈을 늦게 쳐낼지(스케줄링)를 결정하는 줄 세우기 알고리즘의 진화 과정이다.
- 전통적 큐잉 (PQ, CQ, WFQ): 무조건 대장만 챙기다 평민이 굶어 죽는 PQ(우선순위 큐), 비율을 맞춰 골고루 챙기려다 속도가 느려진 CQ(맞춤형 큐), 작은 패킷부터 공평하게 챙겨주는 **WFQ(가중치 공평 큐)**가 초기 QoS를 이끌었다.
- 현대적 큐잉 (CBWFQ, LLQ): 관리자가 맘대로 큐를 짜서 대역폭을 배분하는 CBWFQ에다가, 음성(Voice) 패킷만큼은 무조건 0순위로 새치기시켜주는 **엄격한 우선순위 큐(PQ) 하나를 살짝 얹어놓은 하이브리드 끝판왕 LLQ(Low Latency Queuing)**가 현대 실무 QoS의 100% 표준이 되었다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 라우터나 스위치 인터페이스의 출력 버퍼(Output Buffer)에서, 혼잡(Congestion) 발생 시 다수의 패킷 스트림을 어떤 순서와 비율로 처리할지 결정하는 스케줄링 메커니즘.
-
필요성: 1Gbps 선로에 1.5Gbps가 쏟아져 들어오면 라우터는 어쩔 수 없이 0.5Gbps를 잠시 창고(Queue)에 쌓아둬야 한다(버퍼링). 그런데 창고 문을 열 때 들어온 순서대로 빼면(FIFO), 덩치 큰 파일 다운로드 패킷 뒤에 목소리(VoIP) 패킷이 갇혀서 전화가 뚝뚝 끊긴다. **"야, 창고 안에 있는 놈들 중에 목소리 패킷부터 무조건 먼저 멱살 잡고 꺼내라!"**라는 지능적인 출고 순서 제어가 필수적이었다.
-
💡 비유: 큐잉은 응급실의 **"환자 대기열 관리"**와 같습니다.
- FIFO (기본): 접수표 뽑은 순서대로 진료합니다. 감기 환자 100명이 먼저 오면 뒤에 온 심정지 환자는 죽습니다.
- PQ (Priority Queue): 심정지 환자가 1명이라도 있으면 감기 환자 진료를 무조건 멈추고 심정지 환자부터 치료합니다.
- CQ (Custom Queue): 외과, 내과, 소아과 창구를 나누고, 외과 4명, 내과 3명, 소아과 3명씩 번갈아 가며 공평하게 부릅니다.
📢 섹션 요약 비유: 큐잉 알고리즘은 1차선 도로로 합쳐지는 병목 구간에서, 경찰관이 어떤 차(구급차 vs 화물차)에게 먼저 수신호를 보내 뚫어줄 것인지 판단하는 교통정리 룰입니다.
Ⅱ. 큐잉 알고리즘의 진화 (Deep Dive)
아래 5가지 발전 과정을 이해하면 QoS의 큰 그림이 그려진다.
1. 1세대: PQ와 CQ (극단적 선택)
- PQ (Priority Queuing):
- 큐를 4개(High, Medium, Normal, Low) 만든다.
- 잔인한 룰: High 큐에 패킷이 단 1개라도 남아 있으면 나머지 큐는 절대 처리 안 한다!
- 단점: 해커가 High 큐로 쓰레기 데이터를 계속 밀어 넣으면, 나머지 평민 패킷들은 단 한 발자국도 못 나가고 굶어 죽는 기아(Starvation) 현상이 발생한다.
- CQ (Custom Queuing):
- 기아 현상을 막기 위해 16개의 큐를 판다.
- "1번 큐에서 1500바이트, 2번 큐에서 1000바이트 꺼내!" 식으로 라운드 로빈(돌아가면서) 분배한다.
- 단점: 차례를 기다려야 하므로 실시간 음성(VoIP) 패킷에는 치명적인 지연이 생긴다.
2. 2세대: WFQ (Weighted Fair Queuing)
- 1990년대 후반의 디폴트(기본) 스케줄러. 관리자가 손대지 않아도 라우터가 알아서 큐를 수백 개 만든다.
- 공평함의 룰: 트래픽을 분류해서 대역폭을 N분의 1로 똑같이 나눠준다.
- 작은 고추가 맵다: 패킷 크기가 "작은 놈(주로 음성/텔넷)"을 덩치 "큰 놈(FTP)"보다 먼저 빼내어(새치기) 스케줄링해 준다.
3. 3세대: CBWFQ (Class-Based WFQ)
- WFQ가 지 알아서 공평하게 나누는 게 맘에 안 들었던 관리자들이 만든 맞춤형 큐다.
class-map을 만들어서 "1번 큐(웹서핑)는 전체 대역폭의 20% 보장! 2번 큐(데이터베이스)는 40% 보장!"이라고 비율(%) 단위로 대역폭을 쪼개서 분양해 줄 수 있게 된 혁명적 큐잉이다.- 하지만 여전히 '새치기' 기능이 없어서 VoIP 처리가 아쉬웠다.
4. 끝판왕: LLQ (Low Latency Queuing) ★현대 표준
- CBWFQ 뼈대 + PQ(절대 반지) 1개의 융합.
- "야, CBWFQ로 % 나눠주는 거 다 좋은데, 딱 하나! 음성(VoIP) 패킷이 들어가는 큐 딱 1개만 '엄격한 우선순위(Strict Priority)'로 지정해서, 여기 패킷 들어오면 무조건 0순위로 새치기해서 다 쳐내라!"
- 단, 기아 현상(PQ의 단점)을 막기 위해 "음성 패킷이 새치기는 하되, 최대 30%까지만 새치기해라!"라고 **폴리싱(제한)**을 걸어두는 완벽한 밸런스를 맞췄다.
┌─────────────────────────────────────────────────────────────┐
│ LLQ (Low Latency Queuing) 동작 구조 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 수많은 트래픽 유입 ] │
│ │ │
│ ├─▶ [ Priority Queue (음성) ] ── (무조건 1빠따 새치기!) ───┐ │
│ │ │ │
│ ├─▶ [ CBWFQ 1 (DB 트래픽, 40%) ] ── (라운드 로빈) ──────┤ │
│ ├─▶ [ CBWFQ 2 (웹 트래픽, 20%) ] ── (라운드 로빈) ──────┤ │
│ └─▶ [ Default Queue (나머지 찌꺼기) ] ─ (라운드 로빈) ─────┤ │
│ ▼ │
│ [ 출력 포트 ]│
└─────────────────────────────────────────────────────────────┘
📢 섹션 요약 비유: LLQ는 현대 테마파크의 완벽한 줄서기 시스템입니다. 기본적으로 손님들은 돈 낸 만큼(CBWFQ 비율) 3대의 열차에 골고루 나눠 타지만, 휠체어를 탄 장애인(VoIP 패킷)이 오면 무조건 탑승 대기 줄을 무시하고 0순위(PQ)로 열차에 태워 보내는 따뜻하고 효율적인 복지 시스템입니다.